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 : 12417 : CHMAC_SHA256& Write(const unsigned char* data, size_t len)
25 : : {
26 [ + - + - : 9804 : inner.Write(data, len);
+ - ][ + - ]
27 [ + - + + : 9804 : return *this;
+ - ][ + - ]
28 : : }
29 : : void Finalize(unsigned char hash[OUTPUT_SIZE]);
30 : : };
31 : :
32 : : #endif // BITCOIN_CRYPTO_HMAC_SHA256_H
|