Make diversifier functions return option
This commit is contained in:
@@ -65,13 +65,17 @@ SaplingSpendingKey SaplingSpendingKey::random() {
|
|||||||
return SaplingSpendingKey(random_uint256());
|
return SaplingSpendingKey(random_uint256());
|
||||||
}
|
}
|
||||||
|
|
||||||
SaplingPaymentAddress SaplingIncomingViewingKey::address(diversifier_t d) const {
|
boost::optional<SaplingPaymentAddress> SaplingIncomingViewingKey::address(diversifier_t d) const {
|
||||||
uint256 pk_d;
|
uint256 pk_d;
|
||||||
librustzcash_ivk_to_pkd(this->begin(), d.data(), pk_d.begin());
|
if (librustzcash_check_diversifier(d.data())) {
|
||||||
return SaplingPaymentAddress(d, pk_d);
|
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));
|
return full_viewing_key().in_viewing_key().address(default_diversifier(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ public:
|
|||||||
SaplingIncomingViewingKey(uint256 ivk) : uint256(ivk) { }
|
SaplingIncomingViewingKey(uint256 ivk) : uint256(ivk) { }
|
||||||
|
|
||||||
// Can pass in diversifier for Sapling addr
|
// Can pass in diversifier for Sapling addr
|
||||||
SaplingPaymentAddress address(diversifier_t d) const;
|
boost::optional<SaplingPaymentAddress> address(diversifier_t d) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SaplingFullViewingKey {
|
class SaplingFullViewingKey {
|
||||||
@@ -206,7 +206,7 @@ public:
|
|||||||
SaplingFullViewingKey full_viewing_key() const;
|
SaplingFullViewingKey full_viewing_key() const;
|
||||||
|
|
||||||
// Can derive Sapling addr from default diversifier
|
// Can derive Sapling addr from default diversifier
|
||||||
SaplingPaymentAddress default_address() const;
|
boost::optional<SaplingPaymentAddress> default_address() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user