diff --git a/Cargo.lock b/Cargo.lock index 069575e..066222a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,6 +9,7 @@ dependencies = [ "anyhow", "elliptic-curve", "env_logger", + "hex", "k256", "log", "rand 0.8.5", diff --git a/Cargo.toml b/Cargo.toml index 8b6d782..003f145 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,7 @@ thiserror = "1.0" rs_merkle = "1.4" sha2 = "0.10.8" monotree = "0.1.5" +hex = "0.4.3" rocksdb = { version = "0.21.0", default-features = false, features = ["snappy"] } diff --git a/accounts/Cargo.toml b/accounts/Cargo.toml index 97ee1f9..9f48799 100644 --- a/accounts/Cargo.toml +++ b/accounts/Cargo.toml @@ -13,6 +13,7 @@ k256.workspace = true sha2.workspace = true rand.workspace = true elliptic-curve.workspace = true +hex.workspace = true [dependencies.storage] path = "../storage" \ No newline at end of file diff --git a/accounts/src/key_management/mod.rs b/accounts/src/key_management/mod.rs index 4dd6e78..3bd8239 100644 --- a/accounts/src/key_management/mod.rs +++ b/accounts/src/key_management/mod.rs @@ -194,3 +194,42 @@ impl AddressKeyHolder { EphemeralKeyHolder::new_os_random() } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn key_generation_test() { + let seed_holder = SeedHolder::new_os_random(); + let top_secret_key_holder = seed_holder.produce_top_secret_key_holder(); + + let utxo_secret_key_holder = top_secret_key_holder.produce_utxo_secret_holder(); + + let address = utxo_secret_key_holder.generate_address(); + let nullifer_public_key = utxo_secret_key_holder.generate_nullifier_public_key(); + let viewing_public_key = utxo_secret_key_holder.generate_viewing_public_key(); + + println!("======Prerequisites======"); + println!(); + + println!("Group generator {:?}", hex::encode(AffinePoint::GENERATOR.to_bytes())); + println!("Nullifier constant {:?}", hex::encode(NULLIFIER_SECRET_CONST)); + println!("Viewing constatnt {:?}", hex::encode(VIEVING_SECRET_CONST)); + println!(); + + println!("======Holders======"); + println!(); + + println!("{seed_holder:?}"); + println!("{top_secret_key_holder:?}"); + println!("{utxo_secret_key_holder:?}"); + println!(); + + println!("======Public data======"); + println!(); + println!("Address{:?}", hex::encode(address)); + println!("Nulifier public key {:?}", hex::encode(nullifer_public_key.to_bytes())); + println!("Viewing public key {:?}", hex::encode(viewing_public_key.to_bytes())); + } +}