1*61046927SAndroid Build Coastguard Worker /* $OpenBSD: sha1.h,v 1.24 2012/12/05 23:19:57 deraadt Exp $ */ 2*61046927SAndroid Build Coastguard Worker 3*61046927SAndroid Build Coastguard Worker /* 4*61046927SAndroid Build Coastguard Worker * SHA-1 in C 5*61046927SAndroid Build Coastguard Worker * By Steve Reid <[email protected]> 6*61046927SAndroid Build Coastguard Worker * 100% Public Domain 7*61046927SAndroid Build Coastguard Worker */ 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Worker #ifndef _SHA1_H 10*61046927SAndroid Build Coastguard Worker #define _SHA1_H 11*61046927SAndroid Build Coastguard Worker 12*61046927SAndroid Build Coastguard Worker #include <stddef.h> 13*61046927SAndroid Build Coastguard Worker #include <stdint.h> 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Worker #define SHA1_BLOCK_LENGTH 64 16*61046927SAndroid Build Coastguard Worker #define SHA1_DIGEST_LENGTH 20 17*61046927SAndroid Build Coastguard Worker #define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1) 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 20*61046927SAndroid Build Coastguard Worker extern "C" { 21*61046927SAndroid Build Coastguard Worker #endif 22*61046927SAndroid Build Coastguard Worker 23*61046927SAndroid Build Coastguard Worker typedef struct _SHA1_CTX { 24*61046927SAndroid Build Coastguard Worker uint32_t state[5]; 25*61046927SAndroid Build Coastguard Worker uint64_t count; 26*61046927SAndroid Build Coastguard Worker uint8_t buffer[SHA1_BLOCK_LENGTH]; 27*61046927SAndroid Build Coastguard Worker } SHA1_CTX; 28*61046927SAndroid Build Coastguard Worker 29*61046927SAndroid Build Coastguard Worker void SHA1Init(SHA1_CTX *); 30*61046927SAndroid Build Coastguard Worker void SHA1Update(SHA1_CTX *, const uint8_t *, size_t); 31*61046927SAndroid Build Coastguard Worker void SHA1Final(uint8_t [SHA1_DIGEST_LENGTH], SHA1_CTX *); 32*61046927SAndroid Build Coastguard Worker 33*61046927SAndroid Build Coastguard Worker #define HTONDIGEST(x) do { \ 34*61046927SAndroid Build Coastguard Worker x[0] = htonl(x[0]); \ 35*61046927SAndroid Build Coastguard Worker x[1] = htonl(x[1]); \ 36*61046927SAndroid Build Coastguard Worker x[2] = htonl(x[2]); \ 37*61046927SAndroid Build Coastguard Worker x[3] = htonl(x[3]); \ 38*61046927SAndroid Build Coastguard Worker x[4] = htonl(x[4]); } while (0) 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Worker #define NTOHDIGEST(x) do { \ 41*61046927SAndroid Build Coastguard Worker x[0] = ntohl(x[0]); \ 42*61046927SAndroid Build Coastguard Worker x[1] = ntohl(x[1]); \ 43*61046927SAndroid Build Coastguard Worker x[2] = ntohl(x[2]); \ 44*61046927SAndroid Build Coastguard Worker x[3] = ntohl(x[3]); \ 45*61046927SAndroid Build Coastguard Worker x[4] = ntohl(x[4]); } while (0) 46*61046927SAndroid Build Coastguard Worker 47*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 48*61046927SAndroid Build Coastguard Worker } 49*61046927SAndroid Build Coastguard Worker #endif 50*61046927SAndroid Build Coastguard Worker 51*61046927SAndroid Build Coastguard Worker #endif /* _SHA1_H */ 52