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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
/*
* Copyright (C) 1996-2025 The Squid Software Foundation and contributors
*
* Squid software is distributed under GPLv2+ license and includes
* contributions from numerous individuals and organizations.
* Please see the COPYING and CONTRIBUTORS files for details.
*/
/* The source in this file is derived from the reference implementation
* in RFC 2617.
* RFC 2617 is Copyright (C) The Internet Society (1999). All Rights Reserved.
*
* The following copyright and licence statement covers all changes made to the
* reference implementation.
*
* Key changes to the reference implementation were:
* alteration to a plain C layout.
* Create CvtBin function
* Allow CalcHA1 to make use of precaculated username:password:realm hash's
* to prevent squid knowing the users password (idea suggested in RFC 2617).
*/
#ifndef SQUID_INCLUDE_RFC2617_H
#define SQUID_INCLUDE_RFC2617_H
#ifdef __cplusplus
extern "C" {
#endif
#define HASHLEN 16
typedef char HASH[HASHLEN];
#define HASHHEXLEN 32
typedef char HASHHEX[HASHHEXLEN + 1];
/* calculate H(A1) as per HTTP Digest spec */
extern void DigestCalcHA1(
const char *pszAlg,
const char *pszUserName,
const char *pszRealm,
const char *pszPassword,
const char *pszNonce,
const char *pszCNonce,
HASH HA1,
HASHHEX SessionKey
);
/* calculate request-digest/response-digest as per HTTP Digest spec */
extern void DigestCalcResponse(
const HASHHEX HA1, /* H(A1) */
const char *pszNonce, /* nonce from server */
const char *pszNonceCount, /* 8 hex digits */
const char *pszCNonce, /* client nonce */
const char *pszQop, /* qop-value: "", "auth", "auth-int" */
const char *pszMethod, /* method from the request */
const char *pszDigestUri, /* requested URL */
const HASHHEX HEntity, /* H(entity body) if qop="auth-int" */
HASHHEX Response /* request-digest or response-digest */
);
extern void CvtHex(const HASH Bin, HASHHEX Hex);
extern void CvtBin(const HASHHEX Hex, HASH Bin);
#ifdef __cplusplus
}
#endif
#endif /* SQUID_INCLUDE_RFC2617_H */
|