36 lines
920 B
Rust
36 lines
920 B
Rust
//! Sprout key types.
|
|
//!
|
|
//! Unused key types are not implemented, see PR #5476.
|
|
//!
|
|
//! "The receiving key sk_enc, the incoming viewing key ivk = (apk,
|
|
//! sk_enc), and the shielded payment address addr_pk = (a_pk, pk_enc) are
|
|
//! derived from a_sk, as described in ['Sprout Key Components'][ps]
|
|
//!
|
|
//! [ps]: https://zips.z.cash/protocol/protocol.pdf#sproutkeycomponents
|
|
|
|
use std::fmt;
|
|
|
|
/// A Sprout _paying key_.
|
|
///
|
|
/// Derived from a Sprout _spending key.
|
|
#[derive(Copy, Clone, Eq, PartialEq)]
|
|
#[cfg_attr(
|
|
any(test, feature = "proptest-impl"),
|
|
derive(proptest_derive::Arbitrary)
|
|
)]
|
|
pub struct PayingKey(pub [u8; 32]);
|
|
|
|
impl AsRef<[u8]> for PayingKey {
|
|
fn as_ref(&self) -> &[u8] {
|
|
&self.0
|
|
}
|
|
}
|
|
|
|
impl fmt::Debug for PayingKey {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.debug_tuple("PayingKey")
|
|
.field(&hex::encode(self.0))
|
|
.finish()
|
|
}
|
|
}
|