diff --git a/aries/aries_vcx_wallet/src/wallet/askar/askar_did_wallet.rs b/aries/aries_vcx_wallet/src/wallet/askar/askar_did_wallet.rs index c175b3c8cf..bb773e64b2 100644 --- a/aries/aries_vcx_wallet/src/wallet/askar/askar_did_wallet.rs +++ b/aries/aries_vcx_wallet/src/wallet/askar/askar_did_wallet.rs @@ -16,8 +16,12 @@ use super::{ use crate::{ errors::error::{VcxWalletError, VcxWalletResult}, wallet::{ - base_wallet::{did_data::DidData, did_wallet::DidWallet, record_category::RecordCategory}, + base_wallet::{ + base58_string::Base58String, did_data::DidData, did_wallet::DidWallet, + record_category::RecordCategory, + }, structs_io::UnpackMessageOutput, + utils::bytes_to_string, }, }; @@ -32,22 +36,23 @@ impl DidWallet for AskarWallet { .len()) } + // Creates an Indy DID from a 'seed', which is the non-expanded ed25519 secret key. async fn create_and_store_my_did( &self, seed: Option<&str>, _did_method_name: Option<&str>, ) -> VcxWalletResult { - let mut tx = self.transaction().await?; - let (did, local_key) = self - .insert_key( - &mut tx, - KeyAlg::Ed25519, - seed_from_opt(seed).as_bytes(), - RngMethod::RandomDet, - ) - .await?; + let mut tx = self.session().await?; + let base58_seed = Base58String::from_bytes(&seed_from_opt(seed).as_bytes()); + let secret_bytes = &base58_seed.decode()?[0..32]; + let local_key = LocalKey::from_secret_bytes(KeyAlg::Ed25519, &secret_bytes)?; let verkey = local_key_to_public_key(&local_key)?; + + let base58_did = Base58String::from_bytes(&local_key.to_public_bytes()?[0..16]); + let did = bytes_to_string(base58_did.as_bytes())?; + + self.insert_key(&mut tx, &did, &local_key).await?; self.insert_did( &mut tx, &did, @@ -78,14 +83,12 @@ impl DidWallet for AskarWallet { async fn replace_did_key_start(&self, did: &str, seed: Option<&str>) -> VcxWalletResult { let mut tx = self.transaction().await?; if self.find_current_did(&mut tx, did).await?.is_some() { - let (_, local_key) = self - .insert_key( - &mut tx, - KeyAlg::Ed25519, - seed_from_opt(seed).as_bytes(), - RngMethod::RandomDet, - ) - .await?; + let local_key = LocalKey::from_seed( + KeyAlg::Ed25519, + seed_from_opt(seed).as_bytes(), + RngMethod::RandomDet.into(), + )?; + self.insert_key(&mut tx, &did, &local_key).await?; let verkey = local_key_to_public_key(&local_key)?; self.insert_did( diff --git a/aries/aries_vcx_wallet/src/wallet/askar/mod.rs b/aries/aries_vcx_wallet/src/wallet/askar/mod.rs index 15cbb113dc..56b9779762 100644 --- a/aries/aries_vcx_wallet/src/wallet/askar/mod.rs +++ b/aries/aries_vcx_wallet/src/wallet/askar/mod.rs @@ -6,10 +6,7 @@ use aries_askar::{ use async_trait::async_trait; use public_key::Key; -use self::{ - askar_utils::local_key_to_bs58_public_key, askar_wallet_config::AskarWalletConfig, - rng_method::RngMethod, -}; +use self::askar_wallet_config::AskarWalletConfig; use super::{ base_wallet::{ did_value::DidValue, key_value::KeyValue, record_category::RecordCategory, BaseWallet, @@ -142,16 +139,13 @@ impl AskarWallet { async fn insert_key( &self, session: &mut Session, - alg: KeyAlg, - seed: &[u8], - rng_method: RngMethod, - ) -> VcxWalletResult<(String, LocalKey)> { - let key = LocalKey::from_seed(alg, seed, rng_method.into())?; - let key_name = local_key_to_bs58_public_key(&key)?.into_inner(); + key_name: &str, + local_key: &LocalKey, + ) -> VcxWalletResult<()> { session - .insert_key(&key_name, &key, None, None, None) + .insert_key(&key_name, &local_key, None, None, None) .await?; - Ok((key_name, key)) + Ok(()) } async fn find_did( diff --git a/aries/misc/test_utils/src/devsetup.rs b/aries/misc/test_utils/src/devsetup.rs index 5265a40394..7adc976f7d 100644 --- a/aries/misc/test_utils/src/devsetup.rs +++ b/aries/misc/test_utils/src/devsetup.rs @@ -202,7 +202,7 @@ pub async fn dev_build_featured_wallet(key_seed: &str) -> (String, impl BaseWall { use crate::{constants::INSTITUTION_DID, mock_wallet::MockWallet}; - return (INSTITUTION_DID.to_owned(), MockWallet); + (INSTITUTION_DID.to_owned(), MockWallet) } }