diff options
author | Jonas Schnelli <dev@jonasschnelli.ch> | 2018-08-24 11:10:43 +0200 |
---|---|---|
committer | Jonas Schnelli <dev@jonasschnelli.ch> | 2019-05-11 09:14:07 +0200 |
commit | 551d489416339dae8f9d896013cd060a21406e2b (patch) | |
tree | feaa935ee4a068218a2559654b11a6338ca4c8ac /src/crypto/hkdf_sha256_32.h | |
parent | 3b64f852e400c552f031697d6a86829dc6e74bd6 (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.h | 25 |
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 |