1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

common: extend API of openpgp_oid_to_curve for canonical name.

* common/openpgp-oid.c (openpgp_oid_to_curve): Add CANON argument.
* common/util.h: Update.
* g10/import.c (transfer_secret_keys): Follow the change.
* g10/keyid.c (pubkey_string): Likewise.
* g10/keylist.c (list_keyblock_print, list_keyblock_colon): Likewise.
* parse-packet.c (parse_key): Likewise.
* scd/app-openpgp.c (send_key_attr, get_public_key): Likewise.

--

Change the function so that caller can select canonical name of curve
or name for printing.  Suggested by wk.
This commit is contained in:
NIIBE Yutaka 2015-08-06 16:44:03 +09:00
parent d088d2c816
commit a6e4053089
7 changed files with 13 additions and 13 deletions

View File

@ -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 /* Map an OpenPGP OID to the Libgcrypt curve NAME. Returns NULL for
unknown curve names. We prefer an alias name here which is more unknown curve names. Unless CANON is set we prefer an alias name
suitable for printing. */ here which is more suitable for printing. */
const char * const char *
openpgp_oid_to_curve (const char *oidstr) openpgp_oid_to_curve (const char *oidstr, int canon)
{ {
int i; int i;
@ -345,7 +345,7 @@ openpgp_oid_to_curve (const char *oidstr)
for (i=0; oidtable[i].name; i++) for (i=0; oidtable[i].name; i++)
if (!strcmp (oidtable[i].oidstr, oidstr)) 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; return NULL;
} }

View File

@ -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); char *openpgp_oid_to_str (gcry_mpi_t a);
int openpgp_oid_is_ed25519 (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_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); const char *openpgp_enum_curves (int *idxp);

View File

@ -1414,7 +1414,7 @@ transfer_secret_keys (ctrl_t ctrl, struct stats_s *stats, kbnode_t sec_keyblock,
err = gpg_error_from_syserror (); err = gpg_error_from_syserror ();
else 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)", err = gcry_sexp_build (&curve, NULL, "(curve %s)",
curvename?curvename:curvestr); curvename?curvename:curvestr);
xfree (curvestr); xfree (curvestr);

View File

@ -119,7 +119,7 @@ pubkey_string (PKT_public_key *pk, char *buffer, size_t bufsize)
else if (prefix) else if (prefix)
{ {
char *curve = openpgp_oid_to_str (pk->pkey[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);
if (name) if (name)
snprintf (buffer, bufsize, "%s", name); snprintf (buffer, bufsize, "%s", name);

View File

@ -1091,7 +1091,7 @@ list_keyblock_print (KBNODE keyblock, int secret, int fpr,
|| pk2->pubkey_algo == PUBKEY_ALGO_ECDH) || pk2->pubkey_algo == PUBKEY_ALGO_ECDH)
{ {
char *curve = openpgp_oid_to_str (pk2->pkey[0]); 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) if (!name)
name = curve; name = curve;
es_fprintf (es_stdout, " %s", name); 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) || pk->pubkey_algo == PUBKEY_ALGO_ECDH)
{ {
char *curve = openpgp_oid_to_str (pk->pkey[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);
if (!name) if (!name)
name = curve; name = curve;
es_fputs (name, es_stdout); 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) || pk->pubkey_algo == PUBKEY_ALGO_ECDH)
{ {
char *curve = openpgp_oid_to_str (pk->pkey[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);
if (!name) if (!name)
name = curve; name = curve;
es_fputs (name, es_stdout); es_fputs (name, es_stdout);

View File

@ -2086,7 +2086,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
|| algorithm == PUBKEY_ALGO_ECDH) && i==0) || algorithm == PUBKEY_ALGO_ECDH) && i==0)
{ {
char *curve = openpgp_oid_to_str (pk->pkey[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); es_fprintf (listfp, " %s (%s)", name?name:"", curve);
xfree (curve); xfree (curve);
} }

View File

@ -911,7 +911,7 @@ send_key_attr (ctrl_t ctrl, app_t app, const char *keyword, int keyno)
keyno+1, keyno+1,
app->app_local->keyattr[keyno].ecc.flags? PUBKEY_ALGO_EDDSA: app->app_local->keyattr[keyno].ecc.flags? PUBKEY_ALGO_EDDSA:
(keyno==1? PUBKEY_ALGO_ECDH: PUBKEY_ALGO_ECDSA), (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 else
snprintf (buffer, sizeof buffer, "%d 0 0 UNKNOWN", keyno+1); 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)))"; format = "(public-key(ecc(curve%s)(flags eddsa)(q%b)))";
err = gcry_sexp_build (&s_pkey, NULL, format, 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); (int)mlen, mbuf);
if (err) if (err)
goto leave; goto leave;