xref: /openbsd/usr.bin/ssh/hash.c (revision 09467b48)
1 /* $OpenBSD: hash.c,v 1.6 2019/11/29 00:11:21 djm Exp $ */
2 /*
3  * Public domain. Author: Christian Weisgerber <naddy@openbsd.org>
4  * API compatible reimplementation of function from nacl
5  */
6 
7 #include "crypto_api.h"
8 
9 #include <stdarg.h>
10 
11 #ifdef WITH_OPENSSL
12 #include <openssl/evp.h>
13 
14 int
15 crypto_hash_sha512(unsigned char *out, const unsigned char *in,
16     unsigned long long inlen)
17 {
18 
19 	if (!EVP_Digest(in, inlen, out, NULL, EVP_sha512(), NULL))
20 		return -1;
21 	return 0;
22 }
23 
24 #else
25 #include <sha2.h>
26 
27 int
28 crypto_hash_sha512(unsigned char *out, const unsigned char *in,
29     unsigned long long inlen)
30 {
31 
32 	SHA2_CTX ctx;
33 
34 	SHA512Init(&ctx);
35 	SHA512Update(&ctx, in, inlen);
36 	SHA512Final(out, &ctx);
37 	return 0;
38 }
39 #endif /* WITH_OPENSSL */
40