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_SHA512_H
6 : : #define BITCOIN_CRYPTO_HMAC_SHA512_H
7 : :
8 : : #include <crypto/sha512.h>
9 : :
10 : : #include <cstdlib>
11 : : #include <stdint.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 : 2344317 : CHMAC_SHA512& Write(const unsigned char* data, size_t len)
25 : : {
26 [ + - ][ + - : 787535 : inner.Write(data, len);
+ - + - ]
27 [ + - ][ + - : 787535 : return *this;
+ + + - ]
28 : : }
29 : : void Finalize(unsigned char hash[OUTPUT_SIZE]);
30 : : };
31 : :
32 : : #endif // BITCOIN_CRYPTO_HMAC_SHA512_H
|