39#define F(X,Y,Z) (((X)&(Y)) | ((~(X))&(Z)))
40#define G(X,Y,Z) (((X)&(Y)) | ((X)&(Z)) | ((Y)&(Z)))
41#define H(X,Y,Z) ((X)^(Y)^(Z))
42#define lshift(x,s) (((x)<<(s)) | ((x)>>(32-(s))))
44#define ROUND1(a,b,c,d,k,s) a = lshift(a + F(b,c,d) + X[k], s)
45#define ROUND2(a,b,c,d,k,s) a = lshift(a + G(b,c,d) + X[k] + 0x5A827999,s)
46#define ROUND3(a,b,c,d,k,s) a = lshift(a + H(b,c,d) + X[k] + 0x6ED9EBA1,s)
52 uint32_t AA, BB, CC, DD;
59 A = md->
A; B = md->
B; C = md->
C; D = md->
D;
60 AA = A; BB = B; CC = C; DD = D;
62 ROUND1(A,B,C,D, 0, 3);
ROUND1(D,A,B,C, 1, 7);
63 ROUND1(C,D,A,B, 2, 11);
ROUND1(B,C,D,A, 3, 19);
64 ROUND1(A,B,C,D, 4, 3);
ROUND1(D,A,B,C, 5, 7);
65 ROUND1(C,D,A,B, 6, 11);
ROUND1(B,C,D,A, 7, 19);
66 ROUND1(A,B,C,D, 8, 3);
ROUND1(D,A,B,C, 9, 7);
67 ROUND1(C,D,A,B, 10, 11);
ROUND1(B,C,D,A, 11, 19);
68 ROUND1(A,B,C,D, 12, 3);
ROUND1(D,A,B,C, 13, 7);
69 ROUND1(C,D,A,B, 14, 11);
ROUND1(B,C,D,A, 15, 19);
71 ROUND2(A,B,C,D, 0, 3);
ROUND2(D,A,B,C, 4, 5);
72 ROUND2(C,D,A,B, 8, 9);
ROUND2(B,C,D,A, 12, 13);
73 ROUND2(A,B,C,D, 1, 3);
ROUND2(D,A,B,C, 5, 5);
74 ROUND2(C,D,A,B, 9, 9);
ROUND2(B,C,D,A, 13, 13);
75 ROUND2(A,B,C,D, 2, 3);
ROUND2(D,A,B,C, 6, 5);
76 ROUND2(C,D,A,B, 10, 9);
ROUND2(B,C,D,A, 14, 13);
77 ROUND2(A,B,C,D, 3, 3);
ROUND2(D,A,B,C, 7, 5);
78 ROUND2(C,D,A,B, 11, 9);
ROUND2(B,C,D,A, 15, 13);
80 ROUND3(A,B,C,D, 0, 3);
ROUND3(D,A,B,C, 8, 9);
81 ROUND3(C,D,A,B, 4, 11);
ROUND3(B,C,D,A, 12, 15);
82 ROUND3(A,B,C,D, 2, 3);
ROUND3(D,A,B,C, 10, 9);
83 ROUND3(C,D,A,B, 6, 11);
ROUND3(B,C,D,A, 14, 15);
84 ROUND3(A,B,C,D, 1, 3);
ROUND3(D,A,B,C, 9, 9);
85 ROUND3(C,D,A,B, 5, 11);
ROUND3(B,C,D,A, 13, 15);
86 ROUND3(A,B,C,D, 3, 3);
ROUND3(D,A,B,C, 11, 9);
87 ROUND3(C,D,A,B, 7, 11);
ROUND3(B,C,D,A, 15, 15);
89 A += AA; B += BB; C += CC; D += DD;
94 md->
A = A; md->
B = B; md->
C = C; md->
D = D;
97static void copy64(uint32_t *
M,
const unsigned char *in)
103 M[
i] = ((
unsigned)in[
i*4+3]<<24) | (in[
i*4+2]<<16) |
104 (in[
i*4+1]<<8) | (in[
i*4+0]<<0);
107static void copy4(
unsigned char *out,uint32_t
x)
110 out[1] = (
x>>8)&0xFF;
111 out[2] = (
x>>16)&0xFF;
112 out[3] = (
x>>24)&0xFF;
127 unsigned char buf[128];
136 if (
n) memcpy(
buf, in,
n);
182void mdfour(
unsigned char *out,
const unsigned char *in,
int n)
205 val = digest[0] ^ digest[1] ^ digest[2] ^ digest[3];
GLenum GLuint GLenum GLsizei length
GLenum GLuint GLenum GLsizei const GLchar * buf
#define ROUND3(a, b, c, d, k, s)
void Com_BlockFullChecksum(void *buffer, int len, unsigned char *outbuf)
unsigned Com_BlockChecksum(void *buffer, int length)
static void mdfour64(struct mdfour_s *md, uint32_t *M)
void mdfour_update(struct mdfour_s *md, const unsigned char *in, int n)
static void copy64(uint32_t *M, const unsigned char *in)
void mdfour_begin(struct mdfour_s *md)
#define ROUND2(a, b, c, d, k, s)
void mdfour(unsigned char *out, const unsigned char *in, int n)
#define ROUND1(a, b, c, d, k, s)
void mdfour_result(struct mdfour_s *md, unsigned char *out)
static void mdfour_tail(struct mdfour_s *md, const unsigned char *in, int n)
static void copy4(unsigned char *out, uint32_t x)