diff --git a/CHANGELOG.md b/CHANGELOG.md index 676ef9b..58f9c77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this library adheres to Rust's notion of ## [Unreleased] +### Changed +- The `recipient` parameter has been removed from `Domain::note_plaintext_bytes`. +- The `recipient` parameter has been removed from `NoteEncryption::new`. Since + the `Domain::Note` type is now expected to contain information about the + recipient of the note, there is no longer any need to pass this information + in via the encryption context. + ## [0.2.0] - 2022-10-13 ### Added - `zcash_note_encryption::Domain`: diff --git a/Cargo.toml b/Cargo.toml index 51812e0..c2b73ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zcash_note_encryption" description = "Note encryption for Zcash transactions" -version = "0.2.0" +version = "0.3.0" authors = [ "Jack Grigg ", "Kris Nuttycombe " diff --git a/src/lib.rs b/src/lib.rs index ab8f0c2..fb01b0d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -180,11 +180,7 @@ pub trait Domain { /// future crate release, once [`zcash_primitives` has been refactored]. /// /// [`zcash_primitives` has been refactored]: https://github.com/zcash/librustzcash/issues/454 - fn note_plaintext_bytes( - note: &Self::Note, - recipient: &Self::Recipient, - memo: &Self::Memo, - ) -> NotePlaintextBytes; + fn note_plaintext_bytes(note: &Self::Note, memo: &Self::Memo) -> NotePlaintextBytes; /// Derives the [`OutgoingCipherKey`] for an encrypted note, given the note-specific /// public data and an `OutgoingViewingKey`. @@ -349,7 +345,6 @@ pub struct NoteEncryption { epk: D::EphemeralPublicKey, esk: D::EphemeralSecretKey, note: D::Note, - to: D::Recipient, memo: D::Memo, /// `None` represents the `ovk = ⊥` case. ovk: Option, @@ -358,18 +353,12 @@ pub struct NoteEncryption { impl NoteEncryption { /// Construct a new note encryption context for the specified note, /// recipient, and memo. - pub fn new( - ovk: Option, - note: D::Note, - to: D::Recipient, - memo: D::Memo, - ) -> Self { + pub fn new(ovk: Option, note: D::Note, memo: D::Memo) -> Self { let esk = D::derive_esk(¬e).expect("ZIP 212 is active."); NoteEncryption { epk: D::ka_derive_public(¬e, &esk), esk, note, - to, memo, ovk, } @@ -384,14 +373,12 @@ impl NoteEncryption { esk: D::EphemeralSecretKey, ovk: Option, note: D::Note, - to: D::Recipient, memo: D::Memo, ) -> Self { NoteEncryption { epk: D::ka_derive_public(¬e, &esk), esk, note, - to, memo, ovk, } @@ -412,7 +399,7 @@ impl NoteEncryption { let pk_d = D::get_pk_d(&self.note); let shared_secret = D::ka_agree_enc(&self.esk, &pk_d); let key = D::kdf(shared_secret, &D::epk_bytes(&self.epk)); - let input = D::note_plaintext_bytes(&self.note, &self.to, &self.memo); + let input = D::note_plaintext_bytes(&self.note, &self.memo); let mut output = [0u8; ENC_CIPHERTEXT_SIZE]; output[..NOTE_PLAINTEXT_SIZE].copy_from_slice(&input.0);