static boost::optional<Seed> validationSeed (Json::Value const& params) { if (!params.isMember (jss::secret)) return randomSeed (); return parseGenericSeed (params[jss::secret].asString ()); }
void testSeedParsing () { testcase ("Parsing"); // account IDs and node and account public and private // keys should not be parseable as seeds. auto const node1 = randomKeyPair(KeyType::secp256k1); BEAST_EXPECT(!parseGenericSeed ( toBase58 (TokenType::TOKEN_NODE_PUBLIC, node1.first))); BEAST_EXPECT(!parseGenericSeed ( toBase58 (TokenType::TOKEN_NODE_PRIVATE, node1.second))); auto const node2 = randomKeyPair(KeyType::ed25519); BEAST_EXPECT(!parseGenericSeed ( toBase58 (TokenType::TOKEN_NODE_PUBLIC, node2.first))); BEAST_EXPECT(!parseGenericSeed ( toBase58 (TokenType::TOKEN_NODE_PRIVATE, node2.second))); auto const account1 = generateKeyPair( KeyType::secp256k1, randomSeed ()); BEAST_EXPECT(!parseGenericSeed ( toBase58(calcAccountID(account1.first)))); BEAST_EXPECT(!parseGenericSeed ( toBase58(TokenType::TOKEN_ACCOUNT_PUBLIC, account1.first))); BEAST_EXPECT(!parseGenericSeed ( toBase58(TokenType::TOKEN_ACCOUNT_SECRET, account1.second))); auto const account2 = generateKeyPair( KeyType::ed25519, randomSeed ()); BEAST_EXPECT(!parseGenericSeed ( toBase58(calcAccountID(account2.first)))); BEAST_EXPECT(!parseGenericSeed ( toBase58(TokenType::TOKEN_ACCOUNT_PUBLIC, account2.first))); BEAST_EXPECT(!parseGenericSeed ( toBase58(TokenType::TOKEN_ACCOUNT_SECRET, account2.second))); }