Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
- 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
/* 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.
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
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