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