2880ac3909e230b237340f9a94b3cd8354fffa15
[freeradius.git] / src / include / sha1.h
1 #ifndef _FR_SHA1_H
2 #define _FR_SHA1_H
3
4 #ifndef WITH_OPENSSL_SHA1
5 typedef struct {
6     uint32_t state[5];
7     uint32_t count[2];
8     uint8_t buffer[64];
9 } fr_SHA1_CTX;
10
11 void fr_SHA1Transform(uint32_t state[5], const uint8_t buffer[64]);
12 void fr_SHA1Init(fr_SHA1_CTX* context);
13 void fr_SHA1Update(fr_SHA1_CTX* context, const uint8_t* data, unsigned int len);
14 void fr_SHA1Final(uint8_t digest[20], fr_SHA1_CTX* context);
15
16 /*
17  * this version implements a raw SHA1 transform, no length is appended,
18  * nor any 128s out to the block size.
19  *
20  *      Hmm... this function doesn't appear to be used anywhere.
21  */
22 void fr_SHA1FinalNoLen(uint8_t digest[20], fr_SHA1_CTX* context);
23
24 #else  /* WITH_OPENSSL_SHA1 */
25
26 #include <openssl/sha.h>
27
28 #define fr_SHA1_CTX     SHA_CTX
29 #define fr_SHA1Init     SHA1_Init
30 #define fr_SHA1Update   SHA1_Update
31 #define fr_SHA1Final    SHA1_Final
32 #define fr_SHA1Transform SHA1_Transform
33 #endif
34
35 /*
36  * FIPS 186-2 PRF based upon SHA1.
37  *
38  *      Hmm... this is only used in src/modules/rlm_eap/libeap/
39  *      why is the prototype here?
40  */
41 extern void fips186_2prf(uint8_t mk[20], uint8_t finalkey[160]);
42
43 #endif /* _FR_SHA1_H */