All pastes #418629 Raw Edit

Someone

public c v1 · immutable
#418629 ·published 2007-03-31 18:59 UTC
rendered paste body
static int_http_digest_auth(conn_t *conn, const char *hdr, const char *usr,                const char *pwd, struct digest *digest, const char *uri){        char **ap, *argv[10], buf[256], pval[64];        int i, argc;                                     char *inp = buf;        char skey[HASHHEXLEN];        char response[256];                                      sscanf(digest->header, "WWW-Authenticate: Digest %256[^\r\n]", buf);        /* This is stolen almost directly out of strsep(3) */                       for (ap = argv; (*ap = strsep(&inp, ", ")) != NULL;)                 if (**ap != '\0')                                                   if (++ap >= &argv[10])                                break;                argc = ap - argv;                     for (i = 0; i < argc; i++) {                if (sscanf(argv[i], "realm=\"%256[^\"]\"", pval) > 0) {                        fprintf(stderr, "%s(): realm=%s\n", __func__, pval);                        digest->realm = pval;                                               }                                            else if (sscanf(argv[i], "nonce=\"%256[^\"]\"", pval) > 0) {                        fprintf(stderr, "%s(): nonce=%s\n", __func__, pval);                        digest->nonce = strdup(pval);                                       }                                                    else if (sscanf(argv[i], "nc=\"%256[^\"]\"", pval) > 0) {                        fprintf(stderr, "%s(): =%s\n", __func__, pval);                          strncpy(digest->nc, pval, sizeof(digest->nc));                 }                                                                     else if (sscanf(argv[i], "algorithm=%256s", pval) > 0) {                        fprintf(stderr, "%s(): alg=%s\n", __func__, pval);                        digest->alg = pval;                                               }                                          else if (sscanf(argv[i], "cnonce=\"%256[^\"]\"", pval) > 0) {                        fprintf(stderr, "%s(): cnone=%s\n", __func__, pval);                         digest->cnonce = pval;                                              }                                             else if (sscanf(argv[i], "qop=\"%256[^\"]\"", pval) > 0) {                        fprintf(stderr, "%s(): qop=%s\n", __func__, pval);                        digest->qop = pval;                                               }                                  }                _http_digest_calc_ha1(skey, usr, pwd, digest->realm, digest->nonce,                        digest->cnonce, digest->alg);                              fprintf(stderr, "%s(): skey=%s\n", __func__, skey);        fprintf(stderr, "%s(): nonce=%s\n", __func__, digest->nonce);        _http_digest_calc_response(response, digest->nonce, digest->nc,                        digest->cnonce, digest->qop, uri, digest->entity, skey);                                                                                        fprintf(stderr, "%s(): %s\n", __func__, digest->header);                        fprintf(stderr, "%s(): username: %s, passwd: %s\n", __func__, usr, pwd);        fprintf(stderr, "%s(): Digest method is not implemented yet\n", __func__);        return (-1);                                                              }