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

* Adding `-c` crypto scheme parameter (with default ed25519) in different places

** as global parameter (taken into account if `-S` parameter is given
** as extra parameter for identity.rs commands LinkAccount & ChangeOwnerKey
*** Also added a simple display of "target" address and crypto-scheme when performing those commands
parent 3738e8b7
No related branches found
No related tags found
1 merge request!44feat: Can choose between ed25519 ans sr25519
......@@ -64,24 +64,30 @@ pub enum Subcommand {
MemberCount,
/// Link an account to the identity
LinkAccount {
/// Secret key format (seed, substrate)
/// Secret key format of account to link (seed, substrate)
#[clap(short = 'S', long, default_value = SecretFormat::Substrate)]
secret_format: SecretFormat,
/// Secret of account to link
/// most likely different from the one owning the identity
#[clap(short, long)]
secret: Option<String>,
/// Crypto scheme of account to link (sr25519, ed25519)
#[clap(short = 'c', long, required = false, default_value = CryptoScheme::Ed25519)]
crypto_scheme: CryptoScheme,
},
/// Migrate identity to another account
/// Change Owner Key
ChangeOwnerKey {
/// Secret key format (seed, substrate)
/// Secret key format of account to link (seed, substrate)
#[clap(short = 'S', long, default_value = SecretFormat::Substrate)]
secret_format: SecretFormat,
/// Secret of account to link
/// most likely different from the one owning the identity
#[clap(short, long)]
secret: Option<String>,
/// Crypto scheme of account to link (sr25519, ed25519)
#[clap(short = 'c', long, required = false, default_value = CryptoScheme::Ed25519)]
crypto_scheme: CryptoScheme,
},
}
......@@ -153,8 +159,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
Subcommand::LinkAccount {
secret_format,
secret,
crypto_scheme,
} => {
let keypair = get_keypair(secret_format, secret.as_deref(), None)?;
let keypair = get_keypair(secret_format, secret.as_deref(), Some(crypto_scheme))?;
println!(
"target address:'{}' (using crypto-scheme:{})",
keypair.address(),
<&'static str>::from(crypto_scheme)
);
let address = keypair.address();
data = data.fetch_idty_index().await?; // idty index required for payload
link_account(&data, address, keypair).await?;
......@@ -162,8 +174,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
Subcommand::ChangeOwnerKey {
secret_format,
secret,
crypto_scheme,
} => {
let keypair = get_keypair(secret_format, secret.as_deref(), None)?;
let keypair = get_keypair(secret_format, secret.as_deref(), Some(crypto_scheme))?;
println!(
"target address:'{}' (using crypto-scheme:{})",
keypair.address(),
<&'static str>::from(crypto_scheme)
);
let address = keypair.address();
data = data.fetch_idty_index().await?; // idty index required for payload
change_owner_key(&data, address, keypair).await?;
......
......@@ -207,7 +207,11 @@ impl Data {
}
// secret format and value
if let Some(secret_format) = self.args.secret_format {
let keypair = get_keypair(secret_format, self.args.secret.as_deref(), None)?;
let keypair = get_keypair(
secret_format,
self.args.secret.as_deref(),
Some(self.args.crypto_scheme),
)?;
self.cfg.address = Some(keypair.address());
self.keypair = Some(keypair);
}
......
......@@ -62,6 +62,15 @@ pub enum CryptoScheme {
Sr25519,
}
/// Setting a default to Ed25519
///
/// required when used in Args struct inside main.rs; even though we still have to give a clap "default_value"
impl Default for CryptoScheme {
fn default() -> Self {
CryptoScheme::Ed25519
}
}
impl FromStr for CryptoScheme {
type Err = std::io::Error;
......
......@@ -46,13 +46,16 @@ pub struct Args {
/// Do not use indexer
#[clap(long)]
no_indexer: bool,
/// Secret key format (seed, substrate, g1v1)
#[clap(short = 'S', long)]
secret_format: Option<SecretFormat>,
/// Secret key or BIP39 mnemonic (only used when secret format is compatible)
/// (eventually followed by derivation path)
#[clap(short, long)]
secret: Option<String>,
/// Secret key format (seed, substrate, g1v1)
#[clap(short = 'S', long)]
secret_format: Option<SecretFormat>,
/// Crypto scheme to use (sr25519, ed25519)
#[clap(short = 'c', long, required = false, default_value = CryptoScheme::Ed25519)]
crypto_scheme: CryptoScheme,
/// SS58 Address
#[clap(short, conflicts_with = "name")]
address: Option<AccountId>,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment