Home | History | Annotate | Line # | Download | only in libcrypto
      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