mirror of https://github.com/zcash/halo2.git
Merge pull request #218 from zcash/zcash_note_encryption-batchdomain
Migrate to `zcash_note_encryption::BatchDomain`
This commit is contained in:
commit
dfcea20569
|
@ -84,5 +84,5 @@ debug = true
|
||||||
debug = true
|
debug = true
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
zcash_note_encryption = { git = "https://github.com/zcash/librustzcash.git", rev = "13b023387bafdc7b5712c933dc0e16ee94b96a6a" }
|
zcash_note_encryption = { git = "https://github.com/zcash/librustzcash.git", rev = "35e75420657599fdc701cb45704878eb3fa2e59a" }
|
||||||
incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree.git", rev = "b7bd6246122a6e9ace8edb51553fbf5228906cbb" }
|
incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree.git", rev = "b7bd6246122a6e9ace8edb51553fbf5228906cbb" }
|
||||||
|
|
|
@ -5,7 +5,7 @@ use std::{convert::TryInto, fmt};
|
||||||
use blake2b_simd::{Hash, Params};
|
use blake2b_simd::{Hash, Params};
|
||||||
use halo2::arithmetic::FieldExt;
|
use halo2::arithmetic::FieldExt;
|
||||||
use zcash_note_encryption::{
|
use zcash_note_encryption::{
|
||||||
Domain, EphemeralKeyBytes, NotePlaintextBytes, NoteValidity, OutPlaintextBytes,
|
BatchDomain, Domain, EphemeralKeyBytes, NotePlaintextBytes, NoteValidity, OutPlaintextBytes,
|
||||||
OutgoingCipherKey, ShieldedOutput, COMPACT_NOTE_SIZE, NOTE_PLAINTEXT_SIZE, OUT_PLAINTEXT_SIZE,
|
OutgoingCipherKey, ShieldedOutput, COMPACT_NOTE_SIZE, NOTE_PLAINTEXT_SIZE, OUT_PLAINTEXT_SIZE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -141,19 +141,6 @@ impl Domain for OrchardDomain {
|
||||||
secret.kdf_orchard(ephemeral_key)
|
secret.kdf_orchard(ephemeral_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn batch_kdf<'a>(
|
|
||||||
items: impl Iterator<Item = (Option<Self::SharedSecret>, &'a EphemeralKeyBytes)>,
|
|
||||||
) -> Vec<Option<Self::SymmetricKey>> {
|
|
||||||
let (shared_secrets, ephemeral_keys): (Vec<_>, Vec<_>) = items.unzip();
|
|
||||||
|
|
||||||
SharedSecret::batch_to_affine(shared_secrets)
|
|
||||||
.zip(ephemeral_keys.into_iter())
|
|
||||||
.map(|(secret, ephemeral_key)| {
|
|
||||||
secret.map(|dhsecret| SharedSecret::kdf_orchard_inner(dhsecret, ephemeral_key))
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn note_plaintext_bytes(
|
fn note_plaintext_bytes(
|
||||||
note: &Self::Note,
|
note: &Self::Note,
|
||||||
_: &Self::Recipient,
|
_: &Self::Recipient,
|
||||||
|
@ -255,6 +242,21 @@ impl Domain for OrchardDomain {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl BatchDomain for OrchardDomain {
|
||||||
|
fn batch_kdf<'a>(
|
||||||
|
items: impl Iterator<Item = (Option<Self::SharedSecret>, &'a EphemeralKeyBytes)>,
|
||||||
|
) -> Vec<Option<Self::SymmetricKey>> {
|
||||||
|
let (shared_secrets, ephemeral_keys): (Vec<_>, Vec<_>) = items.unzip();
|
||||||
|
|
||||||
|
SharedSecret::batch_to_affine(shared_secrets)
|
||||||
|
.zip(ephemeral_keys.into_iter())
|
||||||
|
.map(|(secret, ephemeral_key)| {
|
||||||
|
secret.map(|dhsecret| SharedSecret::kdf_orchard_inner(dhsecret, ephemeral_key))
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Implementation of in-band secret distribution for Orchard bundles.
|
/// Implementation of in-band secret distribution for Orchard bundles.
|
||||||
pub type OrchardNoteEncryption = zcash_note_encryption::NoteEncryption<OrchardDomain>;
|
pub type OrchardNoteEncryption = zcash_note_encryption::NoteEncryption<OrchardDomain>;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue