Make diversifier functions return option

This commit is contained in:
Jay Graber 2018-06-04 07:47:46 -07:00
parent 0da9aac63e
commit 87c9994cb2
2 changed files with 10 additions and 6 deletions

View File

@ -65,13 +65,17 @@ SaplingSpendingKey SaplingSpendingKey::random() {
return SaplingSpendingKey(random_uint256());
}
SaplingPaymentAddress SaplingIncomingViewingKey::address(diversifier_t d) const {
boost::optional<SaplingPaymentAddress> SaplingIncomingViewingKey::address(diversifier_t d) const {
uint256 pk_d;
librustzcash_ivk_to_pkd(this->begin(), d.data(), pk_d.begin());
return SaplingPaymentAddress(d, pk_d);
if (librustzcash_check_diversifier(d.data())) {
librustzcash_ivk_to_pkd(this->begin(), d.data(), pk_d.begin());
return SaplingPaymentAddress(d, pk_d);
} else {
return boost::none;
}
}
SaplingPaymentAddress SaplingSpendingKey::default_address() const {
boost::optional<SaplingPaymentAddress> SaplingSpendingKey::default_address() const {
return full_viewing_key().in_viewing_key().address(default_diversifier(*this));
}

View File

@ -131,7 +131,7 @@ public:
SaplingIncomingViewingKey(uint256 ivk) : uint256(ivk) { }
// Can pass in diversifier for Sapling addr
SaplingPaymentAddress address(diversifier_t d) const;
boost::optional<SaplingPaymentAddress> address(diversifier_t d) const;
};
class SaplingFullViewingKey {
@ -206,7 +206,7 @@ public:
SaplingFullViewingKey full_viewing_key() const;
// Can derive Sapling addr from default diversifier
SaplingPaymentAddress default_address() const;
boost::optional<SaplingPaymentAddress> default_address() const;
};
}