]> de.git.xonotic.org Git - xonotic/d0_blind_id.git/blob - sha1.h
license: LGPL 2.1
[xonotic/d0_blind_id.git] / sha1.h
1 #define SHA_DATASIZE    64
2 #define SHA_DATALEN     16
3 #define SHA_DIGESTSIZE  20
4 #define SHA_DIGESTLEN    5
5 /* The structure for storing SHA info */
6
7 typedef struct sha_ctx {
8   unsigned int digest[SHA_DIGESTLEN];  /* Message digest */
9   unsigned int count_l, count_h;       /* 64-bit block count */
10   unsigned char block[SHA_DATASIZE];     /* SHA data buffer */
11   unsigned int index;                  /* index into buffer */
12 } SHA_CTX;
13
14 void sha_init(struct sha_ctx *ctx);
15 void sha_update(struct sha_ctx *ctx, unsigned char *buffer, unsigned int len);
16 void sha_final(struct sha_ctx *ctx);
17 void sha_digest(struct sha_ctx *ctx, unsigned char *s);
18 void sha_copy(struct sha_ctx *dest, struct sha_ctx *src);
19
20 #ifndef EXTRACT_UCHAR
21 #define EXTRACT_UCHAR(p)  (*(unsigned char *)(p))
22 #endif
23
24 #define STRING2INT(s) ((((((EXTRACT_UCHAR(s) << 8)    \
25                          | EXTRACT_UCHAR(s+1)) << 8)  \
26                          | EXTRACT_UCHAR(s+2)) << 8)  \
27                          | EXTRACT_UCHAR(s+3))
28
29 unsigned char *sha(unsigned char *buffer, unsigned int len);