aboutsummaryrefslogtreecommitdiff
path: root/src/crypto/hkdf_sha256_32.h
diff options
context:
space:
mode:
authorJonas Schnelli <dev@jonasschnelli.ch>2018-08-24 11:10:43 +0200
committerJonas Schnelli <dev@jonasschnelli.ch>2019-05-11 09:14:07 +0200
commit551d489416339dae8f9d896013cd060a21406e2b (patch)
treefeaa935ee4a068218a2559654b11a6338ca4c8ac /src/crypto/hkdf_sha256_32.h
parent3b64f852e400c552f031697d6a86829dc6e74bd6 (diff)
Add HKDF HMAC_SHA256 L=32 implementations
Diffstat (limited to 'src/crypto/hkdf_sha256_32.h')
-rw-r--r--src/crypto/hkdf_sha256_32.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/crypto/hkdf_sha256_32.h b/src/crypto/hkdf_sha256_32.h
new file mode 100644
index 0000000000..fa1e42aec1
--- /dev/null
+++ b/src/crypto/hkdf_sha256_32.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2018 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#ifndef BITCOIN_CRYPTO_HKDF_SHA256_32_H
+#define BITCOIN_CRYPTO_HKDF_SHA256_32_H
+
+#include <crypto/hmac_sha256.h>
+
+#include <stdint.h>
+#include <stdlib.h>
+
+/** A rfc5869 HKDF implementation with HMAC_SHA256 and fixed key output length of 32 bytes (L=32) */
+class CHKDF_HMAC_SHA256_L32
+{
+private:
+ unsigned char m_prk[32];
+ static const size_t OUTPUT_SIZE = 32;
+
+public:
+ CHKDF_HMAC_SHA256_L32(const unsigned char* ikm, size_t ikmlen, const std::string& salt);
+ void Expand32(const std::string& info, unsigned char hash[OUTPUT_SIZE]);
+};
+
+#endif // BITCOIN_CRYPTO_HKDF_SHA256_32_H