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 23const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT; 24 25unsigned 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 38unsigned 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