summaryrefslogtreecommitdiff
path: root/src/http_auth_digest.h
blob: 2d4e363fd5ba6b26fd038eff9334bb3e08b67bca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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