From 4f64d82c119219169e5b111b928fbacc1d59242b Mon Sep 17 00:00:00 2001 From: agureev Date: Wed, 10 Jun 2026 22:14:09 +0400 Subject: [PATCH] test: change up tests --- .../tests/auth_transfer/private.rs | 8 +- integration_tests/tests/bridge.rs | 1 - integration_tests/tests/private_pda.rs | 14 +- integration_tests/tests/tps.rs | 17 +- .../privacy_preserving_transaction/circuit.rs | 59 +++- lee/state_machine/src/state.rs | 332 ++++++++++++------ 6 files changed, 288 insertions(+), 143 deletions(-) diff --git a/integration_tests/tests/auth_transfer/private.rs b/integration_tests/tests/auth_transfer/private.rs index 9eea9b04..45a1b085 100644 --- a/integration_tests/tests/auth_transfer/private.rs +++ b/integration_tests/tests/auth_transfer/private.rs @@ -11,7 +11,7 @@ use lee::{ privacy_preserving_transaction::circuit::ProgramWithDependencies, program::Program, }; use lee_core::{ - InputAccountIdentity, NullifierPublicKey, + EncryptedAccountData, InputAccountIdentity, NullifierPublicKey, account::AccountWithMetadata, encryption::{EphemeralPublicKey, ViewingPublicKey}, }; @@ -665,9 +665,9 @@ async fn ppt_cant_chain_call_faucet() -> Result<()> { let auth_transfer_program_id = Program::authenticated_transfer_program().id(); let nsk: lee_core::NullifierSecretKey = [3; 32]; let npk = NullifierPublicKey::from(&nsk); - let _vpk = ViewingPublicKey::from_bytes(vec![4_u8; 1184]).unwrap(); + let vpk = ViewingPublicKey::from_bytes(vec![4_u8; 1184]).unwrap(); let ssk = SharedSecretKey([55_u8; 32]); - let _epk = EphemeralPublicKey(vec![55_u8; 1088]); + let epk = EphemeralPublicKey(vec![55_u8; 1088]); let attacker_vault_id = { let seed = vault_core::compute_vault_seed(attacker_id); AccountId::for_private_pda(&vault_program_id, &seed, &npk, 1337) @@ -712,6 +712,8 @@ async fn ppt_cant_chain_call_faucet() -> Result<()> { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivatePdaInit { + epk, + view_tag: EncryptedAccountData::compute_view_tag(&npk, &vpk), npk, ssk, identifier: 1337, diff --git a/integration_tests/tests/bridge.rs b/integration_tests/tests/bridge.rs index 81f62f2b..054da0a0 100644 --- a/integration_tests/tests/bridge.rs +++ b/integration_tests/tests/bridge.rs @@ -150,7 +150,6 @@ async fn private_bridge_deposit_invocation_is_dropped() -> anyhow::Result<()> { let message = privacy_preserving_transaction::Message::try_from_circuit_output( vec![bridge_account_id, recipient_vault_id], vec![bridge_pre.account.nonce, vault_pre.account.nonce], - vec![], output, ) .context("Failed to build privacy-preserving bridge deposit message")?; diff --git a/integration_tests/tests/private_pda.rs b/integration_tests/tests/private_pda.rs index ea7cafab..f96faa52 100644 --- a/integration_tests/tests/private_pda.rs +++ b/integration_tests/tests/private_pda.rs @@ -23,7 +23,7 @@ use lee::{ program::Program, }; use lee_core::{ - InputAccountIdentity, NullifierPublicKey, + EncryptedAccountData, InputAccountIdentity, NullifierPublicKey, account::{Account, AccountWithMetadata}, encryption::ViewingPublicKey, program::PdaSeed, @@ -74,6 +74,8 @@ async fn fund_private_pda( let account_identities = vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivatePdaInit { + epk, + view_tag: EncryptedAccountData::compute_view_tag(&npk, &vpk), npk, ssk, identifier, @@ -89,13 +91,9 @@ async fn fund_private_pda( ) .map_err(|e| anyhow::anyhow!("circuit proving failed: {e}"))?; - let message = Message::try_from_circuit_output( - vec![sender], - vec![sender_account.nonce], - vec![(npk, vpk, epk)], - output, - ) - .map_err(|e| anyhow::anyhow!("message build failed: {e}"))?; + let message = + Message::try_from_circuit_output(vec![sender], vec![sender_account.nonce], output) + .map_err(|e| anyhow::anyhow!("message build failed: {e}"))?; let witness_set = WitnessSet::for_message(&message, proof, &[sender_sk]); let tx = PrivacyPreservingTransaction::new(message, witness_set); diff --git a/integration_tests/tests/tps.rs b/integration_tests/tests/tps.rs index daf52609..459f3d61 100644 --- a/integration_tests/tests/tps.rs +++ b/integration_tests/tests/tps.rs @@ -23,7 +23,7 @@ use lee::{ public_transaction as putx, }; use lee_core::{ - InputAccountIdentity, MembershipProof, NullifierPublicKey, + EncryptedAccountData, InputAccountIdentity, MembershipProof, NullifierPublicKey, account::{AccountWithMetadata, Nonce, data::Data}, encryption::ViewingPublicKey, }; @@ -301,12 +301,16 @@ fn build_privacy_transaction() -> PrivacyPreservingTransaction { .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: sender_epk, + view_tag: EncryptedAccountData::compute_view_tag(&sender_npk, &sender_vpk), ssk: sender_ss, nsk: sender_nsk, membership_proof: proof, identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: recipient_epk, + view_tag: EncryptedAccountData::compute_view_tag(&recipient_npk, &recipient_vpk), npk: recipient_npk, ssk: recipient_ss, identifier: 0, @@ -315,16 +319,7 @@ fn build_privacy_transaction() -> PrivacyPreservingTransaction { &program.into(), ) .unwrap(); - let message = pptx::message::Message::try_from_circuit_output( - vec![], - vec![], - vec![ - (sender_npk, sender_vpk, sender_epk), - (recipient_npk, recipient_vpk, recipient_epk), - ], - output, - ) - .unwrap(); + let message = pptx::message::Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = pptx::witness_set::WitnessSet::for_message(&message, proof, &[]); pptx::PrivacyPreservingTransaction::new(message, witness_set) } diff --git a/lee/state_machine/src/privacy_preserving_transaction/circuit.rs b/lee/state_machine/src/privacy_preserving_transaction/circuit.rs index cebef4cf..860fa307 100644 --- a/lee/state_machine/src/privacy_preserving_transaction/circuit.rs +++ b/lee/state_machine/src/privacy_preserving_transaction/circuit.rs @@ -178,8 +178,8 @@ mod tests { #![expect(clippy::shadow_unrelated, reason = "We don't care about it in tests")] use lee_core::{ - Commitment, DUMMY_COMMITMENT_HASH, EncryptionScheme, Nullifier, - PrivacyPreservingCircuitOutput, SharedSecretKey, + Commitment, DUMMY_COMMITMENT_HASH, EncryptedAccountData, EncryptionScheme, + EphemeralPublicKey, Nullifier, PrivacyPreservingCircuitOutput, SharedSecretKey, account::{Account, AccountId, AccountWithMetadata, Nonce, data::Data}, program::{PdaSeed, PrivateAccountKind}, }; @@ -201,7 +201,7 @@ mod tests { idx: usize, ) -> PrivateAccountKind { let (kind, _) = EncryptionScheme::decrypt( - &output.ciphertexts[idx], + &output.encrypted_private_post_states[idx].ciphertext, ssk, &output.new_commitments[idx], u32::try_from(idx).expect("idx fits in u32"), @@ -257,6 +257,11 @@ mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: shared_secret, identifier: 0, @@ -274,10 +279,10 @@ mod tests { assert_eq!(sender_post, expected_sender_post); assert_eq!(output.new_commitments.len(), 1); assert_eq!(output.new_nullifiers.len(), 1); - assert_eq!(output.ciphertexts.len(), 1); + assert_eq!(output.encrypted_private_post_states.len(), 1); let (_identifier, recipient_post) = EncryptionScheme::decrypt( - &output.ciphertexts[0], + &output.encrypted_private_post_states[0].ciphertext, &shared_secret, &output.new_commitments[0], 0, @@ -356,6 +361,11 @@ mod tests { .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: shared_secret_1, nsk: sender_keys.nsk, membership_proof: commitment_set @@ -364,6 +374,11 @@ mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: shared_secret_2, identifier: 0, @@ -378,10 +393,10 @@ mod tests { assert!(output.public_post_states.is_empty()); assert_eq!(output.new_commitments, expected_new_commitments); assert_eq!(output.new_nullifiers, expected_new_nullifiers); - assert_eq!(output.ciphertexts.len(), 2); + assert_eq!(output.encrypted_private_post_states.len(), 2); let (_identifier, sender_post) = EncryptionScheme::decrypt( - &output.ciphertexts[0], + &output.encrypted_private_post_states[0].ciphertext, &shared_secret_1, &expected_new_commitments[0], 0, @@ -390,7 +405,7 @@ mod tests { assert_eq!(sender_post, expected_private_account_1); let (_identifier, recipient_post) = EncryptionScheme::decrypt( - &output.ciphertexts[1], + &output.encrypted_private_post_states[1].ciphertext, &shared_secret_2, &expected_new_commitments[1], 1, @@ -432,6 +447,11 @@ mod tests { vec![pre], instruction, vec![InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &account_keys.npk(), + &account_keys.vpk(), + ), npk: account_keys.npk(), ssk: shared_secret, identifier: 0, @@ -461,6 +481,8 @@ mod tests { vec![pre_state], Program::serialize_instruction(seed).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier, @@ -508,6 +530,8 @@ mod tests { vec![pda_pre], instruction, vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret_pda, identifier: 0, @@ -561,6 +585,8 @@ mod tests { instruction, vec![ InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret_pda, identifier: 0, @@ -618,6 +644,11 @@ mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &shared_npk, + &shared_keys.vpk(), + ), npk: shared_npk, ssk: shared_secret, identifier: shared_identifier, @@ -647,6 +678,8 @@ mod tests { Program::serialize_instruction(authenticated_transfer_core::Instruction::Initialize) .unwrap(), vec![InputAccountIdentity::PrivateAuthorizedInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&keys.npk(), &keys.vpk()), ssk, nsk: keys.nsk, identifier, @@ -691,6 +724,8 @@ mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&keys.npk(), &keys.vpk()), npk: keys.npk(), ssk, identifier, @@ -735,6 +770,8 @@ mod tests { .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&keys.npk(), &keys.vpk()), ssk, nsk: keys.nsk, membership_proof: commitment_set.get_proof_for(&commitment).unwrap(), @@ -789,6 +826,8 @@ mod tests { Program::serialize_instruction((seed, 1_u128, auth_transfer_id, false)).unwrap(), vec![ InputAccountIdentity::PrivatePdaUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), ssk, nsk: keys.nsk, membership_proof: commitment_set.get_proof_for(&pda_commitment).unwrap(), @@ -827,6 +866,8 @@ mod tests { vec![pre_state], Program::serialize_instruction(seed).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier: 99, @@ -870,6 +911,8 @@ mod tests { Program::serialize_instruction((seed, 1_u128, auth_transfer_id, false)).unwrap(), vec![ InputAccountIdentity::PrivatePdaUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), ssk, nsk: keys.nsk, membership_proof: commitment_set.get_proof_for(&pda_commitment).unwrap(), diff --git a/lee/state_machine/src/state.rs b/lee/state_machine/src/state.rs index 4b74cf55..a876c462 100644 --- a/lee/state_machine/src/state.rs +++ b/lee/state_machine/src/state.rs @@ -418,8 +418,8 @@ pub mod tests { use authenticated_transfer_core::Instruction as AuthTransferInstruction; use lee_core::{ - BlockId, Commitment, InputAccountIdentity, Nullifier, NullifierPublicKey, - NullifierSecretKey, SharedSecretKey, Timestamp, + BlockId, Commitment, EncryptedAccountData, InputAccountIdentity, Nullifier, + NullifierPublicKey, NullifierSecretKey, SharedSecretKey, Timestamp, account::{Account, AccountId, AccountWithMetadata, Nonce, data::Data}, encryption::{EphemeralPublicKey, ViewingPublicKey}, program::{ @@ -1376,6 +1376,11 @@ pub mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateUnauthorized { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: shared_secret, identifier: 0, @@ -1388,7 +1393,6 @@ pub mod tests { let message = Message::try_from_circuit_output( vec![sender_keys.account_id()], vec![sender_nonce], - vec![(recipient_keys.npk(), recipient_keys.vpk(), epk)], output, ) .unwrap(); @@ -1429,6 +1433,11 @@ pub mod tests { .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: epk_1, + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: shared_secret_1, nsk: sender_keys.nsk, membership_proof: state @@ -1437,6 +1446,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: epk_2, + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: shared_secret_2, identifier: 0, @@ -1446,16 +1460,7 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![ - (sender_keys.npk(), sender_keys.vpk(), epk_1), - (recipient_keys.npk(), recipient_keys.vpk(), epk_2), - ], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); @@ -1494,6 +1499,11 @@ pub mod tests { .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: shared_secret, nsk: sender_keys.nsk, membership_proof: state @@ -1507,13 +1517,8 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![*recipient_account_id], - vec![], - vec![(sender_keys.npk(), sender_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![*recipient_account_id], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); @@ -1992,6 +1997,11 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic( &sender_keys.vpk(), &[0_u8; 32], @@ -2003,6 +2013,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: SharedSecretKey::encapsulate_deterministic( &recipient_keys.vpk(), @@ -2048,6 +2063,11 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic( &sender_keys.vpk(), &[0_u8; 32], @@ -2059,6 +2079,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: SharedSecretKey::encapsulate_deterministic( &recipient_keys.vpk(), @@ -2104,6 +2129,11 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic( &sender_keys.vpk(), &[0_u8; 32], @@ -2115,6 +2145,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: SharedSecretKey::encapsulate_deterministic( &recipient_keys.vpk(), @@ -2160,6 +2195,11 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic( &sender_keys.vpk(), &[0_u8; 32], @@ -2171,6 +2211,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: SharedSecretKey::encapsulate_deterministic( &recipient_keys.vpk(), @@ -2216,6 +2261,11 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic( &sender_keys.vpk(), &[0_u8; 32], @@ -2227,6 +2277,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: SharedSecretKey::encapsulate_deterministic( &recipient_keys.vpk(), @@ -2270,6 +2325,11 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic( &sender_keys.vpk(), &[0_u8; 32], @@ -2281,6 +2341,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), npk: recipient_keys.npk(), ssk: SharedSecretKey::encapsulate_deterministic( &recipient_keys.vpk(), @@ -2326,6 +2391,8 @@ pub mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier: u128::MAX, @@ -2359,6 +2426,8 @@ pub mod tests { vec![pre_state], Program::serialize_instruction(seed).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier: u128::MAX, @@ -2370,7 +2439,7 @@ pub mod tests { let (output, _proof) = result.expect("private PDA claim should succeed"); assert_eq!(output.new_nullifiers.len(), 1); assert_eq!(output.new_commitments.len(), 1); - assert_eq!(output.ciphertexts.len(), 1); + assert_eq!(output.encrypted_private_post_states.len(), 1); assert!(output.public_pre_states.is_empty()); assert!(output.public_post_states.is_empty()); } @@ -2400,6 +2469,8 @@ pub mod tests { vec![pre_state], Program::serialize_instruction(seed).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk_b, &keys_b.vpk()), npk: npk_b, ssk: shared_secret, identifier: u128::MAX, @@ -2437,6 +2508,8 @@ pub mod tests { vec![pre_state], Program::serialize_instruction((seed, seed, callee_id)).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier: u128::MAX, @@ -2477,6 +2550,8 @@ pub mod tests { vec![pre_state], Program::serialize_instruction((claim_seed, wrong_delegated_seed, callee_id)).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier: u128::MAX, @@ -2516,12 +2591,16 @@ pub mod tests { Program::serialize_instruction(seed).unwrap(), vec![ InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&keys_a.npk(), &keys_a.vpk()), npk: keys_a.npk(), ssk: shared_a, identifier: u128::MAX, seed: None, }, InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&keys_b.npk(), &keys_b.vpk()), npk: keys_b.npk(), ssk: shared_b, identifier: u128::MAX, @@ -2564,6 +2643,8 @@ pub mod tests { vec![owned_pre_state], Program::serialize_instruction(()).unwrap(), vec![InputAccountIdentity::PrivatePdaInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag(&npk, &keys.vpk()), npk, ssk: shared_secret, identifier: u128::MAX, @@ -2652,12 +2733,22 @@ pub mod tests { Program::serialize_instruction(100_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: shared_secret, nsk: sender_keys.nsk, membership_proof: (1, vec![]), identifier: 0, }, InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: shared_secret, nsk: sender_keys.nsk, membership_proof: (1, vec![]), @@ -3003,6 +3094,11 @@ pub mod tests { .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: shared_secret, nsk: sender_keys.nsk, membership_proof: state @@ -3016,13 +3112,9 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![recipient_account_id], - vec![Nonce(0)], - vec![(sender_keys.npk(), sender_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![recipient_account_id], vec![Nonce(0)], output) + .unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[&recipient_private_key]); let tx = PrivacyPreservingTransaction::new(message, witness_set); @@ -3129,6 +3221,11 @@ pub mod tests { Program::serialize_instruction(instruction).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: to_epk, + view_tag: EncryptedAccountData::compute_view_tag( + &to_keys.npk(), + &to_keys.vpk(), + ), ssk: to_ss, nsk: from_keys.nsk, membership_proof: state @@ -3137,6 +3234,11 @@ pub mod tests { identifier: 0, }, InputAccountIdentity::PrivateAuthorizedUpdate { + epk: from_epk, + view_tag: EncryptedAccountData::compute_view_tag( + &from_keys.npk(), + &from_keys.vpk(), + ), ssk: from_ss, nsk: to_keys.nsk, membership_proof: state @@ -3149,16 +3251,7 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![ - (to_keys.npk(), to_keys.vpk(), to_epk), - (from_keys.npk(), from_keys.vpk(), from_epk), - ], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); let transaction = PrivacyPreservingTransaction::new(message, witness_set); @@ -3406,6 +3499,11 @@ pub mod tests { vec![authorized_account], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedInit { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &private_keys.npk(), + &private_keys.vpk(), + ), ssk: shared_secret, nsk: private_keys.nsk, identifier: 0, @@ -3415,13 +3513,7 @@ pub mod tests { .unwrap(); // Create message from circuit output - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![(private_keys.npk(), private_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); @@ -3454,6 +3546,11 @@ pub mod tests { vec![unauthorized_account], Program::serialize_instruction(0_u128).unwrap(), vec![InputAccountIdentity::PrivateUnauthorized { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &private_keys.npk(), + &private_keys.vpk(), + ), npk: private_keys.npk(), ssk: shared_secret, identifier: 0, @@ -3462,13 +3559,7 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![(private_keys.npk(), private_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); let tx = PrivacyPreservingTransaction::new(message, witness_set); @@ -3506,6 +3597,11 @@ pub mod tests { vec![authorized_account.clone()], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedInit { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &private_keys.npk(), + &private_keys.vpk(), + ), ssk: shared_secret, nsk: private_keys.nsk, identifier: 0, @@ -3514,13 +3610,7 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![(private_keys.npk(), private_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); let tx = PrivacyPreservingTransaction::new(message, witness_set); @@ -3553,6 +3643,11 @@ pub mod tests { vec![account_metadata], Program::serialize_instruction(()).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedInit { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &private_keys.npk(), + &private_keys.vpk(), + ), ssk: shared_secret2, nsk: private_keys.nsk, identifier: 0, @@ -3630,6 +3725,11 @@ pub mod tests { vec![private_account], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic(&sender_keys.vpk(), &[0_u8; 32], 0) .0, nsk: sender_keys.nsk, @@ -3657,6 +3757,11 @@ pub mod tests { vec![private_account], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.npk(), + &sender_keys.vpk(), + ), ssk: SharedSecretKey::encapsulate_deterministic(&sender_keys.vpk(), &[0_u8; 32], 0) .0, nsk: sender_keys.nsk, @@ -3718,6 +3823,11 @@ pub mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(Vec::new()), + view_tag: EncryptedAccountData::compute_view_tag( + &recipient_keys.npk(), + &recipient_keys.vpk(), + ), ssk: recipient, nsk: recipient_keys.nsk, membership_proof: state @@ -3872,6 +3982,11 @@ pub mod tests { vec![pre], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateUnauthorized { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &account_keys.npk(), + &account_keys.vpk(), + ), npk: account_keys.npk(), ssk: shared_secret, identifier: 0, @@ -3880,13 +3995,7 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![(account_keys.npk(), account_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); PrivacyPreservingTransaction::new(message, witness_set) @@ -3941,6 +4050,11 @@ pub mod tests { vec![pre], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateUnauthorized { + epk, + view_tag: EncryptedAccountData::compute_view_tag( + &account_keys.npk(), + &account_keys.vpk(), + ), npk: account_keys.npk(), ssk: shared_secret, identifier: 0, @@ -3949,13 +4063,7 @@ pub mod tests { ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![], - vec![], - vec![(account_keys.npk(), account_keys.vpk(), epk)], - output, - ) - .unwrap(); + let message = Message::try_from_circuit_output(vec![], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); PrivacyPreservingTransaction::new(message, witness_set) @@ -4504,6 +4612,11 @@ pub mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivatePdaInit { + epk: alice_epk_0.clone(), + view_tag: EncryptedAccountData::compute_view_tag( + &alice_npk, + &alice_keys.vpk(), + ), npk: alice_npk, ssk: alice_shared_0, identifier: 0, @@ -4513,13 +4626,9 @@ pub mod tests { &auth_transfer.clone().into(), ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![funder_id], - vec![funder_nonce], - vec![(alice_npk, alice_keys.vpk(), alice_epk_0.clone())], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![funder_id], vec![funder_nonce], output) + .unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[&funder_keys.signing_key]); state .transition_from_privacy_preserving_transaction( @@ -4544,6 +4653,11 @@ pub mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivatePdaInit { + epk: alice_epk_1.clone(), + view_tag: EncryptedAccountData::compute_view_tag( + &alice_npk, + &alice_keys.vpk(), + ), npk: alice_npk, ssk: alice_shared_1, identifier: 1, @@ -4553,13 +4667,9 @@ pub mod tests { &auth_transfer.into(), ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![funder_id], - vec![funder_nonce], - vec![(alice_npk, alice_keys.vpk(), alice_epk_1.clone())], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![funder_id], vec![funder_nonce], output) + .unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[&funder_keys.signing_key]); state .transition_from_privacy_preserving_transaction( @@ -4587,6 +4697,11 @@ pub mod tests { Program::serialize_instruction((seed, amount, auth_transfer_id)).unwrap(), vec![ InputAccountIdentity::PrivatePdaUpdate { + epk: alice_epk_0, + view_tag: EncryptedAccountData::compute_view_tag( + &alice_npk, + &alice_keys.vpk(), + ), ssk: alice_shared_0, nsk: alice_keys.nsk, membership_proof: state @@ -4600,13 +4715,9 @@ pub mod tests { &spend_with_deps, ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![recipient_id], - vec![Nonce(0)], - vec![(alice_npk, alice_keys.vpk(), alice_epk_0)], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![recipient_id], vec![Nonce(0)], output) + .unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[&recipient_signing_key]); state .transition_from_privacy_preserving_transaction( @@ -4628,6 +4739,11 @@ pub mod tests { Program::serialize_instruction((seed, amount, auth_transfer_id)).unwrap(), vec![ InputAccountIdentity::PrivatePdaUpdate { + epk: alice_epk_1, + view_tag: EncryptedAccountData::compute_view_tag( + &alice_npk, + &alice_keys.vpk(), + ), ssk: alice_shared_1, nsk: alice_keys.nsk, membership_proof: state @@ -4641,13 +4757,8 @@ pub mod tests { &spend_with_deps, ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![recipient_id], - vec![], - vec![(alice_npk, alice_keys.vpk(), alice_epk_1)], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![recipient_id], vec![], output).unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[]); state .transition_from_privacy_preserving_transaction( @@ -4690,6 +4801,11 @@ pub mod tests { vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivatePdaUpdate { + epk: EphemeralPublicKey(vec![12_u8; 1088]), + view_tag: EncryptedAccountData::compute_view_tag( + &alice_npk, + &alice_keys.vpk(), + ), nsk: alice_keys.nsk, ssk: alice_shared_1_refund, membership_proof: state @@ -4702,17 +4818,9 @@ pub mod tests { &Program::authenticated_transfer_program().into(), ) .unwrap(); - let message = Message::try_from_circuit_output( - vec![recipient_id], - vec![recipient_nonce], - vec![( - alice_npk, - alice_keys.vpk(), - EphemeralPublicKey(vec![12_u8; 1088]), - )], - output, - ) - .unwrap(); + let message = + Message::try_from_circuit_output(vec![recipient_id], vec![recipient_nonce], output) + .unwrap(); let witness_set = WitnessSet::for_message(&message, proof, &[&recipient_signing_key]); state .transition_from_privacy_preserving_transaction(