pub struct SaplingDomain { /* private fields */ }Implementations§
Source§impl SaplingDomain
impl SaplingDomain
pub fn new(zip212_enforcement: Zip212Enforcement) -> Self
Trait Implementations§
Source§impl BatchDomain for SaplingDomain
impl BatchDomain for SaplingDomain
Source§fn batch_kdf<'a>(
items: impl Iterator<Item = (Option<Self::SharedSecret>, &'a EphemeralKeyBytes)>,
) -> Vec<Option<Self::SymmetricKey>>
fn batch_kdf<'a>( items: impl Iterator<Item = (Option<Self::SharedSecret>, &'a EphemeralKeyBytes)>, ) -> Vec<Option<Self::SymmetricKey>>
Computes
Self::kdf on a batch of items. Read moreSource§fn batch_epk(
ephemeral_keys: impl Iterator<Item = EphemeralKeyBytes>,
) -> Vec<(Option<Self::PreparedEphemeralPublicKey>, EphemeralKeyBytes)>
fn batch_epk( ephemeral_keys: impl Iterator<Item = EphemeralKeyBytes>, ) -> Vec<(Option<Self::PreparedEphemeralPublicKey>, EphemeralKeyBytes)>
Computes
Self::epk on a batch of ephemeral keys. Read moreSource§impl Domain for SaplingDomain
impl Domain for SaplingDomain
Source§fn kdf(dhsecret: SharedSecret, epk: &EphemeralKeyBytes) -> Blake2bHash
fn kdf(dhsecret: SharedSecret, epk: &EphemeralKeyBytes) -> Blake2bHash
Sapling KDF for note encryption.
Implements section 5.4.4.4 of the Zcash Protocol Specification.
type EphemeralSecretKey = EphemeralSecretKey
type EphemeralPublicKey = EphemeralPublicKey
type PreparedEphemeralPublicKey = PreparedEphemeralPublicKey
type SymmetricKey = Hash
type Note = Note
type Recipient = PaymentAddress
type DiversifiedTransmissionKey = DiversifiedTransmissionKey
type IncomingViewingKey = PreparedIncomingViewingKey
type OutgoingViewingKey = OutgoingViewingKey
type ValueCommitment = ValueCommitment
type ExtractedCommitment = ExtractedNoteCommitment
type ExtractedCommitmentBytes = [u8; 32]
type Memo = [u8; 512]
Source§fn derive_esk(note: &Self::Note) -> Option<Self::EphemeralSecretKey>
fn derive_esk(note: &Self::Note) -> Option<Self::EphemeralSecretKey>
Derives the
EphemeralSecretKey corresponding to this note. Read moreSource§fn get_pk_d(note: &Self::Note) -> Self::DiversifiedTransmissionKey
fn get_pk_d(note: &Self::Note) -> Self::DiversifiedTransmissionKey
Extracts the
DiversifiedTransmissionKey from the note.Source§fn prepare_epk(
epk: Self::EphemeralPublicKey,
) -> Self::PreparedEphemeralPublicKey
fn prepare_epk( epk: Self::EphemeralPublicKey, ) -> Self::PreparedEphemeralPublicKey
Prepare an ephemeral public key for more efficient scalar multiplication.
Source§fn ka_derive_public(
note: &Self::Note,
esk: &Self::EphemeralSecretKey,
) -> Self::EphemeralPublicKey
fn ka_derive_public( note: &Self::Note, esk: &Self::EphemeralSecretKey, ) -> Self::EphemeralPublicKey
Derives
EphemeralPublicKey from esk and the note’s diversifier.Source§fn ka_agree_enc(
esk: &Self::EphemeralSecretKey,
pk_d: &Self::DiversifiedTransmissionKey,
) -> Self::SharedSecret
fn ka_agree_enc( esk: &Self::EphemeralSecretKey, pk_d: &Self::DiversifiedTransmissionKey, ) -> Self::SharedSecret
Derives the
SharedSecret from the sender’s information during note encryption.Source§fn ka_agree_dec(
ivk: &Self::IncomingViewingKey,
epk: &Self::PreparedEphemeralPublicKey,
) -> Self::SharedSecret
fn ka_agree_dec( ivk: &Self::IncomingViewingKey, epk: &Self::PreparedEphemeralPublicKey, ) -> Self::SharedSecret
Derives the
SharedSecret from the recipient’s information during note trial
decryption.Source§fn note_plaintext_bytes(
note: &Self::Note,
memo: &Self::Memo,
) -> NotePlaintextBytes
fn note_plaintext_bytes( note: &Self::Note, memo: &Self::Memo, ) -> NotePlaintextBytes
Encodes the given
Note and Memo as a note plaintext.Source§fn derive_ock(
ovk: &Self::OutgoingViewingKey,
cv: &Self::ValueCommitment,
cmu_bytes: &Self::ExtractedCommitmentBytes,
epk: &EphemeralKeyBytes,
) -> OutgoingCipherKey
fn derive_ock( ovk: &Self::OutgoingViewingKey, cv: &Self::ValueCommitment, cmu_bytes: &Self::ExtractedCommitmentBytes, epk: &EphemeralKeyBytes, ) -> OutgoingCipherKey
Derives the
OutgoingCipherKey for an encrypted note, given the note-specific
public data and an OutgoingViewingKey.Source§fn outgoing_plaintext_bytes(
note: &Self::Note,
esk: &Self::EphemeralSecretKey,
) -> OutPlaintextBytes
fn outgoing_plaintext_bytes( note: &Self::Note, esk: &Self::EphemeralSecretKey, ) -> OutPlaintextBytes
Encodes the outgoing plaintext for the given note.
Source§fn epk_bytes(epk: &Self::EphemeralPublicKey) -> EphemeralKeyBytes
fn epk_bytes(epk: &Self::EphemeralPublicKey) -> EphemeralKeyBytes
Returns the byte encoding of the given
EphemeralPublicKey.Source§fn epk(ephemeral_key: &EphemeralKeyBytes) -> Option<Self::EphemeralPublicKey>
fn epk(ephemeral_key: &EphemeralKeyBytes) -> Option<Self::EphemeralPublicKey>
Source§fn parse_note_plaintext_without_memo_ivk(
&self,
ivk: &Self::IncomingViewingKey,
plaintext: &[u8],
) -> Option<(Self::Note, Self::Recipient)>
fn parse_note_plaintext_without_memo_ivk( &self, ivk: &Self::IncomingViewingKey, plaintext: &[u8], ) -> Option<(Self::Note, Self::Recipient)>
Parses the given note plaintext from the recipient’s perspective. Read more
Source§fn parse_note_plaintext_without_memo_ovk(
&self,
pk_d: &Self::DiversifiedTransmissionKey,
plaintext: &NotePlaintextBytes,
) -> Option<(Self::Note, Self::Recipient)>
fn parse_note_plaintext_without_memo_ovk( &self, pk_d: &Self::DiversifiedTransmissionKey, plaintext: &NotePlaintextBytes, ) -> Option<(Self::Note, Self::Recipient)>
Parses the given note plaintext from the sender’s perspective. Read more
Source§fn cmstar(note: &Self::Note) -> Self::ExtractedCommitment
fn cmstar(note: &Self::Note) -> Self::ExtractedCommitment
Derives the
ExtractedCommitment for this note.Source§fn extract_pk_d(
op: &OutPlaintextBytes,
) -> Option<Self::DiversifiedTransmissionKey>
fn extract_pk_d( op: &OutPlaintextBytes, ) -> Option<Self::DiversifiedTransmissionKey>
Parses the
DiversifiedTransmissionKey field of the outgoing plaintext. Read moreSource§fn extract_esk(op: &OutPlaintextBytes) -> Option<Self::EphemeralSecretKey>
fn extract_esk(op: &OutPlaintextBytes) -> Option<Self::EphemeralSecretKey>
Parses the
EphemeralSecretKey field of the outgoing plaintext. Read moreSource§fn extract_memo(&self, plaintext: &NotePlaintextBytes) -> Self::Memo
fn extract_memo(&self, plaintext: &NotePlaintextBytes) -> Self::Memo
Extracts the memo field from the given note plaintext. Read more
Source§impl DynamicUsage for SaplingDomain
impl DynamicUsage for SaplingDomain
Source§impl ShieldedOutput<SaplingDomain, COMPACT_NOTE_SIZE> for CompactOutputDescription
impl ShieldedOutput<SaplingDomain, COMPACT_NOTE_SIZE> for CompactOutputDescription
Source§fn ephemeral_key(&self) -> EphemeralKeyBytes
fn ephemeral_key(&self) -> EphemeralKeyBytes
Exposes the
ephemeral_key field of the output.Source§fn cmstar_bytes(&self) -> [u8; 32]
fn cmstar_bytes(&self) -> [u8; 32]
Exposes the
cmu_bytes or cmx_bytes field of the output.Source§fn enc_ciphertext(&self) -> &[u8; 52]
fn enc_ciphertext(&self) -> &[u8; 52]
Exposes the note ciphertext of the output.
Source§impl<A> ShieldedOutput<SaplingDomain, ENC_CIPHERTEXT_SIZE> for OutputDescription<A>
impl<A> ShieldedOutput<SaplingDomain, ENC_CIPHERTEXT_SIZE> for OutputDescription<A>
Source§fn ephemeral_key(&self) -> EphemeralKeyBytes
fn ephemeral_key(&self) -> EphemeralKeyBytes
Exposes the
ephemeral_key field of the output.Source§fn cmstar_bytes(&self) -> [u8; 32]
fn cmstar_bytes(&self) -> [u8; 32]
Exposes the
cmu_bytes or cmx_bytes field of the output.Source§fn enc_ciphertext(&self) -> &[u8; 580]
fn enc_ciphertext(&self) -> &[u8; 580]
Exposes the note ciphertext of the output.
Auto Trait Implementations§
impl Freeze for SaplingDomain
impl RefUnwindSafe for SaplingDomain
impl Send for SaplingDomain
impl Sync for SaplingDomain
impl Unpin for SaplingDomain
impl UnwindSafe for SaplingDomain
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.