From d3fddbeed8909ef1efabafb7de87f4e6a5099bca Mon Sep 17 00:00:00 2001 From: Cifko Date: Mon, 20 Nov 2023 15:44:15 +0100 Subject: [PATCH] chore: move domain hash names to separate crate --- Cargo.lock | 11 +++++++++++ dan_layer/common_types/Cargo.toml | 1 + dan_layer/common_types/src/hashing.rs | 7 +------ dan_layer/engine_types/Cargo.toml | 1 + dan_layer/engine_types/src/base_layer_hashing.rs | 14 ++------------ dan_layer/engine_types/src/hashing.rs | 7 ++----- dan_layer/wallet/sdk/Cargo.toml | 1 + dan_layer/wallet/sdk/src/confidential/proof.rs | 8 +------- 8 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 29355c8054..8b87f74de3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7814,6 +7814,7 @@ dependencies = [ "tari_common_types", "tari_crypto", "tari_engine_types", + "tari_hash_domains", "tari_mmr", ] @@ -8004,6 +8005,7 @@ dependencies = [ "tari_dan_storage", "tari_dan_wallet_storage_sqlite", "tari_engine_types", + "tari_hash_domains", "tari_key_manager", "tari_template_lib", "tari_transaction", @@ -8051,6 +8053,7 @@ dependencies = [ "tari_bor", "tari_common_types", "tari_crypto", + "tari_hash_domains", "tari_template_abi", "tari_template_lib", "tari_utilities", @@ -8083,6 +8086,14 @@ name = "tari_features" version = "0.52.0-dan.6" source = "git+https://github.com/tari-project/tari.git?branch=feature-dan2#520b433813c035cc8fce5a507cbd4365c67e9c7f" +[[package]] +name = "tari_hash_domains" +version = "0.1.0" +source = "git+https://github.com/tari-project/tari_hash_domains.git#2ccb81e2ce5dbfb213192b67af15aed3f3d0bc03" +dependencies = [ + "tari_crypto", +] + [[package]] name = "tari_indexer" version = "0.1.0" diff --git a/dan_layer/common_types/Cargo.toml b/dan_layer/common_types/Cargo.toml index 43fadc95c3..29fe0c94b0 100644 --- a/dan_layer/common_types/Cargo.toml +++ b/dan_layer/common_types/Cargo.toml @@ -12,6 +12,7 @@ tari_crypto = { version = "0.19", features = ["borsh"] } tari_engine_types = { path = "../engine_types" } tari_bor = { path = "../tari_bor" } tari_mmr = { git = "https://github.com/tari-project/tari.git", branch = "feature-dan2" } +tari_hash_domains = { git = "https://github.com/tari-project/tari_hash_domains.git" } blake2 = "0.10.6" newtype-ops = "0.1.4" diff --git a/dan_layer/common_types/src/hashing.rs b/dan_layer/common_types/src/hashing.rs index 87916be8ee..76bcd7fd3e 100644 --- a/dan_layer/common_types/src/hashing.rs +++ b/dan_layer/common_types/src/hashing.rs @@ -25,6 +25,7 @@ use blake2::{digest::consts::U32, Blake2b}; use tari_crypto::{hash_domain, hashing::DomainSeparatedHasher}; +use tari_hash_domains::ValidatorNodeBmtHashDomain; use tari_mmr::{BalancedBinaryMerkleProof, BalancedBinaryMerkleTree, MergedBalancedBinaryMerkleProof}; use crate::hasher::{tari_hasher, TariHasher}; @@ -55,12 +56,6 @@ fn dan_hasher(label: &'static str) -> TariHasher { tari_hasher::(label) } -// From tari_core -hash_domain!( - ValidatorNodeBmtHashDomain, - "com.tari.base_layer.core.validator_node_mmr", - 1 -); pub type ValidatorNodeBmtHasherBlake2b = DomainSeparatedHasher, ValidatorNodeBmtHashDomain>; pub type ValidatorNodeBalancedMerkleTree = BalancedBinaryMerkleTree; pub type ValidatorNodeMerkleProof = BalancedBinaryMerkleProof; diff --git a/dan_layer/engine_types/Cargo.toml b/dan_layer/engine_types/Cargo.toml index a8cbc45be7..b24b110aa1 100644 --- a/dan_layer/engine_types/Cargo.toml +++ b/dan_layer/engine_types/Cargo.toml @@ -14,6 +14,7 @@ tari_crypto = { version = "0.19", features = ["borsh"] } tari_template_abi = { path = "../template_abi", features = ["std"] } tari_template_lib = { path = "../template_lib" } tari_utilities = "0.6" +tari_hash_domains = { git = "https://github.com/tari-project/tari_hash_domains.git" } borsh = "0.10" base64 = "0.21.0" diff --git a/dan_layer/engine_types/src/base_layer_hashing.rs b/dan_layer/engine_types/src/base_layer_hashing.rs index 009ddafc07..a4a6a9d70c 100644 --- a/dan_layer/engine_types/src/base_layer_hashing.rs +++ b/dan_layer/engine_types/src/base_layer_hashing.rs @@ -28,20 +28,10 @@ use digest::{ consts::{U32, U64}, Digest, }; -use tari_crypto::{ - hash_domain, - hashing::{DomainSeparatedHasher, DomainSeparation}, -}; +use tari_crypto::hashing::{DomainSeparatedHasher, DomainSeparation}; +use tari_hash_domains::{ConfidentialOutputHashDomain, WalletOutputEncryptionKeysDomain}; use tari_template_lib::Hash; -hash_domain!(ConfidentialOutputHashDomain, "com.tari.dan.confidential_output", 1); - -hash_domain!( - WalletOutputEncryptionKeysDomain, - "com.tari.base_layer.wallet.output_encryption_keys", - 1 -); - fn confidential_hasher32(label: &'static str) -> TariBaseLayerHasher32 { TariBaseLayerHasher32::new_with_label::(label) } diff --git a/dan_layer/engine_types/src/hashing.rs b/dan_layer/engine_types/src/hashing.rs index 1fa140dbf4..d3b7840bbf 100644 --- a/dan_layer/engine_types/src/hashing.rs +++ b/dan_layer/engine_types/src/hashing.rs @@ -29,11 +29,10 @@ use blake2::{ use digest::Digest; use serde::Serialize; use tari_bor::encode_into; -use tari_crypto::{hash_domain, hashing::DomainSeparation}; +use tari_crypto::hashing::DomainSeparation; +use tari_hash_domains::TariEngineHashDomain; use tari_template_lib::Hash; -hash_domain!(TariEngineHashDomain, "com.tari.dan.engine", 0); - pub fn hasher64(label: EngineHashDomainLabel) -> TariHasher64 { TariHasher64::new_with_label::(label.as_label()) } @@ -50,8 +49,6 @@ pub fn template_hasher32() -> TariHasher32 { hasher32(EngineHashDomainLabel::Template) } -hash_domain!(ConfidentialOutputHashDomain, "com.tari.dan.confidential_output", 1); - #[derive(Debug, Clone)] pub struct TariHasher32 { hasher: Blake2b, diff --git a/dan_layer/wallet/sdk/Cargo.toml b/dan_layer/wallet/sdk/Cargo.toml index 65cad10b4e..7b4e449bca 100644 --- a/dan_layer/wallet/sdk/Cargo.toml +++ b/dan_layer/wallet/sdk/Cargo.toml @@ -18,6 +18,7 @@ tari_key_manager = { git = "https://github.com/tari-project/tari.git", branch = tari_transaction = { path = "../../transaction" } tari_template_lib = { path = "../../template_lib" } tari_utilities = "0.6" +tari_hash_domains = { git = "https://github.com/tari-project/tari_hash_domains.git" } anyhow = "1.0" async-trait = "0.1" diff --git a/dan_layer/wallet/sdk/src/confidential/proof.rs b/dan_layer/wallet/sdk/src/confidential/proof.rs index 9830b9d066..af8edac361 100644 --- a/dan_layer/wallet/sdk/src/confidential/proof.rs +++ b/dan_layer/wallet/sdk/src/confidential/proof.rs @@ -22,12 +22,12 @@ use tari_crypto::{ commitment::{ExtensionDegree, HomomorphicCommitmentFactory}, errors::RangeProofError, extended_range_proof::ExtendedRangeProofService, - hash_domain, hashing::DomainSeparatedHasher, keys::SecretKey, ristretto::bulletproofs_plus::{BulletproofsPlusService, RistrettoExtendedMask, RistrettoExtendedWitness}, tari_utilities::ByteArray, }; +use tari_hash_domains::TransactionSecureNonceKdfDomain; use tari_template_lib::{ crypto::RistrettoPublicKeyBytes, models::{Amount, ConfidentialOutputProof, ConfidentialStatement, EncryptedData}, @@ -119,12 +119,6 @@ pub fn generate_confidential_proof( fn inner_encrypted_data_kdf_aead(encryption_key: &PrivateKey, commitment: &Commitment) -> EncryptedDataKey32 { let mut aead_key = EncryptedDataKey32::from(SafeArray::default()); - // This has to be the same as the base layer so that burn claims are spendable - hash_domain!( - TransactionSecureNonceKdfDomain, - "com.tari.base_layer.core.transactions.secure_nonce_kdf", - 0 - ); DomainSeparatedHasher::, TransactionSecureNonceKdfDomain>::new_with_label("encrypted_value_and_mask") .chain(encryption_key.as_bytes()) .chain(commitment.as_bytes())