- CURLFORM_END);
- CtdlLogPrintf(CTDL_DEBUG, "%25s : %s\n", "openid.mode", "check_authentication");
-
- if (GetHash(keys, "assoc_handle", 12, (void *) &o_assoc_handle)) {
- curl_formadd(&formpost, &lastptr,
- CURLFORM_COPYNAME, "openid.assoc_handle",
- CURLFORM_COPYCONTENTS, o_assoc_handle,
- CURLFORM_END);
- CtdlLogPrintf(CTDL_DEBUG, "%25s : %s\n", "openid.assoc_handle", o_assoc_handle);
- }
-
- if (GetHash(keys, "sig", 3, (void *) &o_sig)) {
- curl_formadd(&formpost, &lastptr,
- CURLFORM_COPYNAME, "openid.sig",
- CURLFORM_COPYCONTENTS, o_sig,
- CURLFORM_END);
- CtdlLogPrintf(CTDL_DEBUG, "%25s : %s\n", "openid.sig", o_sig);
- }
-
- if (GetHash(keys, "signed", 6, (void *) &o_signed)) {
- curl_formadd(&formpost, &lastptr,
- CURLFORM_COPYNAME, "openid.signed",
- CURLFORM_COPYCONTENTS, o_signed,
- CURLFORM_END);
- CtdlLogPrintf(CTDL_DEBUG, "%25s : %s\n", "openid.signed", o_signed);
-
- num_signed_values = num_tokens(o_signed, ',');
- for (i=0; i<num_signed_values; ++i) {
- extract_token(k_keyname, o_signed, i, ',', sizeof k_keyname);
- if (strcasecmp(k_keyname, "mode")) { // work around phpMyID bug
- if (GetHash(keys, k_keyname, strlen(k_keyname), (void *) &k_value)) {
- snprintf(k_o_keyname, sizeof k_o_keyname, "openid.%s", k_keyname);
- curl_formadd(&formpost, &lastptr,
- CURLFORM_COPYNAME, k_o_keyname,
- CURLFORM_COPYCONTENTS, k_value,
- CURLFORM_END);
- CtdlLogPrintf(CTDL_DEBUG, "%25s : %s\n", k_o_keyname, k_value);
- }
- else {
- CtdlLogPrintf(CTDL_INFO, "OpenID: signed field '%s' is missing\n",
- k_keyname);
- }
- }
+ CURLFORM_END
+ );
+
+ HashPos *HashPos = GetNewHashPos(keys, 0);
+ while (GetNextHashPos(keys, HashPos, &len, &Key, &Value) != 0) {
+ if (strcasecmp(Key, "mode")) {
+ char k_o_keyname[1024];
+ snprintf(k_o_keyname, sizeof k_o_keyname, "openid.%s", (const char *)Key);
+ curl_formadd(&formpost, &lastptr,
+ CURLFORM_COPYNAME, k_o_keyname,
+ CURLFORM_COPYCONTENTS, (char *)Value,
+ CURLFORM_END
+ );