sha1.h revision 294333
1210311Sjmallett/* $OpenBSD: sha1.h,v 1.24 2012/12/05 23:19:57 deraadt Exp $ */ 2210311Sjmallett 3210311Sjmallett/* 4210311Sjmallett * SHA-1 in C 5210311Sjmallett * By Steve Reid <steve@edmweb.com> 6210311Sjmallett * 100% Public Domain 7210311Sjmallett */ 8210311Sjmallett 9210311Sjmallett#ifndef _SHA1_H 10210311Sjmallett#define _SHA1_H 11210311Sjmallett 12210311Sjmallett#ifndef WITH_OPENSSL 13210311Sjmallett 14210311Sjmallett#define SHA1_BLOCK_LENGTH 64 15210311Sjmallett#define SHA1_DIGEST_LENGTH 20 16210311Sjmallett#define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1) 17210311Sjmallett 18210311Sjmalletttypedef struct { 19210311Sjmallett u_int32_t state[5]; 20210311Sjmallett u_int64_t count; 21210311Sjmallett u_int8_t buffer[SHA1_BLOCK_LENGTH]; 22210311Sjmallett} SHA1_CTX; 23210311Sjmallett 24210311Sjmallettvoid SHA1Init(SHA1_CTX *); 25210311Sjmallettvoid SHA1Pad(SHA1_CTX *); 26210311Sjmallettvoid SHA1Transform(u_int32_t [5], const u_int8_t [SHA1_BLOCK_LENGTH]) 27210311Sjmallett __attribute__((__bounded__(__minbytes__,1,5))) 28210311Sjmallett __attribute__((__bounded__(__minbytes__,2,SHA1_BLOCK_LENGTH))); 29210311Sjmallettvoid SHA1Update(SHA1_CTX *, const u_int8_t *, size_t) 30210311Sjmallett __attribute__((__bounded__(__string__,2,3))); 31210311Sjmallettvoid SHA1Final(u_int8_t [SHA1_DIGEST_LENGTH], SHA1_CTX *) 32210311Sjmallett __attribute__((__bounded__(__minbytes__,1,SHA1_DIGEST_LENGTH))); 33210311Sjmallettchar *SHA1End(SHA1_CTX *, char *) 34210311Sjmallett __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH))); 35210311Sjmallettchar *SHA1File(const char *, char *) 36210311Sjmallett __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH))); 37210311Sjmallettchar *SHA1FileChunk(const char *, char *, off_t, off_t) 38210311Sjmallett __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH))); 39210311Sjmallettchar *SHA1Data(const u_int8_t *, size_t, char *) 40210311Sjmallett __attribute__((__bounded__(__string__,1,2))) 41210311Sjmallett __attribute__((__bounded__(__minbytes__,3,SHA1_DIGEST_STRING_LENGTH))); 42210311Sjmallett 43210311Sjmallett#define HTONDIGEST(x) do { \ 44210311Sjmallett x[0] = htonl(x[0]); \ 45210311Sjmallett x[1] = htonl(x[1]); \ 46210311Sjmallett x[2] = htonl(x[2]); \ 47210311Sjmallett x[3] = htonl(x[3]); \ 48210311Sjmallett x[4] = htonl(x[4]); } while (0) 49210311Sjmallett 50210311Sjmallett#define NTOHDIGEST(x) do { \ 51210311Sjmallett x[0] = ntohl(x[0]); \ 52210311Sjmallett x[1] = ntohl(x[1]); \ 53210311Sjmallett x[2] = ntohl(x[2]); \ 54210311Sjmallett x[3] = ntohl(x[3]); \ 55210311Sjmallett x[4] = ntohl(x[4]); } while (0) 56210311Sjmallett 57210311Sjmallett#endif /* !WITH_OPENSSL */ 58210311Sjmallett#endif /* _SHA1_H */ 59210311Sjmallett