Bitcoin Core
32.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
secp256k1
src
hash.h
Go to the documentation of this file.
1
/***********************************************************************
2
* Copyright (c) 2014 Pieter Wuille *
3
* Distributed under the MIT software license, see the accompanying *
4
* file COPYING or https://www.opensource.org/licenses/mit-license.php.*
5
***********************************************************************/
6
7
#ifndef SECP256K1_HASH_H
8
#define SECP256K1_HASH_H
9
10
#include <stdlib.h>
11
#include <stdint.h>
12
13
#include "
../include/secp256k1.h
"
14
15
typedef
struct
{
16
secp256k1_sha256_compression_function
fn_sha256_compression
;
17
}
secp256k1_hash_ctx
;
18
19
static
void
secp256k1_hash_ctx_init
(
secp256k1_hash_ctx
*hash_ctx);
20
21
typedef
struct
{
22
uint32_t
s
[8];
23
unsigned
char
buf
[64];
24
uint64_t
bytes
;
25
}
secp256k1_sha256
;
26
27
static
void
secp256k1_sha256_initialize
(
secp256k1_sha256
*hash);
28
/* Initialize a SHA256 hash state with a precomputed midstate.
29
* The byte counter must be a multiple of 64, i.e., there must be no unwritten
30
* bytes in the buffer. */
31
static
void
secp256k1_sha256_initialize_midstate
(
secp256k1_sha256
*hash, uint64_t bytes,
const
uint32_t state[8]);
32
static
void
secp256k1_sha256_write
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_sha256
*hash,
const
unsigned
char
*data,
size_t
size);
33
static
void
secp256k1_sha256_finalize
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_sha256
*hash,
unsigned
char
*out32);
34
static
void
secp256k1_sha256_clear
(
secp256k1_sha256
*hash);
35
36
typedef
struct
{
37
secp256k1_sha256
inner
,
outer
;
38
}
secp256k1_hmac_sha256
;
39
40
static
void
secp256k1_hmac_sha256_initialize
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_hmac_sha256
*hash,
const
unsigned
char
*key,
size_t
size);
41
static
void
secp256k1_hmac_sha256_write
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_hmac_sha256
*hash,
const
unsigned
char
*data,
size_t
size);
42
static
void
secp256k1_hmac_sha256_finalize
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_hmac_sha256
*hash,
unsigned
char
*out32);
43
static
void
secp256k1_hmac_sha256_clear
(
secp256k1_hmac_sha256
*hash);
44
45
typedef
struct
{
46
unsigned
char
v
[32];
47
unsigned
char
k
[32];
48
int
retry
;
49
}
secp256k1_rfc6979_hmac_sha256
;
50
51
static
void
secp256k1_rfc6979_hmac_sha256_initialize
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_rfc6979_hmac_sha256
*
rng
,
const
unsigned
char
*key,
size_t
keylen);
52
static
void
secp256k1_rfc6979_hmac_sha256_generate
(
const
secp256k1_hash_ctx
*hash_ctx,
secp256k1_rfc6979_hmac_sha256
*
rng
,
unsigned
char
*out,
size_t
outlen);
53
static
void
secp256k1_rfc6979_hmac_sha256_finalize
(
secp256k1_rfc6979_hmac_sha256
*
rng
);
54
static
void
secp256k1_rfc6979_hmac_sha256_clear
(
secp256k1_rfc6979_hmac_sha256
*
rng
);
55
56
#endif
/* SECP256K1_HASH_H */
secp256k1_hmac_sha256_finalize
static void secp256k1_hmac_sha256_finalize(const secp256k1_hash_ctx *hash_ctx, secp256k1_hmac_sha256 *hash, unsigned char *out32)
secp256k1_sha256_finalize
static void secp256k1_sha256_finalize(const secp256k1_hash_ctx *hash_ctx, secp256k1_sha256 *hash, unsigned char *out32)
secp256k1_sha256_initialize
static void secp256k1_sha256_initialize(secp256k1_sha256 *hash)
secp256k1_hmac_sha256_clear
static void secp256k1_hmac_sha256_clear(secp256k1_hmac_sha256 *hash)
secp256k1_hash_ctx_init
static void secp256k1_hash_ctx_init(secp256k1_hash_ctx *hash_ctx)
secp256k1_sha256_initialize_midstate
static void secp256k1_sha256_initialize_midstate(secp256k1_sha256 *hash, uint64_t bytes, const uint32_t state[8])
secp256k1_hmac_sha256_write
static void secp256k1_hmac_sha256_write(const secp256k1_hash_ctx *hash_ctx, secp256k1_hmac_sha256 *hash, const unsigned char *data, size_t size)
secp256k1_rfc6979_hmac_sha256_clear
static void secp256k1_rfc6979_hmac_sha256_clear(secp256k1_rfc6979_hmac_sha256 *rng)
secp256k1_rfc6979_hmac_sha256_generate
static void secp256k1_rfc6979_hmac_sha256_generate(const secp256k1_hash_ctx *hash_ctx, secp256k1_rfc6979_hmac_sha256 *rng, unsigned char *out, size_t outlen)
secp256k1_rfc6979_hmac_sha256_initialize
static void secp256k1_rfc6979_hmac_sha256_initialize(const secp256k1_hash_ctx *hash_ctx, secp256k1_rfc6979_hmac_sha256 *rng, const unsigned char *key, size_t keylen)
secp256k1_rfc6979_hmac_sha256_finalize
static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256 *rng)
secp256k1_sha256_write
static void secp256k1_sha256_write(const secp256k1_hash_ctx *hash_ctx, secp256k1_sha256 *hash, const unsigned char *data, size_t size)
secp256k1_sha256_clear
static void secp256k1_sha256_clear(secp256k1_sha256 *hash)
secp256k1_hmac_sha256_initialize
static void secp256k1_hmac_sha256_initialize(const secp256k1_hash_ctx *hash_ctx, secp256k1_hmac_sha256 *hash, const unsigned char *key, size_t size)
secp256k1.h
secp256k1_sha256_compression_function
void(*) secp256k1_sha256_compression_function(uint32_t *state, const unsigned char *blocks64, size_t n_blocks)
A pointer to a function implementing SHA256's internal compression function.
Definition
secp256k1.h:407
secp256k1_hash_ctx
Definition
hash.h:15
secp256k1_hash_ctx::fn_sha256_compression
secp256k1_sha256_compression_function fn_sha256_compression
Definition
hash.h:16
secp256k1_hmac_sha256
Definition
hash.h:36
secp256k1_hmac_sha256::outer
secp256k1_sha256 outer
Definition
hash.h:37
secp256k1_hmac_sha256::inner
secp256k1_sha256 inner
Definition
hash.h:37
secp256k1_rfc6979_hmac_sha256
Definition
hash.h:45
secp256k1_rfc6979_hmac_sha256::retry
int retry
Definition
hash.h:48
secp256k1_rfc6979_hmac_sha256::k
unsigned char k[32]
Definition
hash.h:47
secp256k1_rfc6979_hmac_sha256::v
unsigned char v[32]
Definition
hash.h:46
secp256k1_sha256
Definition
hash.h:21
secp256k1_sha256::bytes
uint64_t bytes
Definition
hash.h:24
secp256k1_sha256::buf
unsigned char buf[64]
Definition
hash.h:23
secp256k1_sha256::s
uint32_t s[8]
Definition
hash.h:22
rng
FastRandomContext rng
Definition
dbwrapper.cpp:413
Generated on
for Bitcoin Core by
1.18.0