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