Skip to content
Snippets Groups Projects
Commit 756418ac authored by Nicolas80's avatar Nicolas80
Browse files

* Small refactoring to move method to vault.rs

parent 4a82b65d
No related branches found
No related tags found
1 merge request!44feat: Can choose between ed25519 ans sr25519
Pipeline #40282 passed
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
List of changelogs ordered from latest to oldest List of changelogs ordered from latest to oldest
## [0.4.1] - 2025-03-23 ## [0.4.1] - 2025-04-04
### Added / Changed ### 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) - 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. - 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.
......
...@@ -165,14 +165,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE ...@@ -165,14 +165,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
} }
if let Some(address) = params.address { 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?; perform_link_account(data, key_pair).await?;
} else if let Some(vault_name) = params.vault_name { } else if let Some(vault_name) = params.vault_name {
let account_tree_node = let account_tree_node =
retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?; retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?;
let address = account_tree_node.borrow().account.address.0.clone(); 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?; perform_link_account(data, key_pair).await?;
} else if let Some(secret_format) = params.secret_format { } else if let Some(secret_format) = params.secret_format {
let keypair = get_keypair( let keypair = get_keypair(
...@@ -205,14 +205,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE ...@@ -205,14 +205,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
} }
if let Some(address) = params.address { 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?; perform_change_owner_key(data, key_pair).await?;
} else if let Some(vault_name) = params.vault_name { } else if let Some(vault_name) = params.vault_name {
let account_tree_node = let account_tree_node =
retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?; retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?;
let address = account_tree_node.borrow().account.address.0.clone(); 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?; perform_change_owner_key(data, key_pair).await?;
} else if let Some(secret_format) = params.secret_format { } else if let Some(secret_format) = params.secret_format {
let keypair = get_keypair( let keypair = get_keypair(
...@@ -237,16 +237,6 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE ...@@ -237,16 +237,6 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
Ok(()) 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 // TODO derive this automatically
......
...@@ -1195,7 +1195,21 @@ fn find_substrate_vault_key_file(data: &Data, address: &str) -> Result<Option<Pa ...@@ -1195,7 +1195,21 @@ fn find_substrate_vault_key_file(data: &Data, address: &str) -> Result<Option<Pa
Ok(None) 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( pub async fn try_fetch_key_pair(
data: &Data, data: &Data,
address: AccountId, address: AccountId,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment