diff --git a/base_layer/core/src/chain_storage/lmdb_db/validator_node_store.rs b/base_layer/core/src/chain_storage/lmdb_db/validator_node_store.rs index 1431dc230e..689d4cbb8a 100644 --- a/base_layer/core/src/chain_storage/lmdb_db/validator_node_store.rs +++ b/base_layer/core/src/chain_storage/lmdb_db/validator_node_store.rs @@ -286,7 +286,7 @@ mod tests { let entry = ValidatorNodeEntry { shard_key: make_hash(p1.as_bytes()), public_key: p1, - commitment: Commitment::from_public_key(&new_public_key()), + commitment: Commitment::from_compressed_key(new_public_key()), ..Default::default() }; store.insert(1, &entry).unwrap(); @@ -311,7 +311,7 @@ mod tests { .insert(4, &ValidatorNodeEntry { public_key: nodes[0].0.clone(), shard_key: s0, - commitment: Commitment::from_compressed_key(&new_public_key()), + commitment: Commitment::from_compressed_key(new_public_key().clone()), ..Default::default() }) .unwrap(); @@ -321,8 +321,8 @@ mod tests { // We insert them in reverse order to demonstrate that insert order does not necessarily match the vn set // order. let mut ordered_commitments = vec![ - Commitment::from_compressed_key(&new_public_key()), - Commitment::from_compressed_key(&new_public_key()), + Commitment::from_compressed_key(new_public_key().clone()), + Commitment::from_compressed_key(new_public_key().clone()), ]; ordered_commitments.sort(); store @@ -364,7 +364,7 @@ mod tests { .insert(4, &ValidatorNodeEntry { public_key: nodes[0].0.clone(), shard_key: new_shard_key, - commitment: Commitment::from_compressed_key(&new_public_key()), + commitment: Commitment::from_compressed_key(new_public_key()), ..Default::default() }) diff --git a/base_layer/core/src/transactions/coinbase_builder.rs b/base_layer/core/src/transactions/coinbase_builder.rs index b3064df40a..558fbb664f 100644 --- a/base_layer/core/src/transactions/coinbase_builder.rs +++ b/base_layer/core/src/transactions/coinbase_builder.rs @@ -507,7 +507,8 @@ pub async fn generate_coinbase_with_wallet_output( mod test { use tari_common::configuration::Network; use tari_common_types::{key_branches::TransactionKeyManagerBranch, tari_address::TariAddress, types::Commitment}; - + use tari_common_types::types::PublicKey; + use tari_comms::types::CompressedSignature; use crate::{ consensus::{emission::Emission, ConsensusManager, ConsensusManagerBuilder}, transactions::{ @@ -520,6 +521,8 @@ mod test { }, validation::aggregate_body::AggregateBodyInternalConsistencyValidator, }; + use tari_common_types::types::Signature; + fn get_builder() -> ( CoinbaseBuilder, @@ -879,11 +882,11 @@ mod test { &excess, &kernel_message, ); - assert!(sig.verify_raw_uniform(&excess, &sig_challenge)); + assert!(sig.to_schnorr_signature().unwrap().verify_raw_uniform(&excess.to_public_key().unwrap(), &sig_challenge)); // we fix the signature and the excess with the now included offset. coinbase_kernel2.excess_sig = sig; - coinbase_kernel2.excess = Commitment::from_public_key(&excess); + coinbase_kernel2.excess = Commitment::from_compressed_key(excess); tx.body.add_output(coinbase2); tx.body.add_kernel(coinbase_kernel2); @@ -977,9 +980,9 @@ mod test { let coinbase2 = tx2.body.outputs()[0].clone(); let mut kernel_1 = tx1.body.kernels()[0].clone(); let kernel_2 = tx2.body.kernels()[0].clone(); - let excess = &kernel_1.excess + &kernel_2.excess; - kernel_1.excess = &kernel_1.excess + &kernel_2.excess; - kernel_1.excess_sig = &kernel_1.excess_sig + &kernel_2.excess_sig; + let excess = &kernel_1.excess.to_commitment().unwrap() + &kernel_2.excess.to_commitment().unwrap(); + kernel_1.excess = Commitment::from_commitment(&kernel_1.excess.to_commitment().unwrap() + &kernel_2.excess.to_commitment().unwrap()); + kernel_1.excess_sig = CompressedSignature::new_from_schnorr(&kernel_1.excess_sig.to_schnorr_signature().unwrap() + &kernel_2.excess_sig.to_schnorr_signature().unwrap()); let mut body1 = AggregateBody::new(Vec::new(), vec![coinbase1, coinbase2], vec![kernel_1.clone()]); body1.sort(); @@ -1002,7 +1005,7 @@ mod test { .get_next_key(TransactionKeyManagerBranch::KernelNonce.get_branch_key()) .await .unwrap(); - let nonce = &new_nonce1.pub_key + &new_nonce2.pub_key; + let nonce = &new_nonce1.pub_key.to_public_key().unwrap() + &new_nonce2.pub_key.to_public_key().unwrap(); let kernel_message = TransactionKernel::build_kernel_signature_message( &TransactionKernelVersion::get_current_version(), kernel_1.fee, @@ -1015,35 +1018,35 @@ mod test { .get_partial_txo_kernel_signature( &wo1.spending_key_id, &new_nonce1.key_id, - &nonce, - excess.as_public_key(), + &PublicKey::new_from_pk(&nonce), + &PublicKey::new_from_pk(excess.as_public_key()), &TransactionKernelVersion::get_current_version(), &kernel_message, &kernel_1.features, TxoStage::Output, ) .await - .unwrap(); + .unwrap().to_schnorr_signature().unwrap(); kernel_signature = &kernel_signature + &key_manager .get_partial_txo_kernel_signature( &wo2.spending_key_id, &new_nonce2.key_id, - &nonce, - excess.as_public_key(), + &PublicKey::new_from_pk(&nonce), + &PublicKey::new_from_pk(excess.as_public_key()), &TransactionKernelVersion::get_current_version(), &kernel_message, &kernel_1.features, TxoStage::Output, ) .await - .unwrap(); + .unwrap().to_schnorr_signature().unwrap(); let kernel_new = KernelBuilder::new() .with_fee(0.into()) .with_features(kernel_1.features) .with_lock_height(kernel_1.lock_height) - .with_excess(&excess) - .with_signature(kernel_signature) + .with_excess(&Commitment::from_commitment(excess)) + .with_signature(Signature::new_from_schnorr(kernel_signature)) .build() .unwrap(); diff --git a/base_layer/core/src/transactions/fee.rs b/base_layer/core/src/transactions/fee.rs index 65e2f176e6..1ced8677b5 100644 --- a/base_layer/core/src/transactions/fee.rs +++ b/base_layer/core/src/transactions/fee.rs @@ -72,7 +72,7 @@ impl From for Fee { #[cfg(test)] mod test { use std::convert::TryInto; - + use tari_common_types::types::ComAndPubSignature; use tari_crypto::ristretto::RistrettoComAndPubSig; use tari_script::ExecutionStack; @@ -108,7 +108,7 @@ mod test { let input = TransactionInput::new_current_version( spent_output, ExecutionStack::new(vec![]), - RistrettoComAndPubSig::default(), + ComAndPubSignature::new_from_capk_signature(RistrettoComAndPubSig::default()), ); let aggregate_body = AggregateBody::new(vec![input], vec![], vec![]); let fee = Fee::new(TransactionWeight::latest()); diff --git a/base_layer/core/src/transactions/transaction_components/encrypted_data.rs b/base_layer/core/src/transactions/transaction_components/encrypted_data.rs index 2428f22886..99c0412f94 100644 --- a/base_layer/core/src/transactions/transaction_components/encrypted_data.rs +++ b/base_layer/core/src/transactions/transaction_components/encrypted_data.rs @@ -894,7 +894,7 @@ mod test { (654321, PrivateKey::random(&mut OsRng)), (u64::MAX, PrivateKey::random(&mut OsRng)), ] { - let commitment = CommitmentFactory::default().commit(&mask, &PrivateKey::from(value)); + let commitment = Commitment::from_commitment(CommitmentFactory::default().commit(&mask, &PrivateKey::from(value))); let encryption_key = PrivateKey::random(&mut OsRng); let amount = MicroMinotari::from(value); let encrypted_data = @@ -1022,7 +1022,7 @@ mod test { (654321, PrivateKey::random(&mut OsRng)), (u64::MAX, PrivateKey::random(&mut OsRng)), ] { - let commitment = CommitmentFactory::default().commit(&mask, &PrivateKey::from(value)); + let commitment = Commitment::from_commitment(CommitmentFactory::default().commit(&mask, &PrivateKey::from(value))); let encryption_key = PrivateKey::random(&mut OsRng); let amount = MicroMinotari::from(value); let encrypted_data = diff --git a/base_layer/core/src/transactions/transaction_components/test.rs b/base_layer/core/src/transactions/transaction_components/test.rs index 950f5dd3e6..e6c8d557c3 100644 --- a/base_layer/core/src/transactions/transaction_components/test.rs +++ b/base_layer/core/src/transactions/transaction_components/test.rs @@ -362,7 +362,7 @@ fn check_timelocks() { let factories = CryptoFactories::new(32); let k = PrivateKey::random(&mut OsRng); let v = PrivateKey::from(2u64.pow(32) + 1); - let c = factories.commitment.commit(&k, &v); + let c = Commitment::from_commitment(factories.commitment.commit(&k, &v)); let script = TariScript::default(); let input_data = ExecutionStack::default(); diff --git a/base_layer/core/src/transactions/transaction_components/wallet_output_builder.rs b/base_layer/core/src/transactions/transaction_components/wallet_output_builder.rs index 1b2e0fe863..0c3bb8c9bb 100644 --- a/base_layer/core/src/transactions/transaction_components/wallet_output_builder.rs +++ b/base_layer/core/src/transactions/transaction_components/wallet_output_builder.rs @@ -465,7 +465,7 @@ mod test { .await .unwrap(); - let metadata_signature_from_partials = &receiver_metadata_signature + &sender_metadata_signature; + let metadata_signature_from_partials = ComAndPubSignature::new_from_capk_signature(&receiver_metadata_signature.to_capk_signature().unwrap() + &sender_metadata_signature.to_capk_signature().unwrap()); assert_ne!(output.metadata_signature, metadata_signature_from_partials); output.metadata_signature = metadata_signature_from_partials; assert!(output.verify_metadata_signature().is_ok()); diff --git a/base_layer/core/src/transactions/transaction_protocol/recipient.rs b/base_layer/core/src/transactions/transaction_protocol/recipient.rs index ee2e2a148b..49e02e7008 100644 --- a/base_layer/core/src/transactions/transaction_protocol/recipient.rs +++ b/base_layer/core/src/transactions/transaction_protocol/recipient.rs @@ -237,7 +237,7 @@ mod test { .unwrap(); let offset = data.offset.clone(); let public_offset = PublicKey::from_secret_key(&offset); - let signing_pubkey = &pubkey - &public_offset; + let signing_pubkey = PublicKey::new_from_pk(&(&pubkey.to_public_key().unwrap() - &public_offset.to_public_key().unwrap())); assert_eq!(data.tx_id.as_u64(), 15); assert_eq!(data.public_spend_key, signing_pubkey); let commitment = key_manager diff --git a/base_layer/core/src/transactions/transaction_protocol/sender.rs b/base_layer/core/src/transactions/transaction_protocol/sender.rs index ef696f7f78..46780e64a9 100644 --- a/base_layer/core/src/transactions/transaction_protocol/sender.rs +++ b/base_layer/core/src/transactions/transaction_protocol/sender.rs @@ -905,7 +905,7 @@ mod test { use tari_key_manager::key_manager_service::KeyManagerInterface; use tari_script::{inputs, script, ExecutionStack, TariScript}; use tari_utilities::hex::Hex; - + use tari_common_types::types::ComAndPubSignature; use super::SenderState; use crate::{ covenants::Covenant, @@ -1068,7 +1068,7 @@ mod test { ) .await .unwrap(); - output.metadata_signature = &partial_metadata_signature + &partial_sender_metadata_signature; + output.metadata_signature = ComAndPubSignature::new_from_capk_signature(&partial_metadata_signature.to_capk_signature().unwrap() + &partial_sender_metadata_signature.to_capk_signature().unwrap()); assert!(output.verify_metadata_signature().is_ok()); } diff --git a/base_layer/core/src/validation/block_body/test.rs b/base_layer/core/src/validation/block_body/test.rs index 1afa2f3f66..97971e73c6 100644 --- a/base_layer/core/src/validation/block_body/test.rs +++ b/base_layer/core/src/validation/block_body/test.rs @@ -23,7 +23,6 @@ use std::sync::Arc; use tari_common::configuration::Network; use tari_common_types::{key_branches::TransactionKeyManagerBranch, tari_address::TariAddress}; -use tari_key_manager::key_manager_service::KeyId; use tari_script::{push_pubkey_script, script}; use tari_test_utils::unpack_enum; use tokio::time::Instant; @@ -242,7 +241,7 @@ async fn it_allows_multiple_coinbases() { let (blockchain, validator) = setup(true).await; let (mut block, coinbase) = blockchain.create_unmined_block(block_spec!("A1", parent: "GB")).await; - let commitment_mask_key = KeyId::Managed { + let commitment_mask_key = TariKeyId::Managed { branch: TransactionKeyManagerBranch::CommitmentMask.get_branch_key(), index: 42, }; diff --git a/base_layer/core/src/validation/test.rs b/base_layer/core/src/validation/test.rs index 5dafde9fa9..350f899a1e 100644 --- a/base_layer/core/src/validation/test.rs +++ b/base_layer/core/src/validation/test.rs @@ -21,10 +21,10 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use std::{cmp, sync::Arc}; +use tari_common_types::types::UncompressedCommitment; use tari_common::configuration::Network; use tari_common_types::types::Commitment; -use tari_crypto::commitment::HomomorphicCommitment; use tari_script::TariScript; use tari_test_utils::unpack_enum; @@ -192,23 +192,23 @@ async fn chain_balance_validation() { TxoStage::Output, ) .await; - let excess = Commitment::from_public_key(&pk); + let excess = Commitment::from_public_key(&pk.to_public_key().unwrap()); let kernel = TransactionKernel::new_current_version(KernelFeatures::empty(), MicroMinotari::from(0), 0, excess, sig, None); let mut gen_block = genesis.block().clone(); gen_block.body.add_output(pre_mine_utxo); gen_block.body.add_kernels([kernel]); - let mut utxo_sum = HomomorphicCommitment::default(); - let mut kernel_sum = HomomorphicCommitment::default(); - let burned_sum = HomomorphicCommitment::default(); + let mut utxo_sum = UncompressedCommitment::default(); + let mut kernel_sum = UncompressedCommitment::default(); + let burned_sum = UncompressedCommitment::default(); for output in gen_block.body.outputs() { - utxo_sum = &output.commitment + &utxo_sum; + utxo_sum = &output.commitment.to_commitment().unwrap() + &utxo_sum; } for input in gen_block.body.inputs() { - utxo_sum = &utxo_sum - input.commitment().unwrap(); + utxo_sum = &utxo_sum - &input.commitment().unwrap().to_commitment().unwrap(); } for kernel in gen_block.body.kernels() { - kernel_sum = &kernel.excess + &kernel_sum; + kernel_sum = &kernel.excess.to_commitment().unwrap() + &kernel_sum; } let genesis = ChainBlock::try_construct(Arc::new(gen_block), genesis.accumulated_data().clone()).unwrap(); let total_pre_mine = pre_mine_value + consensus_manager.consensus_constants(0).pre_mine_value(); @@ -228,7 +228,7 @@ async fn chain_balance_validation() { let validator = ChainBalanceValidator::new(consensus_manager.clone(), factories.clone()); // Validate the genesis state validator - .validate(&*db.db_read_access().unwrap(), 0, &utxo_sum, &kernel_sum, &burned_sum) + .validate(&*db.db_read_access().unwrap(), 0, &Commitment::from_commitment(utxo_sum), &Commitment::from_commitment(kernel_sum), &Commitment::from_commitment(burned_sum)) .unwrap(); //---------------------------------- Add a new coinbase and header --------------------------------------------// @@ -253,7 +253,7 @@ async fn chain_balance_validation() { TxoStage::Output, ) .await; - let excess = Commitment::from_public_key(&pk); + let excess = Commitment::from_compressed_key(pk); let kernel = KernelBuilder::new() .with_signature(sig) .with_excess(&excess) @@ -285,10 +285,10 @@ async fn chain_balance_validation() { txn.insert_utxo(coinbase.clone(), *header1.hash(), 1, 0); db.commit(txn).unwrap(); - utxo_sum = &coinbase.commitment + &utxo_sum; - kernel_sum = &kernel.excess + &kernel_sum; + utxo_sum = &coinbase.commitment.to_commitment().unwrap() + &utxo_sum; + kernel_sum = &kernel.excess.to_commitment().unwrap() + &kernel_sum; validator - .validate(&*db.db_read_access().unwrap(), 1, &utxo_sum, &kernel_sum, &burned_sum) + .validate(&*db.db_read_access().unwrap(), 1, &Commitment::from_commitment(utxo_sum), &Commitment::from_commitment(kernel_sum), &Commitment::from_commitment(burned_sum)) .unwrap(); //---------------------------------- Try to inflate --------------------------------------------// @@ -313,7 +313,7 @@ async fn chain_balance_validation() { TxoStage::Output, ) .await; - let excess = Commitment::from_public_key(&pk); + let excess = Commitment::from_compressed_key(pk); let kernel = KernelBuilder::new() .with_signature(sig) .with_excess(&excess) @@ -338,8 +338,8 @@ async fn chain_balance_validation() { .unwrap(); let header2 = ChainHeader::try_construct(header2, accumulated_data).unwrap(); txn.insert_chain_header(header2.clone()); - utxo_sum = &coinbase.commitment + &utxo_sum; - kernel_sum = &kernel.excess + &kernel_sum; + utxo_sum = &coinbase.commitment.to_commitment().unwrap() + &utxo_sum; + kernel_sum = &kernel.excess.to_commitment().unwrap() + &kernel_sum; txn.insert_utxo(coinbase, *header2.hash(), 2, 0); mmr_position += 1; txn.insert_kernel(kernel, *header2.hash(), mmr_position); @@ -347,7 +347,7 @@ async fn chain_balance_validation() { db.commit(txn).unwrap(); validator - .validate(&*db.db_read_access().unwrap(), 2, &utxo_sum, &kernel_sum, &burned_sum) + .validate(&*db.db_read_access().unwrap(), 2, &Commitment::from_commitment(utxo_sum), &Commitment::from_commitment(kernel_sum), &Commitment::from_commitment(burned_sum)) .unwrap_err(); } @@ -377,23 +377,23 @@ async fn chain_balance_validation_burned() { TxoStage::Output, ) .await; - let excess = Commitment::from_public_key(&pk); + let excess = Commitment::from_compressed_key(pk); let kernel = TransactionKernel::new_current_version(KernelFeatures::empty(), MicroMinotari::from(0), 0, excess, sig, None); let mut gen_block = genesis.block().clone(); gen_block.body.add_output(pre_mine_utxo); gen_block.body.add_kernels([kernel]); - let mut utxo_sum = HomomorphicCommitment::default(); - let mut kernel_sum = HomomorphicCommitment::default(); - let mut burned_sum = HomomorphicCommitment::default(); + let mut utxo_sum = UncompressedCommitment::default(); + let mut kernel_sum = UncompressedCommitment::default(); + let mut burned_sum = UncompressedCommitment::default(); for output in gen_block.body.outputs() { - utxo_sum = &output.commitment + &utxo_sum; + utxo_sum = &output.commitment.to_commitment().unwrap() + &utxo_sum; } for input in gen_block.body.inputs() { - utxo_sum = &utxo_sum - input.commitment().unwrap(); + utxo_sum = &utxo_sum - &input.commitment().unwrap().to_commitment().unwrap(); } for kernel in gen_block.body.kernels() { - kernel_sum = &kernel.excess + &kernel_sum; + kernel_sum = &kernel.excess.to_commitment().unwrap() + &kernel_sum; } let genesis = ChainBlock::try_construct(Arc::new(gen_block), genesis.accumulated_data().clone()).unwrap(); let total_pre_mine = pre_mine_value + consensus_manager.consensus_constants(0).pre_mine_value(); @@ -414,7 +414,7 @@ async fn chain_balance_validation_burned() { let validator = ChainBalanceValidator::new(consensus_manager.clone(), factories.clone()); // Validate the genesis state validator - .validate(&*db.db_read_access().unwrap(), 0, &utxo_sum, &kernel_sum, &burned_sum) + .validate(&*db.db_read_access().unwrap(), 0, &Commitment::from_commitment(utxo_sum), &Commitment::from_commitment(kernel_sum), &Commitment::from_commitment(burned_sum)) .unwrap(); //---------------------------------- Add block (coinbase + burned) --------------------------------------------// @@ -438,7 +438,7 @@ async fn chain_balance_validation_burned() { TxoStage::Output, ) .await; - let excess = Commitment::from_public_key(&pk); + let excess = Commitment::from_compressed_key(pk); let kernel = KernelBuilder::new() .with_signature(sig) .with_excess(&excess) @@ -465,7 +465,7 @@ async fn chain_balance_validation_burned() { TxoStage::Output, ) .await; - let excess2 = Commitment::from_public_key(&pk2); + let excess2 = Commitment::from_compressed_key(pk2); let kernel2 = KernelBuilder::new() .with_signature(sig2) .with_excess(&excess2) @@ -473,7 +473,7 @@ async fn chain_balance_validation_burned() { .with_burn_commitment(Some(burned.commitment.clone())) .build() .unwrap(); - burned_sum = &burned_sum + kernel2.get_burn_commitment().unwrap(); + burned_sum = &burned_sum + &kernel2.get_burn_commitment().unwrap().to_commitment().unwrap(); let mut header1 = BlockHeader::from_previous(genesis.header()); header1.kernel_mmr_size += 2; header1.output_smt_size += 2; @@ -503,10 +503,10 @@ async fn chain_balance_validation_burned() { // txn.insert_pruned_utxo(burned.hash(), *header1.hash(), header1.height(), 0); db.commit(txn).unwrap(); - utxo_sum = &coinbase.commitment + &utxo_sum; - kernel_sum = &(&kernel.excess + &kernel_sum) + &kernel2.excess; + utxo_sum = &coinbase.commitment.to_commitment().unwrap() + &utxo_sum; + kernel_sum = &(&kernel.excess.to_commitment().unwrap() + &kernel_sum) + &kernel2.excess.to_commitment().unwrap(); validator - .validate(&*db.db_read_access().unwrap(), 1, &utxo_sum, &kernel_sum, &burned_sum) + .validate(&*db.db_read_access().unwrap(), 1, &Commitment::from_commitment(utxo_sum), &Commitment::from_commitment(kernel_sum), &Commitment::from_commitment(burned_sum)) .unwrap(); } diff --git a/base_layer/core/tests/helpers/block_builders.rs b/base_layer/core/tests/helpers/block_builders.rs index bdcfa21a5c..7d50d1c7bc 100644 --- a/base_layer/core/tests/helpers/block_builders.rs +++ b/base_layer/core/tests/helpers/block_builders.rs @@ -64,7 +64,6 @@ use tari_core::{ PrunedKernelMmr, PrunedOutputMmr, }; -use tari_key_manager::key_manager_service::KeyManagerInterface; use tari_mmr::{ pruned_hashset::PrunedHashSet, sparse_merkle_tree::{NodeKey, ValueHash}, diff --git a/base_layer/core/tests/tests/block_validation.rs b/base_layer/core/tests/tests/block_validation.rs index 53bb8a7def..b224096efc 100644 --- a/base_layer/core/tests/tests/block_validation.rs +++ b/base_layer/core/tests/tests/block_validation.rs @@ -76,7 +76,6 @@ use tari_core::{ }, OutputSmt, }; -use tari_key_manager::key_manager_service::KeyManagerInterface; use tari_script::{inputs, script}; use tari_test_utils::unpack_enum; use tari_utilities::{epoch_time::EpochTime, hex::Hex, ByteArray}; diff --git a/base_layer/core/tests/tests/mempool.rs b/base_layer/core/tests/tests/mempool.rs index dce9e1282f..26c8734685 100644 --- a/base_layer/core/tests/tests/mempool.rs +++ b/base_layer/core/tests/tests/mempool.rs @@ -21,6 +21,7 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use std::{convert::TryFrom, ops::Deref, sync::Arc, time::Duration}; +use tari_common_types::types::UncompressedSignature; use randomx_rs::RandomXFlag; use tari_common::configuration::Network; @@ -71,7 +72,6 @@ use tari_core::{ ValidationError, }, }; -use tari_key_manager::key_manager_service::KeyManagerInterface; use tari_p2p::{services::liveness::LivenessConfig, tari_message::TariMessageType, P2pConfig}; use tari_script::script; use tari_test_utils::async_assert_eventually; @@ -1228,7 +1228,7 @@ async fn consensus_validation_large_tx() { .to_public_key() .unwrap(); let mut sender_offsets = Vec::new(); - let mut pub_nonce = input_kernel_nonce.pub_key.clone(); + let mut pub_nonce = input_kernel_nonce.pub_key.clone().to_public_key().unwrap(); for i in 0..output_count { let test_params = TestParams::new(&key_manager).await; let output_amount = if i < output_count - 1 { @@ -1249,14 +1249,14 @@ async fn consensus_validation_large_tx() { key_manager .get_txo_kernel_signature_excess_with_offset(&output.spending_key_id, &test_params.kernel_nonce_key_id) .await - .unwrap(); - pub_nonce = pub_nonce + test_params.kernel_nonce_key_pk; + .unwrap().to_public_key().unwrap(); + pub_nonce = pub_nonce + test_params.kernel_nonce_key_pk.to_public_key().unwrap(); sender_offsets.push(test_params.sender_offset_key_id.clone()); wallet_outputs.push((output.clone(), test_params.kernel_nonce_key_id)); } - let mut agg_sig = Signature::default(); + let mut agg_sig = UncompressedSignature::default(); let mut outputs = Vec::new(); let mut offset = PrivateKey::default(); let tx_meta = TransactionMetadata::new(fee, 0); @@ -1279,8 +1279,8 @@ async fn consensus_validation_large_tx() { .get_partial_txo_kernel_signature( &output.spending_key_id, &nonce_id, - &pub_nonce, - &pub_excess, + &PublicKey::new_from_pk(&pub_nonce), + &PublicKey::new_from_pk(&pub_excess), &kernel_version, &kernel_message, &tx_meta.kernel_features, @@ -1288,7 +1288,7 @@ async fn consensus_validation_large_tx() { ) .await .unwrap(); - agg_sig = &agg_sig + sig; + agg_sig = &agg_sig + sig.to_schnorr_signature().unwrap(); } offset = &offset - @@ -1300,8 +1300,8 @@ async fn consensus_validation_large_tx() { .get_partial_txo_kernel_signature( &input.spending_key_id, &input_kernel_nonce.key_id, - &pub_nonce, - &pub_excess, + &PublicKey::new_from_pk(&pub_nonce), + &PublicKey::new_from_pk(&pub_excess), &kernel_version, &kernel_message, &tx_meta.kernel_features, @@ -1309,14 +1309,14 @@ async fn consensus_validation_large_tx() { ) .await .unwrap(); - agg_sig = &agg_sig + sig; + agg_sig = &agg_sig + &sig.to_schnorr_signature().unwrap(); let kernel = KernelBuilder::new() .with_fee(fee) .with_lock_height(0) .with_excess(&Commitment::from_public_key(&pub_excess)) .with_features(tx_meta.kernel_features) - .with_signature(agg_sig) + .with_signature(Signature::new_from_schnorr(agg_sig)) .build() .unwrap(); let kernels = vec![kernel]; @@ -1390,11 +1390,11 @@ async fn validation_reject_min_fee() { .get_next_key(TransactionKeyManagerBranch::KernelNonce.get_branch_key()) .await .unwrap(); - let mut pub_excess = PublicKey::default() - + let mut pub_excess = UncompressedPublicKey::default() - key_manager .get_txo_kernel_signature_excess_with_offset(&input.spending_key_id, &input_kernel_nonce.key_id) .await - .unwrap(); + .unwrap().to_public_key().unwrap(); let mut sender_offsets = Vec::new(); let test_params = TestParams::new(&key_manager).await; @@ -1414,11 +1414,11 @@ async fn validation_reject_min_fee() { &test_params.kernel_nonce_key_id, ) .await - .unwrap(); - let pub_nonce = input_kernel_nonce.pub_key + test_params.kernel_nonce_key_pk; + .unwrap().to_public_key().unwrap(); + let pub_nonce = input_kernel_nonce.pub_key.to_public_key().unwrap() + test_params.kernel_nonce_key_pk.to_public_key().unwrap(); sender_offsets.push(test_params.sender_offset_key_id.clone()); - let mut agg_sig = Signature::default(); + let mut agg_sig = UncompressedSignature::default(); let mut offset = PrivateKey::default(); let tx_meta = TransactionMetadata::new(fee, 0); let kernel_version = TransactionKernelVersion::get_current_version(); @@ -1440,8 +1440,8 @@ async fn validation_reject_min_fee() { .get_partial_txo_kernel_signature( &wallet_output.spending_key_id, &test_params.kernel_nonce_key_id, - &pub_nonce, - &pub_excess, + &PublicKey::new_from_pk(&pub_nonce), + &PublicKey::new_from_pk(&pub_excess), &kernel_version, &kernel_message, &tx_meta.kernel_features, @@ -1449,7 +1449,7 @@ async fn validation_reject_min_fee() { ) .await .unwrap(); - agg_sig = &agg_sig + sig; + agg_sig = &agg_sig + sig.to_schnorr_signature().unwrap(); offset = &offset - &key_manager @@ -1460,8 +1460,8 @@ async fn validation_reject_min_fee() { .get_partial_txo_kernel_signature( &input.spending_key_id, &input_kernel_nonce.key_id, - &pub_nonce, - &pub_excess, + &PublicKey::new_from_pk(&pub_nonce), + &PublicKey::new_from_pk(&pub_excess), &kernel_version, &kernel_message, &tx_meta.kernel_features, @@ -1469,14 +1469,14 @@ async fn validation_reject_min_fee() { ) .await .unwrap(); - agg_sig = &agg_sig + sig; + agg_sig = &agg_sig + sig.to_schnorr_signature().unwrap(); let kernel = KernelBuilder::new() .with_fee(fee) .with_lock_height(0) .with_excess(&Commitment::from_public_key(&pub_excess)) .with_features(tx_meta.kernel_features) - .with_signature(agg_sig) + .with_signature(Signature::new_from_schnorr(agg_sig)) .build() .unwrap(); let kernels = vec![kernel]; diff --git a/base_layer/core/tests/tests/node_comms_interface.rs b/base_layer/core/tests/tests/node_comms_interface.rs index 1c4036412c..7df39ce758 100644 --- a/base_layer/core/tests/tests/node_comms_interface.rs +++ b/base_layer/core/tests/tests/node_comms_interface.rs @@ -60,7 +60,6 @@ use tari_core::{ validation::{mocks::MockValidator, transaction::TransactionChainLinkedValidator}, OutputSmt, }; -use tari_key_manager::key_manager_service::KeyManagerInterface; use tari_script::{inputs, script, ExecutionStack}; use tari_service_framework::reply_channel; use tokio::sync::{broadcast, mpsc}; diff --git a/base_layer/wallet/tests/key_manager_service_tests/service.rs b/base_layer/wallet/tests/key_manager_service_tests/service.rs index 18bbe2adf0..2538956010 100644 --- a/base_layer/wallet/tests/key_manager_service_tests/service.rs +++ b/base_layer/wallet/tests/key_manager_service_tests/service.rs @@ -20,21 +20,24 @@ // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use std::mem::size_of; - +use std::sync::Arc; +use tari_core::transactions::key_manager::TransactionKeyManagerInterface; +use tari_core::transactions::key_manager::TariKeyId; +use tari_core::transactions::key_manager::storage::sqlite_db::TransactionKeyManagerSqliteDatabase; +use tari_core::transactions::key_manager::TransactionKeyManagerWrapper; use chacha20poly1305::{Key, KeyInit, XChaCha20Poly1305}; use minotari_wallet::storage::sqlite_utilities::WalletDbConnection; use rand::{rngs::OsRng, RngCore}; -use tari_common_types::types::PublicKey; +use tari_common_types::wallet_types::WalletType; +use tari_core::transactions::CryptoFactories; use tari_key_manager::{ cipher_seed::CipherSeed, key_manager_service::{ - storage::{database::KeyManagerDatabase, sqlite_db::KeyManagerSqliteDatabase}, AddResult, - KeyId, - KeyManagerHandle, - KeyManagerInterface, }, }; +use tari_core::transactions::key_manager::storage::database::TransactionKeyManagerDatabase; + use crate::support::data::get_temp_sqlite_database_connection; @@ -46,10 +49,12 @@ async fn get_key_at_test_with_encryption() { OsRng.fill_bytes(&mut key); let key_ga = Key::from_slice(&key); let db_cipher = XChaCha20Poly1305::new(key_ga); - let key_manager = KeyManagerHandle::, PublicKey>::new( + let factory = CryptoFactories::new(64); + let key_manager = TransactionKeyManagerWrapper::>::new( cipher, - KeyManagerDatabase::new(KeyManagerSqliteDatabase::init(connection, db_cipher)), - ); + TransactionKeyManagerDatabase::new(TransactionKeyManagerSqliteDatabase::init(connection, db_cipher)),factory, + Arc::new(WalletType::default()), + ).unwrap(); key_manager.add_new_branch("branch1").await.unwrap(); let key_1 = key_manager.get_next_key("branch1").await.unwrap(); let key_2 = key_manager.get_next_key("branch1").await.unwrap(); @@ -60,7 +65,7 @@ async fn get_key_at_test_with_encryption() { assert_ne!(key_2, key_3); let key_1_2 = key_manager - .get_public_key_at_key_id(&KeyId::Managed { + .get_public_key_at_key_id(&TariKeyId::Managed { branch: "branch1".to_string(), index: 1, }) @@ -79,10 +84,13 @@ async fn key_manager_multiple_branches() { let key_ga = Key::from_slice(&key); let db_cipher = XChaCha20Poly1305::new(key_ga); - let key_manager = KeyManagerHandle::, PublicKey>::new( + let factory = CryptoFactories::new(64); + let key_manager = TransactionKeyManagerWrapper::>::new( cipher, - KeyManagerDatabase::new(KeyManagerSqliteDatabase::init(connection, db_cipher)), - ); + TransactionKeyManagerDatabase::new(TransactionKeyManagerSqliteDatabase::init(connection, db_cipher)),factory, + Arc::new(WalletType::default()), + ).unwrap(); + assert_eq!( key_manager.add_new_branch("branch1").await.unwrap(), AddResult::NewEntry @@ -103,21 +111,21 @@ async fn key_manager_multiple_branches() { assert_ne!(key_2, key_3); let key_1 = key_manager - .get_public_key_at_key_id(&KeyId::Managed { + .get_public_key_at_key_id(&TariKeyId::Managed { branch: "branch1".to_string(), index: 1, }) .await .unwrap(); let key_2 = key_manager - .get_public_key_at_key_id(&KeyId::Managed { + .get_public_key_at_key_id(&TariKeyId::Managed { branch: "branch2".to_string(), index: 1, }) .await .unwrap(); let key_3 = key_manager - .get_public_key_at_key_id(&KeyId::Managed { + .get_public_key_at_key_id(&TariKeyId::Managed { branch: "branch3".to_string(), index: 1, }) @@ -139,10 +147,12 @@ async fn key_manager_find_index() { let key_ga = Key::from_slice(&key); let db_cipher = XChaCha20Poly1305::new(key_ga); - let key_manager = KeyManagerHandle::, PublicKey>::new( + let factory = CryptoFactories::new(64); + let key_manager = TransactionKeyManagerWrapper::>::new( cipher, - KeyManagerDatabase::new(KeyManagerSqliteDatabase::init(connection, db_cipher)), - ); + TransactionKeyManagerDatabase::new(TransactionKeyManagerSqliteDatabase::init(connection, db_cipher)),factory, + Arc::new(WalletType::default()), + ).unwrap(); key_manager.add_new_branch("branch1").await.unwrap(); let _next_key = key_manager.get_next_key("branch1").await.unwrap(); let _next_key = key_manager.get_next_key("branch1").await.unwrap(); @@ -162,10 +172,12 @@ async fn key_manager_update_current_key_index_if_higher() { let key_ga = Key::from_slice(&key); let db_cipher = XChaCha20Poly1305::new(key_ga); - let key_manager = KeyManagerHandle::, PublicKey>::new( + let factory = CryptoFactories::new(64); + let key_manager = TransactionKeyManagerWrapper::>::new( cipher, - KeyManagerDatabase::new(KeyManagerSqliteDatabase::init(connection, db_cipher)), - ); + TransactionKeyManagerDatabase::new(TransactionKeyManagerSqliteDatabase::init(connection, db_cipher)),factory, + Arc::new(WalletType::default()), + ).unwrap(); key_manager.add_new_branch("branch1").await.unwrap(); let _next_key_result = key_manager.get_next_key("branch1").await.unwrap(); let _next_key_result = key_manager.get_next_key("branch1").await.unwrap(); @@ -180,7 +192,7 @@ async fn key_manager_update_current_key_index_if_higher() { .unwrap(); let key_1 = key_manager.get_next_key("branch1").await.unwrap(); let key_1_2 = key_manager - .get_public_key_at_key_id(&KeyId::Managed { + .get_public_key_at_key_id(&TariKeyId::Managed { branch: "branch1".to_string(), index: 7, }) @@ -201,17 +213,19 @@ async fn key_manager_test_index() { let key_ga = Key::from_slice(&key); let db_cipher = XChaCha20Poly1305::new(key_ga); - let key_manager = KeyManagerHandle::, PublicKey>::new( + let factory = CryptoFactories::new(64); + let key_manager = TransactionKeyManagerWrapper::>::new( cipher, - KeyManagerDatabase::new(KeyManagerSqliteDatabase::init(connection, db_cipher)), - ); + TransactionKeyManagerDatabase::new(TransactionKeyManagerSqliteDatabase::init(connection, db_cipher)),factory, + Arc::new(WalletType::default()), + ).unwrap(); key_manager.add_new_branch("branch1").await.unwrap(); key_manager.add_new_branch("branch2").await.unwrap(); let _next_key_result = key_manager.get_next_key("branch1").await.unwrap(); let _next_key_result = key_manager.get_next_key("branch1").await.unwrap(); let result = key_manager.get_next_key("branch1").await.unwrap(); let key_2 = key_manager - .get_public_key_at_key_id(&KeyId::Managed { + .get_public_key_at_key_id(&TariKeyId::Managed { branch: "branch2".to_string(), index: result.key_id.managed_index().unwrap(), }) diff --git a/base_layer/wallet/tests/output_manager_service_tests/service.rs b/base_layer/wallet/tests/output_manager_service_tests/service.rs index 2a2e2ba2a3..37cad470e3 100644 --- a/base_layer/wallet/tests/output_manager_service_tests/service.rs +++ b/base_layer/wallet/tests/output_manager_service_tests/service.rs @@ -21,7 +21,7 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use std::{collections::HashMap, convert::TryInto, sync::Arc, time::Duration}; - +use tari_core::transactions::key_manager::TariKeyId; use minotari_wallet::{ base_node_service::handle::{BaseNodeEvent, BaseNodeServiceHandle}, connectivity_service::{create_wallet_connectivity_mock, BaseNodePeerManager, WalletConnectivityMock}, @@ -72,7 +72,6 @@ use tari_core::{ SenderTransactionProtocol, }, }; -use tari_key_manager::key_manager_service::{KeyId, KeyManagerInterface}; use tari_script::{inputs, script, TariScript}; use tari_service_framework::reply_channel; use tari_shutdown::Shutdown; @@ -2200,7 +2199,7 @@ async fn scan_for_recovery_test() { .get_next_key(TransactionKeyManagerBranch::CommitmentMask.get_branch_key()) .await .unwrap(); - let script_key_id = KeyId::Derived { + let script_key_id = TariKeyId::Derived { key: (&commitment_mask_key.key_id).into(), }; let public_script_key = oms diff --git a/base_layer/wallet/tests/support/utils.rs b/base_layer/wallet/tests/support/utils.rs index e2ff34bd37..3ec567e7cf 100644 --- a/base_layer/wallet/tests/support/utils.rs +++ b/base_layer/wallet/tests/support/utils.rs @@ -38,7 +38,6 @@ use tari_core::{ transaction_protocol::sender::TransactionSenderMessage, }, }; -use tari_key_manager::key_manager_service::KeyManagerInterface; use tari_script::{inputs, script, TariScript}; pub async fn make_input( diff --git a/base_layer/wallet/tests/transaction_service_tests/service.rs b/base_layer/wallet/tests/transaction_service_tests/service.rs index 9693e4ec5a..beeed0849b 100644 --- a/base_layer/wallet/tests/transaction_service_tests/service.rs +++ b/base_layer/wallet/tests/transaction_service_tests/service.rs @@ -27,6 +27,7 @@ use std::{ sync::Arc, time::Duration, }; +use tari_core::transactions::key_manager::TariKeyId; use blake2::Blake2b; use chacha20poly1305::{Key, KeyInit, XChaCha20Poly1305}; @@ -152,12 +153,11 @@ use tari_core::{ use tari_crypto::{ commitment::HomomorphicCommitmentFactory, extended_range_proof::{ExtendedRangeProofService, Statement}, - keys::{PublicKey as PK, SecretKey as SK}, + keys::{ SecretKey as SK}, ristretto::bulletproofs_plus::RistrettoAggregatedPublicStatement, }; use tari_key_manager::{ cipher_seed::CipherSeed, - key_manager_service::{storage::sqlite_db::KeyManagerSqliteDatabase, KeyId, KeyManagerInterface}, }; use tari_p2p::{comms_connector::pubsub_connector, domain_message::DomainMessage, Network}; use tari_script::{inputs, push_pubkey_script, script, ExecutionStack}; @@ -171,7 +171,7 @@ use tokio::{ task, time::sleep, }; - +use tari_common_types::types::Commitment; use crate::support::{ base_node_service_mock::MockBaseNodeService, comms_and_services::{create_dummy_message, setup_comms_services}, @@ -228,7 +228,7 @@ async fn setup_transaction_service>( OsRng.fill_bytes(&mut key); let key_ga = Key::from_slice(&key); let db_cipher = XChaCha20Poly1305::new(key_ga); - let kms_backend = KeyManagerSqliteDatabase::init(connection, db_cipher); + let kms_backend = TransactionKeyManagerSqliteDatabase::init(connection, db_cipher); let wallet_type = Arc::new(WalletType::ProvidedKeys(ProvidedKeysWallet { public_spend_key: PublicKey::from_secret_key(node_identity.secret_key()), private_spend_key: Some(node_identity.secret_key().clone()), @@ -1507,13 +1507,13 @@ async fn single_transaction_burn_tari() { .finalize(); let challenge = PrivateKey::from_uniform_bytes(&challenge_bytes).unwrap(); assert!(burn_proof.ownership_proof.unwrap().verify( - &burn_proof.commitment, + &burn_proof.commitment.to_commitment().unwrap(), &challenge, factories.commitment.as_ref() )); let statement = RistrettoAggregatedPublicStatement { statements: vec![Statement { - commitment: burn_proof.commitment.clone(), + commitment: burn_proof.commitment.to_commitment().unwrap(), minimum_value_promise: MicroMinotari::zero().as_u64(), }], }; @@ -1528,9 +1528,9 @@ async fn single_transaction_burn_tari() { // Verify recovery of burned output - let shared_secret = CommsDHKE::new(&claim_private_key, &burn_proof.reciprocal_claim_public_key); + let shared_secret = CommsDHKE::new(&claim_private_key, &burn_proof.reciprocal_claim_public_key.to_public_key().unwrap()); let encryption_key = shared_secret_to_output_encryption_key(&shared_secret).unwrap(); - let recovery_key_id = KeyId::Imported { + let recovery_key_id = TariKeyId::Imported { key: PublicKey::from_secret_key(&encryption_key), }; let mut found_burned_output = false; @@ -2980,7 +2980,7 @@ async fn test_power_mode_updates() { let tx_backend = alice_ts_interface.ts_db; let kernel = KernelBuilder::new() - .with_excess(&factories.commitment.zero()) + .with_excess(&Commitment::from_commitment(factories.commitment.zero())) .with_signature(Signature::default()) .build() .unwrap(); @@ -5709,7 +5709,7 @@ async fn broadcast_all_completed_transactions_on_startup() { let db = alice_ts_interface.ts_db.clone(); let kernel = KernelBuilder::new() - .with_excess(&factories.commitment.zero()) + .with_excess(&Commitment::from_commitment(factories.commitment.zero())) .with_signature(Signature::default()) .build() .unwrap(); @@ -6222,7 +6222,7 @@ async fn test_completed_transactions_ordering() { let tx_backend = alice_ts_interface.ts_db; let kernel = KernelBuilder::new() - .with_excess(&factories.commitment.zero()) + .with_excess(&Commitment::from_commitment(factories.commitment.zero())) .with_signature(Signature::default()) .build() .unwrap(); diff --git a/base_layer/wallet/tests/transaction_service_tests/storage.rs b/base_layer/wallet/tests/transaction_service_tests/storage.rs index bcd1af0451..f66114cec8 100644 --- a/base_layer/wallet/tests/transaction_service_tests/storage.rs +++ b/base_layer/wallet/tests/transaction_service_tests/storage.rs @@ -67,11 +67,11 @@ use tari_core::{ SenderTransactionProtocol, }, }; -use tari_crypto::keys::{PublicKey as PublicKeyTrait, SecretKey as SecretKeyTrait}; -use tari_key_manager::key_manager_service::{KeyId, KeyManagerInterface}; +use tari_crypto::keys::{ SecretKey as SecretKeyTrait}; use tari_script::{inputs, script}; use tari_test_utils::random; use tempfile::tempdir; +use tari_core::transactions::key_manager::TariKeyId; pub async fn test_db_backend(backend: T) { let mut db = TransactionDatabase::new(backend); @@ -182,7 +182,7 @@ pub async fn test_db_backend(backend: T) { .get_next_key(TransactionKeyManagerBranch::CommitmentMask.get_branch_key()) .await .unwrap(); - let script_key_id = KeyId::Derived { + let script_key_id = TariKeyId::Derived { key: (&commitment_mask_key.key_id).into(), }; diff --git a/base_layer/wallet_ffi/src/callback_handler_tests.rs b/base_layer/wallet_ffi/src/callback_handler_tests.rs index 61731212fb..59f106086b 100644 --- a/base_layer/wallet_ffi/src/callback_handler_tests.rs +++ b/base_layer/wallet_ffi/src/callback_handler_tests.rs @@ -56,7 +56,7 @@ mod test { ReceiverTransactionProtocol, SenderTransactionProtocol, }; - use tari_crypto::keys::{PublicKey as PublicKeyTrait, SecretKey}; + use tari_crypto::keys::{SecretKey}; use tari_service_framework::reply_channel; use tari_shutdown::Shutdown; use tokio::{ diff --git a/base_layer/wallet_ffi/src/ffi_basenode_state.rs b/base_layer/wallet_ffi/src/ffi_basenode_state.rs index ee35f9766e..f0ee1740e2 100644 --- a/base_layer/wallet_ffi/src/ffi_basenode_state.rs +++ b/base_layer/wallet_ffi/src/ffi_basenode_state.rs @@ -341,7 +341,7 @@ mod tests { fn test_basenode_state_ffi_accessors() { let mut error_code = 0; let original_node_id = NodeId::from_key(&TariPublicKey::new_from_pk( - UncompressedTariPublicKey::new_generator("test").unwrap(), + &UncompressedTariPublicKey::new_generator("test").unwrap(), )); let original_best_block = BlockHash::zero(); diff --git a/base_layer/wallet_ffi/src/lib.rs b/base_layer/wallet_ffi/src/lib.rs index 9a4ee08443..5444fade5a 100644 --- a/base_layer/wallet_ffi/src/lib.rs +++ b/base_layer/wallet_ffi/src/lib.rs @@ -10284,7 +10284,7 @@ mod test { let error_ptr = &mut error as *mut c_int; let spending_key = PrivateKey::random(&mut OsRng); - let commitment = Commitment::from_public_key(&PublicKey::from_secret_key(&spending_key)); + let commitment = Commitment::from_compressed_key(PublicKey::from_secret_key(&spending_key)); let encryption_key = PrivateKey::random(&mut OsRng); let amount = MicroMinotari::from(123456); let encrypted_data = TariEncryptedOpenings::encrypt_data( @@ -12279,7 +12279,7 @@ mod test { let (a_value, ephemeral_pubkey) = PublicKey::random_keypair(&mut OsRng); let (x_value, ephemeral_com) = PublicKey::random_keypair(&mut OsRng); let (y_value, _) = PublicKey::random_keypair(&mut OsRng); - let ephemeral_com = Commitment::from_public_key(&ephemeral_com); + let ephemeral_com = Commitment::from_compressed_key(ephemeral_com.clone()); let a_bytes = Box::into_raw(Box::new(ByteVector(a_value.to_vec()))); let x_bytes = Box::into_raw(Box::new(ByteVector(x_value.to_vec())));