]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * Copyright (C) 1996-2025 The Squid Software Foundation and contributors | |
3 | * | |
4 | * Squid software is distributed under GPLv2+ license and includes | |
5 | * contributions from numerous individuals and organizations. | |
6 | * Please see the COPYING and CONTRIBUTORS files for details. | |
7 | */ | |
8 | ||
9 | /* The source in this file is derived from the reference implementation | |
10 | * in RFC 2617. | |
11 | * RFC 2617 is Copyright (C) The Internet Society (1999). All Rights Reserved. | |
12 | * | |
13 | * The following copyright and licence statement covers all changes made to the | |
14 | * reference implementation. | |
15 | * | |
16 | * Key changes to the reference implementation were: | |
17 | * alteration to a plain C layout. | |
18 | * Create CvtBin function | |
19 | * Allow CalcHA1 to make use of precaculated username:password:realm hash's | |
20 | * to prevent squid knowing the users password (idea suggested in RFC 2617). | |
21 | */ | |
22 | ||
23 | #ifndef SQUID_INCLUDE_RFC2617_H | |
24 | #define SQUID_INCLUDE_RFC2617_H | |
25 | ||
26 | #ifdef __cplusplus | |
27 | extern "C" { | |
28 | #endif | |
29 | ||
30 | #define HASHLEN 16 | |
31 | typedef char HASH[HASHLEN]; | |
32 | #define HASHHEXLEN 32 | |
33 | typedef char HASHHEX[HASHHEXLEN + 1]; | |
34 | ||
35 | /* calculate H(A1) as per HTTP Digest spec */ | |
36 | extern void DigestCalcHA1( | |
37 | const char *pszAlg, | |
38 | const char *pszUserName, | |
39 | const char *pszRealm, | |
40 | const char *pszPassword, | |
41 | const char *pszNonce, | |
42 | const char *pszCNonce, | |
43 | HASH HA1, | |
44 | HASHHEX SessionKey | |
45 | ); | |
46 | ||
47 | /* calculate request-digest/response-digest as per HTTP Digest spec */ | |
48 | extern void DigestCalcResponse( | |
49 | const HASHHEX HA1, /* H(A1) */ | |
50 | const char *pszNonce, /* nonce from server */ | |
51 | const char *pszNonceCount, /* 8 hex digits */ | |
52 | const char *pszCNonce, /* client nonce */ | |
53 | const char *pszQop, /* qop-value: "", "auth", "auth-int" */ | |
54 | const char *pszMethod, /* method from the request */ | |
55 | const char *pszDigestUri, /* requested URL */ | |
56 | const HASHHEX HEntity, /* H(entity body) if qop="auth-int" */ | |
57 | HASHHEX Response /* request-digest or response-digest */ | |
58 | ); | |
59 | ||
60 | extern void CvtHex(const HASH Bin, HASHHEX Hex); | |
61 | ||
62 | extern void CvtBin(const HASHHEX Hex, HASH Bin); | |
63 | ||
64 | #ifdef __cplusplus | |
65 | } | |
66 | #endif | |
67 | #endif /* SQUID_INCLUDE_RFC2617_H */ | |
68 |