1#include <xrpl/beast/unit_test.h> 
    2#include <xrpl/protocol/PublicKey.h> 
    3#include <xrpl/protocol/SecretKey.h> 
   14    template <
class FwdIter, 
class Container>
 
   24                for (
int i = 0; i < 10; ++i)
 
   26                for (
int i = 0; i < 6; ++i)
 
   28                    val[
'A' + i] = 10 + i;
 
   29                    val[
'a' + i] = 10 + i;
 
   43            auto const hi(lut[(*first++)]);
 
   44            auto const lo(lut[(*first++)]);
 
   45            out.push_back((hi * 16) + lo);
 
 
   72            "022100FF478110D1D4294471EC76E0157540C2181F47DEBD25D7F9E7DDCCCD47EE" 
   74            "0220078F07CDAE6C240855D084AD91D1479609533C147C93B0AEF19BC9724D003F" 
   79            "0221009218248292F1762D8A51BE80F8A7F2CD288D810CE781D5955700DA1684DF" 
   81            "022041A1EE1746BFD72C9760CC93A7AAA8047D52C8833A03A20EAAE92EA19717B4" 
   86            "02206A9E43775F73B6D1EC420E4DDD222A80D4C6DF5D1BEECC431A91B63C928B75" 
   88            "022023E9CC2D61DDA6F73EAA6BCB12688BEB0F434769276B3127E4044ED895C9D9" 
   93            "022056E720007221F3CD4EFBB6352741D8E5A0968D48D8D032C2FBC4F6304AD1D0" 
   95            "02201F39EB392C20D7801C3E8D81D487E742FA84A1665E923225BD6323847C7187" 
  100            "022100FDFD5AD05518CEA0017A2DCB5C4DF61E7C73B6D3A38E7AE93210A1564E8C" 
  102            "0220214FF061CCC123C81D0BB9D0EDEA04CD40D96BF1425D311DA62A7096BB18EA" 
  109            "022100F477B3FA6F31C7CB3A0D1AD94A231FDD24B8D78862EE334CEA7CD08F6CBC" 
  111            "022100928E6BCF1ED2684679730C5414AEC48FD62282B090041C41453C1D064AF5" 
  116            "022063E7C7CA93CB2400E413A342C027D00665F8BAB9C22EF0A7B8AE3AAF092230" 
  118            "0221008F2E8BB7D09521ABBC277717B14B93170AE6465C5A1B36561099319C4BEB" 
  123            "02210099DCA1188663DDEA506A06A7B20C2B7D8C26AFF41DECE69D6C5F7C967D32" 
  125            "022100897658A6B1F9EEE5D140D7A332DA0BD73BB98974EA53F6201B01C1B594F2" 
  130            "02200855DE366E4E323AA2CE2A25674401A7D11F72EC432770D07F7B57DF7387AE" 
  132            "022100DA4C6ADDEA14888858DE2AC5B91ED9050D6972BB388DEF582628CEE32869" 
  144            "02203932c892e2e550f3af8ee4ce9c215a87f9bb831dcac87b2838e2c2eaa891df" 
  146            "022030b61dd36543125d56b9f9f3a1f53189e5af33cdda8d77a5209aec03978fa0" 
  151            "0220076045be6f9eca28ff1ec606b833d0b87e70b2a630f5e3a496b110967a40f9" 
  153            "0221008fffd599910eefe00bc803c688eca1d2ba7f6b180620eaa03488e6585db6" 
  158            "022100876045be6f9eca28ff1ec606b833d0b87e70b2a630f5e3a496b110967a40" 
  160            "0221008fffd599910eefe00bc803c688c2eca1d2ba7f6b180620eaa03488e6585d" 
  206            "0221005990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba" 
  208            "022200002d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e56" 
  213            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  215            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  220            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  222            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  227            "01205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1"));
 
  231            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  233            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  238            "01205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  240            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  246            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  251            "02208990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  253            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  258            "0221005990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba" 
  260            "02202d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  265            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  267            "02d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695e" 
  272            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  278            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  280            "0220fd5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e566695" 
  285            "02205990e0584b2b238e1dfaad8d6ed69ecc1a4a13ac85fc0b31d0df395eb1ba61" 
  287            "0221002d5876262c288beb511d061691bf26777344b702b00f8fe28621fe4e5666" 
 
  312                s.erase(r(s) % s.size(), 1);
 
  321            s.resize(s.size() + i, s[i % s.size()]);
 
  353        BEAST_EXPECT(keys.
size() == 32);
 
  358            BEAST_EXPECT(!si.empty());
 
  361            BEAST_EXPECT(ski && (keys[i] == *ski));
 
  365                BEAST_EXPECT((keys[i] == keys[j]) == (i == j));
 
  369                BEAST_EXPECT((si == sj) == (i == j));
 
  373                BEAST_EXPECT(skj && (keys[j] == *skj));
 
  375                BEAST_EXPECT((*ski == *skj) == (i == j));
 
 
  391            auto const pk2 = parseBase58<PublicKey>(
 
  393                "n94a1u4jAz288pZLtw6yFWVbi89YamiC6JBXPVUj5zmExe5fTVg9");
 
  396            BEAST_EXPECT(pk1 == *pk2);
 
  409            auto const pk2 = parseBase58<PublicKey>(
 
  411                "nHUeeJCSY2dM71oxM8Cgjouf5ekTuev2mwDpc374aLMxzDLXNmjf");
 
  414            BEAST_EXPECT(pk1 == *pk2);
 
 
  423        testcase(
"Miscellaneous operations");
 
  431        BEAST_EXPECT(pk1 == pk2);
 
  432        BEAST_EXPECT(pk2 == pk1);
 
  440        BEAST_EXPECT(pk3 == pk2);
 
  441        BEAST_EXPECT(pk1 == pk3);
 
 
 
testcase_t testcase
Memberspace for declaring test cases.
 
void testBase58(KeyType keyType)
 
void testMiscOperations()
 
std::vector< std::uint8_t > blob
 
blob sig(std::string const &hex)
 
void run() override
Runs the suite.
 
static void hex_to_binary(FwdIter first, FwdIter last, Container &out)
 
bool check(std::optional< ECDSACanonicality > answer, std::string const &s)
 
T emplace_back(T... args)
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
std::optional< ECDSACanonicality > ecdsaCanonicality(Slice const &sig)
Determines the canonicality of a signature.
 
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
 
PublicKey derivePublicKey(KeyType type, SecretKey const &sk)
Derive the public key from a secret key.
 
SecretKey generateSecretKey(KeyType type, Seed const &seed)
Generate a new secret key deterministically.
 
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
 
SecretKey randomSecretKey()
Create a secret key using secure random numbers.
 
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.