Discard sk if ivk == 0
This commit is contained in:
@@ -67,8 +67,19 @@ SaplingIncomingViewingKey SaplingFullViewingKey::in_viewing_key() const {
|
|||||||
return SaplingIncomingViewingKey(ivk);
|
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() {
|
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 {
|
boost::optional<SaplingPaymentAddress> SaplingIncomingViewingKey::address(diversifier_t d) const {
|
||||||
@@ -90,7 +101,6 @@ SaplingPaymentAddress SaplingSpendingKey::default_address() const {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool IsValidPaymentAddress(const libzcash::PaymentAddress& zaddr) {
|
bool IsValidPaymentAddress(const libzcash::PaymentAddress& zaddr) {
|
||||||
return zaddr.which() != 0;
|
return zaddr.which() != 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
SaplingIncomingViewingKey in_viewing_key() const;
|
SaplingIncomingViewingKey in_viewing_key() const;
|
||||||
|
bool is_valid() const;
|
||||||
|
|
||||||
friend inline bool operator==(const SaplingFullViewingKey& a, const SaplingFullViewingKey& b) {
|
friend inline bool operator==(const SaplingFullViewingKey& a, const SaplingFullViewingKey& b) {
|
||||||
return a.ak == b.ak && a.nk == b.nk && a.ovk == b.ovk;
|
return a.ak == b.ak && a.nk == b.nk && a.ovk == b.ovk;
|
||||||
|
|||||||
Reference in New Issue
Block a user