aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2020-06-04 02:56:46 +0000
committerNIIBE Yutaka <[email protected]>2020-06-04 02:56:46 +0000
commitf71dff40ead85cdac44cdbdc800040dbbfb0769e (patch)
tree71b36114ab6b76f8da5b38872d0050a624e6c8c0
parentecc-sos: Fix handling cleartext secret key from agent. (diff)
downloadgnupg-f71dff40ead85cdac44cdbdc800040dbbfb0769e.tar.gz
gnupg-f71dff40ead85cdac44cdbdc800040dbbfb0769e.zip
ecc-sos: Apply SOS also to ECDSA.
This causes a regression in: FAIL: tests/openpgp/ecc.scm Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--g10/build-packet.c10
-rw-r--r--g10/export.c1
-rw-r--r--g10/parse-packet.c6
3 files changed, 12 insertions, 5 deletions
diff --git a/g10/build-packet.c b/g10/build-packet.c
index 4aed558a9..d07465894 100644
--- a/g10/build-packet.c
+++ b/g10/build-packet.c
@@ -624,7 +624,9 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk)
|| (pk->pubkey_algo == PUBKEY_ALGO_EDDSA && (i == 0))
|| (pk->pubkey_algo == PUBKEY_ALGO_ECDH && (i == 0 || i == 2)))
err = gpg_mpi_write_nohdr (a, pk->pkey[i]);
- else if (pk->pubkey_algo == PUBKEY_ALGO_ECDH)
+ else if (pk->pubkey_algo == PUBKEY_ALGO_ECDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_EDDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_ECDH)
err = sos_write (a, pk->pkey[i], NULL);
else
err = gpg_mpi_write (a, pk->pkey[i], NULL);
@@ -742,7 +744,8 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk)
for (j=i; j < nskey; j++ )
{
- if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA
+ if (pk->pubkey_algo == PUBKEY_ALGO_ECDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_EDDSA
|| pk->pubkey_algo == PUBKEY_ALGO_ECDH)
{
if ((err = sos_write (NULL, pk->pkey[j], &n)))
@@ -760,7 +763,8 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk)
}
for ( ; i < nskey; i++ )
- if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA
+ if (pk->pubkey_algo == PUBKEY_ALGO_ECDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_EDDSA
|| pk->pubkey_algo == PUBKEY_ALGO_ECDH)
{
if ((err = sos_write (a, pk->pkey[i], NULL)))
diff --git a/g10/export.c b/g10/export.c
index a021013ac..ba3521f2f 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -1024,6 +1024,7 @@ transfer_format_to_openpgp (gcry_sexp_t s_pgp, PKT_public_key *pk)
if (!value || !valuelen)
goto bad_seckey;
if (is_enc
+ || pk->pubkey_algo == PUBKEY_ALGO_ECDSA
|| pk->pubkey_algo == PUBKEY_ALGO_EDDSA
|| pk->pubkey_algo == PUBKEY_ALGO_ECDH)
{
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index 003143768..14116f062 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -2591,7 +2591,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
else
{
unsigned int n = pktlen;
- if (algorithm == PUBKEY_ALGO_EDDSA
+ if (algorithm == PUBKEY_ALGO_ECDSA
+ || algorithm == PUBKEY_ALGO_EDDSA
|| algorithm == PUBKEY_ALGO_ECDH)
pk->pkey[i] = sos_read (inp, &n, 0);
else
@@ -2907,7 +2908,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
goto leave;
}
n = pktlen;
- if (algorithm == PUBKEY_ALGO_EDDSA
+ if (algorithm == PUBKEY_ALGO_ECDSA
+ || algorithm == PUBKEY_ALGO_EDDSA
|| algorithm == PUBKEY_ALGO_ECDH)
pk->pkey[i] = sos_read (inp, &n, 0);
else