xref: /netbsd-src/crypto/external/bsd/openssl.old/lib/libcrypto/libc-sha2xx.c (revision afab4e300d3a9fb07dd8c80daf53d0feb3345706)
1 /*
2  * Special version of sha512.c that uses the libc SHA512 implementation
3  * of libc.
4  */
5 
6 #include <string.h>
7 #include <sys/sha2.h>
8 
9 #include "crypto/sha.h"
10 
11 static const uint64_t sha512_224_initial_hash_value[] = {
12 	0x8c3d37c819544da2ULL,
13 	0x73e1996689dcd4d6ULL,
14 	0x1dfab7ae32ff9c82ULL,
15 	0x679dd514582f9fcfULL,
16 	0x0f6d2b697bd44da8ULL,
17 	0x77e36f7304c48942ULL,
18 	0x3f9d85a86a1d36c8ULL,
19 	0x1112e6ad91d692a1ULL,
20 };
21 
22 static const uint64_t sha512_256_initial_hash_value[] = {
23 	0x22312194fc2bf72cULL,
24 	0x9f555fa3c84c64c2ULL,
25 	0x2393b86b6f53b151ULL,
26 	0x963877195940eabdULL,
27 	0x96283ee2a88effe3ULL,
28 	0xbe5e1e2553863992ULL,
29 	0x2b0199fc2c85b8aaULL,
30 	0x0eb72ddc81c52ca2ULL,
31 };
32 
33 int
34 sha512_224_init(SHA512_CTX *context)
35 {
36 	if (context == NULL)
37 		return 1;
38 
39 	memcpy(context->state, sha512_224_initial_hash_value,
40 	    (size_t)(SHA512_DIGEST_LENGTH));
41 	memset(context->buffer, 0, (size_t)(SHA512_BLOCK_LENGTH));
42 	context->bitcount[0] = context->bitcount[1] =  0;
43 
44 	return 1;
45 
46 }
47 
48 int
49 sha512_256_init(SHA512_CTX *context)
50 {
51 	if (context == NULL)
52 		return 1;
53 
54 	memcpy(context->state, sha512_256_initial_hash_value,
55 	    (size_t)(SHA512_DIGEST_LENGTH));
56 	memset(context->buffer, 0, (size_t)(SHA512_BLOCK_LENGTH));
57 	context->bitcount[0] = context->bitcount[1] =  0;
58 
59 	return 1;
60 }
61