md4.c File Reference

An implementation of MD4 designed for use in the samba SMB authentication protocol. More...

#include <string.h>
#include "md4.h"
Include dependency graph for md4.c:

Go to the source code of this file.

Defines

#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)) | ((x)>>(32-(s))))
#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

static void mdfour64 (uint32_t *M)
static void copy64 (uint32_t *M, const unsigned char *in)
static void copy4 (unsigned char *out, uint32_t x)
static void mdfour_begin (struct mdfour *md)
static void mdfour_tail (const unsigned char *in, int n)
static void mdfour_update (struct mdfour *md, const unsigned char *in, int n)
static void mdfour_result (struct mdfour *md, unsigned char *out)
static void mdfour (unsigned char *out, const unsigned char *in, int n)
unsigned Com_BlockChecksum (const void *buffer, int length)

Variables

static struct mdfourm

Detailed Description

An implementation of MD4 designed for use in the samba SMB authentication protocol.

Note:
This code makes no attempt to be fast!
It assumes that a int is at least 32 bits long

Definition in file md4.c.


Define Documentation

#define F ( X,
Y,
 )     (((X)&(Y)) | ((~(X))&(Z)))

Definition at line 37 of file md4.c.

#define G ( X,
Y,
 )     (((X)&(Y)) | ((X)&(Z)) | ((Y)&(Z)))
#define H ( X,
Y,
 )     ((X)^(Y)^(Z))

Definition at line 39 of file md4.c.

#define lshift ( x,
 )     (((x)<<(s)) | ((x)>>(32-(s))))

Definition at line 43 of file md4.c.

#define ROUND1 ( a,
b,
c,
d,
k,
 )     a = lshift(a + F(b,c,d) + X[k], s)

Definition at line 46 of file md4.c.

Referenced by mdfour64().

#define ROUND2 ( a,
b,
c,
d,
k,
 )     a = lshift(a + G(b,c,d) + X[k] + 0x5A827999,s)

Definition at line 47 of file md4.c.

Referenced by mdfour64().

#define ROUND3 ( a,
b,
c,
d,
k,
 )     a = lshift(a + H(b,c,d) + X[k] + 0x6ED9EBA1,s)

Definition at line 48 of file md4.c.

Referenced by mdfour64().


Function Documentation

unsigned Com_BlockChecksum ( const void *  buffer,
int  length 
)

MD4-based checksum utility functions Copyright (C) 2000 Jeff Teunissen <d2deek@pmail.net> Author: Jeff Teunissen <d2deek@pmail.net> Date: 01 Jan 2000

Definition at line 208 of file md4.c.

References mdfour().

Referenced by CM_AddMapTile(), and Com_GetScriptChecksum().

static void copy4 ( unsigned char *  out,
uint32_t  x 
) [static]

Definition at line 112 of file md4.c.

Referenced by mdfour_result(), and mdfour_tail().

static void copy64 ( uint32_t M,
const unsigned char *  in 
) [static]

Definition at line 104 of file md4.c.

References i.

Referenced by mdfour_tail(), and mdfour_update().

static void mdfour ( unsigned char *  out,
const unsigned char *  in,
int  n 
) [static]

Definition at line 193 of file md4.c.

References mdfour_begin(), mdfour_result(), and mdfour_update().

Referenced by Com_BlockChecksum().

static void mdfour64 ( uint32_t M  )  [static]

Definition at line 51 of file md4.c.

References mdfour::A, mdfour::B, mdfour::C, mdfour::D, ROUND1, ROUND2, and ROUND3.

Referenced by mdfour_tail(), and mdfour_update().

static void mdfour_begin ( struct mdfour md  )  [static]

Definition at line 120 of file md4.c.

References mdfour::A, mdfour::B, mdfour::C, mdfour::D, and mdfour::totalN.

Referenced by mdfour().

static void mdfour_result ( struct mdfour md,
unsigned char *  out 
) [static]

Definition at line 182 of file md4.c.

References mdfour::A, mdfour::B, mdfour::C, copy4(), and mdfour::D.

Referenced by mdfour().

static void mdfour_tail ( const unsigned char *  in,
int  n 
) [static]

Definition at line 130 of file md4.c.

References copy4(), copy64(), M, mdfour64(), and mdfour::totalN.

Referenced by mdfour_update().

static void mdfour_update ( struct mdfour md,
const unsigned char *  in,
int  n 
) [static]

start of edit by Forest 'LordHavoc' Hale commented out to prevent crashing when length is 0 if (n == 0) mdfour_tail(in, n); end of edit by Forest 'LordHavoc' Hale

Definition at line 158 of file md4.c.

References copy64(), M, mdfour64(), mdfour_tail(), and mdfour::totalN.

Referenced by mdfour().


Variable Documentation

struct mdfour* m [static]

Generated by  doxygen 1.6.2