From 22fa6b22ea31b8457dd0492995d2ad056ad2315e Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Thu, 28 Oct 2021 15:07:11 -0600 Subject: [PATCH] Restore legacy HD seed storage & retrieval tests. --- src/gtest/test_keystore.cpp | 29 ++++++++++++++++++++++++++++- src/zcash/address/zip32.h | 10 ++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/gtest/test_keystore.cpp b/src/gtest/test_keystore.cpp index 5f4ea3ab0..8c8dff1d3 100644 --- a/src/gtest/test_keystore.cpp +++ b/src/gtest/test_keystore.cpp @@ -16,7 +16,7 @@ const uint32_t SLIP44_TESTNET_TYPE = 1; -TEST(KeystoreTests, StoreAndRetrieveHDSeed) { +TEST(KeystoreTests, StoreAndRetrieveMnemonicSeed) { CBasicKeyStore keyStore; // When we haven't set a seed, we shouldn't get one @@ -45,6 +45,33 @@ TEST(KeystoreTests, StoreAndRetrieveHDSeed) { EXPECT_EQ(seed, seedOut.value()); } +TEST(KeystoreTests, StoreAndRetrieveLegacyHDSeed) { + CBasicKeyStore keyStore; + + // When we haven't set a seed, we shouldn't get one + std::optional seedOut = keyStore.GetLegacyHDSeed(); + EXPECT_FALSE(seedOut.has_value()); + + // Generate a random seed + HDSeed seed = MnemonicSeed::Random(SLIP44_TESTNET_TYPE); + + // We should be able to set and retrieve the seed + ASSERT_TRUE(keyStore.SetLegacyHDSeed(seed)); + seedOut = keyStore.GetLegacyHDSeed(); + ASSERT_TRUE(seedOut.has_value()); + EXPECT_EQ(seed, seedOut.value()); + + // Generate another random seed + HDSeed seed2 = MnemonicSeed::Random(SLIP44_TESTNET_TYPE); + EXPECT_NE(seed, seed2); + + // We should not be able to set and retrieve a different seed + EXPECT_FALSE(keyStore.SetLegacyHDSeed(seed2)); + seedOut = keyStore.GetLegacyHDSeed(); + ASSERT_TRUE(seedOut.has_value()); + EXPECT_EQ(seed, seedOut.value()); +} + TEST(KeystoreTests, SaplingKeys) { // ["sk, ask, nsk, ovk, ak, nk, ivk, default_d, default_pk_d, note_v, note_r, note_cm, note_pos, note_nf"], UniValue sapling_keys = read_json(MAKE_STRING(json_tests::sapling_key_components)); diff --git a/src/zcash/address/zip32.h b/src/zcash/address/zip32.h index 0aa2a54d7..86184b10b 100644 --- a/src/zcash/address/zip32.h +++ b/src/zcash/address/zip32.h @@ -48,6 +48,16 @@ public: uint256 Fingerprint() const; RawHDSeed RawSeed() const { return seed; } + + friend bool operator==(const HDSeed& a, const HDSeed& b) + { + return a.seed == b.seed; + } + + friend bool operator!=(const HDSeed& a, const HDSeed& b) + { + return !(a == b); + } };