FreeBSD kernel kern code
md5c.c File Reference
#include <sys/cdefs.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <machine/endian.h>
#include <sys/endian.h>
#include <sys/md5.h>
Include dependency graph for md5c.c:

Go to the source code of this file.

Macros

#define Encode   memcpy
 
#define Decode   memcpy
 
#define F(x, y, z)   (((x) & (y)) | ((~x) & (z)))
 
#define G(x, y, z)   (((x) & (z)) | ((y) & (~z)))
 
#define H(x, y, z)   ((x) ^ (y) ^ (z))
 
#define I(x, y, z)   ((y) ^ ((x) | (~z)))
 
#define ROTATE_LEFT(x, n)   (((x) << (n)) | ((x) >> (32-(n))))
 
#define FF(a, b, c, d, x, s, ac)
 
#define GG(a, b, c, d, x, s, ac)
 
#define HH(a, b, c, d, x, s, ac)
 
#define II(a, b, c, d, x, s, ac)
 
#define S11   7
 
#define S12   12
 
#define S13   17
 
#define S14   22
 
#define S21   5
 
#define S22   9
 
#define S23   14
 
#define S24   20
 
#define S31   4
 
#define S32   11
 
#define S33   16
 
#define S34   23
 
#define S41   6
 
#define S42   10
 
#define S43   15
 
#define S44   21
 

Functions

 __FBSDID ("$BSDSUniX$")
 
static void MD5Transform (u_int32_t[4], const unsigned char[64])
 
void MD5Init (MD5_CTX *context)
 
void MD5Update (MD5_CTX *context, const void *in, unsigned int inputLen)
 
static void MD5Pad (MD5_CTX *context)
 
void MD5Final (digest, MD5_CTX *context)
 
static void MD5Transform (state, block)
 

Variables

static unsigned char PADDING [64]
 

Macro Definition Documentation

#define Decode   memcpy

Definition at line 51 of file md5c.c.

Referenced by MD5Transform().

#define Encode   memcpy

Definition at line 50 of file md5c.c.

Referenced by MD5Final(), and MD5Pad().

#define F (   x,
  y,
 
)    (((x) & (y)) | ((~x) & (z)))

Definition at line 98 of file md5c.c.

#define FF (   a,
  b,
  c,
  d,
  x,
  s,
  ac 
)
Value:
{ \
(a) += F ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define ROTATE_LEFT(x, n)
Definition: md5c.c:104
#define F(x, y, z)
Definition: md5c.c:98

Definition at line 110 of file md5c.c.

Referenced by MD5Transform().

#define G (   x,
  y,
 
)    (((x) & (z)) | ((y) & (~z)))

Definition at line 99 of file md5c.c.

#define GG (   a,
  b,
  c,
  d,
  x,
  s,
  ac 
)
Value:
{ \
(a) += G ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define ROTATE_LEFT(x, n)
Definition: md5c.c:104
#define G(x, y, z)
Definition: md5c.c:99

Definition at line 115 of file md5c.c.

Referenced by MD5Transform().

#define H (   x,
  y,
 
)    ((x) ^ (y) ^ (z))

Definition at line 100 of file md5c.c.

#define HH (   a,
  b,
  c,
  d,
  x,
  s,
  ac 
)
Value:
{ \
(a) += H ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define ROTATE_LEFT(x, n)
Definition: md5c.c:104
#define H(x, y, z)
Definition: md5c.c:100

Definition at line 120 of file md5c.c.

Referenced by MD5Transform().

#define I (   x,
  y,
 
)    ((y) ^ ((x) | (~z)))

Definition at line 101 of file md5c.c.

#define II (   a,
  b,
  c,
  d,
  x,
  s,
  ac 
)
Value:
{ \
(a) += I ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define ROTATE_LEFT(x, n)
Definition: md5c.c:104
#define I(x, y, z)
Definition: md5c.c:101

Definition at line 125 of file md5c.c.

Referenced by MD5Transform().

#define ROTATE_LEFT (   x,
 
)    (((x) << (n)) | ((x) >> (32-(n))))

Definition at line 104 of file md5c.c.

#define S11   7

Referenced by MD5Transform().

#define S12   12

Referenced by MD5Transform().

#define S13   17

Referenced by MD5Transform().

#define S14   22

Referenced by MD5Transform().

#define S21   5

Referenced by MD5Transform().

#define S22   9

Referenced by MD5Transform().

#define S23   14

Referenced by MD5Transform().

#define S24   20

Referenced by MD5Transform().

#define S31   4

Referenced by MD5Transform().

#define S32   11

Referenced by MD5Transform().

#define S33   16

Referenced by MD5Transform().

#define S34   23

Referenced by MD5Transform().

#define S41   6

Referenced by MD5Transform().

#define S42   10

Referenced by MD5Transform().

#define S43   15

Referenced by MD5Transform().

#define S44   21

Referenced by MD5Transform().

Function Documentation

__FBSDID ( "$BSDSUniX$"  )
void MD5Final ( digest  ,
MD5_CTX *  context 
)

Definition at line 220 of file md5c.c.

References Encode, and MD5Pad().

Here is the call graph for this function:

void MD5Init ( MD5_CTX *  context)

Definition at line 134 of file md5c.c.

static void MD5Pad ( MD5_CTX *  context)
static

Definition at line 197 of file md5c.c.

References Encode, and MD5Update().

Referenced by MD5Final().

Here is the call graph for this function:

Here is the caller graph for this function:

static void MD5Transform ( u_int32_t  [4],
const unsigned  char[64] 
)
static

Referenced by MD5Update().

Here is the caller graph for this function:

static void MD5Transform ( state  ,
block   
)
static

Definition at line 237 of file md5c.c.

References Decode, FF, GG, HH, II, S11, S12, S13, S14, S21, S22, S23, S24, S31, S32, S33, S34, S41, S42, S43, and S44.

void MD5Update ( MD5_CTX *  context,
const void *  in,
unsigned int  inputLen 
)

Definition at line 154 of file md5c.c.

References MD5Transform().

Referenced by MD5Pad().

Here is the call graph for this function:

Here is the caller graph for this function:

Variable Documentation

unsigned char PADDING[64]
static
Initial value:
= {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}

Definition at line 91 of file md5c.c.