QuakeForge  0.7.2.210-815cf
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mdfour.c File Reference

Macros

#define F(X, Y, Z)   (((X)&(Y)) | ((~(X))&(Z)))
 
#define G(X, Y, Z)   (((X)&(Y)) | ((X)&(Z)) | ((Y)&(Z)))
 
#define H(X, Y, Z)   ((X)^(Y)^(Z))
 
#define lshift(x, s)   ((((x)<<(s))&0xFFFFFFFF) | (((x)>>(32-(s)))&0xFFFFFFFF))
 
#define ROUND1(a, b, c, d, k, s)   a = lshift(a + F(b,c,d) + X[k], s)
 
#define ROUND2(a, b, c, d, k, s)   a = lshift(a + G(b,c,d) + X[k] + 0x5A827999,s)
 
#define ROUND3(a, b, c, d, k, s)   a = lshift(a + H(b,c,d) + X[k] + 0x6ED9EBA1,s)
 

Functions

void mdfour (unsigned char *out, const unsigned char *in, int n)
 
void mdfour_begin (struct mdfour *md)
 
void mdfour_result (struct mdfour *md, unsigned char *out)
 
void mdfour_update (struct mdfour *md, const unsigned char *in, int n)
 

Macro Definition Documentation

#define F (   X,
  Y,
  Z 
)    (((X)&(Y)) | ((~(X))&(Z)))
#define G (   X,
  Y,
  Z 
)    (((X)&(Y)) | ((X)&(Z)) | ((Y)&(Z)))
#define H (   X,
  Y,
  Z 
)    ((X)^(Y)^(Z))
#define lshift (   x,
 
)    ((((x)<<(s))&0xFFFFFFFF) | (((x)>>(32-(s)))&0xFFFFFFFF))
#define ROUND1 (   a,
  b,
  c,
  d,
  k,
 
)    a = lshift(a + F(b,c,d) + X[k], s)
#define ROUND2 (   a,
  b,
  c,
  d,
  k,
 
)    a = lshift(a + G(b,c,d) + X[k] + 0x5A827999,s)
#define ROUND3 (   a,
  b,
  c,
  d,
  k,
 
)    a = lshift(a + H(b,c,d) + X[k] + 0x6ED9EBA1,s)