2003-06-18 Moritz Schulte <moritz@g10code.com>
authorMoritz Schulte <mo@g10code.com>
Wed, 18 Jun 2003 14:19:41 +0000 (14:19 +0000)
committerMoritz Schulte <mo@g10code.com>
Wed, 18 Jun 2003 14:19:41 +0000 (14:19 +0000)
* cipher.h: Renamed types GcryDigestSpec, GcryCipherSpec and
GcryPubkeySpec into: gcry_digest_spec_t, gcry_cipher_spec_t and
gcry_pubkey_spec_t.
(gcry_pubkey_spec): Defined member `id' as unsigned.
(gcry_digest_spec): Likewise.
(gcry_cipher_spec): Likewise.

* module.c (_gcry_module_id_new): New function.
(_gcry_module_add): Generate a new ID via _gcry_module_id_new in
case `id' is zero.

* g10lib.h, module.c: Replace old type GcryModule with newer one:
gcry_module_t.

* module.c (_gcry_module_add): Added argument `id', use it.

* g10lib.h: Added declaration: _gcry_module_lookup_id.
(_gcry_module_add): Added argument `id'.

* module.c (_gcry_module_lookup_id): New function.

* g10lib.h (struct gcry_module): New member: id.

* gcrypt.h: New type: gcry_handler_progress_t,
gcry_handler_alloc_t, gcry_haandler_secure_check_t,
gcry_handler_realloc_t, gcry_handler_free_t,
gcry_handler_no_mem_t, gcry_handler_error_t, gcry_handler_log_t.
Use new types.

* cipher.h: Include <gcrypt.h>.
New types: gcry_pk_generate_t, gcry_pk_check_secret_key_t,
gcry_pk_encrypt_t, gcry_pk_decrypt_t, gcry_pk_sign_t,
gcry_pk_verify_t, gcry_pk_get_nbits_t, gcry_md_init_t,
gcry_md_write_t, gcry_md_final_t, gcry_md_read_t,
gcry_cipher_setkey_t, gcry_cipher_encrypt_t,
gcry_cipher_decrypt_t, gcry_cipher_stencrypt_t,
gcry_cipher_stdecrypt_t.
Use new types.

src/ChangeLog
src/cipher.h
src/g10lib.h
src/gcrypt.h
src/module.c

index 92c60e5..e3f6578 100644 (file)
@@ -1,3 +1,44 @@
+2003-06-18  Moritz Schulte  <moritz@g10code.com>
+
+       * cipher.h: Renamed types GcryDigestSpec, GcryCipherSpec and
+       GcryPubkeySpec into: gcry_digest_spec_t, gcry_cipher_spec_t and
+       gcry_pubkey_spec_t.
+       (gcry_pubkey_spec): Defined member `id' as unsigned.
+       (gcry_digest_spec): Likewise.
+       (gcry_cipher_spec): Likewise.
+
+       * module.c (_gcry_module_id_new): New function.
+       (_gcry_module_add): Generate a new ID via _gcry_module_id_new in
+       case `id' is zero.
+
+       * g10lib.h, module.c: Replace old type GcryModule with newer one:
+       gcry_module_t.
+
+       * module.c (_gcry_module_add): Added argument `id', use it.
+
+       * g10lib.h: Added declaration: _gcry_module_lookup_id.
+       (_gcry_module_add): Added argument `id'.
+
+       * module.c (_gcry_module_lookup_id): New function.
+
+       * g10lib.h (struct gcry_module): New member: id.
+
+       * gcrypt.h: New type: gcry_handler_progress_t,
+       gcry_handler_alloc_t, gcry_haandler_secure_check_t,
+       gcry_handler_realloc_t, gcry_handler_free_t,
+       gcry_handler_no_mem_t, gcry_handler_error_t, gcry_handler_log_t.
+       Use new types.
+
+       * cipher.h: Include <gcrypt.h>.
+       New types: gcry_pk_generate_t, gcry_pk_check_secret_key_t,
+       gcry_pk_encrypt_t, gcry_pk_decrypt_t, gcry_pk_sign_t,
+       gcry_pk_verify_t, gcry_pk_get_nbits_t, gcry_md_init_t,
+       gcry_md_write_t, gcry_md_final_t, gcry_md_read_t,
+       gcry_cipher_setkey_t, gcry_cipher_encrypt_t,
+       gcry_cipher_decrypt_t, gcry_cipher_stencrypt_t,
+       gcry_cipher_stdecrypt_t.
+       Use new types.
+
 2003-06-17  Moritz Schulte  <moritz@g10code.com>
 
        * Makefile.am (AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
index 5ee8354..4fa21bb 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef G10_CIPHER_H
 #define G10_CIPHER_H
 
+#include <gcrypt.h>
 
 #define DBG_CIPHER _gcry_get_debug_flag( 1 )
 
 #define PUBKEY_FLAG_NO_BLINDING 1 << 0
 
 /*-- rmd160.c --*/
-void _gcry_rmd160_hash_buffer( char *outbuf, const char *buffer, size_t length );
-
+void _gcry_rmd160_hash_buffer (char *outbuf, const char *buffer, size_t length);
 
 /*-- smallprime.c --*/
 extern ushort small_prime_numbers[];
 
 /*-- dsa.c --*/
-void _gcry_register_pk_dsa_progress (void (*cb)(void *,const char *,
-                                                int,int,int),
-                                     void *cb_data );
+void _gcry_register_pk_dsa_progress (gcry_handler_progress_t cbc, void *cb_data);
 /*-- elgamal.c --*/
-void _gcry_register_pk_elg_progress (void (*cb)(void *,const char *,
-                                                int,int,int),
-                                     void *cb_data );
+void _gcry_register_pk_elg_progress (gcry_handler_progress_t cb, void *cb_data);
 /*-- primegen.c --*/
-void _gcry_register_primegen_progress (void (*cb)(void *,const char *,
-                                                int,int,int),
-                                       void *cb_data );
+void _gcry_register_primegen_progress (gcry_handler_progress_t cb, void *cb_data);
+
+typedef gpg_err_code_t (*gcry_pk_generate_t) (int algo,
+                                             unsigned int nbits,
+                                             unsigned long use_e,
+                                             gcry_mpi_t *skey,
+                                             gcry_mpi_t **retfactors);
+typedef gpg_err_code_t (*gcry_pk_check_secret_key_t) (int algo, gcry_mpi_t *skey);
+typedef gpg_err_code_t (*gcry_pk_encrypt_t) (int algo,
+                                            gcry_mpi_t *resarr,
+                                            gcry_mpi_t data,
+                                            gcry_mpi_t *pkey,
+                                            int flags);
+typedef gpg_err_code_t (*gcry_pk_decrypt_t) (int algo,
+                                            gcry_mpi_t *result,
+                                            gcry_mpi_t *data,
+                                            gcry_mpi_t *skey,
+                                            int flags);
+typedef gpg_err_code_t (*gcry_pk_sign_t) (int algo,
+                                         gcry_mpi_t *resarr,
+                                         gcry_mpi_t data,
+                                         gcry_mpi_t *skey);
+typedef gpg_err_code_t (*gcry_pk_verify_t) (int algo,
+                                           gcry_mpi_t hash,
+                                           gcry_mpi_t *data,
+                                           gcry_mpi_t *pkey,
+                                           int (*cmp)(void *, gcry_mpi_t),
+                                           void *opaquev);
+typedef unsigned (*gcry_pk_get_nbits_t) (int algo, gcry_mpi_t *pkey);
 
 typedef struct gcry_pubkey_spec
 {
@@ -58,16 +80,19 @@ typedef struct gcry_pubkey_spec
   const char *elements_sig;
   const char *elements_grip;
   int use;
-  gpg_err_code_t (*generate) (int algo, unsigned int nbits, unsigned long use_e,
-                  gcry_mpi_t *skey, gcry_mpi_t **retfactors);
-  gpg_err_code_t (*check_secret_key) (int algo, gcry_mpi_t *skey);
-  gpg_err_code_t (*encrypt) (int algo, gcry_mpi_t *resarr, gcry_mpi_t data, gcry_mpi_t *pkey, int flags);
-  gpg_err_code_t (*decrypt) (int algo, gcry_mpi_t *result, gcry_mpi_t *data, gcry_mpi_t *skey, int flags);
-  gpg_err_code_t (*sign) (int algo, gcry_mpi_t *resarr, gcry_mpi_t data, gcry_mpi_t *skey);
-  gpg_err_code_t (*verify) (int algo, gcry_mpi_t hash, gcry_mpi_t *data, gcry_mpi_t *pkey,
-                int (*cmp)(void *, gcry_mpi_t), void *opaquev);
-  unsigned (*get_nbits) (int algo, gcry_mpi_t *pkey);
-} GcryPubkeySpec;
+  gcry_pk_generate_t generate;
+  gcry_pk_check_secret_key_t check_secret_key;
+  gcry_pk_encrypt_t encrypt;
+  gcry_pk_decrypt_t decrypt;
+  gcry_pk_sign_t sign;
+  gcry_pk_verify_t verify;
+  gcry_pk_get_nbits_t get_nbits;
+} gcry_pubkey_spec_t;
+
+typedef void (*gcry_md_init_t) (void *c);
+typedef void (*gcry_md_write_t) (void *c, unsigned char *buf, size_t nbytes);
+typedef void (*gcry_md_final_t) (void *c);
+typedef unsigned char *(*gcry_md_read_t) (void *c);
 
 typedef struct gcry_digest_spec
 {
@@ -76,12 +101,30 @@ typedef struct gcry_digest_spec
   unsigned char *asnoid;
   int asnlen;
   int mdlen;
-  void (*init) (void *c);
-  void (*write) (void *c, unsigned char *buf, size_t nbytes);
-  void (*final) (void *c);
-  unsigned char *(*read) (void *c);
+  gcry_md_init_t init;
+  gcry_md_write_t write;
+  gcry_md_final_t final;
+  gcry_md_read_t read;
   size_t contextsize; /* allocate this amount of context */
-} GcryDigestSpec;
+} gcry_digest_spec_t;
+
+typedef gpg_err_code_t (*gcry_cipher_setkey_t) (void *c,
+                                               const unsigned char *key,
+                                               unsigned keylen);
+typedef void (*gcry_cipher_encrypt_t) (void *c,
+                                      unsigned char *outbuf,
+                                      const unsigned char *inbuf);
+typedef void (*gcry_cipher_decrypt_t) (void *c,
+                                      unsigned char *outbuf,
+                                      const unsigned char *inbuf);
+typedef void (*gcry_cipher_stencrypt_t) (void *c,
+                                        unsigned char *outbuf,
+                                        const unsigned char *inbuf,
+                                        unsigned int n);
+typedef void (*gcry_cipher_stdecrypt_t) (void *c,
+                                        unsigned char *outbuf,
+                                        const unsigned char *inbuf,
+                                        unsigned int n);
 
 typedef struct gcry_cipher_spec
 {
@@ -90,48 +133,44 @@ typedef struct gcry_cipher_spec
   size_t blocksize;
   size_t keylen;
   size_t contextsize;
-  gpg_err_code_t (*setkey) (void *c, const unsigned char *key, unsigned keylen);
-  void (*encrypt) (void *c, unsigned char *outbuf, const unsigned char *inbuf);
-  void (*decrypt) (void *c, unsigned char *outbuf, const unsigned char *inbuf);
-  void (*stencrypt) (void *c, unsigned char *outbuf, const unsigned char *inbuf,
-                    unsigned int n);
-  void (*stdecrypt) (void *c, unsigned char *outbuf, const unsigned char *inbuf,
-                    unsigned int n);
-} GcryCipherSpec;
+  gcry_cipher_setkey_t setkey;
+  gcry_cipher_encrypt_t encrypt;
+  gcry_cipher_decrypt_t decrypt;
+  gcry_cipher_stencrypt_t stencrypt;
+  gcry_cipher_stdecrypt_t stdecrypt;
+} gcry_cipher_spec_t;
 
 /* Declarations for the cipher specifications.  */
-extern GcryCipherSpec cipher_spec_blowfish;
-extern GcryCipherSpec cipher_spec_des;
-extern GcryCipherSpec cipher_spec_tripledes;
-extern GcryCipherSpec cipher_spec_arcfour;
-extern GcryCipherSpec cipher_spec_cast5;
-extern GcryCipherSpec cipher_spec_aes;
-extern GcryCipherSpec cipher_spec_aes192;
-extern GcryCipherSpec cipher_spec_aes256;
-extern GcryCipherSpec cipher_spec_twofish;
-extern GcryCipherSpec cipher_spec_twofish128;
-extern GcryCipherSpec cipher_spec_serpent128;
-extern GcryCipherSpec cipher_spec_serpent192;
-extern GcryCipherSpec cipher_spec_serpent256;
+extern gcry_cipher_spec_t cipher_spec_blowfish;
+extern gcry_cipher_spec_t cipher_spec_des;
+extern gcry_cipher_spec_t cipher_spec_tripledes;
+extern gcry_cipher_spec_t cipher_spec_arcfour;
+extern gcry_cipher_spec_t cipher_spec_cast5;
+extern gcry_cipher_spec_t cipher_spec_aes;
+extern gcry_cipher_spec_t cipher_spec_aes192;
+extern gcry_cipher_spec_t cipher_spec_aes256;
+extern gcry_cipher_spec_t cipher_spec_twofish;
+extern gcry_cipher_spec_t cipher_spec_twofish128;
+extern gcry_cipher_spec_t cipher_spec_serpent128;
+extern gcry_cipher_spec_t cipher_spec_serpent192;
+extern gcry_cipher_spec_t cipher_spec_serpent256;
 
 /* Declarations for the digest specifications.  */
-extern GcryDigestSpec digest_spec_crc32;
-extern GcryDigestSpec digest_spec_crc32_rfc1510;
-extern GcryDigestSpec digest_spec_crc24_rfc2440;
-extern GcryDigestSpec digest_spec_md4;
-extern GcryDigestSpec digest_spec_md5;
-extern GcryDigestSpec digest_spec_rmd160;
-extern GcryDigestSpec digest_spec_sha1;
-extern GcryDigestSpec digest_spec_sha256;
-extern GcryDigestSpec digest_spec_sha512;
-extern GcryDigestSpec digest_spec_sha384;
-extern GcryDigestSpec digest_spec_tiger;
+extern gcry_digest_spec_t digest_spec_crc32;
+extern gcry_digest_spec_t digest_spec_crc32_rfc1510;
+extern gcry_digest_spec_t digest_spec_crc24_rfc2440;
+extern gcry_digest_spec_t digest_spec_md4;
+extern gcry_digest_spec_t digest_spec_md5;
+extern gcry_digest_spec_t digest_spec_rmd160;
+extern gcry_digest_spec_t digest_spec_sha1;
+extern gcry_digest_spec_t digest_spec_sha256;
+extern gcry_digest_spec_t digest_spec_sha512;
+extern gcry_digest_spec_t digest_spec_sha384;
+extern gcry_digest_spec_t digest_spec_tiger;
 
 /* Declarations for the pubkey cipher specifications.  */
-extern GcryPubkeySpec pubkey_spec_rsa;
-extern GcryPubkeySpec pubkey_spec_elg;
-extern GcryPubkeySpec pubkey_spec_dsa;
-
+extern gcry_pubkey_spec_t pubkey_spec_rsa;
+extern gcry_pubkey_spec_t pubkey_spec_elg;
+extern gcry_pubkey_spec_t pubkey_spec_dsa;
 
 #endif /*G10_CIPHER_H*/
-
index 48c91ee..e0eb4eb 100644 (file)
@@ -199,28 +199,37 @@ struct gcry_module
   void *spec;                  /* The acctual specs.  */
   int flags;                   /* Associated flags.   */
   int counter;                 /* Use counter.        */
+  unsigned int id;             /* ID of this module.  */
 };
 
-typedef struct gcry_module GcryModule;
+typedef struct gcry_module gcry_module_t;
 
-/* Flags for the `flags' member of GcryModule.  */
+/* Flags for the `flags' member of gcry_module_t.  */
 #define FLAG_MODULE_DISABLED 1 << 0
 
-gpg_err_code_t _gcry_module_add (GcryModule **entries, void *spec,
-                                GcryModule **module);
+gpg_err_code_t _gcry_module_add (gcry_module_t **entries,
+                                unsigned int id,
+                                void *spec,
+                                gcry_module_t **module);
 
-typedef int (*GcryModuleLookup) (void *spec, void *data);
+typedef int (*gcry_module_tLookup) (void *spec, void *data);
+
+/* Public function.  Lookup a module specification by it's ID.  After a
+   successfull lookup, the module has it's resource counter
+   incremented.  */
+gcry_module_t *_gcry_module_lookup_id (gcry_module_t *entries,
+                                      unsigned int id);
 
 /* Internal function.  Lookup a module specification.  */
-GcryModule *_gcry_module_lookup (GcryModule *entries, void *data,
-                                GcryModuleLookup func);
+gcry_module_t *_gcry_module_lookup (gcry_module_t *entries, void *data,
+                                gcry_module_tLookup func);
 
 /* Public function.  Release a module.  In case the use-counter
    reaches zero, destroy the module.  */
-void _gcry_module_release (GcryModule *entry);
+void _gcry_module_release (gcry_module_t *entry);
 
 /* Public function.  Add a reference to a module.  */
-void _gcry_module_use (GcryModule *module);
+void _gcry_module_use (gcry_module_t *module);
 
 gpg_err_code_t _gcry_cipher_init (void);
 gpg_err_code_t _gcry_md_init (void);
index 77d9b9f..ae391b2 100644 (file)
@@ -955,47 +955,56 @@ enum gcry_log_levels
     GCRY_LOG_DEBUG  = 100
   };
 
-
+/* Type for progress handlers.  */
 typedef void (*gcry_handler_progress_t) (void *, const char *, int, int, int);
+
+/* Type for memory allocation handlers.  */
 typedef void *(*gcry_handler_alloc_t) (size_t n);
-typedef void *(*gcry_handler_secure_check_t) (void *);
+
+/* Type for secure memory check handlers.  */
+typedef int (*gcry_handler_secure_check_t) (const void *);
+
+/* Type for memory reallocation handlers.  */
 typedef void *(*gcry_handler_realloc_t) (void *p, size_t n);
-typedef void *(*gcry_handler_free_t) (void *);
-typedef void (*gcry_handler_no_mem_t) (void *, size_t, unsigned int);
+
+/* Type for memory free handlers.  */
+typedef void (*gcry_handler_free_t) (void *);
+
+/* Type for out-of-memory handlers.  */
+typedef int (*gcry_handler_no_mem_t) (void *, size_t, unsigned int);
+
+/* Type for fatal error handlers.  */
 typedef void (*gcry_handler_error_t) (void *, int, const char *);
+
+/* Type for logging handlers.  */
 typedef void (*gcry_handler_log_t) (void *, int, const char *, va_list);
 
 /* Certain operations can provide progress information.  This function
    is used to register a handler for retrieving these information. */
-void gcry_set_progress_handler (void (*cb)(void *,const char*,int, int, int),
-                                void *cb_data);
+void gcry_set_progress_handler (gcry_handler_progress_t cb, void *cb_data);
 
 
 /* Register a custom memory allocation functions. */
-void gcry_set_allocation_handler (void *(*new_alloc_func)(size_t n),
-                                 void *(*new_alloc_secure_func)(size_t n),
-                                 int (*new_is_secure_func)(const void*),
-                                 void *(*new_realloc_func)(void *p, size_t n),
-                                 void (*new_free_func)(void*));
+void gcry_set_allocation_handler (gcry_handler_alloc_t func_alloc,
+                                 gcry_handler_alloc_t func_alloc_secure,
+                                 gcry_handler_secure_check_t func_secure_check,
+                                 gcry_handler_realloc_t func_realloc,
+                                 gcry_handler_free_t func_free);
 
 /* Register a function used instead of the internal out of memory
    handler. */
-void gcry_set_outofcore_handler (int (*h)(void*, size_t, unsigned int),
-                                 void *opaque );
+void gcry_set_outofcore_handler (gcry_handler_no_mem_t h, void *opaque);
 
 /* Register a function used instead of the internal fatal error
    handler. */
-void gcry_set_fatalerror_handler (void (*fnc)(void*,int, const char*),
-                                  void *opaque);
-
-/* Reserved for future use. */
-void gcry_set_gettext_handler (const char *(*f)(const char*));
+void gcry_set_fatalerror_handler (gcry_handler_error_t fnc, void *opaque);
 
 /* Register a function used instead of the internal logging
    facility. */
-void gcry_set_log_handler (void (*f)(void*,int, const char*, va_list),
-                           void *opaque);
+void gcry_set_log_handler (gcry_handler_log_t f, void *opaque);
 
+/* Reserved for future use. */
+void gcry_set_gettext_handler (const char *(*f)(const char*));
 
 /* Libgcrypt uses its own memory allocation.  It is important to use
    gcry_free () to release memory allocated by libgcrypt. */
index beabbf1..f8dd5da 100644 (file)
 #include <errno.h>
 #include "g10lib.h"
 
+/* Internal function.  Generate a new, unique module ID for a module
+   that should be inserted into the module chain starting at
+   MODULES.  */
+static gpg_err_code_t
+_gcry_module_id_new (gcry_module_t *modules, unsigned int *id_new)
+{
+  /* FIXME, what should be the ID of the first module registered by
+     the user?  */
+  unsigned int id_min = 600, id_max = (unsigned int) -1, id;
+  gpg_err_code_t err = GPG_ERR_NO_ERROR;
+  gcry_module_t *module;
+
+  /* Search for unused ID.  */
+  for (id = id_min; id < id_max; id++)
+    {
+      /* Search for a module with the current ID.  */
+      for (module = modules; module; module = module->next)
+       if (id == module->id)
+         break;
+
+      if (! module)
+       /* None found -> the ID is available for use.  */
+       break;
+    }
+
+  if (id < id_max)
+    /* Done.  */
+    *id_new = id;
+  else
+    /* No free ID found.  */
+    err = GPG_ERR_INTERNAL;
+
+  return err;
+}
+
 /* Public function.  Add a module specification to the list ENTRIES.
    The new module has it's use-counter set to one.  */
 gpg_err_code_t
-_gcry_module_add (GcryModule **entries, void *spec,
-                 GcryModule **module)
+_gcry_module_add (gcry_module_t **entries, unsigned int id,
+                 void *spec, gcry_module_t **module)
 {
   gpg_err_code_t err = 0;
-  GcryModule *entry;
+  gcry_module_t *entry;
 
-  entry = gcry_malloc (sizeof (GcryModule));
-  if (! entry)
-    err = gpg_err_code_from_errno (errno);
-  else
+  if (! id)
+    err = _gcry_module_id_new (*entries, &id);
+
+  if (! err)
+    {
+      entry = gcry_malloc (sizeof (gcry_module_t));
+      if (! entry)
+       err = gpg_err_code_from_errno (errno);
+    }
+
+  if (! err)
     {
       /* Fill new module entry.  */
       entry->flags = 0;
       entry->counter = 1;
       entry->spec = spec;
+      entry->id = id;
 
       /* Link it into the list.  */
       entry->next = *entries;
@@ -59,7 +102,7 @@ _gcry_module_add (GcryModule **entries, void *spec,
 /* Internal function.  Unlink CIPHER_ENTRY from the list of registered
    ciphers and destroy it.  */
 static void
-_gcry_module_drop (GcryModule *entry)
+_gcry_module_drop (gcry_module_t *entry)
 {
   *entry->prevp = entry->next;
   if (entry->next)
@@ -68,15 +111,33 @@ _gcry_module_drop (GcryModule *entry)
   gcry_free (entry);
 }
 
+/* Public function.  Lookup a module specification by it's ID.  After a
+   successfull lookup, the module has it's resource counter
+   incremented.  */
+gcry_module_t *
+_gcry_module_lookup_id (gcry_module_t *entries, unsigned int id)
+{
+  gcry_module_t *entry;
+
+  for (entry = entries; entry; entry = entry->next)
+    if (entry->id == id)
+      {
+       entry->counter++;
+       break;
+      }
+
+  return entry;
+}
+
 /* Public function.  Lookup a module specification.  After a
    successfull lookup, the module has it's resource counter
    incremented.  FUNC is a function provided by the caller, which is
    responsible for identifying the wanted module.  */
-GcryModule *
-_gcry_module_lookup (GcryModule *entries, void *data,
-                    GcryModuleLookup func)
+gcry_module_t *
+_gcry_module_lookup (gcry_module_t *entries, void *data,
+                    gcry_module_tLookup func)
 {
-  GcryModule *entry;
+  gcry_module_t *entry;
 
   for (entry = entries; entry; entry = entry->next)
     if ((*func) (entry->spec, data))
@@ -91,7 +152,7 @@ _gcry_module_lookup (GcryModule *entries, void *data,
 /* Public function.  Release a module.  In case the use-counter
    reaches zero, destroy the module.  */
 void
-_gcry_module_release (GcryModule *module)
+_gcry_module_release (gcry_module_t *module)
 {
   if (! --module->counter)
     _gcry_module_drop (module);
@@ -99,7 +160,7 @@ _gcry_module_release (GcryModule *module)
 
 /* Public function.  Add a reference to a module.  */
 void
-_gcry_module_use (GcryModule *module)
+_gcry_module_use (gcry_module_t *module)
 {
   ++module->counter;
 }