LCOV - code coverage report
Current view: top level - src/crypto - sha3.h Coverage Total Hit
Test: fuzz_coverage.info Lines: 100.0 % 1 1
Test Date: 2025-01-22 04:09:46 Functions: - 0 0

            Line data    Source code
       1              : // Copyright (c) 2020-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_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       236522 :     SHA3_256() = default;
      36              :     SHA3_256& Write(Span<const unsigned char> data);
      37              :     SHA3_256& Finalize(Span<unsigned char> output);
      38              :     SHA3_256& Reset();
      39              : };
      40              : 
      41              : #endif // BITCOIN_CRYPTO_SHA3_H
        

Generated by: LCOV version 2.0-1