Line data Source code
1 : // Copyright (c) 2014-2018 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 <stdint.h> 11 : #include <stdlib.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 6874 : CHMAC_SHA256& Write(const unsigned char* data, size_t len) 25 : { 26 6874 : inner.Write(data, len); 27 6874 : return *this; 28 : } 29 : void Finalize(unsigned char hash[OUTPUT_SIZE]); 30 : }; 31 : 32 : #endif // BITCOIN_CRYPTO_HMAC_SHA256_H