diff options
author | NIIBE Yutaka <[email protected]> | 2020-06-09 01:32:47 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2020-06-09 01:32:47 +0000 |
commit | f5bc94555458123f93d8b07816a68fb7485421e1 (patch) | |
tree | d2e27f1eb0c027721847acc498affb536981e1e1 /g10/seskey.c | |
parent | gpg: If possible TRUST values now depend on signer's UID or --sender. (diff) | |
download | gnupg-f5bc94555458123f93d8b07816a68fb7485421e1.tar.gz gnupg-f5bc94555458123f93d8b07816a68fb7485421e1.zip |
gpg,ecc: Handle external representation as SOS with opaque MPI.
* g10/pkglue.h (sexp_extract_param_sos): New.
* g10/build-packet.c (sos_write): New.
(do_key, do_pubkey_enc, do_signature): Use sos_write for ECC.
* g10/export.c (cleartext_secret_key_to_openpgp): Use
sexp_extract_param_sos.
(transfer_format_to_openpgp): Use opaque MPI for ECC.
* g10/keygen.c (ecckey_from_sexp): Use sexp_extract_param_sos.
* g10/keyid.c (hash_public_key): Handle opaque MPI for SOS.
* g10/parse-packet.c (sos_read): New.
(parse_pubkeyenc,parse_signature,parse_key): Use sos_read for ECC.
* g10/pkglue.c (sexp_extract_param_sos): New.
(pk_verify): Handle opaque MPI for SOS.
(pk_encrypt): Use sexp_extract_param_sos.
* g10/seskey.c (encode_session_key): Use opaque MPI.
* g10/sign.c (do_sign): Use sexp_extract_param_sos.
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/seskey.c')
-rw-r--r-- | g10/seskey.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/g10/seskey.c b/g10/seskey.c index fb71ad5cd..15c210b78 100644 --- a/g10/seskey.c +++ b/g10/seskey.c @@ -82,7 +82,6 @@ encode_session_key (int openpgp_pk_algo, DEK *dek, unsigned int nbits) byte *frame; int i,n; u16 csum; - gcry_mpi_t a; if (DBG_CRYPTO) log_debug ("encode_session_key: encoding %d byte DEK", dek->keylen); @@ -124,10 +123,7 @@ encode_session_key (int openpgp_pk_algo, DEK *dek, unsigned int nbits) (int) nframe, frame[0], frame[1], frame[2], frame[nframe-3], frame[nframe-2], frame[nframe-1]); - if (gcry_mpi_scan (&a, GCRYMPI_FMT_USG, frame, nframe, &nframe)) - BUG(); - xfree(frame); - return a; + return gcry_mpi_set_opaque (NULL, frame, 8*nframe); } /* The current limitation is that we can only use a session key @@ -195,10 +191,7 @@ encode_session_key (int openpgp_pk_algo, DEK *dek, unsigned int nbits) frame[n++] = csum >>8; frame[n++] = csum; log_assert (n == nframe); - if (gcry_mpi_scan( &a, GCRYMPI_FMT_USG, frame, n, &nframe)) - BUG(); - xfree (frame); - return a; + return gcry_mpi_set_opaque (NULL, frame, 8*n); } |