X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilchash.h;h=8de3e5eb8db07bab37319c8efb44addef2c69df2;hp=98f85ef47d0da1846c6e61f2131b8886858e2aad;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hpb=62f89b2886bbe9df82d9b2fdabfe707509d9e0fc diff --git a/lib/silccrypt/silchash.h b/lib/silccrypt/silchash.h index 98f85ef4..8de3e5eb 100644 --- a/lib/silccrypt/silchash.h +++ b/lib/silccrypt/silchash.h @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2000 Pekka Riikonen + Copyright (C) 1997 - 2001 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,14 +24,14 @@ /* The default Silc hash object to represent any hash function in SILC. */ typedef struct { char *name; - unsigned int hash_len; - unsigned int block_len; + SilcUInt32 hash_len; + SilcUInt32 block_len; void (*init)(void *); - void (*update)(void *, unsigned char *, unsigned int); + void (*update)(void *, unsigned char *, SilcUInt32); void (*final)(void *, unsigned char *); - void (*transform)(unsigned long *, unsigned char *); - unsigned int (*context_len)(); + void (*transform)(SilcUInt32 *, unsigned char *); + SilcUInt32 (*context_len)(); } SilcHashObject; /* The main SILC hash structure. Use SilcHash instead of SilcHashStruct. @@ -41,15 +41,19 @@ typedef struct SilcHashStruct { void *context; void (*make_hash)(struct SilcHashStruct *, const unsigned char *, - unsigned int, unsigned char *); + SilcUInt32, unsigned char *); } *SilcHash; -extern struct SilcHashListStruct *silc_hash_list; - /* Marks for all hash functions. This can be used in silc_hash_unregister to unregister all hash function at once. */ #define SILC_ALL_HASH_FUNCTIONS ((SilcHashObject *)1) +/* Default hash functions for silc_hash_register_default(). */ +extern DLLAPI SilcHashObject silc_default_hash[]; + +/* Default HASH function in the SILC protocol */ +#define SILC_DEFAULT_HASH "sha1" + /* Macros */ /* Following macros are used to implement the SILC Hash API. These @@ -70,23 +74,29 @@ extern struct SilcHashListStruct *silc_hash_list; void silc_##hash##_init(void *context) #define SILC_HASH_API_UPDATE(hash) \ void silc_##hash##_update(void *context, unsigned char *data, \ - unsigned int len) + SilcUInt32 len) #define SILC_HASH_API_FINAL(hash) \ void silc_##hash##_final(void *context, unsigned char *digest) #define SILC_HASH_API_TRANSFORM(hash) \ -void silc_##hash##_transform(unsigned long *state, \ +void silc_##hash##_transform(SilcUInt32 *state, \ unsigned char *buffer) #define SILC_HASH_API_CONTEXT_LEN(hash) \ -unsigned int silc_##hash##_context_len() +SilcUInt32 silc_##hash##_context_len() /* Prototypes */ -int silc_hash_register(SilcHashObject *hash); -int silc_hash_unregister(SilcHashObject *hash); -int silc_hash_alloc(const unsigned char *name, SilcHash *new_hash); +bool silc_hash_register(SilcHashObject *hash); +bool silc_hash_unregister(SilcHashObject *hash); +bool silc_hash_register_default(void); +bool silc_hash_alloc(const unsigned char *name, SilcHash *new_hash); void silc_hash_free(SilcHash hash); -int silc_hash_is_supported(const unsigned char *name); -char *silc_hash_get_supported(); +SilcUInt32 silc_hash_len(SilcHash hash); +bool silc_hash_is_supported(const unsigned char *name); +char *silc_hash_get_supported(void); void silc_hash_make(SilcHash hash, const unsigned char *data, - unsigned int len, unsigned char *return_hash); + SilcUInt32 len, unsigned char *return_hash); +char *silc_hash_fingerprint(SilcHash hash, const unsigned char *data, + SilcUInt32 data_len); +char *silc_hash_babbleprint(SilcHash hash, const unsigned char *data, + SilcUInt32 data_len); #endif