Bitcoin Core 28.99.0
P2P Digital Currency
sha256.h
Go to the documentation of this file.
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_SHA256_H
6#define BITCOIN_CRYPTO_SHA256_H
7
8#include <cstdlib>
9#include <stdint.h>
10#include <string>
11
14{
15private:
16 uint32_t s[8];
17 unsigned char buf[64];
18 uint64_t bytes{0};
19
20public:
21 static const size_t OUTPUT_SIZE = 32;
22
23 CSHA256();
24 CSHA256& Write(const unsigned char* data, size_t len);
25 void Finalize(unsigned char hash[OUTPUT_SIZE]);
26 CSHA256& Reset();
27};
28
30enum UseImplementation : uint8_t {
32 USE_SSE4 = 1 << 0,
33 USE_AVX2 = 1 << 1,
34 USE_SHANI = 1 << 2,
38};
39}
40
45
51void SHA256D64(unsigned char* output, const unsigned char* input, size_t blocks);
52
53#endif // BITCOIN_CRYPTO_SHA256_H
A hasher class for SHA-256.
Definition: sha256.h:14
CSHA256 & Reset()
Definition: sha256.cpp:744
unsigned char buf[64]
Definition: sha256.h:17
static const size_t OUTPUT_SIZE
Definition: sha256.h:21
void Finalize(unsigned char hash[OUTPUT_SIZE])
Definition: sha256.cpp:727
uint64_t bytes
Definition: sha256.h:18
CSHA256 & Write(const unsigned char *data, size_t len)
Definition: sha256.cpp:701
uint32_t s[8]
Definition: sha256.h:16
CSHA256()
Definition: sha256.cpp:696
void SHA256D64(unsigned char *output, const unsigned char *input, size_t blocks)
Compute multiple double-SHA256's of 64-byte blobs.
Definition: sha256.cpp:751
std::string SHA256AutoDetect(sha256_implementation::UseImplementation use_implementation=sha256_implementation::USE_ALL)
Autodetect the best available SHA256 implementation.
Definition: sha256.cpp:587