1 /*
2  * Special version of sha512.c that uses the libc SHA512 implementation
3  * of libc.
4  */
5 
6 /* crypto/sha/sha512.c */
7 /* ====================================================================
8  * Copyright (c) 2004 The OpenSSL Project.  All rights reserved
9  * according to the OpenSSL license [found in ../../LICENSE].
10  * ====================================================================
11  */
12 #include <openssl/opensslconf.h>
13 
14 #include <stdlib.h>
15 #include <string.h>
16 
17 #include <openssl/crypto.h>
18 #include <openssl/sha.h>
19 #include <openssl/opensslv.h>
20 
21 #include "cryptlib.h"
22 
23 const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT;
24 
25 unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
26 	{
27 	SHA512_CTX c;
28 	static unsigned char m[SHA384_DIGEST_LENGTH];
29 
30 	if (md == NULL) md=m;
31 	SHA384_Init(&c);
32 	SHA384_Update(&c,d,n);
33 	SHA384_Final(md,&c);
34 	OPENSSL_cleanse(&c,sizeof(c));
35 	return(md);
36 	}
37 
38 unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md)
39 	{
40 	SHA512_CTX c;
41 	static unsigned char m[SHA512_DIGEST_LENGTH];
42 
43 	if (md == NULL) md=m;
44 	SHA512_Init(&c);
45 	SHA512_Update(&c,d,n);
46 	SHA512_Final(md,&c);
47 	OPENSSL_cleanse(&c,sizeof(c));
48 	return(md);
49 	}
50