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 ("$FreeBSD$")
 
static void MD5Transform (uint32_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 (unsigned char digest[static MD5_DIGEST_LENGTH], MD5_CTX *context)
 
static void MD5Transform (state, block)
 

Variables

static unsigned char PADDING [64]
 

Macro Definition Documentation

◆ Decode

#define Decode   memcpy

Definition at line 51 of file md5c.c.

◆ Encode

#define Encode   memcpy

Definition at line 50 of file md5c.c.

◆ F

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

Definition at line 98 of file md5c.c.

◆ FF

#define FF (   a,
  b,
  c,
  d,
  x,
  s,
  ac 
)
Value:
{ \
(a) += F ((b), (c), (d)) + (x) + (uint32_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.

◆ G

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

Definition at line 99 of file md5c.c.

◆ GG

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

Definition at line 115 of file md5c.c.

◆ H

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

Definition at line 100 of file md5c.c.

◆ HH

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

Definition at line 120 of file md5c.c.

◆ I

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

Definition at line 101 of file md5c.c.

◆ II

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

Definition at line 125 of file md5c.c.

◆ ROTATE_LEFT

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

Definition at line 104 of file md5c.c.

◆ S11

#define S11   7

◆ S12

#define S12   12

◆ S13

#define S13   17

◆ S14

#define S14   22

◆ S21

#define S21   5

◆ S22

#define S22   9

◆ S23

#define S23   14

◆ S24

#define S24   20

◆ S31

#define S31   4

◆ S32

#define S32   11

◆ S33

#define S33   16

◆ S34

#define S34   23

◆ S41

#define S41   6

◆ S42

#define S42   10

◆ S43

#define S43   15

◆ S44

#define S44   21

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ MD5Final()

void MD5Final ( unsigned char  digest[static MD5_DIGEST_LENGTH],
MD5_CTX *  context 
)

Definition at line 220 of file md5c.c.

References Encode, and MD5Pad().

Here is the call graph for this function:

◆ MD5Init()

void MD5Init ( MD5_CTX *  context)

Definition at line 134 of file md5c.c.

◆ MD5Pad()

static void MD5Pad ( MD5_CTX *  context)
static

Definition at line 197 of file md5c.c.

References Encode, MD5Update(), and PADDING.

Referenced by MD5Final().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MD5Transform() [1/2]

static void MD5Transform ( state  ,
block   
)
static

Definition at line 235 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.

◆ MD5Transform() [2/2]

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

Referenced by MD5Update().

Here is the caller graph for this function:

◆ MD5Update()

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

◆ PADDING

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.

Referenced by MD5Pad().