123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /* algorithms.h - rhash library algorithms */
- #ifndef RHASH_ALGORITHMS_H
- #define RHASH_ALGORITHMS_H
- #include <stddef.h> /* for ptrdiff_t */
- #include "rhash.h"
- #include "byte_order.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifndef RHASH_API
- /* modifier for RHash library functions */
- # define RHASH_API
- #endif
- typedef void (*pinit_t)(void*);
- typedef void (*pupdate_t)(void *ctx, const void* msg, size_t size);
- typedef void (*pfinal_t)(void*, unsigned char*);
- typedef void (*pcleanup_t)(void*);
- /**
- * Information about a hash function
- */
- typedef struct rhash_hash_info
- {
- rhash_info *info;
- size_t context_size;
- ptrdiff_t digest_diff;
- pinit_t init;
- pupdate_t update;
- pfinal_t final;
- pcleanup_t cleanup;
- } rhash_hash_info;
- /**
- * Information on a hash function and its context
- */
- typedef struct rhash_vector_item
- {
- struct rhash_hash_info* hash_info;
- void *context;
- } rhash_vector_item;
- /**
- * The rhash context containing contexts for several hash functions
- */
- typedef struct rhash_context_ext
- {
- struct rhash_context rc;
- unsigned hash_vector_size; /* number of contained hash sums */
- unsigned flags;
- unsigned state;
- void *callback, *callback_data;
- void *bt_ctx;
- rhash_vector_item vector[1]; /* contexts of contained hash sums */
- } rhash_context_ext;
- extern rhash_hash_info rhash_hash_info_default[RHASH_HASH_COUNT];
- extern rhash_hash_info* rhash_info_table;
- extern int rhash_info_size;
- extern unsigned rhash_uninitialized_algorithms;
- extern rhash_info info_crc32;
- extern rhash_info info_md4;
- extern rhash_info info_md5;
- extern rhash_info info_sha1;
- extern rhash_info info_tiger;
- extern rhash_info info_tth ;
- extern rhash_info info_btih;
- extern rhash_info info_ed2k;
- extern rhash_info info_aich;
- extern rhash_info info_whirlpool;
- extern rhash_info info_rmd160;
- extern rhash_info info_gost;
- extern rhash_info info_gostpro;
- extern rhash_info info_has160;
- extern rhash_info info_snf128;
- extern rhash_info info_snf256;
- extern rhash_info info_sha224;
- extern rhash_info info_sha256;
- extern rhash_info info_sha384;
- extern rhash_info info_sha512;
- extern rhash_info info_sha3_224;
- extern rhash_info info_sha3_256;
- extern rhash_info info_sha3_384;
- extern rhash_info info_sha3_512;
- extern rhash_info info_edr256;
- extern rhash_info info_edr512;
- /* rhash_info flags */
- #define F_BS32 1 /* default output in base32 */
- #define F_SWAP32 2 /* Big endian flag */
- #define F_SWAP64 4
- /* define endianness flags */
- #ifndef CPU_BIG_ENDIAN
- #define F_LE32 0
- #define F_LE64 0
- #define F_BE32 F_SWAP32
- #define F_BE64 F_SWAP64
- #else
- #define F_LE32 F_SWAP32
- #define F_LE64 F_SWAP64
- #define F_BE32 0
- #define F_BE64 0
- #endif
- void rhash_init_algorithms(unsigned mask);
- #if defined(OPENSSL_RUNTIME) && !defined(USE_OPENSSL)
- # define USE_OPENSSL
- #endif
- #ifdef __cplusplus
- } /* extern "C" */
- #endif /* __cplusplus */
- #endif /* RHASH_ALGORITHMS_H */
|