pub struct OrchardDomain { /* private fields */ }Expand description
Orchard-specific note encryption logic.
Implementations§
Source§impl OrchardDomain
impl OrchardDomain
Sourcepub fn for_action<T>(act: &Action<T>) -> Self
pub fn for_action<T>(act: &Action<T>) -> Self
Constructs a domain that can be used to trial-decrypt this action’s output note.
Sourcepub fn for_pczt_action(act: &Action) -> Self
pub fn for_pczt_action(act: &Action) -> Self
Constructs a domain that can be used to trial-decrypt a PCZT action’s output note.
Sourcepub fn for_compact_action(act: &CompactAction) -> Self
pub fn for_compact_action(act: &CompactAction) -> Self
Constructs a domain that can be used to trial-decrypt this action’s output note.
Trait Implementations§
Source§impl BatchDomain for OrchardDomain
impl BatchDomain for OrchardDomain
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 Debug for OrchardDomain
impl Debug for OrchardDomain
Source§impl Domain for OrchardDomain
impl Domain for OrchardDomain
type EphemeralSecretKey = EphemeralSecretKey
type EphemeralPublicKey = EphemeralPublicKey
type PreparedEphemeralPublicKey = PreparedEphemeralPublicKey
type SymmetricKey = Hash
type Note = Note
type Recipient = Address
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 kdf(
secret: Self::SharedSecret,
ephemeral_key: &EphemeralKeyBytes,
) -> Self::SymmetricKey
fn kdf( secret: Self::SharedSecret, ephemeral_key: &EphemeralKeyBytes, ) -> Self::SymmetricKey
Derives the
SymmetricKey used to encrypt the note plaintext. Read moreSource§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,
cmstar_bytes: &Self::ExtractedCommitmentBytes,
ephemeral_key: &EphemeralKeyBytes,
) -> OutgoingCipherKey
fn derive_ock( ovk: &Self::OutgoingViewingKey, cv: &Self::ValueCommitment, cmstar_bytes: &Self::ExtractedCommitmentBytes, ephemeral_key: &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 cmstar(note: &Self::Note) -> Self::ExtractedCommitment
fn cmstar(note: &Self::Note) -> Self::ExtractedCommitment
Derives the
ExtractedCommitment for this note.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 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§fn extract_pk_d(
out_plaintext: &OutPlaintextBytes,
) -> Option<Self::DiversifiedTransmissionKey>
fn extract_pk_d( out_plaintext: &OutPlaintextBytes, ) -> Option<Self::DiversifiedTransmissionKey>
Parses the
DiversifiedTransmissionKey field of the outgoing plaintext. Read moreSource§fn extract_esk(
out_plaintext: &OutPlaintextBytes,
) -> Option<Self::EphemeralSecretKey>
fn extract_esk( out_plaintext: &OutPlaintextBytes, ) -> Option<Self::EphemeralSecretKey>
Parses the
EphemeralSecretKey field of the outgoing plaintext. Read moreSource§impl DynamicUsage for OrchardDomain
impl DynamicUsage for OrchardDomain
Source§impl ShieldedOutput<OrchardDomain, COMPACT_NOTE_SIZE> for CompactAction
impl ShieldedOutput<OrchardDomain, COMPACT_NOTE_SIZE> for CompactAction
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 ShieldedOutput<OrchardDomain, ENC_CIPHERTEXT_SIZE> for Action
impl ShieldedOutput<OrchardDomain, ENC_CIPHERTEXT_SIZE> for Action
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.
Source§impl<T> ShieldedOutput<OrchardDomain, ENC_CIPHERTEXT_SIZE> for Action<T>
impl<T> ShieldedOutput<OrchardDomain, ENC_CIPHERTEXT_SIZE> for Action<T>
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 OrchardDomain
impl RefUnwindSafe for OrchardDomain
impl Send for OrchardDomain
impl Sync for OrchardDomain
impl Unpin for OrchardDomain
impl UnsafeUnpin for OrchardDomain
impl UnwindSafe for OrchardDomain
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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.