From be18166e62b55b01f66a75082ee0dfa9a801cecc Mon Sep 17 00:00:00 2001 From: Jonas Date: Tue, 22 Oct 2024 13:54:19 +0200 Subject: [PATCH 01/11] refac: extract Hasher and Digest into separate files --- crates/common/src/digest.rs | 103 +++++++++++ crates/common/src/hashchain.rs | 3 +- crates/common/src/hasher.rs | 68 ++++++++ crates/common/src/keys.rs | 2 +- crates/common/src/lib.rs | 2 + crates/common/src/tree.rs | 161 +----------------- crates/da/src/lib.rs | 2 +- .../node_types/lightclient/src/lightclient.rs | 2 +- crates/node_types/prover/src/prover/mod.rs | 11 +- crates/node_types/prover/src/webserver.rs | 4 +- crates/storage/src/database.rs | 2 +- crates/storage/src/inmemory.rs | 2 +- crates/storage/src/redis.rs | 2 +- crates/storage/src/rocksdb.rs | 3 +- crates/zk/sp1/src/main.rs | 5 +- 15 files changed, 200 insertions(+), 172 deletions(-) create mode 100644 crates/common/src/digest.rs create mode 100644 crates/common/src/hasher.rs diff --git a/crates/common/src/digest.rs b/crates/common/src/digest.rs new file mode 100644 index 00000000..ff354248 --- /dev/null +++ b/crates/common/src/digest.rs @@ -0,0 +1,103 @@ +use anyhow::{anyhow, Result}; +use bls12_381::Scalar; +use jmt::RootHash; +use serde::{Deserialize, Serialize}; + +use crate::hasher::Hasher; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Copy)] +pub struct Digest(pub [u8; 32]); + +impl Digest { + pub fn hash(data: impl AsRef<[u8]>) -> Self { + let mut hasher = Hasher::new(); + hasher.update(data.as_ref()); + Self(hasher.finalize()) + } +} + +// serializer and deserializer for rocksdb +// converts from bytearrays into digests +// padds it with zero if it is too small +impl From<[u8; N]> for Digest { + fn from(value: [u8; N]) -> Self { + assert!(N <= 32, "Input array must not exceed 32 bytes"); + let mut digest = [0u8; 32]; + digest[..N].copy_from_slice(&value); + Self(digest) + } +} + +// implementing it for now to get things to compile, curve choice will be made later +impl TryFrom for Scalar { + type Error = anyhow::Error; + + fn try_from(value: Digest) -> Result { + let mut byte_array = [0u8; 32]; + byte_array.copy_from_slice(value.as_ref()); + byte_array.reverse(); + + let val = + [ + u64::from_le_bytes(byte_array[0..8].try_into().map_err(|_| { + anyhow!(format!("slice to array: [0..8] for digest: {value:?}")) + })?), + u64::from_le_bytes(byte_array[8..16].try_into().map_err(|_| { + anyhow!(format!("slice to array: [8..16] for digest: {value:?}")) + })?), + u64::from_le_bytes(byte_array[16..24].try_into().map_err(|_| { + anyhow!(format!("slice to array: [16..24] for digest: {value:?}")) + })?), + u64::from_le_bytes(byte_array[24..32].try_into().map_err(|_| { + anyhow!(format!("slice to array: [24..32] for digest: {value:?}")) + })?), + ]; + + Ok(Scalar::from_raw(val)) + } +} + +impl From for RootHash { + fn from(val: Digest) -> RootHash { + RootHash::from(val.0) + } +} + +impl From for Digest { + fn from(val: RootHash) -> Digest { + Digest(val.0) + } +} + +impl AsRef<[u8]> for Digest { + fn as_ref(&self) -> &[u8] { + &self.0 + } +} + +impl std::fmt::Display for Digest { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.to_hex()) + } +} + +impl Digest { + pub const fn new(bytes: [u8; 32]) -> Self { + Digest(bytes) + } + + pub fn from_hex(hex_str: &str) -> Result { + let mut bytes = [0u8; 32]; + hex::decode_to_slice(hex_str, &mut bytes) + .map_err(|e| anyhow!(format!("Invalid Format: {e}")))?; + Ok(Digest(bytes)) + } + + pub fn to_hex(&self) -> String { + hex::encode(self.0) + } + + pub fn to_bytes(&self) -> [u8; 32] { + self.0 + } +} diff --git a/crates/common/src/hashchain.rs b/crates/common/src/hashchain.rs index 2b588952..11b92037 100644 --- a/crates/common/src/hashchain.rs +++ b/crates/common/src/hashchain.rs @@ -7,12 +7,13 @@ use std::{ }; use crate::{ + digest::Digest, + hasher::Hasher, keys::VerifyingKey, operation::{ AddDataArgs, CreateAccountArgs, KeyOperationArgs, Operation, RegisterServiceArgs, ServiceChallenge, ServiceChallengeInput, }, - tree::{Digest, Hasher}, }; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] diff --git a/crates/common/src/hasher.rs b/crates/common/src/hasher.rs new file mode 100644 index 00000000..75dc6b3c --- /dev/null +++ b/crates/common/src/hasher.rs @@ -0,0 +1,68 @@ +use jmt::SimpleHasher; +use serde::{ser::SerializeTupleStruct, Deserialize, Serialize}; + +#[derive(Debug, Clone, Default)] +pub struct Hasher(sha2::Sha256); + +impl Hasher { + pub fn new() -> Self { + Self(sha2::Sha256::new()) + } + + pub fn update(&mut self, data: &[u8]) { + self.0.update(data); + } + + pub fn finalize(self) -> [u8; 32] { + self.0.finalize() + } +} + +impl Serialize for Hasher { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_tuple_struct("Sha256Wrapper", 0)?.end() + } +} + +impl<'de> Deserialize<'de> for Hasher { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + struct Sha256WrapperVisitor; + + impl<'de> serde::de::Visitor<'de> for Sha256WrapperVisitor { + type Value = Hasher; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + formatter.write_str("a Sha256Wrapper") + } + + fn visit_seq(self, _seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + Ok(Hasher::default()) + } + } + + deserializer.deserialize_tuple_struct("Sha256Wrapper", 0, Sha256WrapperVisitor) + } +} + +impl SimpleHasher for Hasher { + fn new() -> Self { + Self::new() + } + + fn update(&mut self, data: &[u8]) { + self.update(data); + } + + fn finalize(self) -> [u8; 32] { + self.finalize() + } +} diff --git a/crates/common/src/keys.rs b/crates/common/src/keys.rs index c31a8c57..77704d92 100644 --- a/crates/common/src/keys.rs +++ b/crates/common/src/keys.rs @@ -11,7 +11,7 @@ use secp256k1::{ use serde::{Deserialize, Serialize}; use std::{self}; -use crate::tree::Digest; +use crate::digest::Digest; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq, Hash)] /// Represents a public key supported by the system. diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index b3407bbb..a5f62ddb 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -1,4 +1,6 @@ +pub mod digest; pub mod hashchain; +pub mod hasher; pub mod keys; pub mod operation; pub mod tree; diff --git a/crates/common/src/tree.rs b/crates/common/src/tree.rs index e6886b43..ad0b6161 100644 --- a/crates/common/src/tree.rs +++ b/crates/common/src/tree.rs @@ -1,20 +1,18 @@ use anyhow::{anyhow, bail, Context, Result}; use bincode; -use bls12_381::Scalar; use jmt::{ proof::{SparseMerkleProof, UpdateMerkleProof}, storage::{NodeBatch, TreeReader, TreeUpdateBatch, TreeWriter}, - JellyfishMerkleTree, KeyHash, RootHash, SimpleHasher, + JellyfishMerkleTree, KeyHash, RootHash, }; use prism_errors::DatabaseError; -use serde::{ser::SerializeTupleStruct, Deserialize, Serialize}; -use std::{ - convert::{From, Into}, - sync::Arc, -}; +use serde::{Deserialize, Serialize}; +use std::{convert::Into, sync::Arc}; use crate::{ + digest::Digest, hashchain::{Hashchain, HashchainEntry}, + hasher::Hasher, operation::{ AddDataArgs, CreateAccountArgs, KeyOperationArgs, Operation, RegisterServiceArgs, ServiceChallenge, ServiceChallengeInput, @@ -26,155 +24,6 @@ use HashchainResponse::*; pub const SPARSE_MERKLE_PLACEHOLDER_HASH: Digest = Digest::new(*b"SPARSE_MERKLE_PLACEHOLDER_HASH__"); -#[derive(Debug, Clone, Default)] -pub struct Hasher(sha2::Sha256); - -impl Serialize for Hasher { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_tuple_struct("Sha256Wrapper", 0)?.end() - } -} - -impl<'de> Deserialize<'de> for Hasher { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - struct Sha256WrapperVisitor; - - impl<'de> serde::de::Visitor<'de> for Sha256WrapperVisitor { - type Value = Hasher; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - formatter.write_str("a Sha256Wrapper") - } - - fn visit_seq(self, _seq: A) -> Result - where - A: serde::de::SeqAccess<'de>, - { - Ok(Hasher::default()) - } - } - - deserializer.deserialize_tuple_struct("Sha256Wrapper", 0, Sha256WrapperVisitor) - } -} - -impl SimpleHasher for Hasher { - fn new() -> Self { - Self(sha2::Sha256::new()) - } - - fn update(&mut self, data: &[u8]) { - self.0.update(data); - } - - fn finalize(self) -> [u8; 32] { - self.0.finalize() - } -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Copy)] -pub struct Digest(pub [u8; 32]); - -impl Digest { - pub fn hash(data: impl AsRef<[u8]>) -> Self { - let mut hasher = Hasher::new(); - hasher.update(data.as_ref()); - Self(hasher.finalize()) - } -} - -// serializer and deserializer for rocksdb -// converts from bytearrays into digests -// padds it with zero if it is too small -impl From<[u8; N]> for Digest { - fn from(value: [u8; N]) -> Self { - assert!(N <= 32, "Input array must not exceed 32 bytes"); - let mut digest = [0u8; 32]; - digest[..N].copy_from_slice(&value); - Self(digest) - } -} - -// implementing it for now to get things to compile, curve choice will be made later -impl TryFrom for Scalar { - type Error = anyhow::Error; - - fn try_from(value: Digest) -> Result { - let mut byte_array = [0u8; 32]; - byte_array.copy_from_slice(value.as_ref()); - byte_array.reverse(); - - let val = - [ - u64::from_le_bytes(byte_array[0..8].try_into().map_err(|_| { - anyhow!(format!("slice to array: [0..8] for digest: {value:?}")) - })?), - u64::from_le_bytes(byte_array[8..16].try_into().map_err(|_| { - anyhow!(format!("slice to array: [8..16] for digest: {value:?}")) - })?), - u64::from_le_bytes(byte_array[16..24].try_into().map_err(|_| { - anyhow!(format!("slice to array: [16..24] for digest: {value:?}")) - })?), - u64::from_le_bytes(byte_array[24..32].try_into().map_err(|_| { - anyhow!(format!("slice to array: [24..32] for digest: {value:?}")) - })?), - ]; - - Ok(Scalar::from_raw(val)) - } -} - -impl From for RootHash { - fn from(val: Digest) -> RootHash { - RootHash::from(val.0) - } -} - -impl From for Digest { - fn from(val: RootHash) -> Digest { - Digest(val.0) - } -} - -impl AsRef<[u8]> for Digest { - fn as_ref(&self) -> &[u8] { - &self.0 - } -} - -impl std::fmt::Display for Digest { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.to_hex()) - } -} - -impl Digest { - pub const fn new(bytes: [u8; 32]) -> Self { - Digest(bytes) - } - - pub fn from_hex(hex_str: &str) -> Result { - let mut bytes = [0u8; 32]; - hex::decode_to_slice(hex_str, &mut bytes) - .map_err(|e| anyhow!(format!("Invalid Format: {e}")))?; - Ok(Digest(bytes)) - } - - pub fn to_hex(&self) -> String { - hex::encode(self.0) - } - - pub fn to_bytes(&self) -> [u8; 32] { - self.0 - } -} - #[derive(Serialize, Deserialize)] pub struct Batch { pub prev_root: Digest, diff --git a/crates/da/src/lib.rs b/crates/da/src/lib.rs index 2156b1c3..adf79c71 100644 --- a/crates/da/src/lib.rs +++ b/crates/da/src/lib.rs @@ -1,7 +1,7 @@ use anyhow::Result; use async_trait::async_trait; use ed25519_consensus::{Signature, SigningKey, VerificationKey as VerifyingKey}; -use prism_common::{operation::Operation, tree::Digest}; +use prism_common::{digest::Digest, operation::Operation}; use serde::{Deserialize, Serialize}; use sp1_sdk::SP1ProofWithPublicValues; use tokio::sync::broadcast; diff --git a/crates/node_types/lightclient/src/lightclient.rs b/crates/node_types/lightclient/src/lightclient.rs index 0d199359..c3ab367e 100644 --- a/crates/node_types/lightclient/src/lightclient.rs +++ b/crates/node_types/lightclient/src/lightclient.rs @@ -1,6 +1,6 @@ use anyhow::{Context, Result}; use ed25519_consensus::VerificationKey as VerifyingKey; -use prism_common::tree::Digest; +use prism_common::digest::Digest; use prism_da::{celestia::CelestiaConfig, DataAvailabilityLayer}; use prism_errors::{DataAvailabilityError, GeneralError}; use sp1_sdk::{ProverClient, SP1VerifyingKey}; diff --git a/crates/node_types/prover/src/prover/mod.rs b/crates/node_types/prover/src/prover/mod.rs index b6bf14c9..120fafd4 100644 --- a/crates/node_types/prover/src/prover/mod.rs +++ b/crates/node_types/prover/src/prover/mod.rs @@ -2,9 +2,14 @@ use anyhow::{anyhow, bail, Context, Result}; use ed25519_consensus::SigningKey; use jmt::KeyHash; use keystore_rs::create_signing_key; -use prism_common::tree::{ - Batch, Digest, HashchainResponse, HashchainResponse::*, Hasher, KeyDirectoryTree, Proof, - SnarkableTree, +use prism_common::{ + digest::Digest, + hasher::Hasher, + tree::{ + Batch, + HashchainResponse::{self, *}, + KeyDirectoryTree, Proof, SnarkableTree, + }, }; use prism_errors::DataAvailabilityError; use std::{self, collections::VecDeque, sync::Arc}; diff --git a/crates/node_types/prover/src/webserver.rs b/crates/node_types/prover/src/webserver.rs index 168d9c8b..325d177d 100644 --- a/crates/node_types/prover/src/webserver.rs +++ b/crates/node_types/prover/src/webserver.rs @@ -13,9 +13,7 @@ use indexed_merkle_tree::{ }; use jmt::proof::SparseMerkleProof; use prism_common::{ - hashchain::Hashchain, - operation::Operation, - tree::{HashchainResponse, Hasher}, + hashchain::Hashchain, hasher::Hasher, operation::Operation, tree::HashchainResponse, }; use serde::{Deserialize, Serialize}; use std::{self, sync::Arc}; diff --git a/crates/storage/src/database.rs b/crates/storage/src/database.rs index 51bf0108..85f2e6b1 100644 --- a/crates/storage/src/database.rs +++ b/crates/storage/src/database.rs @@ -1,7 +1,7 @@ use anyhow::Result; use auto_impl::auto_impl; use jmt::storage::{TreeReader, TreeWriter}; -use prism_common::tree::Digest; +use prism_common::digest::Digest; use prism_errors::{DatabaseError, PrismError}; #[auto_impl(&, Box, Arc)] diff --git a/crates/storage/src/inmemory.rs b/crates/storage/src/inmemory.rs index 4990e521..bc7a2e00 100644 --- a/crates/storage/src/inmemory.rs +++ b/crates/storage/src/inmemory.rs @@ -3,7 +3,7 @@ use jmt::{ storage::{LeafNode, Node, NodeBatch, NodeKey, TreeReader, TreeWriter}, KeyHash, OwnedValue, Version, }; -use prism_common::tree::Digest; +use prism_common::digest::Digest; use prism_errors::DatabaseError; use std::{ collections::HashMap, diff --git a/crates/storage/src/redis.rs b/crates/storage/src/redis.rs index 910bdff4..1ad6ed1a 100644 --- a/crates/storage/src/redis.rs +++ b/crates/storage/src/redis.rs @@ -4,6 +4,7 @@ use jmt::{ KeyHash, OwnedValue, Version, }; use mockall::predicate::*; +use prism_common::digest::Digest; use redis::{Client, Commands, Connection}; use serde::{Deserialize, Serialize}; use std::{ @@ -14,7 +15,6 @@ use std::{ time::Duration, }; -use prism_common::tree::Digest; use prism_errors::DatabaseError; use crate::database::{convert_to_connection_error, Database}; diff --git a/crates/storage/src/rocksdb.rs b/crates/storage/src/rocksdb.rs index 5dba41d5..ac426d29 100644 --- a/crates/storage/src/rocksdb.rs +++ b/crates/storage/src/rocksdb.rs @@ -4,7 +4,7 @@ use jmt::{ storage::{LeafNode, Node, NodeBatch, NodeKey, TreeReader, TreeWriter}, KeyHash, OwnedValue, Version, }; -use prism_common::tree::Digest; +use prism_common::digest::Digest; use prism_errors::DatabaseError; use rocksdb::{DBWithThreadMode, MultiThreaded, Options, DB}; @@ -109,7 +109,6 @@ impl TreeReader for RocksDBConnection { #[cfg(test)] mod tests { use super::*; - use prism_common::tree::Digest; use tempfile::TempDir; #[test] diff --git a/crates/zk/sp1/src/main.rs b/crates/zk/sp1/src/main.rs index c12f82b6..5669ef0b 100644 --- a/crates/zk/sp1/src/main.rs +++ b/crates/zk/sp1/src/main.rs @@ -1,7 +1,10 @@ #![no_main] sp1_zkvm::entrypoint!(main); -use prism_common::tree::{Batch, Digest, Proof}; +use prism_common::{ + digest::Digest, + tree::{Batch, Proof}, +}; pub fn main() { let batch = sp1_zkvm::io::read::(); From 3f12a35637bb61696e82fd400699a7b1ec81a626 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 16:54:51 +0200 Subject: [PATCH 02/11] feat: convenience method for zero hashes --- crates/common/src/digest.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/common/src/digest.rs b/crates/common/src/digest.rs index ff354248..f8014237 100644 --- a/crates/common/src/digest.rs +++ b/crates/common/src/digest.rs @@ -14,6 +14,10 @@ impl Digest { hasher.update(data.as_ref()); Self(hasher.finalize()) } + + pub const fn zero() -> Self { + Self([0u8; 32]) + } } // serializer and deserializer for rocksdb From 3ccabd95cd2d040cffc0fb3f2c5b8e5a93008381 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:04:05 +0200 Subject: [PATCH 03/11] feat: add previous hash to operations This serves as a nonce to protect against replay attacks. --- crates/common/src/hashchain.rs | 16 ++++++++----- crates/common/src/operation.rs | 42 ++++++++++++++++++++++++++++++---- crates/common/src/tree.rs | 6 +++-- 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/crates/common/src/hashchain.rs b/crates/common/src/hashchain.rs index 11b92037..b5bce708 100644 --- a/crates/common/src/hashchain.rs +++ b/crates/common/src/hashchain.rs @@ -73,17 +73,19 @@ impl Hashchain { pub fn create_account( id: String, value: VerifyingKey, - signature: Vec, service_id: String, challenge: ServiceChallengeInput, + prev_hash: Digest, + signature: Vec, ) -> Result { let mut hc = Hashchain::empty(id.clone()); let operation = Operation::CreateAccount(CreateAccountArgs { id, - signature, value, service_id, challenge, + prev_hash, + signature, }); hc.perform_operation(operation)?; Ok(hc) @@ -94,6 +96,7 @@ impl Hashchain { let operation = Operation::RegisterService(RegisterServiceArgs { id, creation_gate: challenge, + prev_hash: Digest::zero(), }); hc.perform_operation(operation)?; Ok(hc) @@ -270,15 +273,16 @@ impl Hashchain { &self.entries[idx] } + pub fn last_hash(&self) -> Digest { + self.last().map_or(Digest::zero(), |entry| entry.hash) + } + fn push(&mut self, operation: Operation) -> Result { if operation.id() != self.id { bail!("Operation ID does not match Hashchain ID"); } - let previous_hash = self - .entries - .last() - .map_or(Digest::new([0u8; 32]), |entry| entry.hash); + let previous_hash = self.last_hash(); let entry = HashchainEntry::new(operation, previous_hash); self.entries.push(entry.clone()); diff --git a/crates/common/src/operation.rs b/crates/common/src/operation.rs index 232a7e64..30deacfc 100644 --- a/crates/common/src/operation.rs +++ b/crates/common/src/operation.rs @@ -5,7 +5,10 @@ use prism_errors::GeneralError; use serde::{Deserialize, Serialize}; use std::{self, fmt::Display}; -use crate::keys::{SigningKey, VerifyingKey}; +use crate::{ + digest::Digest, + keys::{SigningKey, VerifyingKey}, +}; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] /// An [`Operation`] represents a state transition in the system. @@ -65,11 +68,14 @@ pub struct CreateAccountArgs { pub id: String, /// Public key being added pub value: VerifyingKey, - pub signature: Vec, /// Associated service ID pub service_id: String, /// Challenge input for verification pub challenge: ServiceChallengeInput, + /// The hash of the previous operation + pub prev_hash: Digest, + /// The signature that signed the operation + pub signature: Vec, } #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] @@ -79,6 +85,8 @@ pub struct RegisterServiceArgs { pub id: String, /// Challenge gate for access control pub creation_gate: ServiceChallenge, + /// The hash of the previous operation + pub prev_hash: Digest, } #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] @@ -101,6 +109,8 @@ pub struct AddDataArgs { pub value: Vec, /// Optional external signature used to sign the data to be added pub value_signature: Option, + /// The hash of the previous operation + pub prev_hash: Digest, /// Signature to authorize the action pub op_signature: HashchainSignatureBundle, } @@ -112,6 +122,8 @@ pub struct KeyOperationArgs { pub id: String, /// Public key being added or revoked pub value: VerifyingKey, + /// The hash of the previous operation + pub prev_hash: Digest, /// Signature to authorize the action pub signature: HashchainSignatureBundle, } @@ -128,6 +140,7 @@ impl Operation { value: signing_key.clone().verifying_key(), service_id, challenge: ServiceChallengeInput::Signed(Vec::new()), + prev_hash: Digest::zero(), signature: Vec::new(), }); @@ -147,18 +160,24 @@ impl Operation { } pub fn new_register_service(id: String, creation_gate: ServiceChallenge) -> Self { - Operation::RegisterService(RegisterServiceArgs { id, creation_gate }) + Operation::RegisterService(RegisterServiceArgs { + id, + creation_gate, + prev_hash: Digest::zero(), + }) } pub fn new_add_key( id: String, value: VerifyingKey, + prev_hash: Digest, signing_key: &SigningKey, key_idx: usize, ) -> Result { let op_to_sign = Operation::AddKey(KeyOperationArgs { id: id.clone(), value: value.clone(), + prev_hash, signature: HashchainSignatureBundle::empty_with_idx(key_idx), }); @@ -171,6 +190,7 @@ impl Operation { Ok(Operation::AddKey(KeyOperationArgs { id, value, + prev_hash, signature, })) } @@ -178,12 +198,14 @@ impl Operation { pub fn new_revoke_key( id: String, value: VerifyingKey, + prev_hash: Digest, signing_key: &SigningKey, key_idx: usize, ) -> Result { let op_to_sign = Operation::RevokeKey(KeyOperationArgs { id: id.clone(), value: value.clone(), + prev_hash, signature: HashchainSignatureBundle::empty_with_idx(key_idx), }); @@ -196,6 +218,7 @@ impl Operation { Ok(Operation::RevokeKey(KeyOperationArgs { id, value, + prev_hash, signature, })) } @@ -204,6 +227,7 @@ impl Operation { id: String, value: Vec, value_signature: Option, + prev_hash: Digest, signing_key: &SigningKey, key_idx: usize, ) -> Result { @@ -211,6 +235,7 @@ impl Operation { id: id.clone(), value: value.clone(), value_signature: value_signature.clone(), + prev_hash, op_signature: HashchainSignatureBundle::empty_with_idx(key_idx), }); @@ -224,6 +249,7 @@ impl Operation { id, value, value_signature, + prev_hash, op_signature, })) } @@ -264,9 +290,10 @@ impl Operation { Operation::CreateAccount(args) => Operation::CreateAccount(CreateAccountArgs { id: args.id.clone(), value: args.value.clone(), - signature: args.signature.clone(), service_id: args.service_id.clone(), challenge: ServiceChallengeInput::Signed(Vec::new()), + prev_hash: args.prev_hash, + signature: args.signature.clone(), }), _ => self.clone(), } @@ -277,6 +304,7 @@ impl Operation { Operation::AddKey(args) => Operation::AddKey(KeyOperationArgs { id: args.id.clone(), value: args.value.clone(), + prev_hash: args.prev_hash, signature: HashchainSignatureBundle { key_idx: args.signature.key_idx, signature: Vec::new(), @@ -285,6 +313,7 @@ impl Operation { Operation::RevokeKey(args) => Operation::RevokeKey(KeyOperationArgs { id: args.id.clone(), value: args.value.clone(), + prev_hash: args.prev_hash, signature: HashchainSignatureBundle { key_idx: args.signature.key_idx, signature: Vec::new(), @@ -293,6 +322,7 @@ impl Operation { Operation::AddData(args) => Operation::AddData(AddDataArgs { id: args.id.clone(), value: args.value.clone(), + prev_hash: args.prev_hash, value_signature: args.value_signature.clone(), op_signature: HashchainSignatureBundle { key_idx: args.op_signature.key_idx, @@ -302,13 +332,15 @@ impl Operation { Operation::CreateAccount(args) => Operation::CreateAccount(CreateAccountArgs { id: args.id.clone(), value: args.value.clone(), - signature: Vec::new(), service_id: args.service_id.clone(), challenge: args.challenge.clone(), + prev_hash: args.prev_hash, + signature: Vec::new(), }), Operation::RegisterService(args) => Operation::RegisterService(RegisterServiceArgs { id: args.id.clone(), creation_gate: args.creation_gate.clone(), + prev_hash: args.prev_hash, }), } } diff --git a/crates/common/src/tree.rs b/crates/common/src/tree.rs index ad0b6161..83dac118 100644 --- a/crates/common/src/tree.rs +++ b/crates/common/src/tree.rs @@ -258,9 +258,10 @@ where Operation::CreateAccount(CreateAccountArgs { id, value, - signature, service_id, challenge, + prev_hash, + signature, }) => { let hashed_id = Digest::hash(id); let account_key_hash = KeyHash::with::(hashed_id); @@ -295,9 +296,10 @@ where let new_account_chain = Hashchain::create_account( id.clone(), value.clone(), - signature.clone(), service_id.clone(), challenge.clone(), + *prev_hash, + signature.clone(), )?; let new_account_entry = new_account_chain.last().unwrap(); From ab9ac554bab67d6362133a957462be11fd26c77b Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:09:30 +0200 Subject: [PATCH 04/11] build: jmt dependency in integration test crate --- Cargo.lock | 3 ++- crates/tests/Cargo.toml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index e8e79414..a698f31a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -4827,6 +4827,7 @@ name = "prism-tests" version = "0.1.0" dependencies = [ "anyhow", + "jmt", "keystore-rs", "log", "pretty_env_logger", diff --git a/crates/tests/Cargo.toml b/crates/tests/Cargo.toml index 1961c882..4d88f506 100644 --- a/crates/tests/Cargo.toml +++ b/crates/tests/Cargo.toml @@ -17,6 +17,7 @@ mock_prover = [] log = { workspace = true } pretty_env_logger = { workspace = true } anyhow = { workspace = true } +jmt = { workspace = true } keystore-rs = { workspace = true } prism-common = { workspace = true, features = ["test_utils"] } prism-storage = { workspace = true } From f828c65593bd51f9b2b869956e93012e6d0bf8a4 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:11:11 +0200 Subject: [PATCH 05/11] test: use prev_hash in test utils --- crates/common/src/test_utils.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/common/src/test_utils.rs b/crates/common/src/test_utils.rs index 626fe722..2ed4831c 100644 --- a/crates/common/src/test_utils.rs +++ b/crates/common/src/test_utils.rs @@ -116,6 +116,7 @@ impl TestTreeState { let op = Operation::new_add_key( account.hashchain.id.clone(), key_to_add.clone(), + account.hashchain.last_hash(), self.signing_keys.get(&account.hashchain.id).unwrap(), 0, )?; @@ -154,10 +155,13 @@ impl TestTreeState { let op_signing_key = self.signing_keys.get(&account.hashchain.id).unwrap(); + let prev_hash = account.hashchain.last_hash(); + let op = Operation::new_add_signed_data( account.hashchain.id.clone(), data.to_vec(), signature_bundle, + prev_hash, op_signing_key, 0, )?; @@ -229,8 +233,14 @@ pub fn create_random_update(state: &mut TestTreeState, rng: &mut StdRng) -> Upda .ok_or_else(|| anyhow::anyhow!("Signing key not found for hashchain")) .unwrap(); - let operation = - Operation::new_add_key(hc.id.clone(), verifying_key.clone(), signer, 0).unwrap(); + let operation = Operation::new_add_key( + hc.id.clone(), + verifying_key.clone(), + hc.last_hash(), + signer, + 0, + ) + .unwrap(); hc.perform_operation(operation) .expect("Adding to hashchain should succeed"); From 3c5a2c769a997bd756bc5ed5ba8127d188810aa3 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:14:46 +0200 Subject: [PATCH 06/11] test: use prev_hash in integration tests --- crates/tests/src/lib.rs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/crates/tests/src/lib.rs b/crates/tests/src/lib.rs index d9ab4660..7cf13f76 100644 --- a/crates/tests/src/lib.rs +++ b/crates/tests/src/lib.rs @@ -3,11 +3,15 @@ #[macro_use] extern crate log; -use anyhow::Result; +use anyhow::{bail, Result}; +use jmt::KeyHash; use keystore_rs::create_signing_key; use prism_common::{ + digest::Digest, + hasher::Hasher, operation::{Operation, ServiceChallenge}, test_utils::create_mock_signing_key, + tree::{HashchainResponse::*, SnarkableTree}, }; use prism_da::{ celestia::{CelestiaConfig, CelestiaConnection}, @@ -28,10 +32,16 @@ fn create_random_user(id: &str, state: &mut TestTreeState, service: &Service) -> } fn add_key(id: &str, state: &mut TestTreeState) -> Result { - let signing_key = state - .signing_keys - .get(id) - .ok_or_else(|| anyhow::anyhow!("Signing key not found for account {}", id))?; + let hashed_id = Digest::hash(id); + let key_hash = KeyHash::with::(hashed_id); + + let Found(hc, _) = state.tree.get(key_hash)? else { + bail!("Hashchain not found for account {}", id); + }; + + let Some(signing_key) = state.signing_keys.get(id) else { + bail!("Signing key not found for account {}", id); + }; let new_key = create_mock_signing_key(); let new_public_key = new_key.verifying_key(); @@ -39,6 +49,7 @@ fn add_key(id: &str, state: &mut TestTreeState) -> Result { let op = Operation::new_add_key( id.to_string(), new_public_key, + hc.last_hash(), signing_key, 0, // Assuming this is the key index, you might need to adjust this )?; From 67f7091afab8e8c3fec4e7bcbc82792c7ad8fd28 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:19:38 +0200 Subject: [PATCH 07/11] test: introduce builder for creating operations in tests --- crates/common/src/lib.rs | 2 + crates/common/src/test_ops.rs | 310 ++++++++++++++++++++++++++++++++++ 2 files changed, 312 insertions(+) create mode 100644 crates/common/src/test_ops.rs diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index a5f62ddb..18b0a2be 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -8,5 +8,7 @@ pub mod tree; #[macro_use] extern crate log; +#[cfg(feature = "test_utils")] +pub mod test_ops; #[cfg(feature = "test_utils")] pub mod test_utils; diff --git a/crates/common/src/test_ops.rs b/crates/common/src/test_ops.rs new file mode 100644 index 00000000..2fe94f27 --- /dev/null +++ b/crates/common/src/test_ops.rs @@ -0,0 +1,310 @@ +use std::{collections::HashMap, sync::Arc}; + +use jmt::{mock::MockTreeStore, KeyHash}; + +use crate::{ + digest::Digest, + hasher::Hasher, + keys::{SigningKey, VerifyingKey}, + operation::{Operation, SignatureBundle}, + test_utils::create_mock_signing_key, + tree::{HashchainResponse::*, KeyDirectoryTree, SnarkableTree}, +}; + +enum PostCommitAction { + UpdateStorageOnly, + RememberServiceKey(String, SigningKey), + RememberAccountKey(String, SigningKey), +} + +pub struct UncommittedOperation<'a> { + operation: Operation, + builder: &'a mut OpsBuilder, + post_commit_action: PostCommitAction, +} + +impl UncommittedOperation<'_> { + pub fn ex(self) -> Operation { + self.builder + .tree + .process_operation(&self.operation) + .expect("Processing operation should work"); + + match self.post_commit_action { + PostCommitAction::UpdateStorageOnly => (), + PostCommitAction::RememberAccountKey(id, account_key) => { + self.builder.account_keys.insert(id, account_key); + } + PostCommitAction::RememberServiceKey(id, service_key) => { + self.builder.service_keys.insert(id, service_key); + } + } + + self.operation + } + + pub fn op(self) -> Operation { + self.operation + } +} + +pub struct OpsBuilder { + /// Simulated hashchain storage that is mutated when operations are applied + tree: Box, + /// Remembers private keys of services to simulate account creation via an external service + service_keys: HashMap, + /// Remembers private keys of accounts to simulate actions on behalf of these accounts + account_keys: HashMap, +} + +impl Default for OpsBuilder { + fn default() -> Self { + let store = Arc::new(MockTreeStore::default()); + let tree = Box::new(KeyDirectoryTree::new(store)); + let service_keys = HashMap::new(); + let account_keys = HashMap::new(); + + Self { + tree, + service_keys, + account_keys, + } + } +} + +impl OpsBuilder { + pub fn new() -> Self { + Self::default() + } + + pub fn register_service_with_random_key(&mut self, id: &str) -> UncommittedOperation { + let random_service_key = create_mock_signing_key(); + self.register_service(id, random_service_key) + } + + pub fn register_service( + &mut self, + id: &str, + service_signing_key: SigningKey, + ) -> UncommittedOperation { + let op = + Operation::new_register_service(id.to_string(), service_signing_key.clone().into()); + + UncommittedOperation { + operation: op, + builder: self, + post_commit_action: PostCommitAction::RememberServiceKey( + id.to_string(), + service_signing_key, + ), + } + } + + pub fn create_account_with_random_key( + &mut self, + id: &str, + service_id: &str, + ) -> UncommittedOperation { + let random_signing_key = create_mock_signing_key(); + self.create_account(id, service_id, random_signing_key) + } + + pub fn create_account( + &mut self, + id: &str, + service_id: &str, + signing_key: SigningKey, + ) -> UncommittedOperation { + let Some(service_signing_key) = self.service_keys.get(service_id) else { + panic!("No existing service found for {}", service_id) + }; + + let op = Operation::new_create_account( + id.to_string(), + &signing_key, + service_id.to_string(), + service_signing_key, + ) + .expect("Creating account operation should work"); + + UncommittedOperation { + operation: op, + builder: self, + post_commit_action: PostCommitAction::RememberAccountKey(id.to_string(), signing_key), + } + } + + pub fn add_random_key_verified_with_root(&mut self, id: &str) -> UncommittedOperation { + let Some(account_signing_key) = self.account_keys.get(id).cloned() else { + panic!("No existing account key for {}", id) + }; + + self.add_random_key(id, &account_signing_key, 0) + } + + pub fn add_random_key( + &mut self, + id: &str, + signing_key: &SigningKey, + key_idx: usize, + ) -> UncommittedOperation { + let random_key = create_mock_signing_key().verifying_key(); + self.add_key(id, random_key, signing_key, key_idx) + } + + pub fn add_key_verified_with_root( + &mut self, + id: &str, + key: VerifyingKey, + ) -> UncommittedOperation { + let Some(account_signing_key) = self.account_keys.get(id).cloned() else { + panic!("No existing account key for {}", id) + }; + + self.add_key(id, key, &account_signing_key, 0) + } + + pub fn add_key( + &mut self, + id: &str, + key: VerifyingKey, + signing_key: &SigningKey, + key_idx: usize, + ) -> UncommittedOperation { + let hashed_id = Digest::hash(id); + let key_hash = KeyHash::with::(hashed_id); + + let Ok(Found(hc, _)) = self.tree.get(key_hash) else { + panic!("No existing hashchain found for {}", id) + }; + + let op = Operation::new_add_key(id.to_string(), key, hc.last_hash(), signing_key, key_idx) + .expect("Creating add-key operation should work"); + + UncommittedOperation { + operation: op, + builder: self, + post_commit_action: PostCommitAction::UpdateStorageOnly, + } + } + + pub fn revoke_key_verified_with_root( + &mut self, + id: &str, + key: VerifyingKey, + ) -> UncommittedOperation { + let Some(account_signing_key) = self.account_keys.get(id).cloned() else { + panic!("No existing account key for {}", id) + }; + + self.revoke_key(id, key, &account_signing_key, 0) + } + + pub fn revoke_key( + &mut self, + id: &str, + key: VerifyingKey, + signing_key: &SigningKey, + key_idx: usize, + ) -> UncommittedOperation { + let hashed_id = Digest::hash(id); + let key_hash = KeyHash::with::(hashed_id); + + let Ok(Found(hc, _)) = self.tree.get(key_hash) else { + panic!("No existing hashchain found for {}", id) + }; + + let op = + Operation::new_revoke_key(id.to_string(), key, hc.last_hash(), signing_key, key_idx) + .expect("Creating account operation should work"); + + UncommittedOperation { + operation: op, + builder: self, + post_commit_action: PostCommitAction::UpdateStorageOnly, + } + } + + pub fn add_signed_data( + &mut self, + id: &str, + value: Vec, + value_signature: SignatureBundle, + signing_key: &SigningKey, + key_idx: usize, + ) -> UncommittedOperation { + self.add_data(id, value, Some(value_signature), signing_key, key_idx) + } + + pub fn add_signed_data_verified_with_root( + &mut self, + id: &str, + value: Vec, + value_signature: SignatureBundle, + ) -> UncommittedOperation { + self.add_data_verified_with_root(id, value, Some(value_signature)) + } + + pub fn add_unsigned_data( + &mut self, + id: &str, + value: Vec, + signing_key: &SigningKey, + key_idx: usize, + ) -> UncommittedOperation { + self.add_data(id, value, None, signing_key, key_idx) + } + + pub fn add_unsigned_data_verified_with_root( + &mut self, + id: &str, + value: Vec, + ) -> UncommittedOperation { + self.add_data_verified_with_root(id, value, None) + } + + fn add_data_verified_with_root( + &mut self, + id: &str, + value: Vec, + value_signature: Option, + ) -> UncommittedOperation { + let Some(account_signing_key) = self.account_keys.get(id).cloned() else { + panic!("No existing account key for {}", id) + }; + + self.add_data(id, value, value_signature, &account_signing_key, 0) + } + + fn add_data( + &mut self, + id: &str, + value: Vec, + value_signature: Option, + signing_key: &SigningKey, + key_idx: usize, + ) -> UncommittedOperation { + let hashed_id = Digest::hash(id); + let key_hash = KeyHash::with::(hashed_id); + + let Ok(Found(hc, _)) = self.tree.get(key_hash) else { + panic!("No existing hashchain found for {}", id) + }; + + let op = Operation::new_add_signed_data( + id.to_string(), + value, + value_signature, + hc.last_hash(), + signing_key, + key_idx, + ) + .expect("Creating add-data operation should work"); + + UncommittedOperation { + operation: op, + builder: self, + post_commit_action: PostCommitAction::UpdateStorageOnly, + } + } +} From d4104c74125257f1b491db3f4726e0943c0fda96 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:20:08 +0200 Subject: [PATCH 08/11] test: use OpsBuilder in prover unit tests --- crates/node_types/prover/src/prover/tests.rs | 116 ++++++------------- 1 file changed, 34 insertions(+), 82 deletions(-) diff --git a/crates/node_types/prover/src/prover/tests.rs b/crates/node_types/prover/src/prover/tests.rs index a531a506..b0cc56a7 100644 --- a/crates/node_types/prover/src/prover/tests.rs +++ b/crates/node_types/prover/src/prover/tests.rs @@ -1,5 +1,5 @@ use super::*; -use prism_common::tree::Proof; +use prism_common::{test_ops::OpsBuilder, tree::Proof}; use std::{self, sync::Arc, time::Duration}; use tokio::spawn; @@ -17,28 +17,13 @@ async fn create_test_prover() -> Arc { } fn create_mock_operations(service_id: String) -> Vec { - let signing_key_1 = create_mock_signing_key(); - let signing_key_2 = create_mock_signing_key(); - let new_key = create_mock_signing_key().verifying_key(); - let service_key = create_mock_signing_key(); + let mut ops_builder = OpsBuilder::new(); + vec![ - Operation::new_register_service(service_id.clone(), service_key.clone().into()), - Operation::new_create_account( - "user1@example.com".to_string(), - &signing_key_1, - service_id.clone(), - &service_key, - ) - .unwrap(), - Operation::new_create_account( - "user2@example.com".to_string(), - &signing_key_2, - service_id.clone(), - &service_key, - ) - .unwrap(), - Operation::new_add_key("user1@example.com".to_string(), new_key, &signing_key_1, 0) - .unwrap(), + ops_builder.register_service_with_random_key(&service_id).ex(), + ops_builder.create_account_with_random_key("user1@example.com", &service_id).ex(), + ops_builder.create_account_with_random_key("user2@example.com", &service_id).ex(), + ops_builder.add_random_key_verified_with_root("user1@example.com").ex(), ] } @@ -46,8 +31,8 @@ fn create_mock_operations(service_id: String) -> Vec { async fn test_validate_and_queue_update() { let prover = create_test_prover().await; - let service_key = create_mock_signing_key(); - let op = Operation::new_register_service("service_id".to_string(), service_key.clone().into()); + let mut ops_builder = OpsBuilder::new(); + let op = ops_builder.register_service_with_random_key("test_service").ex(); prover.clone().validate_and_queue_update(&op).await.unwrap(); @@ -61,42 +46,34 @@ async fn test_validate_and_queue_update() { async fn test_process_operation() { let prover = create_test_prover().await; - let signing_key = create_mock_signing_key(); - let original_pubkey = signing_key.verifying_key(); - let service_key = create_mock_signing_key(); - - let register_service_op = - Operation::new_register_service("service_id".to_string(), service_key.clone().into()); - let create_account_op = Operation::new_create_account( - "test@example.com".to_string(), - &signing_key, - "service_id".to_string(), - &service_key, - ) - .unwrap(); - - let proof = prover - .process_operation(®ister_service_op) - .await - .unwrap(); + let mut ops_builder = OpsBuilder::new(); + let register_service_op = ops_builder.register_service_with_random_key("test_service").ex(); + let create_account_op = + ops_builder.create_account_with_random_key("test_account", "test_service").ex(); + + let proof = prover.process_operation(®ister_service_op).await.unwrap(); assert!(matches!(proof, Proof::Insert(_))); let proof = prover.process_operation(&create_account_op).await.unwrap(); assert!(matches!(proof, Proof::Insert(_))); let new_key = create_mock_signing_key(); - let pubkey = new_key.verifying_key(); let add_key_op = - Operation::new_add_key("test@example.com".to_string(), pubkey, &signing_key, 0).unwrap(); + ops_builder.add_key_verified_with_root("test_account", new_key.verifying_key()).ex(); let proof = prover.process_operation(&add_key_op).await.unwrap(); assert!(matches!(proof, Proof::Update(_))); // Revoke original key - let revoke_op = - Operation::new_revoke_key("test@example.com".to_string(), original_pubkey, &new_key, 1) - .unwrap(); + let revoke_op = ops_builder + .revoke_key( + "test_account", + create_account_op.get_public_key().cloned().unwrap(), + &new_key, + 1, + ) + .ex(); let proof = prover.process_operation(&revoke_op).await.unwrap(); assert!(matches!(proof, Proof::Update(_))); } @@ -105,45 +82,20 @@ async fn test_process_operation() { async fn test_execute_block_with_invalid_tx() { let prover = create_test_prover().await; - let signing_key_1 = create_mock_signing_key(); - let signing_key_2 = create_mock_signing_key(); - let signing_key_3 = create_mock_signing_key(); - let service_key = create_mock_signing_key(); + let mut ops_builder = OpsBuilder::new(); + + let new_key_1 = create_mock_signing_key(); let operations = vec![ - Operation::new_register_service("service_id".to_string(), service_key.clone().into()), - Operation::new_create_account( - "user1@example.com".to_string(), - &signing_key_1, - "service_id".to_string(), - &service_key, - ) - .unwrap(), - // add signing_key_2, so it will be index = 1 - Operation::new_add_key( - "user1@example.com".to_string(), - signing_key_2.verifying_key(), - &signing_key_1, - 0, - ) - .unwrap(), - // try revoking signing_key_2 - Operation::new_revoke_key( - "user1@example.com".to_string(), - signing_key_2.verifying_key(), - &signing_key_1, - 0, - ) - .unwrap(), + ops_builder.register_service_with_random_key("service_id").ex(), + ops_builder.create_account_with_random_key("account_id", "service_id").ex(), + // add new key, so it will be index = 1 + ops_builder.add_key_verified_with_root("account_id", new_key_1.verifying_key()).ex(), + // revoke new key again + ops_builder.revoke_key_verified_with_root("account_id", new_key_1.verifying_key()).ex(), // and adding in same block. // both of these operations are valid individually, but when processed together it will fail. - Operation::new_add_key( - "user1@example.com".to_string(), - signing_key_3.verifying_key(), - &signing_key_2, - 1, - ) - .unwrap(), + ops_builder.add_random_key("account_id", &new_key_1, 1).op(), ]; let proofs = prover.execute_block(operations).await.unwrap(); From d1a8188a0c7a37f19ea30c62c5c393b6f843056e Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 24 Oct 2024 17:18:29 +0200 Subject: [PATCH 09/11] build: more readable formatting of builder API --- rustfmt.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rustfmt.toml b/rustfmt.toml index a811a490..7ad6dc85 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,2 +1,4 @@ merge_imports = true imports_granularity = "Crate" +max_width = 100 +chain_width = 100 From 2441df603939c65189e57a3bd3b8a774912a34bb Mon Sep 17 00:00:00 2001 From: Jonas Date: Mon, 28 Oct 2024 16:05:18 +0100 Subject: [PATCH 10/11] feat: validate prev_hash when adding new operations --- crates/common/src/hashchain.rs | 45 +++++++++++++++++++++++++--------- crates/common/src/operation.rs | 2 +- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/crates/common/src/hashchain.rs b/crates/common/src/hashchain.rs index b5bce708..0baa8692 100644 --- a/crates/common/src/hashchain.rs +++ b/crates/common/src/hashchain.rs @@ -11,8 +11,7 @@ use crate::{ hasher::Hasher, keys::VerifyingKey, operation::{ - AddDataArgs, CreateAccountArgs, KeyOperationArgs, Operation, RegisterServiceArgs, - ServiceChallenge, ServiceChallengeInput, + CreateAccountArgs, Operation, RegisterServiceArgs, ServiceChallenge, ServiceChallengeInput, }, }; @@ -298,31 +297,53 @@ impl Hashchain { /// Verifies the structure and signature of a new operation fn validate_new_operation(&self, operation: &Operation) -> Result<()> { match operation { - Operation::RegisterService(_) => { + Operation::RegisterService(args) => { if !self.entries.is_empty() { bail!("RegisterService operation must be the first entry"); } + + if args.prev_hash != Digest::zero() { + bail!("Previous hash for initial operation must be zero") + } + Ok(()) } - Operation::AddKey(KeyOperationArgs { signature, .. }) - | Operation::RevokeKey(KeyOperationArgs { signature, .. }) - | Operation::AddData(AddDataArgs { - op_signature: signature, - .. - }) => { - let signing_key = self.get_key_at_index(signature.key_idx)?; + Operation::AddKey(args) | Operation::RevokeKey(args) => { + if args.prev_hash != self.last_hash() { + bail!("Previous hash for key operation must be the last hash") + } + + let signing_key = self.get_key_at_index(args.signature.key_idx)?; if self.is_key_revoked(signing_key.clone()) { bail!("The signing key is revoked"); } - operation.verify_user_signature(signing_key.clone()) + operation.verify_user_signature(signing_key) + } + Operation::AddData(args) => { + if args.prev_hash != self.last_hash() { + bail!("Previous hash for add-data operation must be the last hash") + } + + let signing_key = self.get_key_at_index(args.op_signature.key_idx)?; + + if self.is_key_revoked(signing_key.clone()) { + bail!("The signing key is revoked"); + } + + operation.verify_user_signature(signing_key) } Operation::CreateAccount(args) => { if !self.entries.is_empty() { bail!("RegisterService operation must be the first entry"); } - operation.verify_user_signature(args.value.clone()) + + if args.prev_hash != Digest::zero() { + bail!("Previous hash for initial operation must be zero") + } + + operation.verify_user_signature(&args.value) } } } diff --git a/crates/common/src/operation.rs b/crates/common/src/operation.rs index 30deacfc..7279cbd8 100644 --- a/crates/common/src/operation.rs +++ b/crates/common/src/operation.rs @@ -345,7 +345,7 @@ impl Operation { } } - pub fn verify_user_signature(&self, pubkey: VerifyingKey) -> Result<()> { + pub fn verify_user_signature(&self, pubkey: &VerifyingKey) -> Result<()> { match self { Operation::RegisterService(_) => Ok(()), Operation::CreateAccount(args) => { From 4ca07bda994d2bb395c88470ee373d1cb57dd05b Mon Sep 17 00:00:00 2001 From: Jonas Date: Mon, 28 Oct 2024 08:50:19 +0100 Subject: [PATCH 11/11] chore: Incorporate changes in zkvm elf --- elf/riscv32im-succinct-zkvm-elf | Bin 1784572 -> 1789020 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/elf/riscv32im-succinct-zkvm-elf b/elf/riscv32im-succinct-zkvm-elf index be80f892b7e6a8810ced8d3344904bc9a820df05..a3bff7e5b789d0196108f271175f1f20d19917c5 100755 GIT binary patch delta 194985 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
  • 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

    ?+$rR9I_{D6=9|6i&A;OAr~$m- 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