diff options
author | Trevor Bentley <[email protected]> | 2019-03-25 14:19:47 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2019-03-27 02:03:58 +0000 |
commit | 4324560b2c0bb76a1769535c383424a042e505ae (patch) | |
tree | 5dd8a6c9b8ba69da72d6f63fd0c975dd281f3769 | |
parent | sm: Allow decryption even if expired other keys are configured. (diff) | |
download | gnupg-4324560b2c0bb76a1769535c383424a042e505ae.tar.gz gnupg-4324560b2c0bb76a1769535c383424a042e505ae.zip |
gpg: Don't use EdDSA algo ID for ECDSA curves.
* g10/keygen.c (ask_curve): Change algo ID to ECDSA if it changed from
an EdDSA curve.
--
This change matters when it is called from ask_card_keyattr.
Some-comments-by: NIIBE Yutaka <[email protected]>
-rw-r--r-- | g10/keygen.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/g10/keygen.c b/g10/keygen.c index 64fefd231..943b40110 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -2507,14 +2507,25 @@ ask_curve (int *algo, int *subkey_algo, const char *current) else { /* If the user selected a signing algorithm and Curve25519 - we need to set the algo to EdDSA and update the curve name. */ - if ((*algo == PUBKEY_ALGO_ECDSA || *algo == PUBKEY_ALGO_EDDSA) - && curves[idx].eddsa_curve) + we need to set the algo to EdDSA and update the curve name. + If switching away from EdDSA, we need to set the algo back + to ECDSA. */ + if (*algo == PUBKEY_ALGO_ECDSA || *algo == PUBKEY_ALGO_EDDSA) { - if (subkey_algo && *subkey_algo == PUBKEY_ALGO_ECDSA) - *subkey_algo = PUBKEY_ALGO_EDDSA; - *algo = PUBKEY_ALGO_EDDSA; - result = curves[idx].eddsa_curve; + if (curves[idx].eddsa_curve) + { + if (subkey_algo && *subkey_algo == PUBKEY_ALGO_ECDSA) + *subkey_algo = PUBKEY_ALGO_EDDSA; + *algo = PUBKEY_ALGO_EDDSA; + result = curves[idx].eddsa_curve; + } + else + { + if (subkey_algo && *subkey_algo == PUBKEY_ALGO_EDDSA) + *subkey_algo = PUBKEY_ALGO_ECDSA; + *algo = PUBKEY_ALGO_ECDSA; + result = curves[idx].name; + } } else result = curves[idx].name; |