diff --git a/libraries/chain/hotstuff/test/finality_misc_tests.cpp b/libraries/chain/hotstuff/test/finality_misc_tests.cpp index 418d82116c..eb4644117c 100644 --- a/libraries/chain/hotstuff/test/finality_misc_tests.cpp +++ b/libraries/chain/hotstuff/test/finality_misc_tests.cpp @@ -37,12 +37,12 @@ BOOST_AUTO_TEST_CASE(qc_state_transitions) try { std::vector digest(d.data(), d.data() + d.data_size()); std::vector sk { - bls_private_key("PVT_BLS_r4ZpChd87ooyzl6MIkw23k7PRX8xptp7TczLJHCIIW88h/hS"), - bls_private_key("PVT_BLS_/l7xzXANaB+GrlTsbZEuTiSOiWTtpBoog+TZnirxUUSaAfCo"), - bls_private_key("PVT_BLS_3FoY73Q/gED3ejyg8cvnGqHrMmx4cLKwh/e0sbcsCxpCeqn3"), - bls_private_key("PVT_BLS_warwI76e+pPX9wLFZKPFagngeFM8bm6J8D5w0iiHpxW7PiId"), - bls_private_key("PVT_BLS_iZFwiqdogOl9RNr1Hv1z+Rd6AwD9BIoxZcU1EPX+XFSFmm5p"), - bls_private_key("PVT_BLS_Hmye7lyiCrdF54/nF/HRU0sY/Hrse1ls/yqojIUOVQsxXUIK") + bls_private_key("PVT_BLS_0d8dsux83r42Qg8CHgAqIuSsn9AV-QdCzx3tPj0K8yOJA_qb"), + bls_private_key("PVT_BLS_Wfs3KzfTI2P5F85PnoHXLnmYgSbp-XpebIdS6BUCHXOKmKXK"), + bls_private_key("PVT_BLS_74crPc__6BlpoQGvWjkHmUdzcDKh8QaiN_GtU4SD0QAi4BHY"), + bls_private_key("PVT_BLS_foNjZTu0k6qM5ftIrqC5G_sim1Rg7wq3cRUaJGvNtm2rM89K"), + bls_private_key("PVT_BLS_FWK1sk_DJnoxNvUNhwvJAYJFcQAFtt_mCtdQCUPQ4jN1K7eT"), + bls_private_key("PVT_BLS_tNAkC5MnI-fjHWSX7la1CPC2GIYgzW5TBfuKFPagmwVVsOeW") }; std::vector pubkey; diff --git a/libraries/libfc/CMakeLists.txt b/libraries/libfc/CMakeLists.txt index f1914b6ec9..e4344030a3 100644 --- a/libraries/libfc/CMakeLists.txt +++ b/libraries/libfc/CMakeLists.txt @@ -35,7 +35,6 @@ set( fc_sources src/crypto/crc.cpp src/crypto/city.cpp src/crypto/base58.cpp - src/crypto/base64.cpp src/crypto/bigint.cpp src/crypto/hex.cpp src/crypto/sha1.cpp diff --git a/libraries/libfc/include/fc/crypto/base64.hpp b/libraries/libfc/include/fc/crypto/base64.hpp index 34dd35ad0b..5e025fdc0f 100644 --- a/libraries/libfc/include/fc/crypto/base64.hpp +++ b/libraries/libfc/include/fc/crypto/base64.hpp @@ -1,16 +1,372 @@ +/* + base64.cpp and base64.h + + base64 encoding and decoding with C++. + More information at + https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp + + Version: 2.rc.09 (release candidate) + + Copyright (C) 2004-2017, 2020-2022 René Nyffenegger + + This source code is provided 'as-is', without any express or implied + warranty. In no event will the author be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this source code must not be misrepresented; you must not + claim that you wrote the original source code. If you use this source code + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original source code. + + 3. This notice may not be removed or altered from any source distribution. + + René Nyffenegger rene.nyffenegger@adp-gmbh.ch +*/ +/** + * Copyright (C) 2023 Kevin Heifner + * + * Modified to be header only. + * Templated for std::string, std::string_view, std::vector and other char containers. + */ + #pragma once + +#include + +#include #include #include -#include +#include namespace fc { -std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len); -inline std::string base64_encode(char const* bytes_to_encode, unsigned int in_len) { return base64_encode( (unsigned char const*)bytes_to_encode, in_len); } -std::string base64_encode( const std::string& enc ); -std::vector base64_decode( std::string_view encoded_string); - -std::string base64url_encode(unsigned char const* bytes_to_encode, unsigned int in_len); -inline std::string base64url_encode(char const* bytes_to_encode, unsigned int in_len) { return base64url_encode( (unsigned char const*)bytes_to_encode, in_len); } -std::string base64url_encode( const std::string& enc ); -std::vector base64url_decode( std::string_view encoded_string); -} // namespace fc + +// Interface: +// Defaults allow for use: +// std::string s = "foobar"; +// std::string encoded = base64_encode(s); +// std::string_view sv = "foobar"; +// std::string encoded = base64_encode(sv); +// std::vector vc = {'f', 'o', 'o'}; +// std::string encoded = base64_encode(vc); +// +// Also allows for user provided char containers and specified return types: +// std::string s = "foobar"; +// std::vector encoded = base64_encode>(s); + +template +RetString base64_encode(const String& s, bool url = false); + +template +RetString base64_encode_pem(const String& s); + +template +RetString base64_encode_mime(const String& s); + +template +RetString base64_decode(const String& s, bool remove_linebreaks = false, bool url = false); + +template +RetString base64_encode(const unsigned char* s, size_t len, bool url = false); + +// Convenient methods for existing Leap uses + +std::string base64_encode(char const* s, unsigned int len); +std::vector base64_decode( const std::string& s); +std::string base64url_encode(const char* s, size_t len); +std::string base64url_encode(const std::string& s); +std::vector base64url_decode(const std::string& s); + +namespace detail { + // + // Depending on the url parameter in base64_chars, one of + // two sets of base64 characters needs to be chosen. + // They differ in their last two characters. + // +constexpr const char* to_base64_chars[2] = { + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+/", + + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "-_"}; + +constexpr unsigned char from_base64_chars[2][256] = { +{ + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, + 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, + 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 +}, +{ + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, + 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 63, + 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 +}}; + +inline unsigned int pos_of_char(const unsigned char chr, bool url) { + // + // Return the position of chr within base64_encode() + // + + if (from_base64_chars[url][chr] != 64) return from_base64_chars[url][chr]; + + // + // 2020-10-23: Throw std::exception rather than const char* + //(Pablo Martin-Gomez, https://github.com/Bouska) + // + // Original version throw std::runtime_error("Input is not valid base64-encoded data."); + // Throw FC assert and the same error text to match existing Leap usages. + FC_ASSERT(false, "encountered non-base64 character"); +} + +template +inline RetString insert_linebreaks(const String& str, size_t distance) { + // + // Provided by https://github.com/JomaCorpFX, adapted by Rene & Kevin + // + if (!str.size()) { + return RetString{}; + } + + if (distance < str.size()) { + size_t pos = distance; + String s{str}; + while (pos < s.size()) { + s.insert(pos, "\n"); + pos += distance + 1; + } + return s; + } else { + return str; + } +} + +template +inline RetString encode_with_line_breaks(String s) { + return insert_linebreaks(base64_encode(s, false), line_length); +} + +template +inline RetString encode_pem(String s) { + return encode_with_line_breaks(s); +} + +template +inline RetString encode_mime(String s) { + return encode_with_line_breaks(s); +} + +template +inline RetString encode(String s, bool url) { + return base64_encode(reinterpret_cast(s.data()), s.size(), url); +} + +} // namespace detail + +template +inline RetString base64_encode(const unsigned char* bytes_to_encode, size_t in_len, bool url) { + size_t len_encoded = (in_len + 2) / 3 * 4; + + const unsigned char trailing_char = '='; + + // + // Choose set of base64 characters. They differ + // for the last two positions, depending on the url + // parameter. + // A bool (as is the parameter url) is guaranteed + // to evaluate to either 0 or 1 in C++ therefore, + // the correct character set is chosen by subscripting + // base64_chars with url. + // + const char* base64_chars_ = detail::to_base64_chars[url]; + + RetString ret; + ret.reserve(len_encoded); + + unsigned int pos = 0; + + while (pos < in_len) { + ret.push_back(base64_chars_[(bytes_to_encode[pos + 0] & 0xfc) >> 2]); + + if (pos + 1 < in_len) { + ret.push_back(base64_chars_[((bytes_to_encode[pos + 0] & 0x03) << 4) + + ((bytes_to_encode[pos + 1] & 0xf0) >> 4)]); + + if (pos + 2 < in_len) { + ret.push_back(base64_chars_[((bytes_to_encode[pos + 1] & 0x0f) << 2) + + ((bytes_to_encode[pos + 2] & 0xc0) >> 6)]); + ret.push_back(base64_chars_[bytes_to_encode[pos + 2] & 0x3f]); + } else { + ret.push_back(base64_chars_[(bytes_to_encode[pos + 1] & 0x0f) << 2]); + if (!url) ret.push_back(trailing_char); + } + } else { + ret.push_back(base64_chars_[(bytes_to_encode[pos + 0] & 0x03) << 4]); + if (!url) ret.push_back(trailing_char); + if (!url) ret.push_back(trailing_char); + } + + pos += 3; + } + + return ret; +} + +namespace detail { + +template +inline RetString decode(const String& encoded_string, bool remove_linebreaks, bool url) { + static_assert(!std::is_same_v); + + // + // decode(…) is templated so that it can be used with String = const std::string& + // or std::string_view (requires at least C++17) + // + + if (encoded_string.empty()) + return RetString{}; + + if (remove_linebreaks) { + String copy{encoded_string}; + + copy.erase(std::remove(copy.begin(), copy.end(), '\n'), copy.end()); + + return base64_decode(copy, false, url); + } + + size_t length_of_string = encoded_string.size(); + size_t pos = 0; + + // + // The approximate length (bytes) of the decoded string might be one or + // two bytes smaller, depending on the amount of trailing equal signs + // in the encoded string. This approximation is needed to reserve + // enough space in the string to be returned. + // + size_t approx_length_of_decoded_string = length_of_string / 4 * 3; + RetString ret; + ret.reserve(approx_length_of_decoded_string); + + while (pos < length_of_string && encoded_string.at(pos) != '=') { + // + // Iterate over encoded input string in chunks. The size of all + // chunks except the last one is 4 bytes. + // + // The last chunk might be padded with equal signs + // in order to make it 4 bytes in size as well, but this + // is not required as per RFC 2045. + // + // All chunks except the last one produce three output bytes. + // + // The last chunk produces at least one and up to three bytes. + // + + size_t pos_of_char_1 = pos_of_char(encoded_string.at(pos + 1), url); + + // + // Emit the first output byte that is produced in each chunk: + // + ret.push_back(static_cast(((pos_of_char(encoded_string.at(pos + 0), url)) << 2) + ((pos_of_char_1 & 0x30) >> 4))); + + if ((pos + 2 < length_of_string) && + // Check for data that is not padded with equal signs (which is allowed by RFC 2045) + encoded_string.at(pos + 2) != '=') { + // + // Emit a chunk's second byte (which might not be produced in the last chunk). + // + unsigned int pos_of_char_2 = pos_of_char(encoded_string.at(pos + 2), url); + ret.push_back(static_cast(((pos_of_char_1 & 0x0f) << 4) + ((pos_of_char_2 & 0x3c) >> 2))); + + if ((pos + 3 < length_of_string) && + encoded_string.at(pos + 3) != '=') { + // + // Emit a chunk's third byte (which might not be produced in the last chunk). + // + ret.push_back(static_cast(((pos_of_char_2 & 0x03) << 6) + pos_of_char(encoded_string.at(pos + 3), url))); + } + } + + pos += 4; + } + + return ret; +} + +} // namespace detail + +template +inline RetString base64_decode(const String& s, bool remove_linebreaks, bool url) { + return detail::decode(s, remove_linebreaks, url); +} + +template +inline RetString base64_encode(const String& s, bool url) { + return detail::encode(s, url); +} + +template +inline RetString base64_encode_pem (const String& s) { + return detail::encode_pem(s); +} + +template +inline RetString base64_encode_mime(const String& s) { + return detail::encode_mime(s); +} + +// Convenient methods for existing Leap uses +inline std::string base64_encode(char const* s, unsigned int len) { + return base64_encode((unsigned char const*)s, len, false); +} + +inline std::vector base64_decode( const std::string& s) { + return detail::decode, std::string>(s, false, false); +} + +inline std::string base64url_encode(const char* s, size_t len) { + return base64_encode((unsigned char const*)s, len, true); +} + +inline std::string base64url_encode(const std::string& s) { + return base64_encode((unsigned char const*)s.data(), s.size(), true); +} + +inline std::vector base64url_decode(const std::string& s) { + return detail::decode>(s, false, true); +} +} // namespace fc diff --git a/libraries/libfc/include/fc/crypto/bls_common.hpp b/libraries/libfc/include/fc/crypto/bls_common.hpp index 86e54f1e1d..ce7fd7a8d6 100644 --- a/libraries/libfc/include/fc/crypto/bls_common.hpp +++ b/libraries/libfc/include/fc/crypto/bls_common.hpp @@ -4,17 +4,17 @@ namespace fc::crypto::blslib { template - static Container deserialize_base64(const std::string& data_str) + static Container deserialize_base64url(const std::string& data_str) { using wrapper = checksummed_data; wrapper wrapped; - auto bin = fc::base64_decode(data_str); + auto bin = fc::base64url_decode(data_str); fc::datastream unpacker(bin.data(), bin.size()); fc::raw::unpack(unpacker, wrapped); - FC_ASSERT(!unpacker.remaining(), "decoded base64 length too long"); + FC_ASSERT(!unpacker.remaining(), "decoded base64url length too long"); auto checksum = wrapper::calculate_checksum(wrapped.data, nullptr); FC_ASSERT(checksum == wrapped.check); @@ -22,7 +22,7 @@ namespace fc::crypto::blslib { } template - static std::string serialize_base64( Container data) { + static std::string serialize_base64url( Container data) { using wrapper = checksummed_data; @@ -31,7 +31,7 @@ namespace fc::crypto::blslib { wrapped.data = data; wrapped.check = wrapper::calculate_checksum(wrapped.data, nullptr); auto packed = raw::pack( wrapped ); - auto data_str = fc::base64_encode( packed.data(), packed.size()); + auto data_str = fc::base64url_encode( packed.data(), packed.size()); return data_str; } diff --git a/libraries/libfc/include/fc/crypto/bls_private_key.hpp b/libraries/libfc/include/fc/crypto/bls_private_key.hpp index ad808015a5..29ae617931 100644 --- a/libraries/libfc/include/fc/crypto/bls_private_key.hpp +++ b/libraries/libfc/include/fc/crypto/bls_private_key.hpp @@ -20,7 +20,7 @@ namespace fc::crypto::blslib { explicit bls_private_key(std::span seed ) { _sk = bls12_381::secret_key(seed); } - explicit bls_private_key(const std::string& base64str); + explicit bls_private_key(const std::string& base64urlstr); bls_private_key& operator=( const bls_private_key& ) = default; diff --git a/libraries/libfc/include/fc/crypto/bls_public_key.hpp b/libraries/libfc/include/fc/crypto/bls_public_key.hpp index 2051a93040..5fa8f31a3d 100644 --- a/libraries/libfc/include/fc/crypto/bls_public_key.hpp +++ b/libraries/libfc/include/fc/crypto/bls_public_key.hpp @@ -18,12 +18,12 @@ namespace fc::crypto::blslib { bls_public_key( bls_public_key&& ) = default; bls_public_key( const bls_public_key& ) = default; explicit bls_public_key( const bls12_381::g1& pkey ) {_pkey = pkey;} - // affine non-montgomery base64 with bls_public_key_prefix - explicit bls_public_key(const std::string& base64str); + // affine non-montgomery base64url with bls_public_key_prefix + explicit bls_public_key(const std::string& base64urlstr); bls_public_key& operator=(const bls_public_key&) = default; - // affine non-montgomery base64 with bls_public_key_prefix + // affine non-montgomery base64url with bls_public_key_prefix std::string to_string(const yield_function_t& yield = yield_function_t()) const; bool equal(const bls_public_key& pkey) const; diff --git a/libraries/libfc/include/fc/crypto/bls_signature.hpp b/libraries/libfc/include/fc/crypto/bls_signature.hpp index 0782996733..384f811125 100644 --- a/libraries/libfc/include/fc/crypto/bls_signature.hpp +++ b/libraries/libfc/include/fc/crypto/bls_signature.hpp @@ -23,12 +23,12 @@ namespace fc::crypto::blslib { bls_signature( const bls_signature& ) = default; explicit bls_signature( const bls12_381::g2& sig ){_sig = sig;} - // affine non-montgomery base64 with bls_signature_prefix - explicit bls_signature(const std::string& base64str); + // affine non-montgomery base64url with bls_signature_prefix + explicit bls_signature(const std::string& base64urlstr); bls_signature& operator= (const bls_signature& ) = default; - // affine non-montgomery base64 with bls_signature_prefix + // affine non-montgomery base64url with bls_signature_prefix std::string to_string(const yield_function_t& yield = yield_function_t()) const; bool equal( const bls_signature& sig ) const; diff --git a/libraries/libfc/src/crypto/base64.cpp b/libraries/libfc/src/crypto/base64.cpp deleted file mode 100644 index ae6669ffdd..0000000000 --- a/libraries/libfc/src/crypto/base64.cpp +++ /dev/null @@ -1,162 +0,0 @@ -#include -#include -#include -/* - base64.cpp and base64.h - - Copyright (C) 2004-2008 René Nyffenegger - - This source code is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this source code must not be misrepresented; you must not - claim that you wrote the original source code. If you use this source code - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original source code. - - 3. This notice may not be removed or altered from any source distribution. - - René Nyffenegger rene.nyffenegger@adp-gmbh.ch - -*/ - -namespace fc { - -static constexpr char base64_chars[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; -static constexpr char base64url_chars[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789-_"; - -static_assert(sizeof(base64_chars) == sizeof(base64url_chars), "base64 and base64url must have the same amount of chars"); - -static inline void throw_on_nonbase64(unsigned char c, const char* const b64_chars) { - FC_ASSERT(isalnum(c) || (c == b64_chars[sizeof(base64_chars)-3]) || (c == b64_chars[sizeof(base64_chars)-2]), "encountered non-base64 character"); -} - -std::string base64_encode_impl(unsigned char const* bytes_to_encode, unsigned int in_len, const char* const b64_chars) { - - std::string ret; - int i = 0; - int j = 0; - unsigned char char_array_3[3]; - unsigned char char_array_4[4]; - - while (in_len--) { - char_array_3[i++] = *(bytes_to_encode++); - if (i == 3) { - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for(i = 0; (i <4) ; i++) - ret += b64_chars[char_array_4[i]]; - i = 0; - } - } - - if (i) - { - for(j = i; j < 3; j++) - char_array_3[j] = '\0'; - - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for (j = 0; (j < i + 1); j++) - ret += b64_chars[char_array_4[j]]; - - while((i++ < 3)) - ret += '='; - - } - - return ret; - -} - -std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { - return base64_encode_impl(bytes_to_encode, in_len, base64_chars); -} - -std::string base64_encode( const std::string& enc ) { - char const* s = enc.c_str(); - return base64_encode( (unsigned char const*)s, enc.size() ); -} - -std::string base64url_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { - return base64_encode_impl(bytes_to_encode, in_len, base64url_chars); -} - -std::string base64url_encode( const std::string& enc ) { - char const* s = enc.c_str(); - return base64url_encode( (unsigned char const*)s, enc.size() ); -} - -std::vector base64_decode_impl(std::string_view encoded_string, const char* const b64_chars) { - int in_len = encoded_string.size(); - int i = 0; - int j = 0; - int in_ = 0; - unsigned char char_array_4[4], char_array_3[3]; - std::vector ret; - ret.reserve(in_len / 4 * 3); - - while (in_len-- && encoded_string[in_] != '=') { - throw_on_nonbase64(encoded_string[in_], b64_chars); - char_array_4[i++] = encoded_string[in_]; in_++; - if (i ==4) { - for (i = 0; i <4; i++) - char_array_4[i] = strchr(b64_chars, char_array_4[i]) - b64_chars; - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (i = 0; (i < 3); i++) - ret.push_back(char_array_3[i]); - i = 0; - } - } - - if (i) { - for (j = i; j <4; j++) - char_array_4[j] = 0; - - for (j = 0; j <4; j++) - char_array_4[j] = strchr(b64_chars, char_array_4[j]) - b64_chars; - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (j = 0; (j < i - 1); j++) ret.push_back(char_array_3[j]); - } - - return ret; -} - -std::vector base64_decode(std::string_view encoded_string) { - return base64_decode_impl(encoded_string, base64_chars); -} - -std::vector base64url_decode(std::string_view encoded_string) { - return base64_decode_impl(encoded_string, base64url_chars); -} - -} // namespace fc - diff --git a/libraries/libfc/src/crypto/bigint.cpp b/libraries/libfc/src/crypto/bigint.cpp index 8574fa7022..e15d865692 100644 --- a/libraries/libfc/src/crypto/bigint.cpp +++ b/libraries/libfc/src/crypto/bigint.cpp @@ -211,7 +211,7 @@ namespace fc { void to_variant( const bigint& bi, variant& v ) { std::vector ve = bi; - v = fc::variant(base64_encode((unsigned char*)ve.data(),ve.size())); + v = fc::variant(base64_encode((const unsigned char*)ve.data(),ve.size())); } /** decodes the big int as base64 string, or a number */ diff --git a/libraries/libfc/src/crypto/bls_private_key.cpp b/libraries/libfc/src/crypto/bls_private_key.cpp index 8ed0909bc1..72dfc6968e 100644 --- a/libraries/libfc/src/crypto/bls_private_key.cpp +++ b/libraries/libfc/src/crypto/bls_private_key.cpp @@ -31,26 +31,26 @@ namespace fc::crypto::blslib { return bls_private_key(v); } - static std::array priv_parse_base64(const std::string& base64str) + static std::array priv_parse_base64url(const std::string& base64urlstr) { auto res = std::mismatch(config::bls_private_key_prefix.begin(), config::bls_private_key_prefix.end(), - base64str.begin()); - FC_ASSERT(res.first == config::bls_private_key_prefix.end(), "BLS Private Key has invalid format : ${str}", ("str", base64str)); + base64urlstr.begin()); + FC_ASSERT(res.first == config::bls_private_key_prefix.end(), "BLS Private Key has invalid format : ${str}", ("str", base64urlstr)); - auto data_str = base64str.substr(config::bls_private_key_prefix.size()); + auto data_str = base64urlstr.substr(config::bls_private_key_prefix.size()); - std::array bytes = fc::crypto::blslib::deserialize_base64>(data_str); + std::array bytes = fc::crypto::blslib::deserialize_base64url>(data_str); return bytes; } - bls_private_key::bls_private_key(const std::string& base64str) - :_sk(priv_parse_base64(base64str)) + bls_private_key::bls_private_key(const std::string& base64urlstr) + :_sk(priv_parse_base64url(base64urlstr)) {} std::string bls_private_key::to_string(const yield_function_t& yield) const { - std::string data_str = fc::crypto::blslib::serialize_base64>(_sk); + std::string data_str = fc::crypto::blslib::serialize_base64url>(_sk); return config::bls_private_key_prefix + data_str; } diff --git a/libraries/libfc/src/crypto/bls_public_key.cpp b/libraries/libfc/src/crypto/bls_public_key.cpp index b83277e540..726c7d7489 100644 --- a/libraries/libfc/src/crypto/bls_public_key.cpp +++ b/libraries/libfc/src/crypto/bls_public_key.cpp @@ -5,25 +5,25 @@ namespace fc::crypto::blslib { - static bls12_381::g1 pub_parse_base64(const std::string& base64str) + static bls12_381::g1 pub_parse_base64url(const std::string& base64urlstr) { auto res = std::mismatch(config::bls_public_key_prefix.begin(), config::bls_public_key_prefix.end(), - base64str.begin()); - FC_ASSERT(res.first == config::bls_public_key_prefix.end(), "BLS Public Key has invalid format : ${str}", ("str", base64str)); + base64urlstr.begin()); + FC_ASSERT(res.first == config::bls_public_key_prefix.end(), "BLS Public Key has invalid format : ${str}", ("str", base64urlstr)); - auto data_str = base64str.substr(config::bls_public_key_prefix.size()); + auto data_str = base64urlstr.substr(config::bls_public_key_prefix.size()); - std::array bytes = fc::crypto::blslib::deserialize_base64>(data_str); + std::array bytes = fc::crypto::blslib::deserialize_base64url>(data_str); - constexpr bool check = true; // check if base64str is invalid + constexpr bool check = true; // check if base64urlstr is invalid constexpr bool raw = false; // non-montgomery std::optional g1 = bls12_381::g1::fromAffineBytesLE(bytes, check, raw); FC_ASSERT(g1); return *g1; } - bls_public_key::bls_public_key(const std::string& base64str) - :_pkey(pub_parse_base64(base64str)) + bls_public_key::bls_public_key(const std::string& base64urlstr) + :_pkey(pub_parse_base64url(base64urlstr)) {} std::string bls_public_key::to_string(const yield_function_t& yield)const { @@ -31,7 +31,7 @@ namespace fc::crypto::blslib { constexpr bool raw = false; // non-montgomery std::array bytes = _pkey.toAffineBytesLE(raw); - std::string data_str = fc::crypto::blslib::serialize_base64>(bytes); + std::string data_str = fc::crypto::blslib::serialize_base64url>(bytes); return config::bls_public_key_prefix + data_str; diff --git a/libraries/libfc/src/crypto/bls_signature.cpp b/libraries/libfc/src/crypto/bls_signature.cpp index e8eb4fd7ba..215367810c 100644 --- a/libraries/libfc/src/crypto/bls_signature.cpp +++ b/libraries/libfc/src/crypto/bls_signature.cpp @@ -5,29 +5,29 @@ namespace fc::crypto::blslib { - static bls12_381::g2 sig_parse_base64(const std::string& base64str) + static bls12_381::g2 sig_parse_base64url(const std::string& base64urlstr) { try { auto res = std::mismatch(config::bls_signature_prefix.begin(), config::bls_signature_prefix.end(), - base64str.begin()); - FC_ASSERT(res.first == config::bls_signature_prefix.end(), "BLS Signature has invalid format : ${str}", ("str", base64str)); + base64urlstr.begin()); + FC_ASSERT(res.first == config::bls_signature_prefix.end(), "BLS Signature has invalid format : ${str}", ("str", base64urlstr)); - auto data_str = base64str.substr(config::bls_signature_prefix.size()); + auto data_str = base64urlstr.substr(config::bls_signature_prefix.size()); - std::array bytes = fc::crypto::blslib::deserialize_base64>(data_str); + std::array bytes = fc::crypto::blslib::deserialize_base64url>(data_str); - constexpr bool check = true; // check if base64str is invalid + constexpr bool check = true; // check if base64urlstr is invalid constexpr bool raw = false; // non-montgomery std::optional g2 = bls12_381::g2::fromAffineBytesLE(bytes, check, raw); FC_ASSERT(g2); return *g2; - } FC_RETHROW_EXCEPTIONS( warn, "error parsing bls_signature", ("str", base64str ) ) + } FC_RETHROW_EXCEPTIONS( warn, "error parsing bls_signature", ("str", base64urlstr ) ) } - bls_signature::bls_signature(const std::string& base64str) - :_sig(sig_parse_base64(base64str)) + bls_signature::bls_signature(const std::string& base64urlstr) + :_sig(sig_parse_base64url(base64urlstr)) {} std::string bls_signature::to_string(const yield_function_t& yield) const @@ -36,7 +36,7 @@ namespace fc::crypto::blslib { constexpr bool raw = false; // non-montgomery std::array bytes = _sig.toAffineBytesLE(raw); - std::string data_str = fc::crypto::blslib::serialize_base64>(bytes); + std::string data_str = fc::crypto::blslib::serialize_base64url>(bytes); return config::bls_signature_prefix + data_str; diff --git a/libraries/libfc/test/crypto/test_webauthn.cpp b/libraries/libfc/test/crypto/test_webauthn.cpp index 5a7f429c28..7a30a0ade0 100644 --- a/libraries/libfc/test/crypto/test_webauthn.cpp +++ b/libraries/libfc/test/crypto/test_webauthn.cpp @@ -188,14 +188,12 @@ BOOST_AUTO_TEST_CASE(challenge_wrong_base64_chars) try { }); } FC_LOG_AND_RETHROW(); -//valid signature but replace the padding '=' with '.' +//valid signature but append an invalid base64url character '.' BOOST_AUTO_TEST_CASE(challenge_base64_dot_padding) try { webauthn::public_key wa_pub(pub.serialize(), webauthn::public_key::user_presence_t::USER_PRESENCE_NONE, "fctesting.invalid"); std::string b64 = fc::base64url_encode(d.data(), d.data_size()); - char& end = b64.back(); - BOOST_REQUIRE(end == '='); - end = '.'; + b64.append("."); std::string json = "{\"origin\":\"https://fctesting.invalid\",\"type\":\"webauthn.get\",\"challenge\":\"" + b64 + "\"}"; @@ -207,13 +205,12 @@ BOOST_AUTO_TEST_CASE(challenge_base64_dot_padding) try { }); } FC_LOG_AND_RETHROW(); -//valid signature but remove padding +//valid signature but append valid paddings == to verify they are ignored BOOST_AUTO_TEST_CASE(challenge_no_padding) try { webauthn::public_key wa_pub(pub.serialize(), webauthn::public_key::user_presence_t::USER_PRESENCE_NONE, "fctesting.invalid"); std::string b64 = fc::base64url_encode(d.data(), d.data_size()); - BOOST_REQUIRE(b64.back() == '='); - b64.resize(b64.size() - 1); + b64.append("=="); std::string json = "{\"origin\":\"https://fctesting.invalid\",\"type\":\"webauthn.get\",\"challenge\":\"" + b64 + "\"}"; @@ -228,8 +225,6 @@ BOOST_AUTO_TEST_CASE(challenge_extra_bytes) try { webauthn::public_key wa_pub(pub.serialize(), webauthn::public_key::user_presence_t::USER_PRESENCE_NONE, "fctesting.invalid"); std::string b64 = fc::base64url_encode(d.data(), d.data_size()); - BOOST_REQUIRE(b64.back() == '='); - b64.resize(b64.size() - 1); b64.append("abcd"); std::string json = "{\"origin\":\"https://fctesting.invalid\",\"type\":\"webauthn.get\",\"challenge\":\"" + b64 + "\"}"; diff --git a/libraries/libfc/test/test_bls.cpp b/libraries/libfc/test/test_bls.cpp index e970dc6d4a..efef0783bf 100644 --- a/libraries/libfc/test/test_bls.cpp +++ b/libraries/libfc/test/test_bls.cpp @@ -294,54 +294,54 @@ BOOST_AUTO_TEST_CASE(bls_regenerate_check) try { BOOST_AUTO_TEST_CASE(bls_prefix_encoding_check) try { //test no_throw for correctly encoded keys - BOOST_CHECK_NO_THROW(bls_private_key("PVT_BLS_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D")); - BOOST_CHECK_NO_THROW(bls_public_key("PUB_BLS_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ==")); - BOOST_CHECK_NO_THROW(bls_signature("SIG_BLS_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA==")); + BOOST_CHECK_NO_THROW(bls_private_key("PVT_BLS_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc")); + BOOST_CHECK_NO_THROW(bls_public_key("PUB_BLS_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg")); + BOOST_CHECK_NO_THROW(bls_signature("SIG_BLS_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg")); //test no pivot delimiter - BOOST_CHECK_THROW(bls_private_key("PVTBLSO+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("PUBBLSdEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("SIGBLSprHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("PVTBLSvh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("PUBBLS82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("SIGBLSRrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); //test first prefix validation - BOOST_CHECK_THROW(bls_private_key("XYZ_BLS_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("XYZ_BLS_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("XYZ_BLS_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("XYZ_BLS_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("XYZ_BLS_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("XYZ_BLS_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); //test second prefix validation - BOOST_CHECK_THROW(bls_private_key("PVT_XYZ_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("PUB_XYZ_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("SIG_XYZ_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("PVT_XYZ_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("PUB_XYZ_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("SIG_XYZ_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); //test missing prefix - BOOST_CHECK_THROW(bls_private_key("O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); //test incomplete prefix - BOOST_CHECK_THROW(bls_private_key("PVT_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("PUB_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("SIG_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_private_key("BLS_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("BLS_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("BLS_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("PVT_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("PUB_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("SIG_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("BLS_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("BLS_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("BLS_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); //test invalid data / invalid checksum - BOOST_CHECK_THROW(bls_private_key("PVT_BLS_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8a"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("PUB_BLS_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxaQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("SIG_BLS_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlyA=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_private_key("PVT_BLS_p+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8D"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("PUB_BLS_cEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxpQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("SIG_BLS_rrHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0DlzA=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_private_key("PVT_BLS_O+gS5yNxVtSwL0/Uhl1IVqu/Y7Gq4qdrtB66EIb192ENfK8B"), fc::assert_exception); - BOOST_CHECK_THROW(bls_public_key("PUB_BLS_dEvut0ydHevDGP6Ef3O4Iq6QXf9jUcMUT1nCJRX+JRYlFYrO/qKt/x439vUJ2DkZ32Od6AdJZ+S9dWRE9Sy+7Q6bNjpoIOP0cWzkKC1DqmhfE3paW+KThA3noLkV8SsILcfxsQ=="), fc::assert_exception); - BOOST_CHECK_THROW(bls_signature("SIG_BLS_prHR3PtNGJQLEhqcuHqj5Ty6FkNFo+ih32+ZHh6LH74+SKlTgq4PWtudoYt8heEZjPyNDRrqfRoYoTlAZ1mpW0QzgyGRXU+lfZ27M9Bg1mNS0MI6wWL4ZG9E8bchiMUVWijpX66sc11t60m/g8/vJIf1tIuFLhKCcX57OVCoXisciI7D21b3tKjb7VAlc2oNEoJx17XOafIWvcH1YKAc2uv9T/ocAlE3VQNprXKuGaZYA9Q5yzaOhVgGYxrjv/wNv0Dlzb=="), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("PVT_BLS_wh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("PUB_BLS_92P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("SIG_BLS_SrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("PVT_BLS_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5zc"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("PUB_BLS_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhdg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("SIG_BLS_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJug"), fc::assert_exception); + BOOST_CHECK_THROW(bls_private_key("PVT_BLS_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yd"), fc::assert_exception); + BOOST_CHECK_THROW(bls_public_key("PUB_BLS_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhTg"), fc::assert_exception); + BOOST_CHECK_THROW(bls_signature("SIG_BLS_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJUg"), fc::assert_exception); } FC_LOG_AND_RETHROW(); BOOST_AUTO_TEST_CASE(bls_variant) try { - bls_private_key prk("PVT_BLS_nv6z13d5yfQk4Mq07Fdmpvzsd+hgGAeL4wBQQH1cCAlB7Nka"); - bls_public_key pk("PUB_BLS_MPPeebAPxt/ibL2XPuZVGpADjGn+YEVPPoYmTZeBD6Ok2E19M8SnmDGSdZBf2qwSuJim+8H83EsTpEn3OiStWBiFeJYfVRLlEsZuSF0SYYwtVteY48n+KeE1IWzlSAkSyBqiGA=="); - bls_signature sig("SIG_BLS_UVb0SXln6xkg7X+y3ATkxoSOouIxgYLR/tf+UBz2VXeA0ujahQFRTux/e9/eifkJ7TguHKjMxNMv+tVDIn03DFlav468CagmW/if+lJJjT5ZD/Uhj1OvddUOR6gzD7sLuwL3bQ52L8HXaaWM2ksonwhD03JO3GeZj3j43naG0GstBVaCPpE84WBFyqTBFkcMnLO3LGkJXs5l2VZmtYpI8Z/UlerI0+jiYOzA+p9LTfjfng5HHx367WpMYiK2hyoEiILS1A=="); + bls_private_key prk("PVT_BLS_vh0bYgBLOLxs_h9zvYNtj20yj8UJxWeFFAtDUW2_pG44e5yc"); + bls_public_key pk("PUB_BLS_82P3oM1u0IEv64u9i4vSzvg1-QDl4Fb2n50Mp8Sk7Fr1Tz0MJypzL39nSd5VPFgFC9WqrjopRbBm1Pf0RkP018fo1k2rXaJY7Wtzd9RKlE8PoQ6XhDm4PyZlIupQg_gOuiMhcg"); + bls_signature sig("SIG_BLS_RrwvP79LxfahskX-ceZpbgrJ1aUkSSIzE2sMFj0twuhK8QwjcGMvT2tZ_-QMHvAV83tWZYOs7SEvoyteCKGD_Tk6YySkw1HONgvVeNWM8ZwuNgonOHkegNNPIXSIvWMTczfkg2lEtEh-ngBa5t9-4CvZ6aOjg29XPVvu6dimzHix-9E0M53YkWZ-gW5GDkkOLoN2FMxjXaELmhuI64xSeSlcWLFfZa6TMVTctBFWsHDXm1ZMkURoB83dokKHEi4OQTbJtg"); fc::variant v; std::string s; diff --git a/tests/TestHarness/launcher.py b/tests/TestHarness/launcher.py index 34157d3231..e42cf649cb 100644 --- a/tests/TestHarness/launcher.py +++ b/tests/TestHarness/launcher.py @@ -292,9 +292,9 @@ def bind_nodes(self): if is_bios: node.keys.append(KeyStrings('EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV', '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3', - 'PUB_BLS_qXP11UuMRiJLRFGF52711peFyBrRRVF7cPJY5wZZj2f/MpEY4eQvlQwXDpSPsqMSFXIChZTR/IXE9hySF8x7jQ2Na5eq0Vi4hcK19pcv2prYYF4PMbf02yjSmK2h3NMZYkjDEA==', - 'PVT_BLS_I3cpJdW51PHYnKrY3naidDQMqJZekJCm2Pdp6QkoBR26ADvq', - 'SIG_BLS_GBIXLkWRXnxhuaRwQYDup64aAghAiQu8AgBygj5Qojwi9G0nz1W/es5U29gPjRcET4JRrJpysqgWPgmDpTSESyZzQJARxriHylz/dmCbwG0/7fwPmMntc/VvVEUlTUQB78VswKEU1NOaYImixkLJZqE4f2xn9shHjilzv2neW39kXpEV5COxUAk/HVeRzYYMxr8SA8SaiJ0w3x2hQTWfxTAbH/Nv3SjNkFcO+nQrAckfRZrKlSPO9egBVgKKnOcPdXFpyA==')) + 'PUB_BLS_qVbh4IjYZpRGo8U_0spBUM-u-r_G0fMo4MzLZRsKWmm5uyeQTp74YFaMN9IDWPoVVT5rj_Tw1gvps6K9_OZ6sabkJJzug3uGfjA6qiaLbLh5Fnafwv-nVgzzzBlU2kwRrcHc8Q', + 'PVT_BLS_edLoUiiP2FfMem4la3Ek8zxIDjDjOFylRw9ymdeOVCC0CuXN', + 'SIG_BLS_L5MXQpJTX_v7cXDy4ML4fWVw_69MKuG5qTq7dD_Zb3Yuw1RbMXBOYXDoAbFF37gFmHudY3kkqXtETLs9nMTjTaTwgdDZWpFy1_csEIZT-xIOQttc76bpZhI67902g2sIDf6JSf9JtbhdTUc_HNbL7H2ZR2bqGS3YPbV5z7x24AR2vwTcJogMqLyy6H5nKQAEwIvXcL15gbs2EkH_ch-IZDdn4F0zUYifpOo-ovXY_CX_yL2rKIx_2a9IHg0pPrMOdfHs9A')) node.producers.append('eosio') else: node.keys.append(KeyStrings(account.ownerPublicKey, account.ownerPrivateKey, account.blsFinalizerPublicKey, account.blsFinalizerPrivateKey, account.blsFinalizerPOP)) diff --git a/tests/auto_bp_peering_test_shape.json b/tests/auto_bp_peering_test_shape.json index 74fbfba4d2..d20bc95683 100644 --- a/tests/auto_bp_peering_test_shape.json +++ b/tests/auto_bp_peering_test_shape.json @@ -27,9 +27,9 @@ { "privkey":"5Jf4sTk7vwX1MYpLJ2eQFanVvKYXFqGBrCyANPukuP2BJ5WAAKZ", "pubkey":"EOS58B33q9S7oNkgeFfcoW3VJYu4obfDiqn5RHGE2ige6jVjUhymR", - "blspubkey":"PUB_BLS_2QQ72DAhKOWKfnBF77AnYn3GqD0M+Yh/05tqKNhqEQ0K4ixhIZ0rKbO2UuonqGAV1KYPgLzIfRz6zMD4iWI3FhOGE+UZ4Le5cELQ3NjOBFagG51XqM8Q1lpUqNanhCoDyfFnLg==", - "blsprivkey":"PVT_BLS_XwmVWf21N/j+hYJfo5+VHN1BtMY2wmKdQ7unaX/rzk+EJ5PX", - "blspop":"SIG_BLS_jvAPOOkvw19wuEzIt1ot8tn6aLeP55XQtSIY2eP3DMcZvEcdmlWVqNI/M8VNKL8RiN2F7XrRZ6O5cPPh4f3B/XfHOyUd3UXG3p++9m0tu0jCojtWQd6wJmTIR1LQ6DUWAQwBOx8Rd70FoznDEqJS/RZBV03x9FpBDQH7VB6BYs9UztynlWrL8LZaRbi8WNwF9CDzUJJsmOmHMnZO5qcTuo/cmSgV1X03bITdQ4IGq06yExBPepIX9ZZu5XH4QCIBo/fIcg==" + "blspubkey":"PUB_BLS_UJ2L9snX88oXj-bkZmfeLuhtkm4oNs_YsSC3oxT4jXJpNxGfg9mTscXSR25WhfUI8j-jBSPm616PM2Rg31zZTgw3XQkA58EUOQmqK6WXYGNGy2FEsZVz-O1jow8CrPUZtry4kw", + "blsprivkey":"PVT_BLS_IRnV3LLJx2BrGcL-wO5fO6ebHaa_CxJhAu_Y_n1B-UB5KLM1", + "blspop":"SIG_BLS_3H6WQK06R0q5Nq3r1O0u5v3d-DkWUamw64qF_RNEYnBVCOkQGowtbnQYhSysUKcAKRPmE96baItL8CClGsWxIvwtUFcEs6iWJjaDcTjy4JoNLs3ZeeV3EbWRZoOC2r4Mfe7_15q4elv20Y3DllX9i-p2qdgOf-08TXKE7p-1SfouyEKUTETzJ7lSjq96b2UYAwfzA1KEs5Gc7-u_d91Tn1at_cp6fqPcCB4SbEjstgel8CiALRvDwECMeVb5C4ULQKeWWQ" } ], "peers": [ @@ -46,9 +46,9 @@ { "privkey":"5HviUPkTEtvF2B1nm8aZUnjma2TzgpKRjuXjwHyy3FME4xDbkZF", "pubkey":"EOS5CbcTDgbks2ptTxvyCbT9HFbzX7PDHUY2wN4DDnVBhhQr2ZNDE", - "blspubkey":"PUB_BLS_g86vgFO5G0bcRuaEA95kNFxnsHyzVSOthKKN8MSJ2zLWj+WfCbIBIO73OxgzjVsZarSuMQrcbVu2MktqF6PGlPkPaSuJGnES3FQ0OAfebOMAsPeAd23Ge/3+cPl2OVgXSmHdhA==", - "blsprivkey":"PVT_BLS_AtgyGDKJdQWvCNyGJgyu9bWpMS7eQE07zB2nGTlhZ0nCX11C", - "blspop":"SIG_BLS_pzPEYt1zLPVbofA1YABSPb1gJdvUdUhREa+pQsj2eTSaEBEnb+w+AwO0cQLgYSYWNWRePIUUvj5MCWqlfIU5ulBL8tqlwdCqQ0o6W915axLq2l1qnbFK/XfN9dRxdJgWPdl57bCGmoii25gdyobgLUZaJzPfivE6iQ981IgGACAb5CRdVH5hPZq8Rab1O64OclwCT/8ho8TdcKoSQj0njbAfp9JZxv5EyuAkaNIQun9rn+vH++37n+nDeV6UgCUEzex3cQ==" + "blspubkey":"PUB_BLS_EdlqWOk4RONNBZEOnY72l83OP3Z4FnqiYLeBivxB2Z7NTbnnm7L2amc9L13_-gkBJb-ScBe1JV_rvP2ukgGR2QaO2nD454ROmWqJ67ZnDcpEEb8ljPCLYfv34OGXs8QB0QVgVQ", + "blsprivkey":"PVT_BLS_YU2HRsl5Jddg_lifKijsyuY2-_fEZSCh1-1KOsN0I1VDOqzN", + "blspop":"SIG_BLS_7B4xP24HTTVHZJ9K5JaD2n7lWy3WniLM51T1uuou6RcQwTxj74_SrtamS6Q-9CUD7DoxUl-rmExjlaYwI90w75BD64FPfFAx6lQOq3GQr-VboMxo1dEPKKlZ8tvN8RYThu70L0ELAdBw4d4q5iMcKwrV4C7jhSTRR1kLPy3svYz0509qLMPdJZAbj_kG19cGldfFXzbXYoCsKwMoVyrGMnjsIGT4t4AafbgwebHbaLp9iUQf5kyVXmHJwLTnr80FP5vrdQ" } ], "peers": [ @@ -64,9 +64,9 @@ { "privkey":"5KkQbdxFHr8Pg1N3DEMDdU7emFgUTwQvh99FDJrodFhUbbsAtQT", "pubkey":"EOS6Tkpf8kcDfa32WA9B4nTcEJ64ZdDMSNioDcaL6rzdMwnpzaWJB", - "blspubkey":"PUB_BLS_PerMKMuQdZ3N6NEOoQRdlB1BztNWAeHkmzqwcFwEQGEM8QMfv3mrrepX5yM4NKQHYDnfcPIQPpDt0gCi6afvpZgN0JHT4jUaNlbfsJKtbm5mOJcqggddamCKEz2lBC0OS2D5yw==", - "blsprivkey":"PVT_BLS_n4AshIQiCqCdIOC/lGkKauVOFE2KelMb3flVvodVsji15FHW", - "blspop":"SIG_BLS_oqOzQYpJRvQ88ExpJKmwgna29eXM5umPpLmjfHcdcUUKwS3NMWwvP1hLwLcj4XcU6CuM3RzfRo6PPE2sxrp2fUWpqP0bsuamcOOyF+V6TfJMYuDbepc1Jp9HUdli3X0QE6hL+umbO2PWE4KiCSn9tj9LRyXgc41IY7R/JeQCCQSNXMSWhebdB/KCapfxq8sYEzRhXcZik+bXUDC1AcLXaocvNV6o2nKHtJwQ7YyGXCvFXgMMcQ3PWFlQ8WErmxILOM3Z/w==" + "blspubkey":"PUB_BLS_tK4VH4Qly4HNrNLaquIzE4UuyVSsXPvJu-ut7PrOppT-7B53_Z8BokJ_6livH3gMrrq6GfAO-dOEOzug2L5e2rSQ7es3XxZlq9V_Lf-QkkHWSa3JQi_IyT33geDMwb4MSJzKuA", + "blsprivkey":"PVT_BLS_ZPRnmZqJLJBmeHZrAF_jKSWM_Qzi-cvKixkGmdltV0lh6O-m", + "blspop":"SIG_BLS_setC7_N5dF3AO618oBup3fZ7O6Q50XWHN5i4A-BoAh1qHYh3zXDcjYQG5uPh2EkR9y9X_dX0IwnqZlk7mnysWLxCGxoVOHqYAIpvyQlhQwRwcrpn62NP9D6hFf50n1wXf1c4Oa24qxVcGHvPd8nJ2FxnGYmk-i12vBZoRWbImxlKIY_biJJyt92ezUGtVdcLC397cjIC6_Q2zlZDmWtrV-ZQzLe6eTXzew8g1p-3zIGpeifzSJKnaI4Uv_dQZ0IAAQ2JUQ" } ], "peers": [ @@ -82,9 +82,9 @@ { "privkey":"5JxTJJegQBpEL1p77TzkN1ompMB9gDwAfjM9chPzFCB4chxmwrE", "pubkey":"EOS52ntDHqA2qj4xVo7KmxdezMRhvvBqpZBuKYJCsgihisxmywpAx", - "blspubkey":"PUB_BLS_6C3UlotUoDwruilh6gE+qlKsqY7VrmT6eT3aTr9fC0kZUkQRo13/xMh7MZerbBED2Rho72BLHIaWnT01LLsCFIZg9pSyHBFt3EcKa4p6OyvTkQAFxNb739EYcTVx2n8Gi0d+iw==", - "blsprivkey":"PVT_BLS_Tw2Lozr/Qw2/uf13xo6vduAWqzJnWu2o0/s9WalErmkq4RPV", - "blspop":"SIG_BLS_mrKA0CFFTP3udLsaWH67ilVf/5dcCHfzJ+P8i+dEuVg4y+td8uyghJqDxnPoitMEjjSqP12kmSZciDXqWD+uGU7nY1YeDK5Tvi7cvd1qSOuATjDuW+amc/5SKp73NLsYwqVFcIex4XF+Quu/NRfDCfLj9ZRPtmuNAUevi2iz0ExeOkQTjQhKksb9ihN+6w4Wk0vJEjt0KbbW2Ny46J+P7PbanH34X9iCV3dT+lqnyp9om0hxKJJIH2R6P5hC2d8Ry8FBAw==" + "blspubkey":"PUB_BLS_aQ3GWL36NlP-MWQzYlEcxHd87N3aSlnvZJCATq3xslpv9ZzBm5SfVOUye7EtJokHGJ1bwsHvHwfcKUuPX-CS4uoW79MZSTK7a6QDBDL7a2Y_8gK8pYNu4PaV-voDhgAWVSeH9w", + "blsprivkey":"PVT_BLS_wjSZErQAh_kO9f6eX1ObXqeZt-ETR35uSbqr_BgsKByNXR6D", + "blspop":"SIG_BLS_o0hk04oBRmDSwcxBT-TpCdWkw_ozi0U65jaNf_WkHCtVqoapCGF_nWkA653JlBgZLXV9yyKq6aDnj8zWxDVPj2EjE793i402iFcrVzTXWVpwjEliwgGobTweN6XfJWoVAQzCSOWU9Gfo58FcaG3SVUwLpiiDl5rzsQTLTDa6aq1D-tor4ZNRARLtQebDeLwJthY5whTNoU6e5lh9ZN9asr71kra_K34qubzXb379emLZ586Q9aW4uiHZKKNPPZoYOf1K0w" } ], "peers": [ @@ -100,9 +100,9 @@ { "privkey":"5K3h9XiAmrx9EuqD8CRxHgQwEVDaWpqrhrnpdvwHtVzwJFMhNmE", "pubkey":"EOS7K5pQCk22ojetRdyumrqp6nJX6eiQiTWWcGkZAMGhoBxgcsxhK", - "blspubkey":"PUB_BLS_R5fu+sEP4d2me/9fsyw3lsZeflW1/IuJ9IC5jvRYFDYyzj+gt4zswFgwyp946yEO7T7AC6/NYas5HkJhSWZh2VmulmAbquNLpuXOCVHQgnV7UqV0kmsUk+ADDvx2BqkRZWJGCQ==", - "blsprivkey":"PVT_BLS_C9srbwyvmESO1TY7XMKiQnQPhkrPOS3BkJQ1rOnThEytroKB", - "blspop":"SIG_BLS_mmjqef0rliHQx16BjTcxGTmJx1huB7e2yW+wXQU54f2S5/eUpwvjqZ8nH1YFbg8ZhrAQjBUmjNDSuU80R+zP55XheXSVTpP9nozkgu4uMOZAaBPRHA/Ip2iXwl58N+YIZ3mjaiDjJUhPgty3pjSsHPsF8+K4CrmOB3X9roKbYwvf6vlPvr6253yefF97HyIOiO1pKfqVfPD0WhgdEj8/x2tLz9Mqq8+PXIpuH5AK0F4S9EKc0A9+E+IF3swf3SAJZTVFAA==" + "blspubkey":"PUB_BLS_kGOCEX1MM5Xl928OOvGLyNo3_GpV8av1HnoaCEGOD8bAu3MDvazu0gCZGA1G7msTh1ZTPMEMVdXMuRVS0tv_9bW9Ohz9XvgtjgbPpxxc_NaeENkGg4uDBOro0Rk8DCEW4ToLKA", + "blsprivkey":"PVT_BLS_EnQXObGKvYqfubrKjxpCqNkHeLlkQg7LERjDGm1RKjgyFZnk", + "blspop":"SIG_BLS_bXrzPVc-ahxOCWrcl-iWIMuS8ego54iz7vi38A8h_ViqtxklH9O3A2z0eiw5j40M08ejiTm7JbCY_GOwulv1oXb9SaLYQkCTZjzCVssDkghLBRTVCZW2oJmU9WbZXikNw6nkygTs5sUTtCda2a_M5jqY_Rw92_NWmbolgBNkFvMcAgSHexdETA-b7QgJX_oYBWkyP0Pt8LzO6bJueZSjH8wZ8VuPc9o8taY85mt_qgdOTbXVBG2m5ud0eAUps2UHAHt-Ig" } ], "peers": [ @@ -118,9 +118,9 @@ { "privkey":"5KNxJ5cGoMeDiPi7raQMx1oqkuB8afJSDa5UdwrkCSC5qqt6Lbf", "pubkey":"EOS6kAMMmvYK9etVhffMBHXXZ16B1WPKLmUZ92iY9SMPWY2vwxutH", - "blspubkey":"PUB_BLS_mzlgvVwJOzKAa4Pr6o77VG6hZfNtEuHcBO1t5F4S7pLaRPKBORndeBzG5eHs6XQP8YY1NZm/j4mIi6AsonXFY5sCpUUTBxEkOIZXRM0c6N+aO2oYILs8W+s8I5qbM0wA8JiWdA==", - "blsprivkey":"PVT_BLS_g4YpsnE+m3EDYgS/D/qtsLawM6+AjMQEbgehZ3ajL0v+kE/c", - "blspop":"SIG_BLS_nAIJtkPJhnmnpt0yjvKjra909mEAnm28whF2jBk9o0fwDohxR6bN+i7QHaQDUxsK36mvqFxQPT6Itdvwa9iOzi2pLHxl4tPHwMd99W5m7esqqY7LU1TjEEYwEB5bQLQD086bZpLwaBChaUN07xjxGg70WPsvYSpYCNP1HE2/vh8CdKbVaf6GYZN41SQp7MIE8MyE9n+Tq0A9C+2rkGSaiLW6xZFwUl35YE0mA4tJX+8eq8mhZBIQK9Q4sNguS9ULOfiKXQ==" + "blspubkey":"PUB_BLS_Wx9TJvBhG6a0UnT4yjzLsgmFq-r6tX7w2qldrF1GV7VNr7Ox2_HIQAt2i9nCGsITgKZbkvBTJpWEyUJ2Tf5_O6tD_iCeTV-lQGsFXY9J9e1U1IHUFpFMHGnjkbkiOUoM3wdIBw", + "blsprivkey":"PVT_BLS_495bAY4lV_pFUHQanCN7OFIcBUybRUH39dApM_WQwVGU5zun", + "blspop":"SIG_BLS_fbmz1rHVbcC1wza6MVPJajmeDc9yzH77eK34zG0HuNoWI60A5MPlxjHbUK9iwKkNfvWCnr6bd0RqSpddcX0GIii7ZU61wM1xEBvUqEqREjYIBQRLuVRfStMZLABSF0YKePZuLvnbPlIJlK2rhbv8ZvFLsrbtO8dLyIamwb0AjBnhNlOfMcN7ycwvxgkb_LYJJiytAjt2jf3XHtu6TdKZgGcaOR9SiAegnxs3Ur4OI_QAHHj1txi5UwwqJI5FB8UE3Ff3Pg" } ], "peers": [ @@ -136,9 +136,9 @@ { "privkey":"5KWn533nXMjUv6tYoNyV6U6UGgvC2hBprGvYhoR9Xr6cE6dJAKX", "pubkey":"EOS5g9Db5mR5rhhEewywW79XAYzqhzt7FQcV765xwqGnwBntif9dT", - "blspubkey":"PUB_BLS_rNJHlhJQhwIv/UVEQc0H+OQdgFNnz+TdskL+PdAITgcUhCh052haT+47MI+pB1kLdpOm8PuoMCjHxsbhi85rR44xuod5XeoW16VG2lFKI3btW/BeESTs80wBMxmOec4WZeHfYQ==", - "blsprivkey":"PVT_BLS_puO016gn3EvSQT6gosof+M+qqKzHq/WNRs8KtA149RcqS92k", - "blspop":"SIG_BLS_7ghSt7t2p5Ua3n6TTx74g3Mw7s59hRWqBPS9plSdIe4arnoCFuWMzhy14qwafRgM+0XeWFIAjX/vdqvZ5GMech1NpfoOykGzRy26zctyjqXhKPIjFke0cRthAFNsgX8OYHmzuLAmR9KhWeg5VouDvTHPn1PgfQcxi4wWbo1AzIDhZAr7EzrHjUwkjSqaoscFquTGWs/LB7+CR6tBWxamfMP8QLletT1GYQM88wZoW8r3qrdxEiEMK4YIhQqVpycDcD9EqA==" + "blspubkey":"PUB_BLS_THaXCNIL39xWP6zTDkPUVXXW3sGbzXaJ7-4XKhWpfEiZrR2uWZng2JWKCtqJzb8RwKLw9-PuUoW8v-qx4dlq_kNzm2zTfYxVBZKZfGFBwOf92hCd1S4SHtswc80ur6ATGkTY0w", + "blsprivkey":"PVT_BLS_UAFrWj1Zwj34R2YNv1FT7uow5ulvqs3f1CXIfn8rgBeAe0F-", + "blspop":"SIG_BLS_W2OfXNGQ3liMGCPTSwKrvTkLoBIHz8ZSAmwPqYQ41BZRgT00ypjQ8CxEqaOP6hsW6NctpG69gfjvjvOoGWyrmeRxL-tgP_knhCWAFBGU8EQ4EQFz4aVOR1wOjkTR1OUUzPzMnqyKo86ARQFydqep8ee2dyDBrPOyJZrF5wUubFAgm7_obhvQIkUCD7z-SoIQL2X2C35EYj_4pMQVf6sKtkUOL-guFbNIqbIzZMcBbhR6TBln-_hweAdeYlSqoJIX29PW7g" } ], "peers": [ @@ -154,9 +154,9 @@ { "privkey":"5JLyZdVL9GyhhnmFZNXB6xLWVWivsMCtxTQmDRMGj9scNebDynq", "pubkey":"EOS6npG3MJ3UD2Dom5UCpZQ1ezJ7rZSJ9AX4cQjJvsHU23jNVGWja", - "blspubkey":"PUB_BLS_Ke23VMo/9Zaj6i98jiRWWhp+EGySRFHzcu5ADR6oqkc2bFAC5lq9u2jcyiv/S/4Y5LwsREojjfV5Ldw9GQF189AXy7B9fj/uusTL+6E6w+NuvNds1HlBRKkTjiaaAloHzCI76A==", - "blsprivkey":"PVT_BLS_HOX0t+2OPd8hixcTfVFTsrofFOYOzHuIro8+E7OC6nESSMYi", - "blspop":"SIG_BLS_7VFqeZT5Xs4InYO1bc5jEL3mtBaxkql8bihMn96BM3G6+crfJUENiSa3tMZljqYBEQTahNZ+6wdqUljCx/NniDypeNGT+2+jRH3ygc0EW5SNxU8LYw2F0X9IodlUVLkAApavtBW8e5BbvuLT1xbXs9vNThOl3f1OwSdUp3/QmjbWIQQQU5zC8RC8dxHKp6wYJ9OkAKJchflNmP3V6eXjqTwVt2eJFljZVpEhi8xSxt5wRnDjqynx7QcHCENH6wYGwv8ccw==" + "blspubkey":"PUB_BLS_F_AmqmPElNz7sc_VOKYt6ISzGx2WVHZmk6BELsVCge_t51X9DDakOwPPCHYWapgNqibc7wCXy-d8jek6UJzgqH3jLm1uM9PNnZu-8AbK3p7K4KJlMXfY1fr37oJJXUkUKdegxg", + "blsprivkey":"PVT_BLS_WElQJ1H7ODtihQ2VuZpNRhzsW-90u17FiQf3xD52J2KaN71k", + "blspop":"SIG_BLS_j7SWSUp5TQ0bBwlCwj1H2lZdehwfvjDoW56Il0pMLmwEvzzf_XeTKlqMAsa7cCUZA15cb-93J3cftd0np2jYF9nuBMsjn26anV5U4p-rsOpbkwyYCXoO6k1DQ52EpL4QRLKJ1MEQxqeRH23zw6GPv36R8FWbr8UhPDs1Fh_JIKVKC_bM6iI2TJBq263HZwMNATYXWKbiQZ7CNafSgrl-pTJen8kuPG8fHyfeG3fesb3Bd-MuVOwf-5sVC95x4mkEFRRqFA" } ], "peers": [ @@ -172,9 +172,9 @@ { "privkey":"5Jjkwz2aSsq6cVW74rifqQzDzs85gAEQh6MhL3stEeoY8idnwG2", "pubkey":"EOS8NybfYVLoS2iN7oaVwxqbkfcze19enjv1HMPpg4RisF9EsSuY6", - "blspubkey":"PUB_BLS_4DL5kzRRD87P+ef1vmJTYVBrTMZio0VVHyFzl1+HQ7iZSKfOibULym9lnEtCrmoGKGnkz+rjkUGO+cJ9HfEhoy0AIRTsweior+fsBlIWsTFXzRaLVkVHhNDqsaE2184TbkN4Ng==", - "blsprivkey":"PVT_BLS_aioeutTXN2DajfJiH5Vs9KVPPGn/iAopE30g6LuZz1MMOsb1", - "blspop":"SIG_BLS_vziPolv/jeVrbOv3qh6BRtZsJmzfES4vtwVCpEIBCR+tlZXVByh6sX5JnI8kYbwHYwhoSChVLHeskZS4FAgR5Dqpq3NhhBDkzZh3knLejxQ30GsTHKDOUpIrh7iZg5QZ5KkAAUrxyTwARXqpPV+tMvGKZ+XAlaNLqnLue9Jt6r/FACo7rDCaA7C786SylnwNrpIm1Jx+2A5rpuJw2Fk2eWxZGcLDm9jk2GK6ehoqvUxUEvHcYoCKve7XMSej5v0V2DjMHg==" + "blspubkey":"PUB_BLS_pQuFfH1I2ozll_e1F1vJYcKdANJpAUNJSqafTOy_mDBnu7IQJqVdXJ8dqINXb9YZSO0SbTdVNeuUR9Qfc9SDCm3jwwbSxZ9Y5bMUkyPzQBJ-dU3YXlHxO6C0-TTdkqQQIkq-5Q", + "blsprivkey":"PVT_BLS_FOmNTGQERlYcIM4LFGHpmjOrHM2p7mF57_maescNrSeNC3oa", + "blspop":"SIG_BLS_9VdsNkCqFCfoSon9JoTMNpYBKTwEz5wkVQEfq0i8uLiwLF6dZp5ulJuTZgtq7hEO2Ntl-jglz4gmp--tqEoVy3TclPAI1SFLUdGDjGdb4L4gBX8huG2MPUGXnYW_DgMZDXQbEYy43-XuWh_7JdjUoHc06Df1tqAOKdHdLSWUn_O-u7fGOH1cZgt6rFC2yZ8MLjbyQEekHcFXxUeO82hLV1kFp4qbKXEEhwnDmuHk45q0th4Niy4aHIwgtpTuwl8Y3c_2ag" } ], "peers": [ @@ -190,9 +190,9 @@ { "privkey":"5K233w6Hb74Q5Cz3ocRnu3svompUd7XyNmcpNkJjJRdfJmKeVM7", "pubkey":"EOS7ay3hqpGCXn8JaDQEsYBJ12SgnkuKx2gz66o5cJmzTUZ7x5GDo", - "blspubkey":"PUB_BLS_oYvv3nPGtWiijGPX133YK6uNcJaWaUpIKIoWpmRDnwtA9JY35yDi4q+nfX+9rtcJVymVMdHR66qRs0X+xmvOzGbo6thFx5QEGMtnIeY0hLrxINeCmXz+ZuZR5nSf5nQRQM9biQ==", - "blsprivkey":"PVT_BLS_BwLakQIIOl0UUxo5ducOnZUn31pDGBKLK9F8YgVaiW3DJTlv", - "blspop":"SIG_BLS_t54CRgY0jzXU0/vkw839V6uhlBMHkYRs28oQqNqeNW7zmTVDq0PRGYSxBwygtq4GPRYlvljsV0LWSRZKMH6So4hjP7OMbiEyzI63AHAzX6/VQLlIlpd8GxXtYRSSTbgFA4XVs7XvSua9s10ugn742CHBNhJIj8gzH7LbiFI6k6RzrRDCT9Ufx8DbqwavHm8L0sW6JG5gqsiyFgOu6gNF9IAvOWPJMSRstExtG1n7J8iNAT3141UXMPecIGh03ucS/FFUsQ==" + "blspubkey":"PUB_BLS_MApkZKPemyPYdtW4-9snF_W2PkfFoVI3E-03p2eOaGZa1yV6ygYDj8VDw_goBwAEia-Iplp9z749b9NgLy7FfTeOSLOIMFyWBY7WgraYaIXxfJYxdw5Lnj5MwLxHvGgCrPD9KQ", + "blsprivkey":"PVT_BLS_6Nb45t9oclV32ovUYNgCLdIRe3PM6VuDeZP0XZezrTE6ecd9", + "blspop":"SIG_BLS_T06CVAbdS31OYmT5v0KZMS98eCMutYP3jR50SCf6kLovBt5oWzlpOA5q71sUiNwNeKWQiYBrmiO-CbgQkDUifQXTiDjeeTKqoaVV6aIHYtoo6BJbq2QvZ-xgI3rKskYBKppbHywt3nxI66NjjiA0ZIY2gZh1BhjOz4y75-janrLxomyLgZvFqNSVFCbl1g8FC_a3VIAeJdOq2LzjmRd2EufL-pzr719HrcwTo-gNjn9ChtrF6FrT_0E5Yq88IOcWhPNm1w" } ], "peers": [ @@ -208,9 +208,9 @@ { "privkey":"5K3T3rhvCHyL4SkiMvkehgLwo9iwwqGhYdDmM6aQKpJYkm1p65N", "pubkey":"EOS63XTEVf3PSjNxRE7boZz3E35s1GDv2TzXfX1iapa7SJRi7T3ay", - "blspubkey":"PUB_BLS_3zkCiJX8se9pkCX1k3ib3uhsaHKQnELuRqmDkt690HZtJv/ZjSltHNqH+Qxaj6gNpSCJAeRASrsRaX/on2u7yTgtJoQ2dJzFu7vvGicRcNzwfYw7JIluwUV4DXKi9GUYXp5yyQ==", - "blsprivkey":"PVT_BLS_Np3rOgi0hbSjHlULuIIxYYesbsQk3AZ/+2qhLLK+aQXK2pXx", - "blspop":"SIG_BLS_B6/RPSl9U9tRjbVXdK9PfnRPyXcVJtM+FScQfDWvDEX+eXYCDt8mA3zvyNgZHe4QTinDKTm1DTQQsXTHHN1Tcqh5hm2+dNNMyjHwPV2xev/hcXrNCKMMDwdjdRu/aYgP+ZgppWfaKobj0DSID0w62Ml5Blu4pA3xWqnZ4V1+/LqSXoZ2QZwB165ssep5CUgTQc+TyH9U4K45baE9qbcPrnRRv2S7Md/5//BWVLvYHgUGACBnJDDiBbowilb1AyAVywWXPA==" + "blspubkey":"PUB_BLS_5-Np2eSWddV1GfbEhlx1QqhL7xzquc_EdvbeqsJPcpEOWbJZ_sDq6FqGDDzmfFUV9c7o33idEFN5bmgpTk1TOvKxk8V-UFsw4sEGXt34h9QZzekpjhqN8U081jkwtbsXktJ1TA", + "blsprivkey":"PVT_BLS_sjsI5DNqkN1di7VeYSOBOHeaYBwB8yjbIMgSMwEVByZICuuU", + "blspop":"SIG_BLS_GrIFJG0YQNmddCi-sAxO7O-LirRBLKn63i1kWVz58j_YmQ3xDbUPBnVZf9p-vPUEzw_5xOtjSkKPHo7DBz3v62ILbpee2nvFSi8AWDcQdZaVC_MidK2EmMNXodnVZ8EBuVq6-CWgUGU6HyIGZF0P3SYlUZddFHgLwQjv4n3o8IjCpuBc8DQG72xm0iQoaS4QpeNYX53Ht4kwKEr3Df5rw_KajcrMUsZU2A_A6n7xQdUoYjF321bu3Eao04p3ZTwUguUYyg" } ], "peers": [ @@ -226,9 +226,9 @@ { "privkey":"5KFMjaCKHrTEKRNk9UTrxz3cu1vdNcVo9PsmaUX3JhNWNYmg7Ak", "pubkey":"EOS5faXpYaxXSQM8B71jowJGTPRFiWSuemzN13mcPUBbYxk1b1VEU", - "blspubkey":"PUB_BLS_s+4jkyUOwY/4gSgE1fmnnecHiEiNViro0NSqUvvWIUW/XHVtyOpS0zxyYBebL1cDtsjt8sEsjmkytQh/1gPd22eNCfmoR59yaC9NSaXRf3BqXrFvT0peMfc3yK4QxTIEbKn0uA==", - "blsprivkey":"PVT_BLS_/nVghJD8wLC4WRITM3Bycz8Kux3ff6fVIM0UWZ5ug1nLDhIH", - "blspop":"SIG_BLS_Ny/t6zJlHhzhG00YyAacEOzpwuBfAWcA6AnbAAkkl0nK7ItW8LxxAeDVLe0HpngXVNcCZftlm/LVc8fsN5flSRnpuGOBBZRIQuOSQdLZZ8EiubDRayXQAtHd+A69/oAWJ5EFwjiakZKnL3T7znLLhWrmDGdOWdQlphQl5MnQ12HpeUr9svImAFFcUS6GivYA6bujRC02dRh2Ti+p/ghCodVublpQS1vgJSSildNuvw167Vl/EHy7Ldr1PzksOXIB78A1cw==" + "blspubkey":"PUB_BLS_M_lj7xiBWoOC8rIJBo9pu98xF4Sh4HhT4db68KPMlQQEdUuzaXrpEdUgMjvYKA8KzC0GVj_LetJ6jfKCMTThA0Wve9Q6T2Pz9eyxlZIMUkeug026U6WGO6iBytum5uAEQGL5Rw", + "blsprivkey":"PVT_BLS_4fpxXrwDB94lhA_NQiH_UBU1xrHRMaSTZx60heFetAK5hjam", + "blspop":"SIG_BLS_5ZtE6XzGsIFcB-yyxhxEo66N-EBPL1jqbnlapOqi2xspg07hKHe8EnRT7Y1i2fwT73ukAob4caAv2I9Vk9rT-kOj5VvIs4NUI5LJvjK-FEMnjq4QhIN-gmGmcw4GVc8R_n144YTk_BLMawkcHwDrbNXg2iWuWpiORryeRTVouxt_ax2MJ1pnBNZ4eXl2JPQHnzXVoV9K9ArOEMwfn3aEaKeLSCXFYzEtE9SHvGf-OpdB_EJ5Uaz0u0M_xO84jjQYFSWZXw" } ], "peers": [ @@ -244,9 +244,9 @@ { "privkey":"5KgUZEsvsiBrmBXvaK4GefQkhtwXKmEpjj4ChhBcyhbZkiLJ4gV", "pubkey":"EOS7SaD1iNagvRTsAf6mAF42cEGRiLKoQZ5gtsjoUejamW4kEmddG", - "blspubkey":"PUB_BLS_X4UqZnjW3wGDTXkahT2IpE/oQWCtmqSsqjT+z1HOgmLGL9MWNOgCuFVtrM/a2wgUBTdR810ufLTCYBK2GCIFbux3VXk0GMhCDdWdMIq21Nb+aV8UlQUl4HFM1Vvh78YE1Ih0PA==", - "blsprivkey":"PVT_BLS_EUwcWVgEjVmELDQfU8PTThQhER3CywkOE9nK1mKoCyMZptSL", - "blspop":"SIG_BLS_VwIfZQ2ZGFH3ixgav6SvORPKyCXlK67LAB+Gh3z7XqV8kvRLFIhyBTn/4o0ZVEsZdmvTB7LESScw/OmZfhKKSCI/wL+A65CrIKHHI16M4LgGwXOlIomcRN24jaej1FwL3iq+X/1liyHlbUy4SRPJtDHScThkBFdnCyp6w7KjYp/l4qLMQzfAP1quv0McCFAN3ZY4xnk91VzKUhUXfrhcdvEiLgBK9w8iSpN5HkNI6gzMVsGeIMSYE+4fG8aoLWcVrFec8g==" + "blspubkey":"PUB_BLS_Fn4mn2UNEjzFG584s_rEJ4g97aC4lYXrzOQlmd3ke1Uo_fqgy6MBoM4k9e0UKb0KG3UyehJkxqSrvxCSizOEc9cE0zw1stLCucDPZv3KcH4tvolL6WzZDcDYnRRtZqQWHWcjcw", + "blsprivkey":"PVT_BLS_XZtu5BaOUBl3VmApqGHBKZXb4WodmqbhBnOT9YrBfT2H-4lk", + "blspop":"SIG_BLS__BX43n8QaN1tuhGbB3rqElik-VejAA3Q5XGMlQy35SNrnjDActZiIowPVtZ3R1EXD7lEJEVJQGuJSKCpGpBPI1r6Lgvue54650qFppRcqK2c5SA8nbX7uZNN2a6SvocT54X0SE5jOc8GI5GRNmcp5-88umn77kIU_6ouLhkNgno-CdaRsh2o5trUJiVyGXMKfPXNcSvlgDNXLM7lSqE1nnzSqHAnQ0VIjShj--uPJDp5tCPZ9DImqO20JeXyWJ4XeOGIIg" } ], "peers": [ @@ -262,9 +262,9 @@ { "privkey":"5KAKiYtrxrhZzeiF2tb2kgyupdStyPcnZ7dfPQDUc9BLG6vigjc", "pubkey":"EOS8gxmMjQD55oZmTfD5yBD2yPYQ4bRrJ16VVMkguRXroJK2FVWrt", - "blspubkey":"PUB_BLS_g2MIIdBynuUoUzNNgqAXQWO4BhyiIc/OeK2Ua1C2HydYdAdKgNyA9tSgkEpHHngKPqIsPaIgEX+heYvCUfpFucr4hSjV10lHHDWH2dJaOt+ovaXKFRhisbLs/z8tqhUT8ZQhxQ==", - "blsprivkey":"PVT_BLS_IgI19hZPymLgGfkiFUokvWp+MZ/kwZI+ocxXhT0x6iLi5PiI", - "blspop":"SIG_BLS_jVLa9rx+lbGPvsoLnoa814Xgf0w4CfNSxjT6+kgN16uMU0b1B0/ZSCz7JsIp8GsGN4IS8wUFL83fvRTnU9oFBMKvRv892swHEYWnGGIKR61xNrlaZmsIlK1JJUgcWkwIdWbz/Jx63eajOTNMArzds0L8rD2f983o1f7XSIl7u3Ggcw7oLSvmVNQiR6Dnm+oGsi7HEvSrj1SE4Ju7WslTJ6UhnhgSJVloJ3eNwhKhiqmpTnFZbwpVntev5kEt9EYWvT+H1w==" + "blspubkey":"PUB_BLS_DKu2525wPup2hLrYrHYkGT4qNmW3-9jCtLbXfZEgc7zdw9_RHRaNNse3ofItgMMPKxdSBDhEzYdCqOUFL5UyIleix03WROMmVD4t_NGJ-nz8t9FoidXMdlfMSRhMs54LFA59Ag", + "blsprivkey":"PVT_BLS_P9rNgJbnlwyIxbSZyrf_RTRgO2lzMi0t3yco257fxx7xzqSw", + "blspop":"SIG_BLS_kPOTpF0scvc2yu6fRRNLEQENc8fHsTi-0fCzyp1XhShc5PCSxVDPKKv5yhrYcsUXygsva7j3QoSkpy_KKR_uzUHOZuaz78UqiV0R_oE4IYl79VGRvYNweZm5vupyqyEWBTxJQYgnMO7fBRPkYj8A4XNQAV1IxQhSzBLmurk1mGHF8At7Jss_m4JcELV62EYSBFk-R_JEnknkLl0jmpEy2gqk5KZAM_bCm7B8gVw5u4n0Fy9dxmdCLJF1iO-ednkGxyHLVA" } ], "peers": [ @@ -280,9 +280,9 @@ { "privkey":"5HsYvqVcuHkddyZF9h7iR4YxUMUmvoz3CRetNb4GveiRkehNpK6", "pubkey":"EOS5JcdUMhAgBTiXpry8xzFNeMhJH36ULjLYCe3Gj8Fy4r2kEJW52", - "blspubkey":"PUB_BLS_dY09ToDbjuEuBI4l229tL8gmCPtaSXN/5jhScIID8+VJOLSKm8XImmsR0Aye8DMFBtM3RIJOd3T3LOfRojPBfhTi3fM0LjopSo3nCGIrpqNVylkqx2mFBQa45mCw+rASd6fc1A==", - "blsprivkey":"PVT_BLS_uQWbffjpl3NLhG34pzZfqWpVGaldFg1YzdoONwBpPmzcuH/z", - "blspop":"SIG_BLS_XOGo68vGcVRvFyj5odE3mwrEqndBwWbEadVp9kOHJxQgD8P7swxMqrVWcKMOXocC6OCG5u05EU8AlYMh7W1obZLJS2qfnfpPMWcRAFpIH9lM9Kloj6oyxQhvdt9OoiIUen2c8wTgHO/ngcuvSMOX33oopEDL5wNd3oGz6zKEha6qZEhF/X17E6azmzcYv7IMssYGFByUziqOoN+v37leuWNLOBvXCLSXC19iMfDFxRyzGK82Om0sH2pd4JJ5WQ8JsNdXXg==" + "blspubkey":"PUB_BLS_6KMOHO8KuxHzHN57x7I0JkTOVO83FYDNfagfjoR1iLzYvV2wdS_vCgQYACe2xIwSBmj4L3-v72D9oYI1rj_WQHbT0qwwnN8D4sjqLktjkRZnQOOOZEijUcmlBTAG7tsUGecCOg", + "blsprivkey":"PVT_BLS_o8y-Boab7BOBPSQM0PyZ-Qp7uUxrJTFQrzYz7q1Q1ww-JZeK", + "blspop":"SIG_BLS_RjmAv76ZFaK3fxJdbiHqt01SpfCHpUe8I-ZF0DT1H4jRd4_-aNqZovLP405h11gA1G1RAAqmfVMvzB-jUx3-BY6jFqqepPfU6MpAO9rQhM-x5f8KrinK2nSMFT1GE2UBJ22DyKVbEFtKJx9guHDbWumzdUkDFA5xyC3EYXGVBBvBba9SP3i-KFuCqtCMslUFJWBvOBr8NPvGfT4kWnn786JK8rw3ViSGErjG_If7vQso-0APpQO1kF0mn9ShY4EDnoeWHA" } ], "peers": [ @@ -298,9 +298,9 @@ { "privkey":"5KA9YksaqmuwAU4WRUFEuHHbm2oXURZWNi5EmHXow4MrzZakAUf", "pubkey":"EOS6dG5iBiVUenpni6FMCa5KPjYF2DcTXVbUTywAnQx9XQwz58Wg5", - "blspubkey":"PUB_BLS_+Dc2uH8q2h6SEOIUtK13leSEjqsdvuOTpCMq+NqS7UmF0WH2jjg03Lt83mTJIVkZllt94UC2KsLAsvPZgmPYDNlu+o6W58TmF1gODm8A07P9qEHAuF5NPs8nQA/v4HUF0ugeCA==", - "blsprivkey":"PVT_BLS_3z3xLI5sAYKLKAp8roQBQacOldmkYLjMxWJPaTPPrHOPUurB", - "blspop":"SIG_BLS_sdadC/jUH9kE10xV0bjL8+jSuyrdqloHDzzDWKtcZ2PKMHSOZUEkv+xYasjWbK8Ms3sL6mBu3hR3Cy7r0yAiVsrfcEXFi9yqdAXpf3wcylkhHn557WBiWtR8rgqJLV8Ntxp7MoPiSZ67fe/jxwdrWi3gMmuie9iJ0V0vvAhPrg2Jz/fXdKmPzbwOfXEmzFoFt1LPxVXzgEr4ivmMyA6qkZ5DRZ1k/IgQtdnW7DsZKXwCtEY33aq4OVM+GdurIC8D1Npq4A==" + "blspubkey":"PUB_BLS_0mn6ZeFkk2ordvG7ft590qER6awhrZPDbFBDGZ7EDaw2AGJCAMi7F3_PzkhTEkwYosv4JnaUVIUG1cpRiSmVMB1g-osN92_fJIKD9_QV9W_zDZs5YyDaf9BMlnGOoOsMqfOmOA", + "blsprivkey":"PVT_BLS_Txga4vv-RQ-tZCMbaEDiUcS6jsHg2_jUtj-bxUi9BG5uVkgn", + "blspop":"SIG_BLS_ADXUcACZq1075pbqsJKDj44QFObBwPcqbz7wMfaGbkzwOTt092eClC3xymrSZrgBb8hJg4qkeSXFUmxiw8Zr-rSqO1P6lcdnRUE0D9GNQGbDFscxUE6jwZlp6wH6hF8CEoyY6QJsfBOaShW2RHNiqeJtBFbFo9wliYeya5E8Qt176_lWBrnLQnie8-i5e7AW78T7JQAFMdlGHsF-QORXyvbigEFwlLFO0AfZ8P6pOXEBATQpU8Y3BMjVEhO_GqwKmOv8aw" } ], "peers": [ @@ -316,9 +316,9 @@ { "privkey":"5JUV8ELodV2N31nYpfkzjyzNTqSSJEW7A33yvC9vfcFEDsV2UJj", "pubkey":"EOS5S4ECoqLgv1GK4NrAhdnv2TzteLEquGnurCbHX74v4mn4Z3bgY", - "blspubkey":"PUB_BLS_x6zV19LZQDvAWUBCRHaOMEetFrYowz3kh0D9SgnLoy90KNpJmDs846hqb269EJ8EqcN4IKXV45/F+HvtwrdwYE3q7Wzr2SyGzaP++vvzPkEjAoUw+WfXCQKrt/SzM0IEXvzQNA==", - "blsprivkey":"PVT_BLS_9CancPk8azgD+5fwlkwF6X6RYE7gEE+ttDwoNQbj6Do4evA7", - "blspop":"SIG_BLS_ASM+N/I7e0WVM9I3gKZMoZR6Y4tKrFOlbGjUITn2DApp7QIqRvxYMlhMiX87AnME0z4VH9RrFS6z6RT+DuhtGB4B3iLj/9FczN/YY6hhHT9lPOpaaPg+oJWAHq+ks3cMpMZOPub8IdDxt7/C+Yxna176LZFAHgo2ytSu6dqujoiq3YL8TZtmi/UaB3KZnkcYVswcgyr6x8VkjtNHmmqAp6fnrWI5bm6Re6/TGXRJOYwwvKDI5WnkKVhrSQKR2n4Sr28YZw==" + "blspubkey":"PUB_BLS_no1gZTuy-0iL_FVrc6q4ow5KtTtdv6ZQ3Cq73Jwl32qRNC9AEQaWsESaoN4Y9NAVRmRGnbEekzgo6YlwbztPeoWhWzvHiOALTFKegRXlRxVbM4naOg33cZOSdS25i_MXywteRA", + "blsprivkey":"PVT_BLS_y_iMu9QYlZXK_Cdb-NEfSOQfJeWzm1-f-7p6V5MsiwsL1SQr", + "blspop":"SIG_BLS_uH6aANw9BXeNR10LpBPeR2Nly-syjCULNz1CyIGjzDbmnWP38nGG6mJgKkIsumwIHX3lyv_YuRKENR6NsHGeW_ZU_-UtLUYexcEcarsJXh1W5zWvAbkU0opglYj5KO8TDV6m3EObHH4l8aivkCesm5UWJd_WKCm0a33NNDn7ODLFqYTa8g3OEIW55p911M8IYt8siHTeLuc-igW282hUZhdtWnf5oEjKUqFTJHY_CXAARECZZ5DkjIT3WlFCnzcMjOgZLA" } ], "peers": [ @@ -334,9 +334,9 @@ { "privkey":"5KAx38nXk4Rck1XefFW8w7vPgzELVeieYUuCjeZJfPoi2jh2s2C", "pubkey":"EOS5z4bsFKN14vJesR86ARJ2AvMaS4n39eE7ngKM3B38bYBCrLbZn", - "blspubkey":"PUB_BLS_ezWZ/Xx+SHahvgfyKnpXtcZmg/r+hC0fWa49f1GHCmffmcyJu9LHn8pEoFKn3moM9rvG65IJQ22tzgdo3zbN5NxZoAqBIXRmCmWdXdQUg+24jGVnJP/SoobnH18i4zsIPTVHbA==", - "blsprivkey":"PVT_BLS_1usu9agu2+LRi0Oydi1ch33NnS69d2rqaz28SxSwoG0cug0S", - "blspop":"SIG_BLS_M03lEaVS7pnR5Yb+8hWFhLu8Hs9iC/YW+A3BLC/wQhM6vdU7WWMooJZ2vkqq3g8KnsrmALsErOzA9HVdbDe9fuatwIQJoBzaLsGg2Jf/UKuLAqtvbhSg0RogCMcJ5bIQlHKkgcgWBaRj5I+jhprrydNEZmysf+R4K0+e3sDrQ4nsyrYbfyV4+WIH35LuZiwGcTmRwmw/y/JDV2HGy3+iSHfR0XJ/vpsc1nSAcxUa5yr6XP0ikTzHXZP575tP1QEJpZRjWQ==" + "blspubkey":"PUB_BLS_0IObtkg4_B0hdndSghQqZf8qQ-aPRyhxNhGsY4CzIgJiMlVIl71Zh3vnl5yht0kM0ds_hgeDFzUo99-ApbXyxMieQ4LRFQBaXRSGCp50XArXtIYGe6PfLXjqqkXZdTAOALHT9g", + "blsprivkey":"PVT_BLS_be_XdiZXFYG55p9C6vQdTpMHYtTRqs1UTyzmSoP9xi-VhmjQ", + "blspop":"SIG_BLS_F_GHPJsIUGgGFC0lC1aBLxJkMAa7U6rB5XeehWOLoELWKMtbkhjU6hxzWeOXXgoXkIy2kgkhXPMe6T-K5ZyWqKb4vo1FzGEyl4Suscdr7hsHCNQHnm7GdmxD6BTfS1kHHT0nibtVMeyqWUzKXjQ6-AoZsy9GhsAgFmY804s4rKUJi6w0CJdaqF-6pL-_8-YCQGbVjseWyaJybP4qQX0dUfVDWn-SKAbrtXq3o8KA2vWyKestPoW-Zln9mlMGY2IUNq5SsA" } ], "peers": [ @@ -352,9 +352,9 @@ { "privkey":"5KhyQJFLkqtxrFyKtpEng9c8N5dD7gB4Q5q8LQL78e8J12LCiTz", "pubkey":"EOS67KLwTrR9QYnUP6ETCcp4HyTits5VKALouRcnBkCuaRv7m6zg5", - "blspubkey":"PUB_BLS_XY2ZdVr+YYeA6D1FjzqbTcfScGuVoh/OCHJTG815MhnO9kg2PUIXFT2VKi1INOMRAFUgz02weq3HQvzKNEm53bV+9paIqIO8Jzp8Isoh8gZlwdQhHMxnnUNnOVuftdkEYNyRBA==", - "blsprivkey":"PVT_BLS_wsvBRU8vAwpUkNHNviqh5M5njIPgZBeItQhx2V2AGyJlbsZB", - "blspop":"SIG_BLS_1Vx448M9mj9woG6ZLWTC6HfDihfK2E+skqfWrMBFYz1XM/QszwiJkZeNIUjgw08TJIj9V9qxJNuCus7cZbE3LRjlNNyEX2Y/NG2vTrGczxoEsX8JJku5zA2EiJyEV+sT/fHDTquvAoEo+weBsypiIrxu0b/0ZyGVWVzxIW/rmr/tRfjkGlqGBk/wnY/C7qIEFxVDuOTIjgKAXMm/3x+oZa06IqNSXxhJNjTn9eTyC+wGtWFWKpqb9u7DhQXo7rMNifiFwA==" + "blspubkey":"PUB_BLS_zqRtF3KMfXOc_8qRTrYIuNmgnJqX84U59Jr30NjXQrjXrF-U-AD9AWB0WD4gEvAUrGuI_fx2uG1Ds5rYnJ_iUbLMc0VCaxbME0i-lSFDm0TOkQC2xEZtdgOIYAJhwWcSGc23fw", + "blsprivkey":"PVT_BLS_eAKD3fopqzWjZOjwRViHPXsBj4J7vGlF2-a8Rfl1gxQaKds-", + "blspop":"SIG_BLS_AF9jzkVqU8XNGgzY75ACW4PWJZxRhd_8aBlXo9BtLIHaX_MJs5wryYrv-M3n5ysGq2aGQd58KHfN15zfdsYuJZzQ3WmQpB73orycC4rh55GOPa3475ObylJQxp1cAWoCQnZWkz2eOmT6W6tLqrO9qfyymgehog11uJNaGKuadI-HI9hE5oxcAslZSJqV_roAzX2tSKLbB0KJR8XPzG1Fv5-xKQZQzUlJCfRsOb1lK6nKKrnuQ8Gc6_f53ekwU0YHt3NXYg" } ], "peers": [ @@ -370,9 +370,9 @@ { "privkey":"5KRT1XwAy8RPFwH2SkwZdzACt6JaeFRefVTy4aBBLj9VtRzdcqH", "pubkey":"EOS5tDpQJoHc4Y6cy4FapHdUCEXmZ4qwq3EF9q94c63dN2bNQWvj5", - "blspubkey":"PUB_BLS_cwCKNO9Wg92QTOmugc7Uprz5btuUtSozRK+nQ55pVHdpFmNVVMfmQ13JlzAuJOgOaZRTQjUXZv2ixRgwyrJf5ma/q4ZWI9mF2KWHLz+YQGqAqGvkIkIgEOo+usYygXcW27KtVA==", - "blsprivkey":"PVT_BLS_IYNPpij9OFAhC81wG9ETvgkapFsJtz0CEAXV9lUzJHKVaiGm", - "blspop":"SIG_BLS_ZmM1tKfSGBH3bKWiJU4TunQIgTGMTknmy/0QFNmmaELqFrK4ke4DCaDpm+epJyQUWodHzYMr6XoPCa5dDf7fDurgdEtQgLuHMGJClz9S12hoaRGkDAS5ANS3O4oYJKMYUU3bFNtl9shBJi0o4VBYaLjdYVG9vNHp20wpoU+UYwHamC2InXWOiQ9BIQ1eVhEPruf5+/GdRBwGLnHynnXGhQ1rIv6psVE7RqKF6BK5Q1CifshmDg0U7ZiNozuneLIOAUSkXA==" + "blspubkey":"PUB_BLS_SvKo0P0TvkXaVXuA33W7QyeMJSiZ247rulSyf47ZSbGNw-v9Wn_ciRc8cL0Y8JgV0j_dFYi_szcYRDESAiU31MNVGvZRhUECnox0cSNxCCevo_o0Ptybn7iaeAUFYg0Jc7_oYA", + "blsprivkey":"PVT_BLS_wMBah2N0NEd5rR6grESurO3EaKRzJKRgWA9mtb9RJm4Gwsaf", + "blspop":"SIG_BLS_6DYG5dBLgvBk0SlQvpNKnwaVwGf-WeVrS1RvaqyywQqccJ1vHDrRqeXf74OpEDoA4W0Oyb7TxYnrrD2iBoOzwI5tR7TVTm28v4yRn2Zs5rJB-QFVM75Pyira4s-BpuAUPAFQjJPOO9BLoEmE_vN7E4ApBLIjWR6U6AUKULJ3a5bnwuTZ4PwAlgwLbQE60CAGTqEOBx5YdA0ibbMgCGk3E2zNXee4GIVDQcInRRyOjuUDvkaxhUXVWiT-1oP5L4gOb1xYHg" } ], "peers": [ @@ -388,9 +388,9 @@ { "privkey":"5J7Jg9E17ae1dAunZSMMtDKE1r1XtrmBKWmU4DGa7atZXCpy1RE", "pubkey":"EOS5NhoG6oyNdGdbujArjVPMTviym3ygrYJ7ttBRcfCJdrxLrXqAV", - "blspubkey":"PUB_BLS_RWX8p32dBXAujzYM3X3nfj7wazMhp/1wvl7m06YsSmS2tSGX+MAJIwV3suklx0kK1Ye605XKfEIGTGQlAdAR/QrxuULMqDSWPSD7xskw2xqJg3xpFe+VUTs1f/9jBeIMMhdO8Q==", - "blsprivkey":"PVT_BLS_A1PVjrK/67D5MTHt5Qja6OBS68MTuFA1lDoskeFGqglNdrtR", - "blspop":"SIG_BLS_UaUg8HAyjB3WLO6Q43Xw7t13ZM6QM91sj1voB2Q0WiubPrv5xtgTkbTKa/K4ULgRRzwvT4kmxq0+XozdqaKs+zd0JBTH+T3BM2d/wiuQ1C85wnsfHy8YI6TZf9VOBegOARi8AE3nrfHbon1mixbxJIpmpo3+9TTlAyeIGuNdHWk48ZRt6g6QREKFT2RF2BAQBtLTzmL3sBoWcS1OqLAk4pRWqh4dExu5EHZde0Lt+cpZaQdyX3KKytKHez55LCkNaEmgsg==" + "blspubkey":"PUB_BLS_6zr30kiVSVz1orVeEEeLMPy4tcCN7SXlWCXuXTBqTIAjeEQQ-WjTHGxA9ZtKsM4SqBKdi95dPw1G98isHprZ25qZx7iYFCq7Ayaw0L0TKOMv52GNFEQ6_Qzgp6lUQloCoBX9Kg", + "blsprivkey":"PVT_BLS_8wDapgL8B04AEWPcWrxgRSI3KRFEBcR9FzLIMwBStV6cjkCQ", + "blspop":"SIG_BLS__60s6pr8NfxhAEZ_0ycbgt4FbK8DwEy9KtIxSBBO-pz0oatUAX25AYSrHsfpisADagya5vqobmGJhRkcC-g3oUcZQqAIxFFG43_ECLIiW-d-hBN752Pu6y7Y1glFpCUU_GMbHZNS7Z8XhtPMxT-jweeQWLuGGQuTvTcx3HfSVgZunkXKEmdlkG3SjC6eBf8BZN6YXjKIvkoh7cIU2Qa4XcX9rNJ5kOUHyzjvr0hC1_T52opNOwpeA5hkD04uajQS41hbOQ" } ], "peers": [ diff --git a/tests/bridge_for_fork_test_shape.json b/tests/bridge_for_fork_test_shape.json index a97b7235f3..7d86b4070c 100644 --- a/tests/bridge_for_fork_test_shape.json +++ b/tests/bridge_for_fork_test_shape.json @@ -27,9 +27,9 @@ { "privkey":"5Jf4sTk7vwX1MYpLJ2eQFanVvKYXFqGBrCyANPukuP2BJ5WAAKZ", "pubkey":"EOS58B33q9S7oNkgeFfcoW3VJYu4obfDiqn5RHGE2ige6jVjUhymR", - "blspubkey":"PUB_BLS_2QQ72DAhKOWKfnBF77AnYn3GqD0M+Yh/05tqKNhqEQ0K4ixhIZ0rKbO2UuonqGAV1KYPgLzIfRz6zMD4iWI3FhOGE+UZ4Le5cELQ3NjOBFagG51XqM8Q1lpUqNanhCoDyfFnLg==", - "blsprivkey":"PVT_BLS_XwmVWf21N/j+hYJfo5+VHN1BtMY2wmKdQ7unaX/rzk+EJ5PX", - "blspop":"SIG_BLS_jvAPOOkvw19wuEzIt1ot8tn6aLeP55XQtSIY2eP3DMcZvEcdmlWVqNI/M8VNKL8RiN2F7XrRZ6O5cPPh4f3B/XfHOyUd3UXG3p++9m0tu0jCojtWQd6wJmTIR1LQ6DUWAQwBOx8Rd70FoznDEqJS/RZBV03x9FpBDQH7VB6BYs9UztynlWrL8LZaRbi8WNwF9CDzUJJsmOmHMnZO5qcTuo/cmSgV1X03bITdQ4IGq06yExBPepIX9ZZu5XH4QCIBo/fIcg==" + "blspubkey":"PUB_BLS_Uf3df_EqPpR31ZkenPtwgGUtd69cahyuY2lc9jPwEta7Q6t7REV-Hd35hUIDel4N7pQdCGZdnVZzs_UmJghEjGhVHN1QVVAQjOca8Fs10D_jqTiUzffzqyBAvTHyZtoEEPyXkg", + "blsprivkey":"PVT_BLS_t2sZsoDWTQFIKg75bhJn8pBA0iDYcWyn3HlEfKIzTzKozgKO", + "blspop":"SIG_BLS_TnwBY4dpG54mCue3ZXwjCio0AIdWYwFdz5ipLdnXlg64FkYkhMUtkOdQIs1IYbMWOXlD6OnCP6jcCWi5VziWKNbLfMX64SdIkNPKOHrfE_8fBfIk9Onj7GbWx3q0LbYP7NfJQk1mk-gOjz1G3elZDDHt367YUgzYDKhtl1FSkfZzDRzDsCSei7H1MjLi_e0RVdUfgqAznGaq2Yss6gY-HzwzgHU4y-SNQpzdCuDlLEEIjkHq8fXuMiPWT2Dlt8kOML0uqg" } ], "peers": [ @@ -49,9 +49,9 @@ { "privkey":"5HviUPkTEtvF2B1nm8aZUnjma2TzgpKRjuXjwHyy3FME4xDbkZF", "pubkey":"EOS5CbcTDgbks2ptTxvyCbT9HFbzX7PDHUY2wN4DDnVBhhQr2ZNDE", - "blspubkey":"PUB_BLS_g86vgFO5G0bcRuaEA95kNFxnsHyzVSOthKKN8MSJ2zLWj+WfCbIBIO73OxgzjVsZarSuMQrcbVu2MktqF6PGlPkPaSuJGnES3FQ0OAfebOMAsPeAd23Ge/3+cPl2OVgXSmHdhA==", - "blsprivkey":"PVT_BLS_AtgyGDKJdQWvCNyGJgyu9bWpMS7eQE07zB2nGTlhZ0nCX11C", - "blspop":"SIG_BLS_pzPEYt1zLPVbofA1YABSPb1gJdvUdUhREa+pQsj2eTSaEBEnb+w+AwO0cQLgYSYWNWRePIUUvj5MCWqlfIU5ulBL8tqlwdCqQ0o6W915axLq2l1qnbFK/XfN9dRxdJgWPdl57bCGmoii25gdyobgLUZaJzPfivE6iQ981IgGACAb5CRdVH5hPZq8Rab1O64OclwCT/8ho8TdcKoSQj0njbAfp9JZxv5EyuAkaNIQun9rn+vH++37n+nDeV6UgCUEzex3cQ==" + "blspubkey":"PUB_BLS_Y8ndNvnrEpnzJcNUg49ncWDiDGRgR7WUmRRDR9yMURoS6zF14sPnbb-DsTGp0cEM628a4CmG6KXMhPJMqGZvb7RM_MGIwgbEhVaENL8rXeYLOuFDS375KHFgXxs2P5sZuaN7aA", + "blsprivkey":"PVT_BLS_A1Mifu5xyaxiveyjnZ-qN2zOt-5_KLMpjTrDI9udcQNV1NBR", + "blspop":"SIG_BLS_7D0OUU1h7E0AKkAmqV4v3Ot9oSPWJBOss4yDejr2x1g5G31cSSAYIAtqZOYC-ioNzddY7zkvTcbhKgBzv5a-G1HmV1pOCXXPJ5TL0iqU8Ks5abeEWCdhArGATmRQiSMYNcj9rMQcm3H6Z0pOlOdbDdt8Cg-SY_H4jEGmAY2ZqudAH_U8gS19aydJU-2uQq0SPIr2Okl-WNbc-q3NVQw6Y0sAHAwN4BOIHup2MJyDDDIbpSEkBchRp3zna1XJf6oBuUzpqQ" } ], "peers": [ @@ -71,9 +71,9 @@ { "privkey":"5KkQbdxFHr8Pg1N3DEMDdU7emFgUTwQvh99FDJrodFhUbbsAtQT", "pubkey":"EOS6Tkpf8kcDfa32WA9B4nTcEJ64ZdDMSNioDcaL6rzdMwnpzaWJB", - "blspubkey":"PUB_BLS_PerMKMuQdZ3N6NEOoQRdlB1BztNWAeHkmzqwcFwEQGEM8QMfv3mrrepX5yM4NKQHYDnfcPIQPpDt0gCi6afvpZgN0JHT4jUaNlbfsJKtbm5mOJcqggddamCKEz2lBC0OS2D5yw==", - "blsprivkey":"PVT_BLS_n4AshIQiCqCdIOC/lGkKauVOFE2KelMb3flVvodVsji15FHW", - "blspop":"SIG_BLS_oqOzQYpJRvQ88ExpJKmwgna29eXM5umPpLmjfHcdcUUKwS3NMWwvP1hLwLcj4XcU6CuM3RzfRo6PPE2sxrp2fUWpqP0bsuamcOOyF+V6TfJMYuDbepc1Jp9HUdli3X0QE6hL+umbO2PWE4KiCSn9tj9LRyXgc41IY7R/JeQCCQSNXMSWhebdB/KCapfxq8sYEzRhXcZik+bXUDC1AcLXaocvNV6o2nKHtJwQ7YyGXCvFXgMMcQ3PWFlQ8WErmxILOM3Z/w==" + "blspubkey":"PUB_BLS_Wf_O_QeyVhekDXS5q3qBxTyj_qxSrX_uiCY4z8ClpW0X2jrAVgAVHOQ9IR2H40QTWveD8QIGhhSbmSFPa0zFbs5k3yfnjfuuwpA7T1O13_LSdtxT19ehYiE4chZX6SUMJ09JFA", + "blsprivkey":"PVT_BLS_1ZLWim0k80ssXswSZp1T3ydHO9U3gLnKKlEBIDy8927XDLLj", + "blspop":"SIG_BLS_EL09aI3w-qCgarLM2Z5-T6sisSHBN0J4vMZxtGQklkOcAxgnCaPPXe0roxY4W0gVe2y6T01YrklmT_qZu2tAwqiNrVJcScY8QKvRSeczGBBab1MgnHvaAOuf6bA4JPAELIu2iPWfsS6-oLyLbNP5xtZpMXPHu3yaSJssXNOb5rcVs1KXaIUEagJeAlBBQEcKmFWfeAsJ_R8JDw4i9gSNmROzUjm6LVBpvB7vrnPDPFRA0BQ19H4FED6PtuFPShwJGVz4dg" } ], "peers": [ @@ -93,9 +93,9 @@ { "privkey":"5JxTJJegQBpEL1p77TzkN1ompMB9gDwAfjM9chPzFCB4chxmwrE", "pubkey":"EOS52ntDHqA2qj4xVo7KmxdezMRhvvBqpZBuKYJCsgihisxmywpAx", - "blspubkey":"PUB_BLS_6C3UlotUoDwruilh6gE+qlKsqY7VrmT6eT3aTr9fC0kZUkQRo13/xMh7MZerbBED2Rho72BLHIaWnT01LLsCFIZg9pSyHBFt3EcKa4p6OyvTkQAFxNb739EYcTVx2n8Gi0d+iw==", - "blsprivkey":"PVT_BLS_Tw2Lozr/Qw2/uf13xo6vduAWqzJnWu2o0/s9WalErmkq4RPV", - "blspop":"SIG_BLS_mrKA0CFFTP3udLsaWH67ilVf/5dcCHfzJ+P8i+dEuVg4y+td8uyghJqDxnPoitMEjjSqP12kmSZciDXqWD+uGU7nY1YeDK5Tvi7cvd1qSOuATjDuW+amc/5SKp73NLsYwqVFcIex4XF+Quu/NRfDCfLj9ZRPtmuNAUevi2iz0ExeOkQTjQhKksb9ihN+6w4Wk0vJEjt0KbbW2Ny46J+P7PbanH34X9iCV3dT+lqnyp9om0hxKJJIH2R6P5hC2d8Ry8FBAw==" + "blspubkey":"PUB_BLS_C-FprIiry6X-8dlLYH7xUAhIuKXBQv56zJPgtcdmKeHf8AAy750eRrOYBtKG0-QEIN5l_yl9dTLvAYmOios6Q5t3ybWBUVVQ2WWcbZLVxzwBftLwYvo1zPXH7LHEE_sAgP1i7g", + "blsprivkey":"PVT_BLS_ubElmjajfsYP_9HRSpmV-Fi_IPWKTyJS4XFSWrU8ezMZ_mL_", + "blspop":"SIG_BLS_k3wrhVl2GUG_lGsPr9io-zoamPw7eiaxMDExk-yOqcpXtu0zALHoUWJRh0WOerAS1-_RQNhbi4q-BWO9IbiNWRKP9CYIhNIL6ochGHHy4aBmZ-IzEjfBrDt7inDtFTYY0Gl372e5OqPXAwi6J3GeHipXuzAiw7SV8XdWFefthxId4meKX6vw5_RWx4XQ4ScRYoCG7UQtIZkQPEsu1SfJGL6z-cfTTSq-naKbzp0QQYfqtQkFfmL7qQUH1iohnb0HbTbRbQ" } ], "peers": [ diff --git a/tests/p2p_sync_throttle_test_shape.json b/tests/p2p_sync_throttle_test_shape.json index 5bc6939ddb..497a66f281 100644 --- a/tests/p2p_sync_throttle_test_shape.json +++ b/tests/p2p_sync_throttle_test_shape.json @@ -8,9 +8,9 @@ { "pubkey": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "privkey": "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3", - "blspubkey":"PUB_BLS_2QQ72DAhKOWKfnBF77AnYn3GqD0M+Yh/05tqKNhqEQ0K4ixhIZ0rKbO2UuonqGAV1KYPgLzIfRz6zMD4iWI3FhOGE+UZ4Le5cELQ3NjOBFagG51XqM8Q1lpUqNanhCoDyfFnLg==", - "blsprivkey":"PVT_BLS_XwmVWf21N/j+hYJfo5+VHN1BtMY2wmKdQ7unaX/rzk+EJ5PX", - "blspop":"SIG_BLS_jvAPOOkvw19wuEzIt1ot8tn6aLeP55XQtSIY2eP3DMcZvEcdmlWVqNI/M8VNKL8RiN2F7XrRZ6O5cPPh4f3B/XfHOyUd3UXG3p++9m0tu0jCojtWQd6wJmTIR1LQ6DUWAQwBOx8Rd70FoznDEqJS/RZBV03x9FpBDQH7VB6BYs9UztynlWrL8LZaRbi8WNwF9CDzUJJsmOmHMnZO5qcTuo/cmSgV1X03bITdQ4IGq06yExBPepIX9ZZu5XH4QCIBo/fIcg==" + "blspubkey":"PUB_BLS_sGOyYNtpmmjfsNbQaiGJrPxeSg9sdx0nRtfhI_KnWoACXLL53FIf1HjpcN8wX0cYQyOE60NLSI9iPY8mIlT4GkiFMT3ez7j2IbBBzR0D1MthC0B_fYlgYWwjcbqCOowSaH48KA", + "blsprivkey":"PVT_BLS_QgHHJ5vprZcjG7P0xWoIdX4yKPQXoG4k3e28TpLIQicB7GL_", + "blspop":"SIG_BLS_HDzwmlF7wSJGetlSfhIGKVtjiMTeYoM4oCbNoHi1tyh0_KnZCsdLUzplexSXD80P0NAkCjlA6YFt2M5_JsZkRTqn2faFSnH6zwKIK9yr2cV3a14W4WcIC90mTP2D-HEPOBjM2gTmWCA0gYfPdV3tB3I0matrYh5R0I1FG0V6p_RVKacXMgV_M3lNUokRI84MPZlc8OVbJ0RbjoBnYylVeYtR31vSJvvk6RvykIjTktZOA0s32-TR5EcxuaFSsVQU7nSQxA" } ], "peers": [ @@ -34,9 +34,9 @@ { "pubkey": "EOS7D6jfN6bbJD9cYheyhnBT4bmUWc3Qf4Yphf5GBeAAy58okcwHU", "privkey": "5KkmnyunnpCQzgFoLMEtU3j7BRBa5aWmsBNru49ke7LdnZKFhmt", - "blspubkey":"PUB_BLS_g86vgFO5G0bcRuaEA95kNFxnsHyzVSOthKKN8MSJ2zLWj+WfCbIBIO73OxgzjVsZarSuMQrcbVu2MktqF6PGlPkPaSuJGnES3FQ0OAfebOMAsPeAd23Ge/3+cPl2OVgXSmHdhA==", - "blsprivkey":"PVT_BLS_AtgyGDKJdQWvCNyGJgyu9bWpMS7eQE07zB2nGTlhZ0nCX11C", - "blspop":"SIG_BLS_pzPEYt1zLPVbofA1YABSPb1gJdvUdUhREa+pQsj2eTSaEBEnb+w+AwO0cQLgYSYWNWRePIUUvj5MCWqlfIU5ulBL8tqlwdCqQ0o6W915axLq2l1qnbFK/XfN9dRxdJgWPdl57bCGmoii25gdyobgLUZaJzPfivE6iQ981IgGACAb5CRdVH5hPZq8Rab1O64OclwCT/8ho8TdcKoSQj0njbAfp9JZxv5EyuAkaNIQun9rn+vH++37n+nDeV6UgCUEzex3cQ==" + "blspubkey":"PUB_BLS_X6Wzge0CMkDLu0svywBWGBdIuMfol_hAG7zeukAddsbQsArgcuZ6tz3LLoLRurUMhz6ZpOHdYCPU0Rg8Fo8n4UDsT6pcHSmwWMKWIhyS-Ms0O_dYCRQ2Q5HLxBGMxyIWaltxlw", + "blsprivkey":"PVT_BLS_TvIkGjiwy3b5k9yc6YnwHPQp1n_9x8yP4mZQl5Ke1yvp2_vv", + "blspop":"SIG_BLS_Zzi_eRG51GhBgAFhnG048Pa3OjlenLwKtO03CBkZxQB4sdhyYWmqrJDdjpgPwvcPwbRK1jIlaUG9mJVPjJHrmocC-br8_t1EqLAHN3lyuyJ7UZWkzj2E339zNJ8aE28NmF4rmZ0UV3sUP54qZw9k75G7y0toL8djkMkPNzbz9OD0vZQDjQ-PVWQg11t-eP4MbFt8uONuk2NpEBEbT8JXPvnzh1e1-WBxId0Mra5-Pa1ca3zkrqgHdnpWKCUjBr0Kj8yZPg" } ], "peers": [], @@ -78,9 +78,9 @@ { "pubkey": "EOS5tZqxLB8y9q2yHkgcXU4QFBEV6QKN3NQ54ygaFLWHJbjqYzFhw", "privkey": "5KBs4qR7T8shJjCJUeFQXd77iKrok5TCtZiQhWJpCpc1VRxpNAs", - "blspubkey":"PUB_BLS_PerMKMuQdZ3N6NEOoQRdlB1BztNWAeHkmzqwcFwEQGEM8QMfv3mrrepX5yM4NKQHYDnfcPIQPpDt0gCi6afvpZgN0JHT4jUaNlbfsJKtbm5mOJcqggddamCKEz2lBC0OS2D5yw==", - "blsprivkey":"PVT_BLS_n4AshIQiCqCdIOC/lGkKauVOFE2KelMb3flVvodVsji15FHW", - "blspop":"SIG_BLS_oqOzQYpJRvQ88ExpJKmwgna29eXM5umPpLmjfHcdcUUKwS3NMWwvP1hLwLcj4XcU6CuM3RzfRo6PPE2sxrp2fUWpqP0bsuamcOOyF+V6TfJMYuDbepc1Jp9HUdli3X0QE6hL+umbO2PWE4KiCSn9tj9LRyXgc41IY7R/JeQCCQSNXMSWhebdB/KCapfxq8sYEzRhXcZik+bXUDC1AcLXaocvNV6o2nKHtJwQ7YyGXCvFXgMMcQ3PWFlQ8WErmxILOM3Z/w==" + "blspubkey":"PUB_BLS_UmHR2Ez-gUJVkptOXXlWBCSu2aPQ3EBk69L7IzXn-pAXiWv5gP6fgQv5Js4n3VcJL6TK1M9rB9wAPhnr7b6xdKg2_zWD62qUoal9GYmBS5doxlCdKDY8ZFj6fbGS02oY_-ItrQ", + "blsprivkey":"PVT_BLS_IRjJHkfSSII-mDq7iVOsznvka_sRMsmxJSJwXQyr5mqmERAV", + "blspop":"SIG_BLS_wzTA_EfQTVoWRO4HZqoyDcQGCnlvHCkqoZXVSRbwSf7az4U4nbveWgCMRCgQZsgEJbPt6-NslwwRXJDLnFN0Hnm8F5qhmsGlWMP9tH7syPibNvldJ0RUFDH7azSZulcJ2uMxQAobCB-21c3PiUQc8JbuJFbUp9klAnXIJP60P-PT6ZUNmhNjLqHl2IlMsq8ZdFPvHVF3Z8HpfhJVKedI4yTvzWAIIOW2uSHkOmKbLP_QYc2YLRHUWV56mM-hsRwP4-hWVA" } ], "peers": [ @@ -102,9 +102,9 @@ { "pubkey": "EOS5FBPf5EN9bYEqmsKfPx9bxyUZ9grDiE24zqLFXtPa6UpVzMjE7", "privkey": "5HtVDiAsD24seDm5sdswTcdZpx672XbBW9gBkyrzbsj2j9Y9JeC", - "blspubkey":"PUB_BLS_6C3UlotUoDwruilh6gE+qlKsqY7VrmT6eT3aTr9fC0kZUkQRo13/xMh7MZerbBED2Rho72BLHIaWnT01LLsCFIZg9pSyHBFt3EcKa4p6OyvTkQAFxNb739EYcTVx2n8Gi0d+iw==", - "blsprivkey":"PVT_BLS_Tw2Lozr/Qw2/uf13xo6vduAWqzJnWu2o0/s9WalErmkq4RPV", - "blspop":"SIG_BLS_mrKA0CFFTP3udLsaWH67ilVf/5dcCHfzJ+P8i+dEuVg4y+td8uyghJqDxnPoitMEjjSqP12kmSZciDXqWD+uGU7nY1YeDK5Tvi7cvd1qSOuATjDuW+amc/5SKp73NLsYwqVFcIex4XF+Quu/NRfDCfLj9ZRPtmuNAUevi2iz0ExeOkQTjQhKksb9ihN+6w4Wk0vJEjt0KbbW2Ny46J+P7PbanH34X9iCV3dT+lqnyp9om0hxKJJIH2R6P5hC2d8Ry8FBAw==" + "blspubkey":"PUB_BLS_JzblSr2sf_UhxQjGxOtHbRCBkHgSB1RG4xUbKKl-fKtUjx6hyOHajnVQT4IvBF4PutlX7JTC14IqIjADlP-3_G2MXRhBlkB57r2u59OCwRQQEDqmVSADf6CoT8zFUXcSgHFw7w", + "blsprivkey":"PVT_BLS_QRxLAVbe2n7RaPWx2wHbur8erqUlAs-V_wXasGhjEA78KlBq", + "blspop":"SIG_BLS_Z5fJqFv6DIsHFhBFpkHmL_R48h80zVKQHtB5lrKGOVZTaSQNuVaXD_eHg7HBvKwY6zqgA_vryCLQo5W0Inu6HtLkGL2gYX2UHJjrZJZpfJSKG0ynqAZmyrCglxRLNm8KkFdGGR8oJXf5Yzyu7oautqTPniuKLBvNeQxGJGDOQtHSQ0uP3mD41pWzPFRoi10BUor9MbwUTQ7fO7Of4ZjhVM3IK4JrqX1RBXkDX83Wi9xFzs_fdPIyMqmgEzFgolgUa8XN4Q" } ], "peers": [ @@ -126,9 +126,9 @@ { "pubkey": "EOS8XH2gKxsef9zxmMHm4vaSvxQUhg7W4GC3nK2KSRxyYrNG5gZFS", "privkey": "5JcoRRhDcgm51dkBrRTmErceTqrYhrq22UnmUjTZToMpH91B9N1", - "blspubkey":"PUB_BLS_R5fu+sEP4d2me/9fsyw3lsZeflW1/IuJ9IC5jvRYFDYyzj+gt4zswFgwyp946yEO7T7AC6/NYas5HkJhSWZh2VmulmAbquNLpuXOCVHQgnV7UqV0kmsUk+ADDvx2BqkRZWJGCQ==", - "blsprivkey":"PVT_BLS_C9srbwyvmESO1TY7XMKiQnQPhkrPOS3BkJQ1rOnThEytroKB", - "blspop":"SIG_BLS_mmjqef0rliHQx16BjTcxGTmJx1huB7e2yW+wXQU54f2S5/eUpwvjqZ8nH1YFbg8ZhrAQjBUmjNDSuU80R+zP55XheXSVTpP9nozkgu4uMOZAaBPRHA/Ip2iXwl58N+YIZ3mjaiDjJUhPgty3pjSsHPsF8+K4CrmOB3X9roKbYwvf6vlPvr6253yefF97HyIOiO1pKfqVfPD0WhgdEj8/x2tLz9Mqq8+PXIpuH5AK0F4S9EKc0A9+E+IF3swf3SAJZTVFAA==" + "blspubkey":"PUB_BLS_rYRa_-bT7uLOSAfPIBy6NlXFB0YxwROeSuqHzw6s-1cuK_-GJUKqp20ktyAnsO4ZuHdx3BEPDaLronpnL22MXKWM7bvZnkCfbGCD6OzizQqxXkM9N5z5R-OUA4Ime6cF5YTSFg", + "blsprivkey":"PVT_BLS_GQjR0E8Hu8KrsTCvLKnlOCIwQijAj2-5KDizQwF-bAY6pise", + "blspop":"SIG_BLS_syFMuifUnX2zQQKr0cuHYzQQjsuPrNG75_z6y8fOyYg_twqMICZ0kT7ObbwIOUsLfXx9PVb4-QLEgUYGSRg1NSfeHGjIGkhea82wa3ayfI8elUEU1MStKbeKpys7xUAQz1PEgwcz5dClq3HyLQmMAjpoL74N_Znf0KiNEVZMte-DLF7x_6sAfp_834LthyYHjZYTmdG7belyzlYHKJb6upnZy9nR_zoKpx9jeTd3tzVhoTCuAN6aFw68D_ItY5cWiY2dhA" } ], "peers": [ @@ -144,4 +144,4 @@ "_dot_label": "localhost:9879\ntestnet_03\nprod=" } } -} \ No newline at end of file +} diff --git a/unittests/block_header_tests.cpp b/unittests/block_header_tests.cpp index ed2c051591..22b68345c9 100644 --- a/unittests/block_header_tests.cpp +++ b/unittests/block_header_tests.cpp @@ -49,7 +49,7 @@ BOOST_AUTO_TEST_CASE(instant_finality_extension_uniqueness_test) std::shared_ptr{}} ) ); - std::vector finalizers { {"test description", 50, fc::crypto::blslib::bls_public_key{"PUB_BLS_MPPeebAPxt/ibL2XPuZVGpADjGn+YEVPPoYmTZeBD6Ok2E19M8SnmDGSdZBf2qwSuJim+8H83EsTpEn3OiStWBiFeJYfVRLlEsZuSF0SYYwtVteY48n+KeE1IWzlSAkSyBqiGA==" }} }; + std::vector finalizers { {"test description", 50, fc::crypto::blslib::bls_public_key{"PUB_BLS_qVbh4IjYZpRGo8U_0spBUM-u-r_G0fMo4MzLZRsKWmm5uyeQTp74YFaMN9IDWPoVVT5rj_Tw1gvps6K9_OZ6sabkJJzug3uGfjA6qiaLbLh5Fnafwv-nVgzzzBlU2kwRrcHc8Q" }} }; finalizer_policy new_finalizer_policy; new_finalizer_policy.generation = 1; new_finalizer_policy.threshold = 100; @@ -73,7 +73,7 @@ BOOST_AUTO_TEST_CASE(instant_finality_extension_with_values_test) constexpr uint32_t last_qc_block_num {10}; constexpr bool is_strong_qc {true}; - std::vector finalizers { {"test description", 50, fc::crypto::blslib::bls_public_key{"PUB_BLS_MPPeebAPxt/ibL2XPuZVGpADjGn+YEVPPoYmTZeBD6Ok2E19M8SnmDGSdZBf2qwSuJim+8H83EsTpEn3OiStWBiFeJYfVRLlEsZuSF0SYYwtVteY48n+KeE1IWzlSAkSyBqiGA==" }} }; + std::vector finalizers { {"test description", 50, fc::crypto::blslib::bls_public_key{"PUB_BLS_qVbh4IjYZpRGo8U_0spBUM-u-r_G0fMo4MzLZRsKWmm5uyeQTp74YFaMN9IDWPoVVT5rj_Tw1gvps6K9_OZ6sabkJJzug3uGfjA6qiaLbLh5Fnafwv-nVgzzzBlU2kwRrcHc8Q" }} }; finalizer_policy new_finalizer_policy; new_finalizer_policy.generation = 1; new_finalizer_policy.threshold = 100; @@ -100,7 +100,7 @@ BOOST_AUTO_TEST_CASE(instant_finality_extension_with_values_test) BOOST_REQUIRE_EQUAL(if_extension.new_finalizer_policy->threshold, 100u); BOOST_REQUIRE_EQUAL(if_extension.new_finalizer_policy->finalizers[0].description, "test description"); BOOST_REQUIRE_EQUAL(if_extension.new_finalizer_policy->finalizers[0].weight, 50u); - BOOST_REQUIRE_EQUAL(if_extension.new_finalizer_policy->finalizers[0].public_key.to_string(), "PUB_BLS_MPPeebAPxt/ibL2XPuZVGpADjGn+YEVPPoYmTZeBD6Ok2E19M8SnmDGSdZBf2qwSuJim+8H83EsTpEn3OiStWBiFeJYfVRLlEsZuSF0SYYwtVteY48n+KeE1IWzlSAkSyBqiGA=="); + BOOST_REQUIRE_EQUAL(if_extension.new_finalizer_policy->finalizers[0].public_key.to_string(), "PUB_BLS_qVbh4IjYZpRGo8U_0spBUM-u-r_G0fMo4MzLZRsKWmm5uyeQTp74YFaMN9IDWPoVVT5rj_Tw1gvps6K9_OZ6sabkJJzug3uGfjA6qiaLbLh5Fnafwv-nVgzzzBlU2kwRrcHc8Q"); BOOST_REQUIRE( !!if_extension.new_proposer_policy ); BOOST_REQUIRE_EQUAL(if_extension.new_proposer_policy->schema_version, 1u); diff --git a/unittests/block_state_tests.cpp b/unittests/block_state_tests.cpp index 67f72a65be..3dae182532 100644 --- a/unittests/block_state_tests.cpp +++ b/unittests/block_state_tests.cpp @@ -23,9 +23,9 @@ BOOST_AUTO_TEST_CASE(aggregate_vote_test) try { // initialize a set of private keys std::vector private_key { - bls_private_key("PVT_BLS_r4ZpChd87ooyzl6MIkw23k7PRX8xptp7TczLJHCIIW88h/hS"), - bls_private_key("PVT_BLS_/l7xzXANaB+GrlTsbZEuTiSOiWTtpBoog+TZnirxUUSaAfCo"), - bls_private_key("PVT_BLS_3FoY73Q/gED3ejyg8cvnGqHrMmx4cLKwh/e0sbcsCxpCeqn3"), + bls_private_key("PVT_BLS_foNjZTu0k6qM5ftIrqC5G_sim1Rg7wq3cRUaJGvNtm2rM89K"), + bls_private_key("PVT_BLS_FWK1sk_DJnoxNvUNhwvJAYJFcQAFtt_mCtdQCUPQ4jN1K7eT"), + bls_private_key("PVT_BLS_tNAkC5MnI-fjHWSX7la1CPC2GIYgzW5TBfuKFPagmwVVsOeW"), }; // construct finalizers @@ -78,7 +78,7 @@ BOOST_AUTO_TEST_CASE(aggregate_vote_test) try { bsp->strong_digest = strong_digest; bsp->pending_qc = pending_quorum_certificate{ num_finalizers, 1, bsp->active_finalizer_policy->max_weak_sum_before_weak_final() }; - bls_private_key new_private_key{ "PVT_BLS_warwI76e+pPX9wLFZKPFagngeFM8bm6J8D5w0iiHpxW7PiId" }; + bls_private_key new_private_key{ "PVT_BLS_Wfs3KzfTI2P5F85PnoHXLnmYgSbp-XpebIdS6BUCHXOKmKXK" }; bls_public_key new_public_key{ new_private_key.get_public_key() }; vote_message vote {block_id, true, new_public_key, private_key[0].sign(strong_digest.to_uint8_span()) }; @@ -100,9 +100,9 @@ void do_quorum_test(const std::vector& weights, // initialize a set of private keys std::vector private_key { - bls_private_key("PVT_BLS_r4ZpChd87ooyzl6MIkw23k7PRX8xptp7TczLJHCIIW88h/hS"), - bls_private_key("PVT_BLS_/l7xzXANaB+GrlTsbZEuTiSOiWTtpBoog+TZnirxUUSaAfCo"), - bls_private_key("PVT_BLS_3FoY73Q/gED3ejyg8cvnGqHrMmx4cLKwh/e0sbcsCxpCeqn3"), + bls_private_key("PVT_BLS_foNjZTu0k6qM5ftIrqC5G_sim1Rg7wq3cRUaJGvNtm2rM89K"), + bls_private_key("PVT_BLS_FWK1sk_DJnoxNvUNhwvJAYJFcQAFtt_mCtdQCUPQ4jN1K7eT"), + bls_private_key("PVT_BLS_tNAkC5MnI-fjHWSX7la1CPC2GIYgzW5TBfuKFPagmwVVsOeW"), }; const size_t num_finalizers = private_key.size(); @@ -189,9 +189,9 @@ BOOST_AUTO_TEST_CASE(verify_qc_test) try { // initialize a set of private keys std::vector private_key { - bls_private_key("PVT_BLS_r4ZpChd87ooyzl6MIkw23k7PRX8xptp7TczLJHCIIW88h/hS"), - bls_private_key("PVT_BLS_/l7xzXANaB+GrlTsbZEuTiSOiWTtpBoog+TZnirxUUSaAfCo"), - bls_private_key("PVT_BLS_3FoY73Q/gED3ejyg8cvnGqHrMmx4cLKwh/e0sbcsCxpCeqn3") + bls_private_key("PVT_BLS_foNjZTu0k6qM5ftIrqC5G_sim1Rg7wq3cRUaJGvNtm2rM89K"), + bls_private_key("PVT_BLS_FWK1sk_DJnoxNvUNhwvJAYJFcQAFtt_mCtdQCUPQ4jN1K7eT"), + bls_private_key("PVT_BLS_tNAkC5MnI-fjHWSX7la1CPC2GIYgzW5TBfuKFPagmwVVsOeW"), }; auto num_finalizers = private_key.size();