static bool parseBasicDetails(Webs *wp) { char *cp, *userAuth; assert(wp); /* Split userAuth into userid and password */ cp = 0; if ((userAuth = websDecode64(wp->authDetails)) != 0) { if ((cp = strchr(userAuth, ':')) != NULL) { *cp++ = '\0'; } } if (cp) { wp->username = sclone(userAuth); wp->password = sclone(cp); wp->encoded = 0; } else { wp->username = sclone(""); wp->password = sclone(""); } wfree(userAuth); return 1; }
static int parseDigestNonce(char *nonce, char **secret, char **realm, WebsTime *when) { char *tok, *decoded, *whenStr; assure(nonce && *nonce); assure(secret); assure(realm); assure(when); if ((decoded = websDecode64(nonce)) == 0) { return -1; } *secret = stok(decoded, ":", &tok); *realm = stok(NULL, ":", &tok); whenStr = stok(NULL, ":", &tok); *when = hextoi(whenStr); return 0; }