Bitcoin Core  0.20.99
P2P Digital Currency
Classes | Typedefs | Functions
hash.h File Reference
#include <attributes.h>
#include <crypto/common.h>
#include <crypto/ripemd160.h>
#include <crypto/sha256.h>
#include <prevector.h>
#include <serialize.h>
#include <uint256.h>
#include <version.h>
#include <string>
#include <vector>
Include dependency graph for hash.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CHash256
 A hasher class for Bitcoin's 256-bit hash (double SHA-256). More...
 
class  CHash160
 A hasher class for Bitcoin's 160-bit hash (SHA-256 + RIPEMD-160). More...
 
class  CHashWriter
 A writer stream (for serialization) that computes a 256-bit hash. More...
 
class  CHashVerifier< Source >
 Reads data from an underlying stream, while hashing the read data. More...
 

Typedefs

typedef uint256 ChainCode
 

Functions

template<typename T >
uint256 Hash (const T &in1)
 Compute the 256-bit hash of an object. More...
 
template<typename T1 , typename T2 >
uint256 Hash (const T1 &in1, const T2 &in2)
 Compute the 256-bit hash of the concatenation of two objects. More...
 
template<typename T1 >
uint160 Hash160 (const T1 &in1)
 Compute the 160-bit hash an object. More...
 
template<typename T >
uint256 SerializeHash (const T &obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION)
 Compute the 256-bit hash of an object's serialization. More...
 
NODISCARD uint256 SHA256Uint256 (const uint256 &input)
 Single-SHA256 a 32-byte input (represented as uint256). More...
 
unsigned int MurmurHash3 (unsigned int nHashSeed, Span< const unsigned char > vDataToHash)
 
void BIP32Hash (const ChainCode &chainCode, unsigned int nChild, unsigned char header, const unsigned char data[32], unsigned char output[64])
 
CHashWriter TaggedHash (const std::string &tag)
 Return a CHashWriter primed for tagged hashes (as specified in BIP 340). More...
 

Typedef Documentation

◆ ChainCode

typedef uint256 ChainCode

Definition at line 21 of file hash.h.

Function Documentation

◆ BIP32Hash()

void BIP32Hash ( const ChainCode chainCode,
unsigned int  nChild,
unsigned char  header,
const unsigned char  data[32],
unsigned char  output[64] 
)

Definition at line 72 of file hash.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Hash() [1/2]

template<typename T >
uint256 Hash ( const T &  in1)
inline

Compute the 256-bit hash of an object.

Definition at line 75 of file hash.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Hash() [2/2]

template<typename T1 , typename T2 >
uint256 Hash ( const T1 &  in1,
const T2 &  in2 
)
inline

Compute the 256-bit hash of the concatenation of two objects.

Definition at line 84 of file hash.h.

Here is the call graph for this function:

◆ Hash160()

template<typename T1 >
uint160 Hash160 ( const T1 &  in1)
inline

Compute the 160-bit hash an object.

Definition at line 92 of file hash.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MurmurHash3()

unsigned int MurmurHash3 ( unsigned int  nHashSeed,
Span< const unsigned char >  vDataToHash 
)

Definition at line 16 of file hash.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SerializeHash()

template<typename T >
uint256 SerializeHash ( const T &  obj,
int  nType = SER_GETHASH,
int  nVersion = PROTOCOL_VERSION 
)

Compute the 256-bit hash of an object's serialization.

Definition at line 192 of file hash.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SHA256Uint256()

NODISCARD uint256 SHA256Uint256 ( const uint256 input)

Single-SHA256 a 32-byte input (represented as uint256).

Definition at line 82 of file hash.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TaggedHash()

CHashWriter TaggedHash ( const std::string &  tag)

Return a CHashWriter primed for tagged hashes (as specified in BIP 340).

The returned object will have SHA256(tag) written to it twice (= 64 bytes). A tagged hash can be computed by feeding the message into this object, and then calling CHashWriter::GetSHA256().

Definition at line 89 of file hash.cpp.

Here is the call graph for this function:
Here is the caller graph for this function: