ripemd.h - vx32 - Local 9vx git repository for patches.
(HTM) git clone git://r-36.net/vx32
(DIR) Log
(DIR) Files
(DIR) Refs
---
ripemd.h (2432B)
---
1 /* mhash_ripemd.h
2 *
3 * RIPEMD-160 is a 160-bit cryptographic hash function, designed by Hans
4 * Dobbertin, Antoon Bosselaers, and Bart Preneel. It is intended to be
5 * used as a secure replacement for the 128-bit hash functions MD4, MD5,
6 * and RIPEMD
7 * See also: http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
8 *
9 * RIPEMD-128 is a plug-in substitute for RIPEMD (or MD4 and MD5, for
10 * that matter) with a 128-bit result. 128-bit hash results do not
11 * offer sufficient protection for the next ten years, and
12 * applications using 128-bit hash functions should consider upgrading
13 * to a 160-bit hash function.
14 *
15 * RIPEMD-256 and RIPEMD-320 are optional extensions of, respectively,
16 * RIPEMD-128 and RIPEMD-160, and are intended for applications of
17 * hash functions that require a longer hash result without needing a
18 * larger security level.
19 */
20
21 /* The following code was written by Nikos Mavroyanopoulos and B.
22 * Poettering for the mhash library.
23 */
24
25 #if !defined(__MHASH_RIPEMD_H)
26 #define __MHASH_RIPEMD_H
27
28
29 #include <stdint.h>
30
31 typedef uint8_t mutils_word8;
32 typedef uint16_t mutils_word16;
33 typedef uint32_t mutils_word32;
34 typedef uint64_t mutils_word64;
35
36
37 /* The RIPEMD block sizes and message digest sizes, in bytes */
38
39 #define RIPEMD_DATASIZE 64
40 #define RIPEMD_DATALEN 16
41
42 #define RIPEMD128_DIGESTSIZE 16
43 #define RIPEMD160_DIGESTSIZE 20
44 #define RIPEMD256_DIGESTSIZE 32
45 #define RIPEMD320_DIGESTSIZE 40
46
47 #define RIPEMD_STATESIZE 10 /* state size in 32 bit words */
48
49
50 /* The structure for storing RIPEMD info */
51
52 typedef struct ripemd_ctx {
53 mutils_word32 digest[RIPEMD_STATESIZE]; /* chaining varialbles */
54 mutils_word64 bitcount; /* 64-bit bit counter */
55 mutils_word8 block[RIPEMD_DATASIZE]; /* RIPEMD data buffer */
56 mutils_word32 index; /* index into buffer */
57 mutils_word32 digest_len; /* determines the algorithm to use */
58 } RIPEMD_CTX;
59
60 void ripemd128_init(struct ripemd_ctx *ctx);
61 void ripemd160_init(struct ripemd_ctx *ctx);
62 void ripemd256_init(struct ripemd_ctx *ctx);
63 void ripemd320_init(struct ripemd_ctx *ctx);
64 void ripemd_update(struct ripemd_ctx *ctx, mutils_word8 *buffer, mutils_word32 len);
65 void ripemd_final(struct ripemd_ctx *ctx);
66 void ripemd_digest(struct ripemd_ctx *ctx, mutils_word8 *s);
67
68 #endif /* __MHASH_RIPEMD_H */