summaryrefslogtreecommitdiff
path: root/cipher/rmd160.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>1999-02-10 16:22:37 +0000
committerWerner Koch <wk@gnupg.org>1999-02-10 16:22:37 +0000
commita7f3353934272f03a3462eae96feaa35a54dd6fe (patch)
treed73578901be3da3cd0d34e43a92f04e0868ccafe /cipher/rmd160.c
parentfb72622bbd2a7bd6ae6cefdef1f0d69c76625f0f (diff)
downloadlibgcrypt-a7f3353934272f03a3462eae96feaa35a54dd6fe.tar.gz
See ChangeLog: Wed Feb 10 17:15:39 CET 1999 Werner Koch
Diffstat (limited to 'cipher/rmd160.c')
-rw-r--r--cipher/rmd160.c63
1 files changed, 62 insertions, 1 deletions
diff --git a/cipher/rmd160.c b/cipher/rmd160.c
index 4d644756..70904a14 100644
--- a/cipher/rmd160.c
+++ b/cipher/rmd160.c
@@ -27,6 +27,7 @@
#include "memory.h"
#include "rmd.h"
#include "cipher.h" /* only used for the rmd160_hash_buffer() prototype */
+#include "dynload.h"
/*********************************
* RIPEMD-160 is not patented, see (as of 25.10.97)
@@ -554,7 +555,7 @@ rmd160_hash_buffer( char *outbuf, const char *buffer, size_t length )
* Returns: A pointer to string describing the algorithm or NULL if
* the ALGO is invalid.
*/
-const char *
+static const char *
rmd160_get_info( int algo, size_t *contextsize,
byte **r_asnoid, int *r_asnlen, int *r_mdlen,
void (**r_init)( void *c ),
@@ -582,3 +583,63 @@ rmd160_get_info( int algo, size_t *contextsize,
return "RIPEMD160";
}
+
+#ifndef IS_MODULE
+static
+#endif
+const char * const gnupgext_version = "RMD160 ($Revision$)";
+
+static struct {
+ int class;
+ int version;
+ int value;
+ void (*func)(void);
+} func_table[] = {
+ { 10, 1, 0, (void(*)(void))rmd160_get_info },
+ { 11, 1, 3 },
+};
+
+
+#ifndef IS_MODULE
+static
+#endif
+void *
+gnupgext_enum_func( int what, int *sequence, int *class, int *vers )
+{
+ void *ret;
+ int i = *sequence;
+
+ do {
+ if( i >= DIM(func_table) || i < 0 ) {
+ return NULL;
+ }
+ *class = func_table[i].class;
+ *vers = func_table[i].version;
+ switch( *class ) {
+ case 11:
+ case 21:
+ case 31:
+ ret = &func_table[i].value;
+ break;
+ default:
+ ret = func_table[i].func;
+ break;
+ }
+ i++;
+ } while( what && what != *class );
+
+ *sequence = i;
+ return ret;
+}
+
+
+
+
+#ifndef IS_MODULE
+void
+rmd160_constructor(void)
+{
+ register_internal_cipher_extension( gnupgext_version, gnupgext_enum_func );
+}
+#endif
+