From 756418acf476c3d19f6b5b37ea35cc7805cd457f Mon Sep 17 00:00:00 2001 From: Nicolas80 <nicolas.pmail@protonmail.com> Date: Fri, 4 Apr 2025 13:37:07 +0200 Subject: [PATCH] * Small refactoring to move method to vault.rs --- CHANGELOG.md | 2 +- src/commands/identity.rs | 18 ++++-------------- src/commands/vault.rs | 16 +++++++++++++++- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83d20ca..3e8b102 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ List of changelogs ordered from latest to oldest -## [0.4.1] - 2025-03-23 +## [0.4.1] - 2025-04-04 ### Added / Changed - We now use `ed25519` crypto scheme by default for all commands. It means that if you import your substrate mnemonic without giving a specific argument to change the crypto scheme, the resulting SS58 address will not be the same as before (it was using `sr25519` for substrate mnemonic previously) - Extra `-c` / `--crypto-scheme` argument allows to specify which crypto scheme to use (`sr25519` or `ed25519`) and having a default value of `ed25519` in most places. diff --git a/src/commands/identity.rs b/src/commands/identity.rs index 25e8409..67e2628 100644 --- a/src/commands/identity.rs +++ b/src/commands/identity.rs @@ -165,14 +165,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE } if let Some(address) = params.address { - let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?; + let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?; perform_link_account(data, key_pair).await?; } else if let Some(vault_name) = params.vault_name { let account_tree_node = retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?; let address = account_tree_node.borrow().account.address.0.clone(); - let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?; + let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?; perform_link_account(data, key_pair).await?; } else if let Some(secret_format) = params.secret_format { let keypair = get_keypair( @@ -205,14 +205,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE } if let Some(address) = params.address { - let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?; + let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?; perform_change_owner_key(data, key_pair).await?; } else if let Some(vault_name) = params.vault_name { let account_tree_node = retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?; let address = account_tree_node.borrow().account.address.0.clone(); - let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?; + let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?; perform_change_owner_key(data, key_pair).await?; } else if let Some(secret_format) = params.secret_format { let keypair = get_keypair( @@ -237,16 +237,6 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE Ok(()) } -async fn fetch_vault_keypair_for_target_address( - data: &Data, - address: AccountId, -) -> Result<KeyPair, GcliError> { - println!("Trying to retrieve key pair for target address:'{address}'"); - commands::vault::try_fetch_key_pair(data, address) - .await? - .ok_or_else(|| GcliError::Input("target vault account not found".to_string())) -} - // ====================== // TODO derive this automatically diff --git a/src/commands/vault.rs b/src/commands/vault.rs index 7a5ef9e..f6941cf 100644 --- a/src/commands/vault.rs +++ b/src/commands/vault.rs @@ -1195,7 +1195,21 @@ fn find_substrate_vault_key_file(data: &Data, address: &str) -> Result<Option<Pa Ok(None) } -/// try to get secret in keystore, prompt for the password and compute the keypair +/// Gets secret in keystore, prompt for the password and compute the keypair associated to `address` +/// +/// Returns an error if no entry was found in the keystore or if another error occurred during the process +pub async fn fetch_vault_keypair_for_address( + data: &Data, + address: AccountId, +) -> Result<KeyPair, GcliError> { + println!("Trying to retrieve key pair for address:'{address}'"); + try_fetch_key_pair(data, address) + .await? + .ok_or_else(|| GcliError::Input("vault account not found".to_string())) +} + + +/// try to get secret in keystore, prompt for the password and compute the keypair associated to `address` pub async fn try_fetch_key_pair( data: &Data, address: AccountId, -- GitLab