CRYPTO-C v1.1.3
C/C++ Documentation
md5.h
Go to the documentation of this file.
1
12/* include guard */
13#ifndef CRYPTO_MD5_H
14#define CRYPTO_MD5_H
15
16
17#include "utildev.h"
18
19#define MD5LEN 16
21/* MD5 specific routines */
22#define F(x,y,z) ( (x & y) | (~x & z) )
23#define G(x,y,z) ( (x & z) | (y & ~z) )
24#define H(x,y,z) ( x ^ y ^ z )
25#define I(x,y,z) ( y ^ (x | ~z) )
26#define FF(a,b,c,d,m,s,t) { a += F(b,c,d) + m + t; a = b + rol32(a,s); }
27#define GG(a,b,c,d,m,s,t) { a += G(b,c,d) + m + t; a = b + rol32(a,s); }
28#define HH(a,b,c,d,m,s,t) { a += H(b,c,d) + m + t; a = b + rol32(a,s); }
29#define II(a,b,c,d,m,s,t) { a += I(b,c,d) + m + t; a = b + rol32(a,s); }
30
31typedef struct {
32 uint8_t data[64];
33 uint32_t state[4];
34 uint32_t bitlen[2];
35 uint32_t datalen;
36} MD5_CTX;
38/* C/C++ compatible function prototypes */
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43void md5_init(MD5_CTX *ctx);
44void md5_update(MD5_CTX *ctx, const void *in, size_t inlen);
45void md5_final(MD5_CTX *ctx, void *out);
46void md5(const void *in, size_t inlen, void *out);
47
48/* CUDA testing functions */
49#ifdef CUDA
50 void test_kcu_md5(const void *in, size_t *inlen, size_t max_inlen,
51 void *out, int num);
52#endif
53
54/* end extern "C" {} for C++ */
55#ifdef __cplusplus
56}
57#endif
58
59/* end include guard */
60#endif
void md5(const void *in, size_t inlen, void *out)
Convenient all-in-one MD5 computation.
Definition: md5.c:192
void md5_init(MD5_CTX *ctx)
Initialize a MD5 context.
Definition: md5.c:110
void md5_final(MD5_CTX *ctx, void *out)
Finalize a MD5 message digest.
Definition: md5.c:153
void md5_update(MD5_CTX *ctx, const void *in, size_t inlen)
Add inlen bytes from in to a MD5 context for hashing.
Definition: md5.c:126
Definition: md5.h:31
uint32_t datalen
Length of buffered input.
Definition: md5.h:35
Device utilities and includes support.