aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2019-11-22 07:24:50 +0000
committerNIIBE Yutaka <[email protected]>2020-05-04 01:57:08 +0000
commit0e40b033b8533d1cb80cad0110f3e1233a1b3a66 (patch)
treed9db7f1209d89cd11bfc85dfda07e3082309ba8b
parentgpg: Use opaque MPI for shared point. (diff)
downloadgnupg-0e40b033b8533d1cb80cad0110f3e1233a1b3a66.tar.gz
gnupg-0e40b033b8533d1cb80cad0110f3e1233a1b3a66.zip
gpg: Fix for the condition calling gpg_sos_write.
Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--g10/build-packet.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/g10/build-packet.c b/g10/build-packet.c
index c1e5137cd..e6b09fb11 100644
--- a/g10/build-packet.c
+++ b/g10/build-packet.c
@@ -742,8 +742,17 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk)
for (j=i; j < nskey; j++ )
{
- if ((err = gpg_sos_write (NULL, pk->pkey[j], &n)))
- goto leave;
+ if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_ECDH)
+ {
+ if ((err = gpg_sos_write (NULL, pk->pkey[j], &n)))
+ goto leave;
+ }
+ else
+ {
+ if ( (err = gpg_mpi_write (a, pk->pkey[i], NULL)))
+ goto leave;
+ }
skbytes += n;
}
@@ -751,8 +760,15 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk)
}
for ( ; i < nskey; i++ )
- if ( (err = gpg_sos_write (a, pk->pkey[i], NULL)))
- goto leave;
+ if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_ECDH)
+ {
+ if ( (err = gpg_sos_write (a, pk->pkey[i], NULL)))
+ goto leave;
+ }
+ else
+ if ( (err = gpg_mpi_write (a, pk->pkey[i], NULL)))
+ goto leave;
write_16 (a, ski->csum );
}