aboutsummaryrefslogtreecommitdiffstats
path: root/g10/build-packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/build-packet.c')
-rw-r--r--g10/build-packet.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/g10/build-packet.c b/g10/build-packet.c
index 06f3884e6..c1e5137cd 100644
--- a/g10/build-packet.c
+++ b/g10/build-packet.c
@@ -623,8 +623,11 @@ 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
+ else if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA
+ || pk->pubkey_algo == PUBKEY_ALGO_ECDH)
err = gpg_sos_write (a, pk->pkey[i], NULL);
+ else
+ err = gpg_mpi_write (a, pk->pkey[i], NULL);
if (err)
goto leave;
}
@@ -865,6 +868,8 @@ do_pubkey_enc( IOBUF out, int ctb, PKT_pubkey_enc *enc )
{
if (enc->pubkey_algo == PUBKEY_ALGO_ECDH && i == 1)
rc = gpg_mpi_write_nohdr (a, enc->data[i]);
+ else if (enc->pubkey_algo == PUBKEY_ALGO_ECDH)
+ rc = gpg_sos_write (a, enc->data[i], NULL);
else
rc = gpg_mpi_write (a, enc->data[i], NULL);
}
@@ -1749,7 +1754,10 @@ do_signature( IOBUF out, int ctb, PKT_signature *sig )
rc = gpg_sos_write (a, sig->data[i], NULL);
else
for (i=0; i < n && !rc ; i++ )
- rc = gpg_mpi_write (a, sig->data[i], NULL);
+ if (sig->pubkey_algo == PUBKEY_ALGO_EDDSA)
+ rc = gpg_sos_write (a, sig->data[i], NULL);
+ else
+ rc = gpg_mpi_write (a, sig->data[i], NULL);
if (!rc)
{