Support opaque MPI with gcry_mpi_print
Testing, HighPublic

Description

While opaque MPI is supported with gcry_sexp_build since version 1.5.0, gcry_mpi_print prints out wrongly.

In master, for ECC, opaque MPI is used to represent point, it should be supported.

gniibe created this task.Mar 10 2020, 2:20 AM

A program like tests/t-mpi-point assumes gcry_mpi_print can do that.
We have a sort of regression with --debug option with t-mpi-point, the point q is not printed out correctly.

gniibe changed the task status from Open to Testing.

Fixed in master.

werner added a subscriber: werner.Mar 13 2020, 5:25 PM

I am not sure whether this is related but when using Libgcrypt master and verifying a signature created with an ed25519 key, I get the error below with valgrind. Both with 2.2. current and 2.3. It does not happen with the current Libgcrypt 1.8.

==31643== Conditional jump or move depends on uninitialised value(s)
==31643==    at 0x4E6462B: mpi_ec_get_elliptic_curve (ecc-curves.c:1042)  
==31643==    by 0x4E64DE5: _gcry_mpi_ec_internal_new (ecc-curves.c:11171)
==31643==    by 0x4E6162C: ecc_verify (ecc.c:803)
==31643==    by 0x4DE50D0: _gcry_pk_verify (pubkey.c:459)
==31643==    by 0x4DCFC24: gcry_pk_verify (visibility.c:1010)
==31643==    by 0x16DEA4: pk_verify (in /home/wk/b/gnupg-2.2/g10/gpg)
==31643==    by 0x16635A: check_signature_end_simple (in /home/wk/b/gnupg-2.2/g10/gpg)
==31643==    by 0x165A41: check_signature_end (in /home/wk/b/gnupg-2.2/g10/gpg)
==31643==    by 0x166843: check_backsig (in /home/wk/b/gnupg-2.2/g10/gpg)