From 8bf81cbcd143e4f878c4386b44a89fb3e48a4a69 Mon Sep 17 00:00:00 2001 From: Nicolas80 <nicolas.pmail@protonmail.com> Date: Sun, 23 Mar 2025 16:43:02 +0100 Subject: [PATCH] * Adapted catch_known of predefined derivations to properly handle both sr25519 and ed25519 versions of those keys. --- src/keys.rs | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/keys.rs b/src/keys.rs index 415b50f..759211f 100644 --- a/src/keys.rs +++ b/src/keys.rs @@ -362,14 +362,14 @@ pub async fn fetch_or_get_keypair( ) -> Result<KeyPair, GcliError> { if let Some(address) = address { // if address corresponds to predefined, (for example saved to config) - // keypair is already known (useful for dev mode) - if let Some(d) = catch_known(&address.to_string()) { - match crypto_scheme { - Some(CryptoScheme::Ed25519) => { - return pair_from_ed25519_str(&predefined_suri(d)).map(|v| v.into()) + // keypair is already known (useful for dev mode) - also overrides crypto_scheme if found + if let Some((deriv, crypto_scheme)) = catch_known(&address.to_string()) { + return match crypto_scheme { + CryptoScheme::Ed25519 => { + pair_from_ed25519_str(&predefined_suri(deriv)).map(|v| v.into()) } - _ => return Ok(pair_from_predefined(d).unwrap().into()), // Default to Sr25519 for backward compatibility - } + CryptoScheme::Sr25519 => pair_from_predefined(deriv).map(|v| v.into()), + }; }; // look for corresponding KeyPair in keystore @@ -383,13 +383,27 @@ pub async fn fetch_or_get_keypair( } // catch known addresses -fn catch_known(address: &str) -> Option<&str> { +fn catch_known(address: &str) -> Option<(&str, CryptoScheme)> { match address { - "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY" => Some("Alice"), - "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty" => Some("Bob"), - "5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y" => Some("Charlie"), - "5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy" => Some("Dave"), - "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw" => Some("Eve"), + "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY" => { + Some(("Alice", CryptoScheme::Sr25519)) + } + "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty" => Some(("Bob", CryptoScheme::Sr25519)), + "5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y" => { + Some(("Charlie", CryptoScheme::Sr25519)) + } + "5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy" => Some(("Dave", CryptoScheme::Sr25519)), + "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw" => Some(("Eve", CryptoScheme::Sr25519)), + + "5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu" => { + Some(("Alice", CryptoScheme::Ed25519)) + } + "5GoNkf6WdbxCFnPdAnYYQyCjAKPJgLNxXwPjwTh6DGg6gN3E" => Some(("Bob", CryptoScheme::Ed25519)), + "5DbKjhNLpqX3zqZdNBc9BGb4fHU1cRBaDhJUskrvkwfraDi6" => { + Some(("Charlie", CryptoScheme::Ed25519)) + } + "5ECTwv6cZ5nJQPk6tWfaTrEk8YH2L7X1VT4EL5Tx2ikfFwb7" => Some(("Dave", CryptoScheme::Ed25519)), + "5Ck2miBfCe1JQ4cY3NDsXyBaD6EcsgiVmEFTWwqNSs25XDEq" => Some(("Eve", CryptoScheme::Ed25519)), _ => None, } } -- GitLab