Browse Source

Auto merge of #3390 - arcalinea:3319_discard_sk_if_invalid_ivk, r=str4d

Discard sk if ivk == 0

Addresses #3319
pull/4/head
Homu 6 years ago
parent
commit
eea0e2c924
  1. 14
      src/zcash/Address.cpp
  2. 1
      src/zcash/Address.hpp

14
src/zcash/Address.cpp

@ -67,8 +67,19 @@ SaplingIncomingViewingKey SaplingFullViewingKey::in_viewing_key() const {
return SaplingIncomingViewingKey(ivk);
}
bool SaplingFullViewingKey::is_valid() const {
uint256 ivk;
librustzcash_crh_ivk(ak.begin(), nk.begin(), ivk.begin());
return !ivk.IsNull();
}
SaplingSpendingKey SaplingSpendingKey::random() {
return SaplingSpendingKey(random_uint256());
while (true) {
auto sk = SaplingSpendingKey(random_uint256());
if (sk.full_viewing_key().is_valid()) {
return sk;
}
}
}
boost::optional<SaplingPaymentAddress> SaplingIncomingViewingKey::address(diversifier_t d) const {
@ -90,7 +101,6 @@ SaplingPaymentAddress SaplingSpendingKey::default_address() const {
}
bool IsValidPaymentAddress(const libzcash::PaymentAddress& zaddr) {
return zaddr.which() != 0;
}

1
src/zcash/Address.hpp

@ -153,6 +153,7 @@ public:
}
SaplingIncomingViewingKey in_viewing_key() const;
bool is_valid() const;
friend inline bool operator==(const SaplingFullViewingKey& a, const SaplingFullViewingKey& b) {
return a.ak == b.ak && a.nk == b.nk && a.ovk == b.ovk;

Loading…
Cancel
Save