Impl FullViewingKey::from_spending_key(SpendingKey, Network)
Remove From impl
This commit is contained in:
parent
4fd98f6eb1
commit
d33947b331
|
@ -66,7 +66,8 @@ mod tests {
|
|||
|
||||
let spending_key = keys::SpendingKey::new(&mut OsRng);
|
||||
|
||||
let full_viewing_key = keys::FullViewingKey::from(spending_key);
|
||||
let full_viewing_key =
|
||||
keys::FullViewingKey::from_spending_key(spending_key, Network::Mainnet);
|
||||
|
||||
// Default diversifier, where index = 0.
|
||||
let diversifier_key = keys::DiversifierKey::from(full_viewing_key);
|
||||
|
|
|
@ -568,8 +568,6 @@ pub struct FullViewingKey {
|
|||
ivk_commit_randomness: IvkCommitRandomness,
|
||||
}
|
||||
|
||||
// TODO: impl a From that accepts a Network?
|
||||
|
||||
impl fmt::Debug for FullViewingKey {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
f.debug_struct("FullViewingKey")
|
||||
|
@ -598,20 +596,6 @@ impl fmt::Display for FullViewingKey {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<SpendingKey> for FullViewingKey {
|
||||
fn from(sk: SpendingKey) -> FullViewingKey {
|
||||
let spend_authorizing_key = SpendAuthorizingKey::from(sk);
|
||||
|
||||
Self {
|
||||
// TODO: handle setting the Network better.
|
||||
network: Network::default(),
|
||||
spend_validating_key: SpendValidatingKey::from(spend_authorizing_key),
|
||||
nullifier_deriving_key: NullifierDerivingKey::from(sk),
|
||||
ivk_commit_randomness: IvkCommitRandomness::from(sk),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for FullViewingKey {
|
||||
type Err = SerializationError;
|
||||
|
||||
|
@ -657,6 +641,21 @@ impl FullViewingKey {
|
|||
// let R = PRF^expand_K( [0x82] || I2LEOSP256(ak) || I2LEOSP256(nk) )
|
||||
prf_expand(K, t)
|
||||
}
|
||||
|
||||
/// Derive a full viewing key from a existing spending key and its network.
|
||||
///
|
||||
/// https://zips.z.cash/protocol/nu5.pdf#addressesandkeys
|
||||
/// https://zips.z.cash/protocol/nu5.pdf#orchardfullviewingkeyencoding
|
||||
pub fn from_spending_key(sk: SpendingKey, network: Network) -> FullViewingKey {
|
||||
let spend_authorizing_key = SpendAuthorizingKey::from(sk);
|
||||
|
||||
Self {
|
||||
network,
|
||||
spend_validating_key: SpendValidatingKey::from(spend_authorizing_key),
|
||||
nullifier_deriving_key: NullifierDerivingKey::from(sk),
|
||||
ivk_commit_randomness: IvkCommitRandomness::from(sk),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// An outgoing viewing key, as described in [protocol specification
|
||||
|
|
|
@ -11,7 +11,8 @@ impl Arbitrary for TransmissionKey {
|
|||
fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy {
|
||||
(any::<SpendingKey>())
|
||||
.prop_map(|spending_key| {
|
||||
let full_viewing_key = FullViewingKey::from(spending_key);
|
||||
let full_viewing_key =
|
||||
FullViewingKey::from_spending_key(spending_key, Network::Mainnet);
|
||||
|
||||
let diversifier_key = DiversifierKey::from(full_viewing_key);
|
||||
|
||||
|
|
Loading…
Reference in New Issue