Home GnuPG

ecc: New API function gcry_mpi_ec_decode_point.
2cf2ca7bb974Unpublished

Unpublished Commit · Learn More

Not On Permanent Ref: This commit is not an ancestor of any permanent ref.

Description

ecc: New API function gcry_mpi_ec_decode_point.

* mpi/ec.c (_gcry_mpi_ec_decode_point): New.
* cipher/ecc-common.h: Move two prototypes to ...
* src/ec-context.h: here.
* src/gcrypt.h.in (gcry_mpi_ec_decode_point): New.
* src/libgcrypt.def (gcry_mpi_ec_decode_point): New.
* src/libgcrypt.vers (gcry_mpi_ec_decode_point): New.
* src/visibility.c (gcry_mpi_ec_decode_point): New.
* src/visibility.h: Add new function.

This new function make the use of the gcry_mpi_ec_curve_point function
possible in many contexts. Here is a code snippet which could be used
in gpg to check a point:

static gpg_error_t
check_point (PKT_public_key *pk, gcry_mpi_t m_point)
{

gpg_error_t err;
char *curve;
gcry_ctx_t gctx = NULL;
gcry_mpi_point_t point = NULL;

/* Get the curve name from the first OpenPGP key parameter.  */
curve = openpgp_oid_to_str (pk->pkey[0]);
if (!curve)
  {
    err = gpg_error_from_syserror ();
    goto leave;
  }

point = gcry_mpi_point_new (0);
if (!point)
  {
    err = gpg_error_from_syserror ();
    goto leave;
  }

err = gcry_mpi_ec_new (&gctx, NULL, curve);
if (err)
  goto leave;

err = gcry_mpi_ec_decode_point (point, m_point, gctx);
if (err)
  goto leave;

if (!gcry_mpi_ec_curve_point (point, gctx))
  err = gpg_error (GPG_ERR_BAD_DATA);

leave:

gcry_ctx_release (gctx);
gcry_mpi_point_release (point);
xfree (curve);
return err;

}

  • Signed-off-by: Werner Koch <wk@gnupg.org>

Details

Provenance
wernerAuthored on Jan 28 2016, 5:33 PM
Parents
rC191c2e4fe2dc: Fix build problem for rndegd.c
Branches
Unknown
Tags
Unknown

Event Timeline

Werner Koch <wk@gnupg.org> committed rC2cf2ca7bb974: ecc: New API function gcry_mpi_ec_decode_point. (authored by Werner Koch <wk@gnupg.org>).Jan 28 2016, 5:34 PM