key_io.cpp raw

   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 <chainparams.h>
   6  #include <key_io.h>
   7  #include <test/fuzz/fuzz.h>
   8  #include <util/chaintype.h>
   9  
  10  #include <cassert>
  11  #include <cstdint>
  12  #include <string>
  13  #include <vector>
  14  
  15  void initialize_key_io()
  16  {
  17      static ECC_Context ecc_context{};
  18      SelectParams(ChainType::MAIN);
  19  }
  20  
  21  FUZZ_TARGET(key_io, .init = initialize_key_io)
  22  {
  23      const std::string random_string(buffer.begin(), buffer.end());
  24  
  25      const CKey key = DecodeSecret(random_string);
  26      if (key.IsValid()) {
  27          assert(key == DecodeSecret(EncodeSecret(key)));
  28      }
  29  
  30      const CExtKey ext_key = DecodeExtKey(random_string);
  31      if (ext_key.key.size() == 32) {
  32          assert(ext_key == DecodeExtKey(EncodeExtKey(ext_key)));
  33      }
  34  
  35      const CExtPubKey ext_pub_key = DecodeExtPubKey(random_string);
  36      if (ext_pub_key.pubkey.size() == CPubKey::COMPRESSED_SIZE) {
  37          assert(ext_pub_key == DecodeExtPubKey(EncodeExtPubKey(ext_pub_key)));
  38      }
  39  }
  40