5 static unsigned char *shacomp(alg, fmt, bitstr, bitcnt)
12 static unsigned char digest[SHA_MAX_HEX_LEN+1];
13 unsigned char *ret = digest;
15 if ((s = shaopen(alg)) == NULL)
17 shawrite(bitstr, bitcnt, s);
19 if (fmt == SHA_FMT_RAW)
20 memcpy(digest, shadigest(s), s->digestlen);
21 else if (fmt == SHA_FMT_HEX)
22 strcpy((char *) digest, shahex(s));
23 else if (fmt == SHA_FMT_BASE64)
24 strcpy((char *) digest, shabase64(s));
31 #define SHA_DIRECT(type, name, alg, fmt) \
32 type name(bitstr, bitcnt) \
33 unsigned char *bitstr; \
34 unsigned long bitcnt; \
36 return((type) shacomp(alg, fmt, bitstr, bitcnt)); \
39 SHA_DIRECT(unsigned char *, sha1digest, SHA1, SHA_FMT_RAW)
40 SHA_DIRECT(char *, sha1hex, SHA1, SHA_FMT_HEX)
41 SHA_DIRECT(char *, sha1base64, SHA1, SHA_FMT_BASE64)
43 SHA_DIRECT(unsigned char *, sha224digest, SHA224, SHA_FMT_RAW)
44 SHA_DIRECT(char *, sha224hex, SHA224, SHA_FMT_HEX)
45 SHA_DIRECT(char *, sha224base64, SHA224, SHA_FMT_BASE64)
47 SHA_DIRECT(unsigned char *, sha256digest, SHA256, SHA_FMT_RAW)
48 SHA_DIRECT(char *, sha256hex, SHA256, SHA_FMT_HEX)
49 SHA_DIRECT(char *, sha256base64, SHA256, SHA_FMT_BASE64)
51 SHA_DIRECT(unsigned char *, sha384digest, SHA384, SHA_FMT_RAW)
52 SHA_DIRECT(char *, sha384hex, SHA384, SHA_FMT_HEX)
53 SHA_DIRECT(char *, sha384base64, SHA384, SHA_FMT_BASE64)
55 SHA_DIRECT(unsigned char *, sha512digest, SHA512, SHA_FMT_RAW)
56 SHA_DIRECT(char *, sha512hex, SHA512, SHA_FMT_HEX)
57 SHA_DIRECT(char *, sha512base64, SHA512, SHA_FMT_BASE64)