summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoritz Schulte <mo@g10code.com>2003-11-28 04:55:28 +0000
committerMoritz Schulte <mo@g10code.com>2003-11-28 04:55:28 +0000
commiteb98ac05d39cb2d4d43c2df8d2f29cab482c8137 (patch)
treec0fff86020e63317ddf440bd6336cc7986d28984
parent62583f58c734bd4a3aa0648cfdb93bdd52f8ecbe (diff)
downloadlibgcrypt-eb98ac05d39cb2d4d43c2df8d2f29cab482c8137.tar.gz
2003-11-23 Moritz Schulte <mo@g10code.com>
* md.c (gcry_md_list): Adjust interface, call REGISTER_DEFAULT_DIGESTS. * cipher.c (gcry_cipher_list): Adjust interface, call REGISTER_DEFAULT_CIPHERS. 2003-11-02 Moritz Schulte <mo@g10code.com> * primegen.c (prime_generate_internal): Initialize prime. 2003-11-01 Moritz Schulte <mo@g10code.com> * pubkey.c (sexp_extract_std): Adjust to new ac interface. (gcry_pk_genkey): Use _gcry_ac_key_pair_generate instead of _gcry_ac_key_pair_generate_ext. * pubkey.c: Removed wrapper macros, used internal ac functions instead of the public ones.
-rw-r--r--cipher/cipher.c4
-rw-r--r--cipher/md.c4
-rw-r--r--cipher/primegen.c2
-rw-r--r--cipher/pubkey.c153
4 files changed, 75 insertions, 88 deletions
diff --git a/cipher/cipher.c b/cipher/cipher.c
index 73544d23..b6cdf00e 100644
--- a/cipher/cipher.c
+++ b/cipher/cipher.c
@@ -1310,10 +1310,12 @@ _gcry_cipher_init (void)
according size. In case there are less cipher modules than
*LIST_LENGTH, *LIST_LENGTH is updated to the correct number. */
gcry_error_t
-gcry_cipher_list (int *list, int *list_length)
+gcry_cipher_list (int **list, int *list_length)
{
gcry_err_code_t err = GPG_ERR_NO_ERROR;
+ REGISTER_DEFAULT_CIPHERS;
+
ath_mutex_lock (&ciphers_registered_lock);
err = _gcry_module_list (ciphers_registered, list, list_length);
ath_mutex_unlock (&ciphers_registered_lock);
diff --git a/cipher/md.c b/cipher/md.c
index 790ca979..58ac6e4a 100644
--- a/cipher/md.c
+++ b/cipher/md.c
@@ -1241,10 +1241,12 @@ gcry_md_is_enabled (gcry_md_hd_t a, int algo)
than *LIST_LENGTH, *LIST_LENGTH is updated to the correct
number. */
gcry_error_t
-gcry_md_list (int *list, int *list_length)
+gcry_md_list (int **list, int *list_length)
{
gcry_err_code_t err = GPG_ERR_NO_ERROR;
+ REGISTER_DEFAULT_DIGESTS;
+
ath_mutex_lock (&digests_registered_lock);
err = _gcry_module_list (digests_registered, list, list_length);
ath_mutex_unlock (&digests_registered_lock);
diff --git a/cipher/primegen.c b/cipher/primegen.c
index e74eed93..fa76a292 100644
--- a/cipher/primegen.c
+++ b/cipher/primegen.c
@@ -200,7 +200,7 @@ prime_generate_internal (int mode,
unsigned int n = 0; /* Number of factors. */
unsigned int m = 0; /* Number of primes in pool. */
gcry_mpi_t q = NULL; /* First prime factor. */
- gcry_mpi_t prime; /* Prime candidate. */
+ gcry_mpi_t prime = NULL; /* Prime candidate. */
unsigned int nprime = 0; /* Bits of PRIME. */
unsigned int req_qbits = qbits; /* The original QBITS value. */
gcry_mpi_t val_2 = mpi_alloc_set_ui (2); /* For check_prime(). */
diff --git a/cipher/pubkey.c b/cipher/pubkey.c
index b7c8577f..861d9f28 100644
--- a/cipher/pubkey.c
+++ b/cipher/pubkey.c
@@ -94,31 +94,6 @@ static struct
-/* Wrapper macros. */
-
-#define _pk_wrap(expr) gcry_err_code (expr)
-#define gcry_ac_data_get_index(args ...) _pk_wrap (gcry_ac_data_get_index (args))
-#define gcry_ac_name_to_id(args ...) _pk_wrap (gcry_ac_name_to_id (args))
-#define gcry_ac_open(args ...) _pk_wrap (gcry_ac_open (args))
-#define gcry_ac_data_new(args ...) _pk_wrap (gcry_ac_data_new (args))
-#define gcry_ac_data_set(args ...) _pk_wrap (gcry_ac_data_set (args))
-#define gcry_ac_key_init(args ...) _pk_wrap (gcry_ac_key_init (args))
-#define gcry_ac_id_to_name(args ...) _pk_wrap (gcry_ac_id_to_name (args))
-#define gcry_sexp_build_array(args ...) _pk_wrap (gcry_sexp_build_array (args))
-#define gcry_sexp_build(args ...) _pk_wrap (gcry_sexp_build (args))
-#define gcry_ac_key_get_nbits(args ...) _pk_wrap (gcry_ac_key_get_nbits (args))
-#define gcry_ac_data_encrypt(args ...) _pk_wrap (gcry_ac_data_encrypt (args))
-#define gcry_ac_data_decrypt(args ...) _pk_wrap (gcry_ac_data_decrypt (args))
-#define gcry_ac_data_sign(args ...) _pk_wrap (gcry_ac_data_sign (args))
-#define gcry_ac_data_verify(args ...) _pk_wrap (gcry_ac_data_verify (args))
-#define gcry_ac_key_test(args ...) _pk_wrap (gcry_ac_key_test (args))
-#define gcry_ac_key_pair_generate_ext(args ...) _pk_wrap (gcry_ac_key_pair_generate_ext (args))
-#define gcry_ac_key_get_nbits(args ...) _pk_wrap (gcry_ac_key_get_nbits (args))
-#define gcry_ac_key_get_grip(args ...) _pk_wrap (gcry_ac_key_get_grip (args))
-#define gcry_ac_list(args ...) _pk_wrap (gcry_ac_list (args))
-
-
-
/* Extract an unsigned number that is expected in the S-Expression
SEXP at position IDX. */
static gcry_err_code_t
@@ -269,7 +244,7 @@ sexp_extract_std (gcry_sexp_t sexp, pk_sexp_type_t type, gcry_ac_data_t *data,
strncpy (name_terminated, identifier, identifier_length);
name_terminated[identifier_length] = 0;
- err = gcry_ac_name_to_id (name_terminated, &algorithm_id);
+ err = _gcry_ac_name_to_id (name_terminated, &algorithm_id);
free (name_terminated);
}
@@ -291,13 +266,13 @@ sexp_extract_std (gcry_sexp_t sexp, pk_sexp_type_t type, gcry_ac_data_t *data,
else
{
/* Create new handle. */
- err = gcry_ac_open (&handle_new, algorithm_id, 0);
+ err = _gcry_ac_open (&handle_new, algorithm_id, 0);
}
}
if (! err)
/* Allocate data set for MPIs. */
- err = gcry_ac_data_new (&data_new);
+ err = _gcry_ac_data_new (&data_new);
if (! err)
{
@@ -306,9 +281,9 @@ sexp_extract_std (gcry_sexp_t sexp, pk_sexp_type_t type, gcry_ac_data_t *data,
gcry_sexp_t elem_list = NULL;
gcry_sexp_t data_list = NULL;
unsigned int data_list_n = 0;
- gcry_mpi_t mpi = NULL;
- char name[] = { 0, 0 };
size_t tmp_data_length = 0;
+ gcry_mpi_t mpi = NULL;
+ char *name;
data_list = gcry_sexp_nth (list2, 1);
if (data_list)
@@ -353,11 +328,19 @@ sexp_extract_std (gcry_sexp_t sexp, pk_sexp_type_t type, gcry_ac_data_t *data,
}
if (! err)
{
- name[0] = *identifier;
- err = gcry_ac_data_set (data_new, name, mpi);
+ name = gcry_malloc (identifier_length + 1);
+ if (! name)
+ err = gcry_err_code_from_errno (ENOMEM);
+ else
+ {
+ strncpy (name, identifier, identifier_length);
+ name[identifier_length] = 0;
+
+ err = _gcry_ac_data_set (data_new, GCRY_AC_FLAG_DEALLOC, name, mpi);
+ if (err)
+ gcry_free (name);
+ }
}
- if (mpi)
- gcry_mpi_release (mpi);
if (elem_list)
gcry_sexp_release (elem_list);
}
@@ -386,9 +369,9 @@ sexp_extract_std (gcry_sexp_t sexp, pk_sexp_type_t type, gcry_ac_data_t *data,
{
/* Deallocate resources. */
if (handle_new)
- gcry_ac_close (handle_new);
+ _gcry_ac_close (handle_new);
if (data_new)
- gcry_ac_data_destroy (data_new);
+ _gcry_ac_data_destroy (data_new);
}
return err;
@@ -421,7 +404,7 @@ sexp_extract_key (gcry_sexp_t sexp, pk_key_type_t which, gcry_ac_key_t *key,
}
if (! err)
- err = gcry_ac_key_init (&key_new, handle_new, key_type, data);
+ err = _gcry_ac_key_init (&key_new, handle_new, key_type, data);
if (! err)
{
@@ -431,11 +414,11 @@ sexp_extract_key (gcry_sexp_t sexp, pk_key_type_t which, gcry_ac_key_t *key,
else
{
if (handle_new)
- gcry_ac_close (handle_new);
+ _gcry_ac_close (handle_new);
if (key_new)
- gcry_ac_key_destroy (key_new);
+ _gcry_ac_key_destroy (key_new);
else if (data)
- gcry_ac_data_destroy (data);
+ _gcry_ac_data_destroy (data);
}
return err;
@@ -488,7 +471,7 @@ sexp_extract_data (gcry_sexp_t data_sexp, gcry_ac_handle_t handle,
unsigned int nbits = 0;
- err = gcry_ac_key_get_nbits (handle, key, &nbits);
+ err = _gcry_ac_key_get_nbits (handle, key, &nbits);
if (! err)
{
flags_sexp = gcry_sexp_find_token (data_sexp_inner, "flags", 0);
@@ -753,12 +736,12 @@ sexp_construct_std (gcry_sexp_t *sexp, pk_sexp_type_t type,
/* Figure out algorithm name. */
_gcry_ac_info_get (handle, &algorithm_id, NULL);
- err = gcry_ac_id_to_name (algorithm_id, &algorithm_name);
+ err = _gcry_ac_id_to_name (algorithm_id, &algorithm_name);
if (! err)
{
/* Calc. */
- elements_n = gcry_ac_data_length (data);
+ elements_n = _gcry_ac_data_length (data);
size = 5 + strlen (pk_sexp_types[type].identifier) + (elements_n * 5);
size += strlen (algorithm_name);
@@ -779,7 +762,7 @@ sexp_construct_std (gcry_sexp_t *sexp, pk_sexp_type_t type,
for (i = 0; i < elements_n && (! err); i++)
{
- err = gcry_ac_data_get_index (data, i, &name, NULL);
+ err = _gcry_ac_data_get_index (data, 0, i, &name, NULL);
if (! err)
p += sprintf (p, "(%s%%m)", name);
}
@@ -904,9 +887,9 @@ sexp_construct_genkey (gcry_sexp_t *genkey_sexp,
char *format_string = NULL;
size_t size = 0;
- key_public = gcry_ac_key_data_get (gcry_ac_key_pair_extract (key_pair,
+ key_public = _gcry_ac_key_data_get (_gcry_ac_key_pair_extract (key_pair,
GCRY_AC_KEY_PUBLIC));
- key_secret = gcry_ac_key_data_get (gcry_ac_key_pair_extract (key_pair,
+ key_secret = _gcry_ac_key_data_get (_gcry_ac_key_pair_extract (key_pair,
GCRY_AC_KEY_SECRET));
err = sexp_construct_std (&key_public_sexp, PK_SEXP_TYPE_KEY_PUBLIC,
@@ -977,7 +960,7 @@ gcry_pk_map_name (const char *string)
{
gcry_ac_id_t algorithm_id = 0;
- gcry_ac_name_to_id (string, &algorithm_id);
+ _gcry_ac_name_to_id (string, &algorithm_id);
return algorithm_id;
}
@@ -989,7 +972,7 @@ gcry_pk_algo_name (int algorithm)
{
const char *algorithm_name = NULL;
- gcry_ac_id_to_name (algorithm, &algorithm_name);
+ _gcry_ac_id_to_name (algorithm, &algorithm_name);
return algorithm_name;
}
@@ -1041,7 +1024,7 @@ gcry_pk_encrypt (gcry_sexp_t *data_encrypted_sexp,
if (! err)
/* Encrypt. */
- err = gcry_ac_data_encrypt (handle, 0, key_public, data_plain,
+ err = _gcry_ac_data_encrypt (handle, 0, key_public, data_plain,
&data_encrypted);
if (! err)
@@ -1052,13 +1035,13 @@ gcry_pk_encrypt (gcry_sexp_t *data_encrypted_sexp,
/* Deallocate resources. */
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key_public)
- gcry_ac_key_destroy (key_public);
+ _gcry_ac_key_destroy (key_public);
if (data_plain)
gcry_mpi_release (data_plain);
if (data_encrypted)
- gcry_ac_data_destroy (data_encrypted);
+ _gcry_ac_data_destroy (data_encrypted);
if (! err)
*data_encrypted_sexp = data_encrypted_sexp_new;
@@ -1126,13 +1109,13 @@ gcry_pk_decrypt (gcry_sexp_t *data_decrypted_sexp,
{
/* Convert flags. */
if (sexp_flags_data & PK_SEXP_FLAG_NO_BLINDING)
- ac_flags |= GCRY_AC_FLAG_DATA_NO_BLINDING;
+ ac_flags |= GCRY_AC_FLAG_NO_BLINDING;
}
}
if (! err)
/* Decrypt. */
- err = gcry_ac_data_decrypt (handle, ac_flags, key_secret,
+ err = _gcry_ac_data_decrypt (handle, ac_flags, key_secret,
&data_decrypted, data_encrypted);
if (! err)
@@ -1149,13 +1132,13 @@ gcry_pk_decrypt (gcry_sexp_t *data_decrypted_sexp,
/* Deallocate resources. */
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key_secret)
- gcry_ac_key_destroy (key_secret);
+ _gcry_ac_key_destroy (key_secret);
if (data_decrypted)
gcry_mpi_release (data_decrypted);
if (data_encrypted)
- gcry_ac_data_destroy (data_encrypted);
+ _gcry_ac_data_destroy (data_encrypted);
if (! err)
*data_decrypted_sexp = data_decrypted_sexp_new;
@@ -1218,7 +1201,7 @@ gcry_pk_sign (gcry_sexp_t *data_signed_sexp,
if (! err)
/* Sign data. */
- err = gcry_ac_data_sign (handle, key_secret, data, &data_signed);
+ err = _gcry_ac_data_sign (handle, key_secret, data, &data_signed);
if (! err)
/* Build the return list. */
@@ -1228,11 +1211,11 @@ gcry_pk_sign (gcry_sexp_t *data_signed_sexp,
/* Deallocate resources. */
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key_secret)
- gcry_ac_key_destroy (key_secret);
+ _gcry_ac_key_destroy (key_secret);
if (data_signed)
- gcry_ac_data_destroy (data_signed);
+ _gcry_ac_data_destroy (data_signed);
if (data)
gcry_mpi_release (data);
@@ -1279,17 +1262,17 @@ gcry_pk_verify (gcry_sexp_t data_signed_sexp,
if (! err)
/* Verify signature. */
- err = gcry_ac_data_verify (handle, key_public, data, data_signed);
+ err = _gcry_ac_data_verify (handle, key_public, data, data_signed);
/* Deallocate resources. */
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key_public)
- gcry_ac_key_destroy (key_public);
+ _gcry_ac_key_destroy (key_public);
if (data)
gcry_mpi_release (data);
if (data_signed)
- gcry_ac_data_destroy (data_signed);
+ _gcry_ac_data_destroy (data_signed);
return gcry_error (err);
}
@@ -1308,13 +1291,13 @@ gcry_pk_testkey (gcry_sexp_t key_secret_sexp)
if (! err)
/* Check. */
- err = gcry_ac_key_test (handle, key_secret);
+ err = _gcry_ac_key_test (handle, key_secret);
/* Deallocate resources. */
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key_secret)
- gcry_ac_key_destroy (key_secret);
+ _gcry_ac_key_destroy (key_secret);
return gcry_error (err);
}
@@ -1416,13 +1399,13 @@ gcry_pk_genkey (gcry_sexp_t *key_pair_sexp, gcry_sexp_t key_spec)
strncpy (name_terminated, identifier, identifier_length);
name_terminated[identifier_length] = 0;
- err = gcry_ac_name_to_id (name_terminated, &algorithm_id);
+ err = _gcry_ac_name_to_id (name_terminated, &algorithm_id);
free (name_terminated);
}
if (! err)
- err = gcry_ac_open (&handle, algorithm_id, 0);
+ err = _gcry_ac_open (&handle, algorithm_id, 0);
if (! err)
{
@@ -1455,8 +1438,8 @@ gcry_pk_genkey (gcry_sexp_t *key_pair_sexp, gcry_sexp_t key_spec)
if (! err)
/* Generate key pair. */
- err = gcry_ac_key_pair_generate_ext (handle, (unsigned int) nbits, spec,
- &key_pair, &misc_data);
+ err = _gcry_ac_key_pair_generate (handle, (unsigned int) nbits, spec,
+ &key_pair, &misc_data);
if (! err)
/* Construct return list. */
@@ -1465,9 +1448,9 @@ gcry_pk_genkey (gcry_sexp_t *key_pair_sexp, gcry_sexp_t key_spec)
/* Deallocate resources. */
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key_pair)
- gcry_ac_key_pair_destroy (key_pair);
+ _gcry_ac_key_pair_destroy (key_pair);
if (misc_data)
gcry_free (misc_data);
@@ -1494,12 +1477,12 @@ gcry_pk_get_nbits (gcry_sexp_t key_sexp)
/* Extract key. */
err = sexp_extract_key (key_sexp, PK_KEY_TYPE_ANY, &key, &handle);
if (! err)
- err = gcry_ac_key_get_nbits (handle, key, &nbits);
+ err = _gcry_ac_key_get_nbits (handle, key, &nbits);
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key)
- gcry_ac_key_destroy (key);
+ _gcry_ac_key_destroy (key);
return nbits;
}
@@ -1520,12 +1503,12 @@ gcry_pk_get_keygrip (gcry_sexp_t key_sexp, unsigned char *key_grip)
err = sexp_extract_key (key_sexp, PK_KEY_TYPE_ANY, &key, &handle);
if (! err)
- err = gcry_ac_key_get_grip (handle, key, key_grip);
+ err = _gcry_ac_key_get_grip (handle, key, key_grip);
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (key)
- gcry_ac_key_destroy (key);
+ _gcry_ac_key_destroy (key);
return err ? NULL : key_grip;
}
@@ -1545,11 +1528,11 @@ gcry_pk_ctl (int cmd, void *buffer, size_t buflen)
err = GPG_ERR_CIPHER_ALGO;
else
{
- err = gcry_ac_open (&handle, *((int *) buffer), 0);
+ err = _gcry_ac_open (&handle, *((int *) buffer), 0);
if (! err)
{
_gcry_ac_algorithm_disable (handle);
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
}
}
@@ -1588,7 +1571,7 @@ gcry_pk_algo_info (int algorithm, int what, void *buffer, size_t *number)
gcry_ac_handle_t handle = NULL;
size_t number_new = 0;
- err = gcry_ac_open (&handle, algorithm, 0);
+ err = _gcry_ac_open (&handle, algorithm, 0);
if (! err)
switch (what)
@@ -1660,7 +1643,7 @@ gcry_pk_algo_info (int algorithm, int what, void *buffer, size_t *number)
}
if (handle)
- gcry_ac_close (handle);
+ _gcry_ac_close (handle);
if (number_new)
*number = number_new;
@@ -1679,7 +1662,7 @@ gcry_pk_list (int *list, int *list_length)
{
gcry_err_code_t err = GPG_ERR_NO_ERROR;
- err = gcry_ac_list (list, list_length);
+ err = _gcry_ac_list (list, list_length);
return gcry_error (err);
}