ReactOS 0.4.15-dev-7834-g00c4b3d
md2.c File Reference
#include "tomcrypt.h"
Include dependency graph for md2.c:

Go to the source code of this file.

Functions

static void md2_update_chksum (md2_state *md2)
 
static void md2_compress (md2_state *md2)
 
int md2_init (md2_state *md2)
 
int md2_process (md2_state *md2, const unsigned char *buf, unsigned long len)
 
int md2_done (md2_state *md2, unsigned char *hash)
 

Variables

static const unsigned char PI_SUBST [256]
 

Function Documentation

◆ md2_compress()

static void md2_compress ( md2_state md2)
static

Definition at line 69 of file md2.c.

70{
71 int j, k;
72 unsigned char t;
73
74 /* copy block */
75 for (j = 0; j < 16; j++) {
76 md2->X[16+j] = md2->buf[j];
77 md2->X[32+j] = md2->X[j] ^ md2->X[16+j];
78 }
79
80 t = 0;
81
82 /* do 18 rounds */
83 for (j = 0; j < 18; j++) {
84 for (k = 0; k < 48; k++) {
85 t = (md2->X[k] ^= PI_SUBST[(int)(t & 255)]);
86 }
87 t = (t + (unsigned char)j) & 255;
88 }
89}
#define md2
Definition: compat-1.3.h:2014
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
unsigned char
Definition: typeof.h:29
GLdouble GLdouble t
Definition: gl.h:2047
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
int k
Definition: mpi.c:3369
static const unsigned char PI_SUBST[256]
Definition: md2.c:33

Referenced by md2_done(), and md2_process().

◆ md2_done()

int md2_done ( md2_state md2,
unsigned char hash 
)

Definition at line 125 of file md2.c.

126{
127 unsigned long i, k;
128
129 if (md2->curlen >= sizeof(md2->buf)) {
130 return CRYPT_INVALID_ARG;
131 }
132
133 /* pad the message */
134 k = 16 - md2->curlen;
135 for (i = md2->curlen; i < 16; i++) {
136 md2->buf[i] = (unsigned char)k;
137 }
138
139 /* hash and update */
142
143 /* hash checksum */
144 memcpy(md2->buf, md2->chksum, 16);
146
147 /* output is lower 16 bytes of X */
148 memcpy(hash, md2->X, 16);
149
150 return CRYPT_OK;
151}
@ CRYPT_INVALID_ARG
Definition: tomcrypt.h:66
@ CRYPT_OK
Definition: tomcrypt.h:43
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
Definition: _hash_fun.h:40
static void md2_compress(md2_state *md2)
Definition: md2.c:69
static void md2_update_chksum(md2_state *md2)
Definition: md2.c:55

Referenced by finalize_hash_impl().

◆ md2_init()

int md2_init ( md2_state md2)

Definition at line 91 of file md2.c.

92{
93 /* MD2 uses a zero'ed state... */
94 memset(md2->X, 0, sizeof(md2->X));
95 memset(md2->chksum, 0, sizeof(md2->chksum));
96 memset(md2->buf, 0, sizeof(md2->buf));
97 md2->curlen = 0;
98 return CRYPT_OK;
99}
#define memset(x, y, z)
Definition: compat.h:39

◆ md2_process()

int md2_process ( md2_state md2,
const unsigned char buf,
unsigned long  len 
)

Definition at line 101 of file md2.c.

102{
103 unsigned long n;
104
105 if (md2->curlen > sizeof(md2->buf)) {
106 return CRYPT_INVALID_ARG;
107 }
108 while (len > 0) {
109 n = MIN(len, (16 - md2->curlen));
110 memcpy(md2->buf + md2->curlen, buf, (size_t)n);
111 md2->curlen += n;
112 buf += n;
113 len -= n;
114
115 /* is 16 bytes full? */
116 if (md2->curlen == 16) {
119 md2->curlen = 0;
120 }
121 }
122 return CRYPT_OK;
123}
#define MIN(x, y)
Definition: rdesktop.h:171
GLdouble n
Definition: glext.h:7729
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722

◆ md2_update_chksum()

static void md2_update_chksum ( md2_state md2)
static

Definition at line 55 of file md2.c.

56{
57 int j;
58 unsigned char L;
59 L = md2->chksum[15];
60 for (j = 0; j < 16; j++) {
61
62/* caution, the RFC says its "C[j] = S[M[i*16+j] xor L]" but the reference source code [and test vectors] say
63 otherwise.
64*/
65 L = (md2->chksum[j] ^= PI_SUBST[(int)(md2->buf[j] ^ L)] & 255);
66 }
67}
#define L(x)
Definition: ntvdm.h:50

Referenced by md2_done(), and md2_process().

Variable Documentation

◆ PI_SUBST

const unsigned char PI_SUBST[256]
static
Initial value:
= {
41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6,
19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188,
76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24,
138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251,
245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63,
148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50,
39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165,
181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210,
150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157,
112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27,
96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15,
85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197,
234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65,
129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123,
8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233,
203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228,
166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237,
31, 26, 219, 153, 141, 51, 159, 17, 131, 20
}

Definition at line 33 of file md2.c.

Referenced by md2_compress(), and md2_update_chksum().