diff options
Diffstat (limited to 'g10/pkglue.c')
-rw-r--r-- | g10/pkglue.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/g10/pkglue.c b/g10/pkglue.c index 137e520e4..bc6f30e94 100644 --- a/g10/pkglue.c +++ b/g10/pkglue.c @@ -192,14 +192,15 @@ pk_verify (pubkey_algo_t pkalgo, gcry_mpi_t hash, { const char *fmt; gcry_mpi_t pubkey; + const char *curve_name = openpgp_oid_to_curve (curve, 1); - pubkey = openpgp_ecc_parse_pubkey (pkalgo, curve, pkey[1]); + pubkey = openpgp_ecc_parse_pubkey (pkalgo, curve_name, pkey[1]); if (openpgp_oid_is_ed25519 (pkey[0])) fmt = "(public-key(ecc(curve %s)(flags eddsa)(q%m)))"; else fmt = "(public-key(ecc(curve %s)(q%m)))"; - rc = gcry_sexp_build (&s_pkey, NULL, fmt, curve, pubkey); + rc = gcry_sexp_build (&s_pkey, NULL, fmt, curve_name, pubkey); xfree (curve); gcry_mpi_release (pubkey); } @@ -415,14 +416,15 @@ pk_encrypt (pubkey_algo_t algo, gcry_mpi_t *resarr, gcry_mpi_t data, { int with_djb_tweak_flag = openpgp_oid_is_cv25519 (pkey[0]); gcry_mpi_t pubkey; + const char *curve_name = openpgp_oid_to_curve (curve, 1); - pubkey = openpgp_ecc_parse_pubkey (algo, curve, pkey[1]); + pubkey = openpgp_ecc_parse_pubkey (algo, curve_name, pkey[1]); /* Now use the ephemeral secret to compute the shared point. */ rc = gcry_sexp_build (&s_pkey, NULL, with_djb_tweak_flag ? "(public-key(ecc(curve%s)(flags djb-tweak)(q%m)))" : "(public-key(ecc(curve%s)(q%m)))", - curve, pubkey); + curve_name, pubkey); xfree (curve); gcry_mpi_release (pubkey); /* Put K into a simplified S-expression. */ @@ -539,12 +541,13 @@ pk_check_secret_key (pubkey_algo_t pkalgo, gcry_mpi_t *skey) { gcry_mpi_t pubkey; gcry_mpi_t seckey; + const char *curve_name = openpgp_oid_to_curve (curve, 1); - pubkey = openpgp_ecc_parse_pubkey (pkalgo, curve, skey[1]); - seckey = openpgp_ecc_parse_seckey (pkalgo, curve, skey[2]); + pubkey = openpgp_ecc_parse_pubkey (pkalgo, curve_name, skey[1]); + seckey = openpgp_ecc_parse_seckey (pkalgo, curve_name, skey[2]); rc = gcry_sexp_build (&s_skey, NULL, "(private-key(ecc(curve%s)(q%m)(d%m)))", - curve, pubkey, seckey); + curve_name, pubkey, seckey); xfree (curve); gcry_mpi_release (pubkey); gcry_mpi_release (seckey); @@ -560,15 +563,16 @@ pk_check_secret_key (pubkey_algo_t pkalgo, gcry_mpi_t *skey) const char *fmt; gcry_mpi_t pubkey; gcry_mpi_t seckey; + const char *curve_name = openpgp_oid_to_curve (curve, 1); - pubkey = openpgp_ecc_parse_pubkey (pkalgo, curve, skey[1]); - seckey = openpgp_ecc_parse_seckey (pkalgo, curve, skey[2]); + pubkey = openpgp_ecc_parse_pubkey (pkalgo, curve_name, skey[1]); + seckey = openpgp_ecc_parse_seckey (pkalgo, curve_name, skey[2]); if (openpgp_oid_is_ed25519 (skey[0])) fmt = "(private-key(ecc(curve %s)(flags eddsa)(q%m)(d%m)))"; else fmt = "(private-key(ecc(curve %s)(q%m)(d%m)))"; - rc = gcry_sexp_build (&s_skey, NULL, fmt, curve, pubkey, seckey); + rc = gcry_sexp_build (&s_skey, NULL, fmt, curve_name, pubkey, seckey); xfree (curve); gcry_mpi_release (pubkey); gcry_mpi_release (seckey); |