UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
md4.cpp File Reference

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

#include "../shared/shared.h"
#include "md4.h"

Go to the source code of this file.

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)) | ((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.cpp.

Macro Definition Documentation

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

Definition at line 37 of file md4.cpp.

Referenced by Com_SHA2Process().

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

Definition at line 38 of file md4.cpp.

Referenced by Com_SHA2Process().

#define H (   X,
  Y,
 
)    ((X)^(Y)^(Z))

Definition at line 39 of file md4.cpp.

Referenced by Com_SHA2Process().

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

Definition at line 43 of file md4.cpp.

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

Definition at line 46 of file md4.cpp.

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.cpp.

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.cpp.

Referenced by mdfour64().

Function Documentation

unsigned Com_BlockChecksum ( const void buffer,
int  length 
)

MD4-based checksum utility functions Copyright (C) 2000 Jeff Teunissen d2dee.nosp@m.k@pm.nosp@m.ail.n.nosp@m.et Author: Jeff Teunissen d2dee.nosp@m.k@pm.nosp@m.ail.n.nosp@m.et Date: 01 Jan 2000

Definition at line 202 of file md4.cpp.

References mdfour().

Referenced by CM_AddMapTile(), and Com_GetScriptChecksum().

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

Definition at line 107 of file md4.cpp.

Referenced by mdfour_result(), and mdfour_tail().

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

Definition at line 101 of file md4.cpp.

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 187 of file md4.cpp.

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.cpp.

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 115 of file md4.cpp.

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 176 of file md4.cpp.

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 125 of file md4.cpp.

References copy4(), copy64(), M, mdfour64(), OBJZERO, 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 152 of file md4.cpp.

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

Referenced by mdfour().

Variable Documentation