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