diff --git a/common/openpgp-oid.c b/common/openpgp-oid.c index 676079cde..af91bb1aa 100644 --- a/common/openpgp-oid.c +++ b/common/openpgp-oid.c @@ -333,10 +333,10 @@ openpgp_curve_to_oid (const char *name, unsigned int *r_nbits) /* Map an OpenPGP OID to the Libgcrypt curve NAME. Returns NULL for - unknown curve names. We prefer an alias name here which is more - suitable for printing. */ + unknown curve names. Unless CANON is set we prefer an alias name + here which is more suitable for printing. */ const char * -openpgp_oid_to_curve (const char *oidstr) +openpgp_oid_to_curve (const char *oidstr, int canon) { int i; @@ -345,7 +345,7 @@ openpgp_oid_to_curve (const char *oidstr) for (i=0; oidtable[i].name; i++) if (!strcmp (oidtable[i].oidstr, oidstr)) - return oidtable[i].alias? oidtable[i].alias : oidtable[i].name; + return !canon && oidtable[i].alias? oidtable[i].alias : oidtable[i].name; return NULL; } diff --git a/common/util.h b/common/util.h index 90acefa1a..df0f39290 100644 --- a/common/util.h +++ b/common/util.h @@ -323,7 +323,7 @@ gpg_error_t openpgp_oid_from_str (const char *string, gcry_mpi_t *r_mpi); char *openpgp_oid_to_str (gcry_mpi_t a); int openpgp_oid_is_ed25519 (gcry_mpi_t a); const char *openpgp_curve_to_oid (const char *name, unsigned int *r_nbits); -const char *openpgp_oid_to_curve (const char *oid); +const char *openpgp_oid_to_curve (const char *oid, int canon); const char *openpgp_enum_curves (int *idxp); diff --git a/g10/import.c b/g10/import.c index 0a2ebcd46..e92769dc8 100644 --- a/g10/import.c +++ b/g10/import.c @@ -1414,7 +1414,7 @@ transfer_secret_keys (ctrl_t ctrl, struct stats_s *stats, kbnode_t sec_keyblock, err = gpg_error_from_syserror (); else { - const char *curvename = openpgp_oid_to_curve (curvestr); + const char *curvename = openpgp_oid_to_curve (curvestr, 1); err = gcry_sexp_build (&curve, NULL, "(curve %s)", curvename?curvename:curvestr); xfree (curvestr); diff --git a/g10/keyid.c b/g10/keyid.c index 6b6f67020..68990c8bd 100644 --- a/g10/keyid.c +++ b/g10/keyid.c @@ -119,7 +119,7 @@ pubkey_string (PKT_public_key *pk, char *buffer, size_t bufsize) else if (prefix) { char *curve = openpgp_oid_to_str (pk->pkey[0]); - const char *name = openpgp_oid_to_curve (curve); + const char *name = openpgp_oid_to_curve (curve, 0); if (name) snprintf (buffer, bufsize, "%s", name); diff --git a/g10/keylist.c b/g10/keylist.c index d81e7dd8b..b43165f2f 100644 --- a/g10/keylist.c +++ b/g10/keylist.c @@ -1091,7 +1091,7 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr, || pk2->pubkey_algo == PUBKEY_ALGO_ECDH) { char *curve = openpgp_oid_to_str (pk2->pkey[0]); - const char *name = openpgp_oid_to_curve (curve); + const char *name = openpgp_oid_to_curve (curve, 0); if (!name) name = curve; es_fprintf (es_stdout, " %s", name); @@ -1358,7 +1358,7 @@ list_keyblock_colon (KBNODE keyblock, int secret, int has_secret, int fpr) || pk->pubkey_algo == PUBKEY_ALGO_ECDH) { char *curve = openpgp_oid_to_str (pk->pkey[0]); - const char *name = openpgp_oid_to_curve (curve); + const char *name = openpgp_oid_to_curve (curve, 0); if (!name) name = curve; es_fputs (name, es_stdout); @@ -1487,7 +1487,7 @@ list_keyblock_colon (KBNODE keyblock, int secret, int has_secret, int fpr) || pk->pubkey_algo == PUBKEY_ALGO_ECDH) { char *curve = openpgp_oid_to_str (pk->pkey[0]); - const char *name = openpgp_oid_to_curve (curve); + const char *name = openpgp_oid_to_curve (curve, 0); if (!name) name = curve; es_fputs (name, es_stdout); diff --git a/g10/parse-packet.c b/g10/parse-packet.c index 6131d3277..478612a49 100644 --- a/g10/parse-packet.c +++ b/g10/parse-packet.c @@ -2086,7 +2086,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen, || algorithm == PUBKEY_ALGO_ECDH) && i==0) { char *curve = openpgp_oid_to_str (pk->pkey[0]); - const char *name = openpgp_oid_to_curve (curve); + const char *name = openpgp_oid_to_curve (curve, 0); es_fprintf (listfp, " %s (%s)", name?name:"", curve); xfree (curve); } diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index cc9577383..637f6b19d 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -911,7 +911,7 @@ send_key_attr (ctrl_t ctrl, app_t app, const char *keyword, int keyno) keyno+1, app->app_local->keyattr[keyno].ecc.flags? PUBKEY_ALGO_EDDSA: (keyno==1? PUBKEY_ALGO_ECDH: PUBKEY_ALGO_ECDSA), - openpgp_oid_to_curve (app->app_local->keyattr[keyno].ecc.oid)); + openpgp_oid_to_curve (app->app_local->keyattr[keyno].ecc.oid, 0)); } else snprintf (buffer, sizeof buffer, "%d 0 0 UNKNOWN", keyno+1); @@ -1442,7 +1442,7 @@ get_public_key (app_t app, int keyno) format = "(public-key(ecc(curve%s)(flags eddsa)(q%b)))"; err = gcry_sexp_build (&s_pkey, NULL, format, - openpgp_oid_to_curve (app->app_local->keyattr[keyno].ecc.oid), + openpgp_oid_to_curve (app->app_local->keyattr[keyno].ecc.oid, 1), (int)mlen, mbuf); if (err) goto leave;