|
|
@ -56,19 +56,26 @@ TEST(keystore_tests, store_and_retrieve_spending_key_in_encrypted_store) { |
|
|
|
uint256 r {GetRandHash()}; |
|
|
|
CKeyingMaterial vMasterKey (r.begin(), r.end()); |
|
|
|
libzcash::SpendingKey keyOut; |
|
|
|
ZCNoteDecryption decOut; |
|
|
|
std::set<libzcash::PaymentAddress> addrs; |
|
|
|
|
|
|
|
// 1) Test adding a key to an unencrypted key store, then encrypting it
|
|
|
|
auto sk = libzcash::SpendingKey::random(); |
|
|
|
auto addr = sk.address(); |
|
|
|
EXPECT_FALSE(keyStore.GetNoteDecryptor(addr, decOut)); |
|
|
|
|
|
|
|
keyStore.AddSpendingKey(sk); |
|
|
|
ASSERT_TRUE(keyStore.HaveSpendingKey(addr)); |
|
|
|
ASSERT_TRUE(keyStore.GetSpendingKey(addr, keyOut)); |
|
|
|
ASSERT_EQ(sk, keyOut); |
|
|
|
EXPECT_TRUE(keyStore.GetNoteDecryptor(addr, decOut)); |
|
|
|
EXPECT_EQ(ZCNoteDecryption(sk.viewing_key()), decOut); |
|
|
|
|
|
|
|
ASSERT_TRUE(keyStore.EncryptKeys(vMasterKey)); |
|
|
|
ASSERT_TRUE(keyStore.HaveSpendingKey(addr)); |
|
|
|
ASSERT_FALSE(keyStore.GetSpendingKey(addr, keyOut)); |
|
|
|
EXPECT_TRUE(keyStore.GetNoteDecryptor(addr, decOut)); |
|
|
|
EXPECT_EQ(ZCNoteDecryption(sk.viewing_key()), decOut); |
|
|
|
|
|
|
|
// Unlocking with a random key should fail
|
|
|
|
uint256 r2 {GetRandHash()}; |
|
|
@ -92,18 +99,26 @@ TEST(keystore_tests, store_and_retrieve_spending_key_in_encrypted_store) { |
|
|
|
// 2) Test adding a spending key to an already-encrypted key store
|
|
|
|
auto sk2 = libzcash::SpendingKey::random(); |
|
|
|
auto addr2 = sk2.address(); |
|
|
|
EXPECT_FALSE(keyStore.GetNoteDecryptor(addr2, decOut)); |
|
|
|
|
|
|
|
keyStore.AddSpendingKey(sk2); |
|
|
|
ASSERT_TRUE(keyStore.HaveSpendingKey(addr2)); |
|
|
|
ASSERT_TRUE(keyStore.GetSpendingKey(addr2, keyOut)); |
|
|
|
ASSERT_EQ(sk2, keyOut); |
|
|
|
EXPECT_TRUE(keyStore.GetNoteDecryptor(addr2, decOut)); |
|
|
|
EXPECT_EQ(ZCNoteDecryption(sk2.viewing_key()), decOut); |
|
|
|
|
|
|
|
ASSERT_TRUE(keyStore.Lock()); |
|
|
|
ASSERT_TRUE(keyStore.HaveSpendingKey(addr2)); |
|
|
|
ASSERT_FALSE(keyStore.GetSpendingKey(addr2, keyOut)); |
|
|
|
EXPECT_TRUE(keyStore.GetNoteDecryptor(addr2, decOut)); |
|
|
|
EXPECT_EQ(ZCNoteDecryption(sk2.viewing_key()), decOut); |
|
|
|
|
|
|
|
ASSERT_TRUE(keyStore.Unlock(vMasterKey)); |
|
|
|
ASSERT_TRUE(keyStore.GetSpendingKey(addr2, keyOut)); |
|
|
|
ASSERT_EQ(sk2, keyOut); |
|
|
|
EXPECT_TRUE(keyStore.GetNoteDecryptor(addr2, decOut)); |
|
|
|
EXPECT_EQ(ZCNoteDecryption(sk2.viewing_key()), decOut); |
|
|
|
|
|
|
|
keyStore.GetPaymentAddresses(addrs); |
|
|
|
ASSERT_EQ(2, addrs.size()); |
|
|
|