X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/6b882a3918590b9c0f45643323adae9862eedde5..5a9964829e8e6ef8382ed8b61dc71b1705a270f7:/client/crypto/libpcrypto.c?ds=sidebyside

diff --git a/client/crypto/libpcrypto.c b/client/crypto/libpcrypto.c
index 896048bf..ebc1e987 100644
--- a/client/crypto/libpcrypto.c
+++ b/client/crypto/libpcrypto.c
@@ -19,6 +19,7 @@
 #include <mbedtls/pk.h>
 #include <mbedtls/ecdsa.h>
 #include <mbedtls/sha256.h>
+#include <mbedtls/sha512.h>
 #include <mbedtls/ctr_drbg.h>
 #include <mbedtls/entropy.h>
 #include <mbedtls/error.h>
@@ -106,6 +107,20 @@ int sha256hash(uint8_t *input, int length, uint8_t *hash) {
 	return 0;
 }
 
+int sha512hash(uint8_t *input, int length, uint8_t *hash) {
+	if (!hash || !input)
+		return 1;
+	
+	mbedtls_sha512_context sctx;
+	mbedtls_sha512_init(&sctx);
+	mbedtls_sha512_starts(&sctx, 0); //SHA-512, not 384
+	mbedtls_sha512_update(&sctx, input, length);
+	mbedtls_sha512_finish(&sctx, hash);	
+	mbedtls_sha512_free(&sctx);
+	
+	return 0;
+}
+
 int ecdsa_init_str(mbedtls_ecdsa_context *ctx, char * key_d, char *key_x, char *key_y) {
 	if (!ctx)
 		return 1;