Branch data Line data Source code
1 : : // Copyright (c) 2019-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 : : #include <test/fuzz/fuzz.h>
6 : :
7 : : #include <base58.h>
8 : : #include <psbt.h>
9 : : #include <util/strencodings.h>
10 : : #include <util/string.h>
11 : :
12 : : #include <cassert>
13 : : #include <cstdint>
14 : : #include <string>
15 : : #include <vector>
16 : :
17 : : using util::TrimString;
18 : : using util::TrimStringView;
19 : :
20 [ + - ]: 1833 : FUZZ_TARGET(base_encode_decode)
21 : : {
22 [ + - ]: 1421 : const std::string random_encoded_string(buffer.begin(), buffer.end());
23 : :
24 : 1421 : std::vector<unsigned char> decoded;
25 [ + - + + ]: 1421 : if (DecodeBase58(random_encoded_string, decoded, 100)) {
26 [ + - ]: 119 : const std::string encoded_string = EncodeBase58(decoded);
27 [ + - - + ]: 119 : assert(encoded_string == TrimStringView(encoded_string));
28 [ + - + - : 238 : assert(ToLower(encoded_string) == ToLower(TrimString(random_encoded_string)));
+ - - + ]
29 : 119 : }
30 : :
31 [ + - + + ]: 1421 : if (DecodeBase58Check(random_encoded_string, decoded, 100)) {
32 [ + - ]: 13 : const std::string encoded_string = EncodeBase58Check(decoded);
33 [ + - - + ]: 13 : assert(encoded_string == TrimString(encoded_string));
34 [ + - + - : 26 : assert(ToLower(encoded_string) == ToLower(TrimString(random_encoded_string)));
+ - - + ]
35 : 13 : }
36 : :
37 [ + - ]: 1421 : auto result = DecodeBase32(random_encoded_string);
38 [ + + ]: 1421 : if (result) {
39 [ + - ]: 20 : const std::string encoded_string = EncodeBase32(*result);
40 [ + - - + ]: 20 : assert(encoded_string == TrimStringView(encoded_string));
41 [ + - + - : 40 : assert(ToLower(encoded_string) == ToLower(TrimString(random_encoded_string)));
+ - - + ]
42 : 20 : }
43 : :
44 [ + - ]: 2842 : result = DecodeBase64(random_encoded_string);
45 [ + + ]: 1421 : if (result) {
46 [ + - ]: 1317 : const std::string encoded_string = EncodeBase64(*result);
47 [ + - - + ]: 1317 : assert(encoded_string == TrimString(encoded_string));
48 [ + - + - : 2634 : assert(ToLower(encoded_string) == ToLower(TrimString(random_encoded_string)));
+ - - + ]
49 : 1317 : }
50 : :
51 : 1421 : PartiallySignedTransaction psbt;
52 [ + - ]: 1421 : std::string error;
53 [ + - ]: 1421 : (void)DecodeBase64PSBT(psbt, random_encoded_string, error);
54 : 1421 : }
|