Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
fuzz
secp256k1_ecdsa_signature_parse_der_lax.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020-present 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
#include <
key.h
>
6
#include <
secp256k1.h
>
7
#include <
test/fuzz/FuzzedDataProvider.h
>
8
#include <
test/fuzz/fuzz.h
>
9
#include <
test/fuzz/util.h
>
10
#include <
test/util/random.h
>
11
12
#include <cstdint>
13
#include <vector>
14
15
bool
SigHasLowR
(
const
secp256k1_ecdsa_signature
* sig);
16
int
ecdsa_signature_parse_der_lax
(
secp256k1_ecdsa_signature
* sig,
const
unsigned
char
* input,
size_t
inputlen);
17
18
FUZZ_TARGET
(secp256k1_ecdsa_signature_parse_der_lax)
19
{
20
SeedRandomStateForTest
(
SeedRand::ZEROS
);
21
FuzzedDataProvider
fuzzed_data_provider{buffer.data(), buffer.size()};
22
const
std::vector<uint8_t> signature_bytes =
ConsumeRandomLengthByteVector
(fuzzed_data_provider);
23
if
(signature_bytes.data() ==
nullptr
) {
24
return
;
25
}
26
secp256k1_ecdsa_signature
sig_der_lax;
27
const
bool
parsed_der_lax =
ecdsa_signature_parse_der_lax
(&sig_der_lax, signature_bytes.
data
(), signature_bytes.size()) == 1;
28
if
(parsed_der_lax) {
29
ECC_Context
ecc_context
{};
30
(void)
SigHasLowR
(&sig_der_lax);
31
}
32
}
FuzzedDataProvider.h
ecc_context
ECC_Context ecc_context
Definition
bitcoin-wallet.cpp:126
ECC_Context
RAII class initializing and deinitializing global state for elliptic curve support.
Definition
key.h:326
FuzzedDataProvider
Definition
FuzzedDataProvider.h:32
fuzz.h
FUZZ_TARGET
#define FUZZ_TARGET(...)
Definition
fuzz.h:35
key.h
secp256k1.h
ecdsa_signature_parse_der_lax
int ecdsa_signature_parse_der_lax(secp256k1_ecdsa_signature *sig, const unsigned char *input, size_t inputlen)
This function is taken from the libsecp256k1 distribution and implements DER parsing for ECDSA signat...
Definition
pubkey.cpp:45
SigHasLowR
bool SigHasLowR(const secp256k1_ecdsa_signature *sig)
Definition
key.cpp:197
secp256k1_ecdsa_signature
Opaque data structure that holds a parsed ECDSA signature.
Definition
secp256k1.h:74
secp256k1_ecdsa_signature::data
unsigned char data[64]
Definition
secp256k1.h:75
util.h
ConsumeRandomLengthByteVector
std::vector< B > ConsumeRandomLengthByteVector(FuzzedDataProvider &fuzzed_data_provider, const std::optional< size_t > &max_length=std::nullopt) noexcept
Definition
util.h:57
SeedRandomStateForTest
void SeedRandomStateForTest(SeedRand seedtype)
Seed the global RNG state for testing and log the seed value.
Definition
random.cpp:19
random.h
SeedRand::ZEROS
@ ZEROS
Seed with a compile time constant of zeros.
Definition
random.h:19
Generated on
for Bitcoin Core by
1.17.0