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