]>
Commit | Line | Data |
---|---|---|
b37fbc28 PW |
1 | /********************************************************************** |
2 | * Copyright (c) 2014 Pieter Wuille * | |
3 | * Distributed under the MIT software license, see the accompanying * | |
4 | * file COPYING or http://www.opensource.org/licenses/mit-license.php.* | |
5 | **********************************************************************/ | |
6 | ||
abe2d3e8 DR |
7 | #ifndef SECP256K1_HASH_H |
8 | #define SECP256K1_HASH_H | |
b37fbc28 PW |
9 | |
10 | #include <stdlib.h> | |
11 | #include <stdint.h> | |
12 | ||
13 | typedef struct { | |
2ab46954 | 14 | uint32_t s[8]; |
ae55e850 | 15 | uint32_t buf[16]; /* In big endian */ |
b37fbc28 | 16 | size_t bytes; |
d1dc9dfc | 17 | } secp256k1_sha256; |
b37fbc28 | 18 | |
d1dc9dfc PW |
19 | static void secp256k1_sha256_initialize(secp256k1_sha256 *hash); |
20 | static void secp256k1_sha256_write(secp256k1_sha256 *hash, const unsigned char *data, size_t size); | |
21 | static void secp256k1_sha256_finalize(secp256k1_sha256 *hash, unsigned char *out32); | |
b37fbc28 PW |
22 | |
23 | typedef struct { | |
d1dc9dfc PW |
24 | secp256k1_sha256 inner, outer; |
25 | } secp256k1_hmac_sha256; | |
b37fbc28 | 26 | |
d1dc9dfc PW |
27 | static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256 *hash, const unsigned char *key, size_t size); |
28 | static void secp256k1_hmac_sha256_write(secp256k1_hmac_sha256 *hash, const unsigned char *data, size_t size); | |
29 | static void secp256k1_hmac_sha256_finalize(secp256k1_hmac_sha256 *hash, unsigned char *out32); | |
b37fbc28 PW |
30 | |
31 | typedef struct { | |
32 | unsigned char v[32]; | |
33 | unsigned char k[32]; | |
34 | int retry; | |
d1dc9dfc | 35 | } secp256k1_rfc6979_hmac_sha256; |
b37fbc28 | 36 | |
d1dc9dfc PW |
37 | static void secp256k1_rfc6979_hmac_sha256_initialize(secp256k1_rfc6979_hmac_sha256 *rng, const unsigned char *key, size_t keylen); |
38 | static void secp256k1_rfc6979_hmac_sha256_generate(secp256k1_rfc6979_hmac_sha256 *rng, unsigned char *out, size_t outlen); | |
39 | static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256 *rng); | |
b37fbc28 | 40 | |
abe2d3e8 | 41 | #endif /* SECP256K1_HASH_H */ |