fuzz coverage

Coverage Report

Created: 2025-06-01 19:34

/Users/eugenesiegel/btc/bitcoin/src/crypto/sha3.h
Line
Count
Source
1
// Copyright (c) 2020-present 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_SHA3_H
6
#define BITCOIN_CRYPTO_SHA3_H
7
8
#include <span.h>
9
10
#include <cstdlib>
11
#include <stdint.h>
12
13
//! The Keccak-f[1600] transform.
14
void KeccakF(uint64_t (&st)[25]);
15
16
class SHA3_256
17
{
18
private:
19
    uint64_t m_state[25] = {0};
20
    unsigned char m_buffer[8];
21
    unsigned m_bufsize = 0;
22
    unsigned m_pos = 0;
23
24
    //! Sponge rate in bits.
25
    static constexpr unsigned RATE_BITS = 1088;
26
27
    //! Sponge rate expressed as a multiple of the buffer size.
28
    static constexpr unsigned RATE_BUFFERS = RATE_BITS / (8 * sizeof(m_buffer));
29
30
    static_assert(RATE_BITS % (8 * sizeof(m_buffer)) == 0, "Rate must be a multiple of 8 bytes");
31
32
public:
33
    static constexpr size_t OUTPUT_SIZE = 32;
34
35
718
    SHA3_256() = default;
36
    SHA3_256& Write(std::span<const unsigned char> data);
37
    SHA3_256& Finalize(std::span<unsigned char> output);
38
    SHA3_256& Reset();
39
};
40
41
#endif // BITCOIN_CRYPTO_SHA3_H