// NOTE: This code makes no attempt to be fast!
-static struct mdfour *m;
-
#define MASK32 (0xffffffff)
#define F(X, Y, Z) ((((X)&(Y)) | ((~(X))&(Z))))
// This applies md4 to 64 byte chunks.
static void
-mdfour64(uint32_t *M)
+mdfour64(struct mdfour *md, uint32_t *M)
{
uint32_t AA, BB, CC, DD;
uint32_t A, B, C, D;
- A = m->A;
- B = m->B;
- C = m->C;
- D = m->D;
+ A = md->A;
+ B = md->B;
+ C = md->C;
+ D = md->D;
AA = A;
BB = B;
CC = C;
C &= MASK32;
D &= MASK32;
- m->A = A;
- m->B = B;
- m->C = C;
- m->D = D;
+ md->A = A;
+ md->B = B;
+ md->C = C;
+ md->D = D;
}
static void
}
static
-void mdfour_tail(const unsigned char *in, size_t n)
+void mdfour_tail(struct mdfour *md, const unsigned char *in, size_t n)
{
- m->totalN += n;
- uint32_t b = m->totalN * 8;
+ md->totalN += n;
+ uint32_t b = md->totalN * 8;
unsigned char buf[128] = { 0 };
uint32_t M[16];
if (n) {
if (n <= 55) {
copy4(buf+56, b);
copy64(M, buf);
- mdfour64(M);
+ mdfour64(md, M);
} else {
copy4(buf+120, b);
copy64(M, buf);
- mdfour64(M);
+ mdfour64(md, M);
copy64(M, buf+64);
- mdfour64(M);
+ mdfour64(md, M);
}
}
void
mdfour_update(struct mdfour *md, const unsigned char *in, size_t n)
{
- m = md;
-
if (!in) {
if (!md->finalized) {
- mdfour_tail(md->tail, md->tail_len);
+ mdfour_tail(md, md->tail, md->tail_len);
md->finalized = 1;
}
return;
in += len;
if (md->tail_len == 64) {
copy64(M, md->tail);
- mdfour64(M);
- m->totalN += 64;
+ mdfour64(md, M);
+ md->totalN += 64;
md->tail_len = 0;
}
}
while (n >= 64) {
copy64(M, in);
- mdfour64(M);
+ mdfour64(md, M);
in += 64;
n -= 64;
- m->totalN += 64;
+ md->totalN += 64;
}
if (n) {