4 #define SHA_DATASIZE 64
6 #define SHA_DIGESTSIZE 20
7 #define SHA_DIGESTLEN 5
8 /* The structure for storing SHA info */
10 typedef struct sha_ctx {
11 unsigned int digest[SHA_DIGESTLEN]; /* Message digest */
12 unsigned int count_l, count_h; /* 64-bit block count */
13 unsigned char block[SHA_DATASIZE]; /* SHA data buffer */
14 unsigned int index; /* index into buffer */
17 void sha_init(struct sha_ctx *ctx);
18 void sha_update(struct sha_ctx *ctx, unsigned char *buffer, unsigned int len);
19 void sha_final(struct sha_ctx *ctx);
20 void sha_digest(struct sha_ctx *ctx, unsigned char *s);
21 void sha_copy(struct sha_ctx *dest, struct sha_ctx *src);
24 #define EXTRACT_UCHAR(p) (*(unsigned char *)(p))
27 #define STRING2INT(s) ((((((EXTRACT_UCHAR(s) << 8) \
28 | EXTRACT_UCHAR(s+1)) << 8) \
29 | EXTRACT_UCHAR(s+2)) << 8) \
32 unsigned char *sha(unsigned char *buffer, unsigned int len);