summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2008-11-24 16:37:50 +0000
committerWerner Koch <wk@gnupg.org>2008-11-24 16:37:50 +0000
commit8cc2eb702eeed951907db225f25a1088db4e5c44 (patch)
treecb2d85993036d2a8c755a3729330a767f1e49c03 /src
parentf73ff6ce957e65b40dd7a52e9d96744239eb4996 (diff)
downloadlibgcrypt-8cc2eb702eeed951907db225f25a1088db4e5c44.tar.gz
Cleaned up the public key module calling conventions.
Add a way to derive RSA keys according to X9.31.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog8
-rw-r--r--src/cipher-proto.h14
-rw-r--r--src/cipher.h11
-rw-r--r--src/g10lib.h4
4 files changed, 22 insertions, 15 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index c255fda2..d503dd35 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-24 Werner Koch <wk@g10code.com>
+
+ * cipher-proto.h (pk_ext_generate_t): Simplify.
+ (pk_get_param): New.
+ (pk_extra_spec_t): Add field GET_PARAM.
+ * cipher.h (PUBKEY_FLAG_TRANSIENT_KEY): Remove.
+ (_gcry_pubkey_extraspec_elg): New.
+
2008-11-05 Werner Koch <wk@g10code.com>
* cipher.h (CIPHER_INFO_NO_WEAK_KEY): New.
diff --git a/src/cipher-proto.h b/src/cipher-proto.h
index 975a2a11..31bf6ba3 100644
--- a/src/cipher-proto.h
+++ b/src/cipher-proto.h
@@ -43,18 +43,19 @@ typedef gpg_err_code_t (*selftest_func_t)
typedef gcry_err_code_t (*pk_ext_generate_t)
(int algo,
unsigned int nbits,
- unsigned int qbits,
- unsigned long use_e,
- const char *name,
- gcry_sexp_t domain,
- unsigned int keygen_flags,
+ unsigned long evalue,
+ gcry_sexp_t genparms,
gcry_mpi_t *skey,
gcry_mpi_t **retfactors);
-/* The type is used to compute the keygrip. */
+/* The type used to compute the keygrip. */
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. */
+typedef gcry_err_code_t (*pk_get_param_t)
+ (const char *name, gcry_mpi_t *pkey);
+
/* 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);
@@ -79,6 +80,7 @@ typedef struct pk_extra_spec
selftest_func_t selftest;
pk_ext_generate_t ext_generate;
pk_comp_keygrip_t comp_keygrip;
+ pk_get_param_t get_param;
} pk_extra_spec_t;
diff --git a/src/cipher.h b/src/cipher.h
index f84d9ad7..62ca745a 100644
--- a/src/cipher.h
+++ b/src/cipher.h
@@ -27,7 +27,6 @@
#include "../random/random.h"
#define PUBKEY_FLAG_NO_BLINDING (1 << 0)
-#define PUBKEY_FLAG_TRANSIENT_KEY (1 << 1)
#define CIPHER_INFO_NO_WEAK_KEY 1
@@ -62,18 +61,11 @@ void _gcry_register_pk_dsa_progress (gcry_handler_progress_t cbc, void *cb_data)
/*-- elgamal.c --*/
void _gcry_register_pk_elg_progress (gcry_handler_progress_t cb,
void *cb_data);
-gcry_err_code_t _gcry_elg_generate_using_x (int algo, unsigned int nbits,
- gcry_mpi_t x,
- gcry_mpi_t *skey,
- gcry_mpi_t **retfactors);
+
/*-- ecc.c --*/
void _gcry_register_pk_ecc_progress (gcry_handler_progress_t cbc,
void *cb_data);
-gcry_err_code_t _gcry_ecc_generate (int algo, unsigned int nbits,
- const char *curve,
- gcry_mpi_t *skey, gcry_mpi_t **retfactors);
-gcry_err_code_t _gcry_ecc_get_param (const char *name, gcry_mpi_t *pkey);
/*-- primegen.c --*/
@@ -138,6 +130,7 @@ extern gcry_pk_spec_t _gcry_pubkey_spec_ecdsa;
extern pk_extra_spec_t _gcry_pubkey_extraspec_rsa;
extern pk_extra_spec_t _gcry_pubkey_extraspec_dsa;
+extern pk_extra_spec_t _gcry_pubkey_extraspec_elg;
extern pk_extra_spec_t _gcry_pubkey_extraspec_ecdsa;
diff --git a/src/g10lib.h b/src/g10lib.h
index 22f9acff..f7ea7816 100644
--- a/src/g10lib.h
+++ b/src/g10lib.h
@@ -175,6 +175,10 @@ gcry_mpi_t _gcry_generate_public_prime (unsigned int nbits,
gcry_mpi_t _gcry_generate_elg_prime (int mode,
unsigned int pbits, unsigned int qbits,
gcry_mpi_t g, gcry_mpi_t **factors);
+gcry_mpi_t _gcry_derive_x931_prime (const gcry_mpi_t xp,
+ const gcry_mpi_t xp1, const gcry_mpi_t xp2,
+ const gcry_mpi_t e,
+ gcry_mpi_t *r_p1, gcry_mpi_t *r_p2);
/* replacements of missing functions (missing-string.c)*/