diff options
Diffstat (limited to 'src/http_auth_digest.h')
-rw-r--r-- | src/http_auth_digest.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/http_auth_digest.h b/src/http_auth_digest.h new file mode 100644 index 00000000..2d4e363f --- /dev/null +++ b/src/http_auth_digest.h @@ -0,0 +1,46 @@ +#ifndef _DIGCALC_H_ +#define _DIGCALC_H_ + +#include "config.h" + +#define HASHLEN 16 +typedef unsigned char HASH[HASHLEN]; +#define HASHHEXLEN 32 +typedef char HASHHEX[HASHHEXLEN+1]; +#ifdef USE_OPENSSL +#define IN const +#else +#define IN +#endif +#define OUT + +/* calculate H(A1) as per HTTP Digest spec */ +void DigestCalcHA1( + IN char * pszAlg, + IN char * pszUserName, + IN char * pszRealm, + IN char * pszPassword, + IN char * pszNonce, + IN char * pszCNonce, + OUT HASHHEX SessionKey + ); + +/* calculate request-digest/response-digest as per HTTP Digest spec */ +void DigestCalcResponse( + IN HASHHEX HA1, /* H(A1) */ + IN char * pszNonce, /* nonce from server */ + IN char * pszNonceCount, /* 8 hex digits */ + IN char * pszCNonce, /* client nonce */ + IN char * pszQop, /* qop-value: "", "auth", "auth-int" */ + IN char * pszMethod, /* method from the request */ + IN char * pszDigestUri, /* requested URL */ + IN HASHHEX HEntity, /* H(entity body) if qop="auth-int" */ + OUT HASHHEX Response /* request-digest or response-digest */ + ); + +void CvtHex( + IN HASH Bin, + OUT HASHHEX Hex + ); + +#endif |