xref: /dflybsd-src/crypto/openssh/hash.c (revision 50a69bb51183a7916e776f2c9f5fa64c999f1a2f)
1*0cbfa66cSDaniel Fojt /* $OpenBSD: hash.c,v 1.6 2019/11/29 00:11:21 djm Exp $ */
236e94dc5SPeter Avalos /*
3664f4763Szrj  * Public domain. Author: Christian Weisgerber <naddy@openbsd.org>
4664f4763Szrj  * API compatible reimplementation of function from nacl
536e94dc5SPeter Avalos  */
636e94dc5SPeter Avalos 
7*0cbfa66cSDaniel Fojt #include "includes.h"
8*0cbfa66cSDaniel Fojt 
936e94dc5SPeter Avalos #include "crypto_api.h"
1036e94dc5SPeter Avalos 
11664f4763Szrj #include <stdarg.h>
1236e94dc5SPeter Avalos 
13*0cbfa66cSDaniel Fojt #ifdef WITH_OPENSSL
14*0cbfa66cSDaniel Fojt #include <openssl/evp.h>
1536e94dc5SPeter Avalos 
16664f4763Szrj int
crypto_hash_sha512(unsigned char * out,const unsigned char * in,unsigned long long inlen)17664f4763Szrj crypto_hash_sha512(unsigned char *out, const unsigned char *in,
18664f4763Szrj     unsigned long long inlen)
1936e94dc5SPeter Avalos {
2036e94dc5SPeter Avalos 
21*0cbfa66cSDaniel Fojt 	if (!EVP_Digest(in, inlen, out, NULL, EVP_sha512(), NULL))
22*0cbfa66cSDaniel Fojt 		return -1;
2336e94dc5SPeter Avalos 	return 0;
2436e94dc5SPeter Avalos }
25*0cbfa66cSDaniel Fojt 
26*0cbfa66cSDaniel Fojt #else
27*0cbfa66cSDaniel Fojt # ifdef HAVE_SHA2_H
28*0cbfa66cSDaniel Fojt #  include <sha2.h>
29*0cbfa66cSDaniel Fojt # endif
30*0cbfa66cSDaniel Fojt 
31*0cbfa66cSDaniel Fojt int
crypto_hash_sha512(unsigned char * out,const unsigned char * in,unsigned long long inlen)32*0cbfa66cSDaniel Fojt crypto_hash_sha512(unsigned char *out, const unsigned char *in,
33*0cbfa66cSDaniel Fojt     unsigned long long inlen)
34*0cbfa66cSDaniel Fojt {
35*0cbfa66cSDaniel Fojt 
36*0cbfa66cSDaniel Fojt 	SHA2_CTX ctx;
37*0cbfa66cSDaniel Fojt 
38*0cbfa66cSDaniel Fojt 	SHA512Init(&ctx);
39*0cbfa66cSDaniel Fojt 	SHA512Update(&ctx, in, inlen);
40*0cbfa66cSDaniel Fojt 	SHA512Final(out, &ctx);
41*0cbfa66cSDaniel Fojt 	return 0;
42*0cbfa66cSDaniel Fojt }
43*0cbfa66cSDaniel Fojt #endif /* WITH_OPENSSL */
44