mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-21 14:47:03 +01:00
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 <gniibe@fsij.org>
This commit is contained in:
parent
aa58d2a49b
commit
4324560b2c
25
g10/keygen.c
25
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user