X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilchash.c;h=4bb91087de51a278d8478aefd2cbc773f54a221c;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=f508c836e3bfa87898cd59ad7bbe0a87f96461b1;hpb=392c65ba9e06f633115ab2b88ebdbbb63ccc59c8;p=silc.git diff --git a/lib/silccrypt/silchash.c b/lib/silccrypt/silchash.c index f508c836..4bb91087 100644 --- a/lib/silccrypt/silchash.c +++ b/lib/silccrypt/silchash.c @@ -47,6 +47,16 @@ bool silc_hash_register(SilcHashObject *hash) SILC_LOG_DEBUG(("Registering new hash function `%s'", hash->name)); + /* Check for existing */ + if (silc_hash_list) { + SilcHashObject *entry; + silc_dlist_start(silc_hash_list); + while ((entry = silc_dlist_get(silc_hash_list)) != SILC_LIST_END) { + if (!strcmp(entry->name, hash->name)) + return FALSE; + } + } + new = silc_calloc(1, sizeof(*new)); new->name = strdup(hash->name); new->hash_len = hash->hash_len; @@ -144,7 +154,7 @@ void silc_hash_free(SilcHash hash) /* Returns the length of the hash digest. */ -uint32 silc_hash_len(SilcHash hash) +SilcUInt32 silc_hash_len(SilcHash hash) { return hash->hash->hash_len; } @@ -195,7 +205,7 @@ char *silc_hash_get_supported(void) /* Creates the hash value and returns it to the return_hash argument. */ void silc_hash_make(SilcHash hash, const unsigned char *data, - uint32 len, unsigned char *return_hash) + SilcUInt32 len, unsigned char *return_hash) { hash->hash->init(hash->context); hash->hash->update(hash->context, (unsigned char *)data, len); @@ -207,7 +217,7 @@ void silc_hash_make(SilcHash hash, const unsigned char *data, caller. */ char *silc_hash_fingerprint(SilcHash hash, const unsigned char *data, - uint32 data_len) + SilcUInt32 data_len) { SilcHash new_hash = NULL; unsigned char h[32]; @@ -235,7 +245,7 @@ static const char co[]= "bcdfghklmnprstvzx"; fingerprint to the babbleprint. */ char *silc_hash_babbleprint(SilcHash hash, const unsigned char *data, - uint32 data_len) + SilcUInt32 data_len) { SilcHash new_hash = NULL; char *babbleprint;