allow reading/writing the camouflage
[xonotic/d0_blind_id.git] / sha1.h
1 #ifndef __SHA1_H__
2 #define __SHA1_H__
3
4 #define SHA_DATASIZE    64
5 #define SHA_DATALEN     16
6 #define SHA_DIGESTSIZE  20
7 #define SHA_DIGESTLEN    5
8 /* The structure for storing SHA info */
9
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 */
15 } SHA_CTX;
16
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);
22
23 #ifndef EXTRACT_UCHAR
24 #define EXTRACT_UCHAR(p)  (*(unsigned char *)(p))
25 #endif
26
27 #define STRING2INT(s) ((((((EXTRACT_UCHAR(s) << 8)    \
28                          | EXTRACT_UCHAR(s+1)) << 8)  \
29                          | EXTRACT_UCHAR(s+2)) << 8)  \
30                          | EXTRACT_UCHAR(s+3))
31
32 unsigned char *sha(unsigned char *buffer, unsigned int len);
33
34 #endif