diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 14 | ||||
-rw-r--r-- | src/cipher-proto.h | 4 | ||||
-rw-r--r-- | src/gcrypt.h.in | 6 | ||||
-rw-r--r-- | src/libgcrypt.def | 1 | ||||
-rw-r--r-- | src/libgcrypt.vers | 2 | ||||
-rw-r--r-- | src/visibility.c | 11 | ||||
-rw-r--r-- | src/visibility.h | 3 |
7 files changed, 33 insertions, 8 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b59f1c19..1a0910b5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,9 +1,11 @@ 2011-02-01 Werner Koch <wk@g10code.com> - * libgcrypt.vers (gcry_pk_get_curve): Add. - * libgcrypt.def (gcry_pk_get_curve): Add. - * visibility.c (gcry_pk_get_curve): New. - * cipher-proto.h (pk_extra_spec): Add field GET_CURVE. + * gcrypt.h.in (gcry_pk_get_curve, gcry_pk_get_param): New. + * libgcrypt.vers (gcry_pk_get_curve, gcry_pk_get_param): Add. + * libgcrypt.def (gcry_pk_get_curve, gcry_pk_get_param): Add. + * visibility.c (gcry_pk_get_curve, gcry_pk_get_param): New. + * cipher-proto.h (pk_extra_spec): Add fields GET_CURVE and + GET_CURVE_PARM. 2011-01-31 Werner Koch <wk@g10code.com> @@ -2226,9 +2228,9 @@ Tue Dec 8 13:15:16 CET 1998 Werner Koch <wk@isil.d.shuttle.de> * gcrypt.h: New * mpiapi.c: New - + Copyright (C) 1998,1999,2000,2001,2002,2003 - 2004, 2005, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2008, 2009, 2011 Free Software Foundation, Inc. This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without diff --git a/src/cipher-proto.h b/src/cipher-proto.h index ea7a70de..e936eeae 100644 --- a/src/cipher-proto.h +++ b/src/cipher-proto.h @@ -61,6 +61,9 @@ typedef gcry_err_code_t (*pk_get_param_t) typedef const char *(*pk_get_curve_t)(gcry_mpi_t *pkey, int iterator, unsigned int *r_nbits); +/* The type used to query ECC curve parameters by name. */ +typedef gcry_sexp_t (*pk_get_curve_param_t)(const char *name); + /* The type used to convey additional information to a cipher. */ typedef gpg_err_code_t (*cipher_set_extra_info_t) (void *c, int what, const void *buffer, size_t buflen); @@ -87,6 +90,7 @@ typedef struct pk_extra_spec pk_comp_keygrip_t comp_keygrip; pk_get_param_t get_param; pk_get_curve_t get_curve; + pk_get_curve_param_t get_curve_param; } pk_extra_spec_t; diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in index 25099788..1b32de05 100644 --- a/src/gcrypt.h.in +++ b/src/gcrypt.h.in @@ -1,6 +1,6 @@ /* gcrypt.h - GNU Cryptographic Library Interface -*- c -*- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 - 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of Libgcrypt. @@ -1041,6 +1041,10 @@ unsigned char *gcry_pk_get_keygrip (gcry_sexp_t key, unsigned char *array); const char *gcry_pk_get_curve (gcry_sexp_t key, int iterator, unsigned int *r_nbits); +/* Return an S-expression with the parameters of the named ECC curve + NAME. ALGO must be set to an ECC algorithm. */ +gcry_sexp_t gcry_pk_get_param (int algo, const char *name); + /* Return 0 if the public key algorithm A is available for use. */ #define gcry_pk_test_algo(a) \ gcry_pk_algo_info( (a), GCRYCTL_TEST_ALGO, NULL, NULL ) diff --git a/src/libgcrypt.def b/src/libgcrypt.def index 55ff8775..3db4cb5a 100644 --- a/src/libgcrypt.def +++ b/src/libgcrypt.def @@ -234,3 +234,4 @@ EXPORTS gcry_mpi_lshift @191 gcry_pk_get_curve @192 + gcry_pk_get_param @193 diff --git a/src/libgcrypt.vers b/src/libgcrypt.vers index 46704365..f2a3513d 100644 --- a/src/libgcrypt.vers +++ b/src/libgcrypt.vers @@ -57,7 +57,7 @@ GCRYPT_1.2 { gcry_pk_get_keygrip; gcry_pk_get_nbits; gcry_pk_list; gcry_pk_map_name; gcry_pk_register; gcry_pk_sign; gcry_pk_testkey; gcry_pk_unregister; gcry_pk_verify; - gcry_pk_get_curve; + gcry_pk_get_curve; gcry_pk_get_param; gcry_ac_data_new; gcry_ac_data_destroy; gcry_ac_data_copy; gcry_ac_data_length; gcry_ac_data_clear; gcry_ac_data_set; diff --git a/src/visibility.c b/src/visibility.c index fe6d9bdd..c4fd09da 100644 --- a/src/visibility.c +++ b/src/visibility.c @@ -748,6 +748,17 @@ gcry_pk_get_curve (gcry_sexp_t key, int iterator, unsigned int *r_nbits) return _gcry_pk_get_curve (key, iterator, r_nbits); } +gcry_sexp_t +gcry_pk_get_param (int algo, const char *name) +{ + if (!fips_is_operational ()) + { + (void)fips_not_operational (); + return NULL; + } + return _gcry_pk_get_param (algo, name); +} + gcry_error_t gcry_pk_list (int *list, int *list_length) { diff --git a/src/visibility.h b/src/visibility.h index 0b0219d3..cf5a3ff3 100644 --- a/src/visibility.h +++ b/src/visibility.h @@ -104,6 +104,7 @@ #define gcry_pk_genkey _gcry_pk_genkey #define gcry_pk_get_keygrip _gcry_pk_get_keygrip #define gcry_pk_get_curve _gcry_pk_get_curve +#define gcry_pk_get_param _gcry_pk_get_param #define gcry_pk_get_nbits _gcry_pk_get_nbits #define gcry_pk_list _gcry_pk_list #define gcry_pk_map_name _gcry_pk_map_name @@ -360,6 +361,7 @@ void gcry_ac_os_to_mpi (gcry_mpi_t mpi, unsigned char *os, size_t os_n); #undef gcry_pk_genkey #undef gcry_pk_get_keygrip #undef gcry_pk_get_curve +#undef gcry_pk_get_param #undef gcry_pk_get_nbits #undef gcry_pk_list #undef gcry_pk_map_name @@ -571,6 +573,7 @@ MARK_VISIBLE (gcry_pk_encrypt) MARK_VISIBLE (gcry_pk_genkey) MARK_VISIBLE (gcry_pk_get_keygrip) MARK_VISIBLE (gcry_pk_get_curve) +MARK_VISIBLE (gcry_pk_get_param) MARK_VISIBLE (gcry_pk_get_nbits) MARK_VISIBLE (gcry_pk_list) MARK_VISIBLE (gcry_pk_map_name) |