diff --git a/src/keys.rs b/src/keys.rs index 415b50f41a9b42530d2e9c66b198f045ac0bbfe2..759211fbc82ed91a85617dabecdc99d318a089e6 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, } }