hkdf_sha256_32.h raw
1 // Copyright (c) 2018-present The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #ifndef BITCOIN_CRYPTO_HKDF_SHA256_32_H
6 #define BITCOIN_CRYPTO_HKDF_SHA256_32_H
7
8 #include <cstddef>
9 #include <string>
10
11 /** A rfc5869 HKDF implementation with HMAC_SHA256 and fixed key output length of 32 bytes (L=32) */
12 class CHKDF_HMAC_SHA256_L32
13 {
14 private:
15 unsigned char m_prk[32];
16 static const size_t OUTPUT_SIZE = 32;
17
18 public:
19 CHKDF_HMAC_SHA256_L32(const unsigned char* ikm, size_t ikmlen, const std::string& salt);
20 void Expand32(const std::string& info, unsigned char hash[OUTPUT_SIZE]);
21 };
22
23 #endif // BITCOIN_CRYPTO_HKDF_SHA256_32_H
24