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_SHA512_H 6 : #define BITCOIN_CRYPTO_HMAC_SHA512_H 7 : 8 : #include <crypto/sha512.h> 9 : 10 : #include <stdint.h> 11 : #include <stdlib.h> 12 : 13 : /** A hasher class for HMAC-SHA-512. */ 14 : class CHMAC_SHA512 15 : { 16 : private: 17 : CSHA512 outer; 18 : CSHA512 inner; 19 : 20 : public: 21 : static const size_t OUTPUT_SIZE = 64; 22 : 23 : CHMAC_SHA512(const unsigned char* key, size_t keylen); 24 451383 : CHMAC_SHA512& Write(const unsigned char* data, size_t len) 25 : { 26 451383 : inner.Write(data, len); 27 451383 : return *this; 28 : } 29 : void Finalize(unsigned char hash[OUTPUT_SIZE]); 30 : }; 31 : 32 : #endif // BITCOIN_CRYPTO_HMAC_SHA512_H