Annotation of src/include/sha1.h, Revision 1.17
1.17 ! millert 1: /* $OpenBSD: sha1.h,v 1.16 2004/01/22 21:48:02 espie Exp $ */
1.5 millert 2:
3: /*
4: * SHA-1 in C
5: * By Steve Reid <steve@edmweb.com>
6: * 100% Public Domain
7: */
1.1 millert 8:
1.2 millert 9: #ifndef _SHA1_H
10: #define _SHA1_H
11:
1.17 ! millert 12: #define SHA1_BLOCK_LENGTH 64
! 13: #define SHA1_DIGEST_LENGTH 20
! 14: #define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1)
! 15:
1.1 millert 16: typedef struct {
1.5 millert 17: u_int32_t state[5];
1.11 millert 18: u_int32_t count[2];
1.17 ! millert 19: u_int8_t buffer[SHA1_BLOCK_LENGTH];
1.5 millert 20: } SHA1_CTX;
1.11 millert 21:
22: #include <sys/cdefs.h>
23:
24: __BEGIN_DECLS
1.17 ! millert 25: void SHA1Transform(u_int32_t [5], const u_int8_t [SHA1_BLOCK_LENGTH])
1.15 avsm 26: __attribute__((__bounded__(__minbytes__,1,5)))
1.17 ! millert 27: __attribute__((__bounded__(__minbytes__,2,SHA1_BLOCK_LENGTH)));
1.16 espie 28: void SHA1Init(SHA1_CTX *);
1.17 ! millert 29: void SHA1Update(SHA1_CTX *, const u_int8_t *, unsigned int)
1.15 avsm 30: __attribute__((__bounded__(__string__,2,3)));
1.17 ! millert 31: void SHA1Final(u_int8_t [SHA1_DIGEST_LENGTH], SHA1_CTX *)
! 32: __attribute__((__bounded__(__minbytes__,1,SHA1_DIGEST_LENGTH)));
! 33: char *SHA1End(SHA1_CTX *, char [SHA1_DIGEST_STRING_LENGTH])
! 34: __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
! 35: char *SHA1File(char *, char [SHA1_DIGEST_STRING_LENGTH])
! 36: __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
! 37: char *SHA1Data(const u_int8_t *, size_t, char [SHA1_DIGEST_STRING_LENGTH])
1.15 avsm 38: __attribute__((__bounded__(__string__,1,2)))
1.17 ! millert 39: __attribute__((__bounded__(__minbytes__,3,SHA1_DIGEST_STRING_LENGTH)));
1.11 millert 40: __END_DECLS
1.9 angelos 41:
1.11 millert 42: #define HTONDIGEST(x) do { \
43: x[0] = htonl(x[0]); \
44: x[1] = htonl(x[1]); \
45: x[2] = htonl(x[2]); \
46: x[3] = htonl(x[3]); \
47: x[4] = htonl(x[4]); } while (0)
48:
49: #define NTOHDIGEST(x) do { \
50: x[0] = ntohl(x[0]); \
51: x[1] = ntohl(x[1]); \
52: x[2] = ntohl(x[2]); \
53: x[3] = ntohl(x[3]); \
54: x[4] = ntohl(x[4]); } while (0)
1.2 millert 55:
56: #endif /* _SHA1_H */