diff --git a/CHANGELOG.md b/CHANGELOG.md index 83d20ca217d35892ed13a0e8108ac09b4a3cbed0..3e8b1026613e80d9fc96a27ae964018b239d9d67 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 25e840977582c594f5e649697b6b01722936345f..67e26282f4ffb1e25972bdfbfebaf39c2436fb21 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 7a5ef9ed2c4fae6211a900efef77f43e0da7fa26..f6941cf268202ebf5ae160919f9bcd82be0d4fe1 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,