hkdf_sha256_32.h raw
1 // Copyright (c) 2018-2022 The Limenka 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 LIMENKA_CRYPTO_HKDF_SHA256_32_H
6 #define LIMENKA_CRYPTO_HKDF_SHA256_32_H
7
8 #include <crypto/hmac_sha256.h>
9
10 #include <cstdlib>
11 #include <stdint.h>
12
13 /** A rfc5869 HKDF implementation with HMAC_SHA256 and fixed key output length of 32 bytes (L=32) */
14 class CHKDF_HMAC_SHA256_L32
15 {
16 private:
17 unsigned char m_prk[32];
18 static const size_t OUTPUT_SIZE = 32;
19
20 public:
21 CHKDF_HMAC_SHA256_L32(const unsigned char* ikm, size_t ikmlen, const std::string& salt);
22 void Expand32(const std::string& info, unsigned char hash[OUTPUT_SIZE]);
23 };
24
25 #endif // LIMENKA_CRYPTO_HKDF_SHA256_32_H
26