diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/cipher-proto.h | 9 | ||||
-rw-r--r-- | src/gcrypt.h.in | 4 | ||||
-rw-r--r-- | src/libgcrypt.def | 5 | ||||
-rw-r--r-- | src/libgcrypt.vers | 1 | ||||
-rw-r--r-- | src/visibility.c | 13 | ||||
-rw-r--r-- | src/visibility.h | 3 |
7 files changed, 36 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index f2fbb327..b59f1c19 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +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. + 2011-01-31 Werner Koch <wk@g10code.com> * sexp.c (vsexp_sscan): Allow opaque MPIs in "%m". diff --git a/src/cipher-proto.h b/src/cipher-proto.h index 21532367..ea7a70de 100644 --- a/src/cipher-proto.h +++ b/src/cipher-proto.h @@ -1,5 +1,5 @@ /* cipher-proto.h - Internal declarations - * Copyright (C) 2008 Free Software Foundation, Inc. + * Copyright (C) 2008, 2011 Free Software Foundation, Inc. * * This file is part of Libgcrypt. * @@ -53,10 +53,14 @@ typedef gcry_err_code_t (*pk_ext_generate_t) typedef gpg_err_code_t (*pk_comp_keygrip_t) (gcry_md_hd_t md, gcry_sexp_t keyparm); -/* The type used to quert ECC curve parameters. */ +/* The type used to query ECC curve parameters. */ typedef gcry_err_code_t (*pk_get_param_t) (const char *name, gcry_mpi_t *pkey); +/* The type used to query an ECC curve name. */ +typedef const char *(*pk_get_curve_t)(gcry_mpi_t *pkey, int iterator, + unsigned int *r_nbits); + /* 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); @@ -82,6 +86,7 @@ typedef struct pk_extra_spec pk_ext_generate_t ext_generate; pk_comp_keygrip_t comp_keygrip; pk_get_param_t get_param; + pk_get_curve_t get_curve; } pk_extra_spec_t; diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in index 9c58b989..25099788 100644 --- a/src/gcrypt.h.in +++ b/src/gcrypt.h.in @@ -1037,6 +1037,10 @@ unsigned int gcry_pk_get_nbits (gcry_sexp_t key) _GCRY_GCC_ATTR_PURE; used without contacting the author. */ unsigned char *gcry_pk_get_keygrip (gcry_sexp_t key, unsigned char *array); +/* Return the name of the curve matching KEY. */ +const char *gcry_pk_get_curve (gcry_sexp_t key, int iterator, + unsigned int *r_nbits); + /* 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 8fc4d329..55ff8775 100644 --- a/src/libgcrypt.def +++ b/src/libgcrypt.def @@ -230,8 +230,7 @@ EXPORTS gcry_cipher_setkey @188 gcry_cipher_setiv @189 gcry_cipher_setctr @190 - - gcry_mpi_lshift @191 - + gcry_mpi_lshift @191 + gcry_pk_get_curve @192 diff --git a/src/libgcrypt.vers b/src/libgcrypt.vers index ef9fcee1..46704365 100644 --- a/src/libgcrypt.vers +++ b/src/libgcrypt.vers @@ -57,6 +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_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 f187a65e..fe6d9bdd 100644 --- a/src/visibility.c +++ b/src/visibility.c @@ -1,5 +1,5 @@ /* visibility.c - Wrapper for all public functions. - * Copyright (C) 2007, 2008 Free Software Foundation, Inc. + * Copyright (C) 2007, 2008, 2011 Free Software Foundation, Inc. * * This file is part of Libgcrypt. * @@ -737,6 +737,17 @@ gcry_pk_get_keygrip (gcry_sexp_t key, unsigned char *array) return _gcry_pk_get_keygrip (key, array); } +const char * +gcry_pk_get_curve (gcry_sexp_t key, int iterator, unsigned int *r_nbits) +{ + if (!fips_is_operational ()) + { + (void)fips_not_operational (); + return NULL; + } + return _gcry_pk_get_curve (key, iterator, r_nbits); +} + gcry_error_t gcry_pk_list (int *list, int *list_length) { diff --git a/src/visibility.h b/src/visibility.h index a11e5474..0b0219d3 100644 --- a/src/visibility.h +++ b/src/visibility.h @@ -103,6 +103,7 @@ #define gcry_pk_encrypt _gcry_pk_encrypt #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_nbits _gcry_pk_get_nbits #define gcry_pk_list _gcry_pk_list #define gcry_pk_map_name _gcry_pk_map_name @@ -358,6 +359,7 @@ void gcry_ac_os_to_mpi (gcry_mpi_t mpi, unsigned char *os, size_t os_n); #undef gcry_pk_encrypt #undef gcry_pk_genkey #undef gcry_pk_get_keygrip +#undef gcry_pk_get_curve #undef gcry_pk_get_nbits #undef gcry_pk_list #undef gcry_pk_map_name @@ -568,6 +570,7 @@ MARK_VISIBLE (gcry_pk_decrypt) 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_nbits) MARK_VISIBLE (gcry_pk_list) MARK_VISIBLE (gcry_pk_map_name) |