Branch data Line data Source code
1 : : // Copyright (c) 2014-2022 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_HMAC_SHA256_H 6 : : #define BITCOIN_CRYPTO_HMAC_SHA256_H 7 : : 8 : : #include <crypto/sha256.h> 9 : : 10 : : #include <cstdlib> 11 : : #include <stdint.h> 12 : : 13 : : /** A hasher class for HMAC-SHA-256. */ 14 : : class CHMAC_SHA256 15 : : { 16 : : private: 17 : : CSHA256 outer; 18 : : CSHA256 inner; 19 : : 20 : : public: 21 : : static const size_t OUTPUT_SIZE = 32; 22 : : 23 : : CHMAC_SHA256(const unsigned char* key, size_t keylen); 24 : 4355 : CHMAC_SHA256& Write(const unsigned char* data, size_t len) 25 : : { 26 : 4355 : inner.Write(data, len); 27 : 4355 : return *this; 28 : : } 29 : : void Finalize(unsigned char hash[OUTPUT_SIZE]); 30 : : }; 31 : : 32 : : #endif // BITCOIN_CRYPTO_HMAC_SHA256_H