Bitcoin Core
28.99.0
P2P Digital Currency
src
crypto
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
13
class
CSHA256
14
{
15
private
:
16
uint32_t
s
[8];
17
unsigned
char
buf
[64];
18
uint64_t
bytes
{0};
19
20
public
:
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
29
namespace
sha256_implementation
{
30
enum
UseImplementation
: uint8_t {
31
STANDARD
= 0,
32
USE_SSE4
= 1 << 0,
33
USE_AVX2
= 1 << 1,
34
USE_SHANI
= 1 << 2,
35
USE_SSE4_AND_AVX2
=
USE_SSE4
|
USE_AVX2
,
36
USE_SSE4_AND_SHANI
=
USE_SSE4
|
USE_SHANI
,
37
USE_ALL
=
USE_SSE4
|
USE_AVX2
|
USE_SHANI
,
38
};
39
}
40
44
std::string
SHA256AutoDetect
(
sha256_implementation::UseImplementation
use_implementation =
sha256_implementation::USE_ALL
);
45
51
void
SHA256D64
(
unsigned
char
* output,
const
unsigned
char
* input,
size_t
blocks);
52
53
#endif
// BITCOIN_CRYPTO_SHA256_H
CSHA256
A hasher class for SHA-256.
Definition:
sha256.h:14
CSHA256::Reset
CSHA256 & Reset()
Definition:
sha256.cpp:744
CSHA256::buf
unsigned char buf[64]
Definition:
sha256.h:17
CSHA256::OUTPUT_SIZE
static const size_t OUTPUT_SIZE
Definition:
sha256.h:21
CSHA256::Finalize
void Finalize(unsigned char hash[OUTPUT_SIZE])
Definition:
sha256.cpp:727
CSHA256::bytes
uint64_t bytes
Definition:
sha256.h:18
CSHA256::Write
CSHA256 & Write(const unsigned char *data, size_t len)
Definition:
sha256.cpp:701
CSHA256::s
uint32_t s[8]
Definition:
sha256.h:16
CSHA256::CSHA256
CSHA256()
Definition:
sha256.cpp:696
sha256_implementation
Definition:
sha256.h:29
sha256_implementation::UseImplementation
UseImplementation
Definition:
sha256.h:30
sha256_implementation::USE_SSE4_AND_AVX2
@ USE_SSE4_AND_AVX2
Definition:
sha256.h:35
sha256_implementation::USE_AVX2
@ USE_AVX2
Definition:
sha256.h:33
sha256_implementation::STANDARD
@ STANDARD
Definition:
sha256.h:31
sha256_implementation::USE_ALL
@ USE_ALL
Definition:
sha256.h:37
sha256_implementation::USE_SHANI
@ USE_SHANI
Definition:
sha256.h:34
sha256_implementation::USE_SSE4_AND_SHANI
@ USE_SSE4_AND_SHANI
Definition:
sha256.h:36
sha256_implementation::USE_SSE4
@ USE_SSE4
Definition:
sha256.h:32
test_vectors_musig2_generate.data
data
Definition:
test_vectors_musig2_generate.py:98
SHA256D64
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
SHA256AutoDetect
std::string SHA256AutoDetect(sha256_implementation::UseImplementation use_implementation=sha256_implementation::USE_ALL)
Autodetect the best available SHA256 implementation.
Definition:
sha256.cpp:587
Generated on Wed Dec 18 2024 20:00:09 for Bitcoin Core by
1.9.4