move to the pseudo-standard APIs for md4,md5,sha
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7815 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska H<>gskolan
|
||||
* Copyright (c) 1995 - 2000 Kungliga Tekniska H<>gskolan
|
||||
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -47,10 +47,10 @@ RCSID("$Id$");
|
||||
#define X data
|
||||
|
||||
void
|
||||
md4_init (struct md4 *m)
|
||||
MD4Init (struct md4 *m)
|
||||
{
|
||||
m->offset = 0;
|
||||
m->sz = 0;
|
||||
m->sz[0] = 0;
|
||||
m->sz[1] = 0;
|
||||
D = 0x10325476;
|
||||
C = 0x98badcfe;
|
||||
B = 0xefcdab89;
|
||||
@@ -175,17 +175,23 @@ struct x32{
|
||||
};
|
||||
|
||||
void
|
||||
md4_update (struct md4 *m, const void *v, size_t len)
|
||||
MD4Update (struct md4 *m, const void *v, size_t len)
|
||||
{
|
||||
const unsigned char *p = v;
|
||||
m->sz += len;
|
||||
while(len > 0){
|
||||
size_t l = min(len, 64 - m->offset);
|
||||
memcpy(m->save + m->offset, p, l);
|
||||
m->offset += l;
|
||||
size_t old_sz = m->sz[0];
|
||||
size_t offset;
|
||||
|
||||
m->sz[0] += len * 8;
|
||||
if (m->sz[0] < old_sz)
|
||||
++m->sz[1];
|
||||
offset = (old_sz / 8) % 64;
|
||||
while(len > 0) {
|
||||
size_t l = min(len, 64 - offset);
|
||||
memcpy(m->save + offset, p, l);
|
||||
offset += l;
|
||||
p += l;
|
||||
len -= l;
|
||||
if(m->offset == 64){
|
||||
if(offset == 64) {
|
||||
#if defined(WORDS_BIGENDIAN)
|
||||
int i;
|
||||
u_int32_t current[16];
|
||||
@@ -198,26 +204,29 @@ md4_update (struct md4 *m, const void *v, size_t len)
|
||||
#else
|
||||
calc(m, (u_int32_t*)m->save);
|
||||
#endif
|
||||
m->offset = 0;
|
||||
offset = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
md4_finito (struct md4 *m, void *res)
|
||||
MD4Final (void *res, struct md4 *m)
|
||||
{
|
||||
static unsigned char zeros[72];
|
||||
u_int32_t len;
|
||||
unsigned int dstart = (120 - m->offset - 1) % 64 + 1;
|
||||
unsigned offset = (m->sz[0] / 8) % 64;
|
||||
unsigned int dstart = (120 - offset - 1) % 64 + 1;
|
||||
|
||||
*zeros = 0x80;
|
||||
memset (zeros + 1, 0, sizeof(zeros) - 1);
|
||||
len = 8 * m->sz;
|
||||
zeros[dstart+0] = (len >> 0) & 0xff;
|
||||
zeros[dstart+1] = (len >> 8) & 0xff;
|
||||
zeros[dstart+2] = (len >> 16) & 0xff;
|
||||
zeros[dstart+3] = (len >> 24) & 0xff;
|
||||
md4_update (m, zeros, dstart + 8);
|
||||
zeros[dstart+0] = (m->sz[0] >> 0) & 0xff;
|
||||
zeros[dstart+1] = (m->sz[0] >> 8) & 0xff;
|
||||
zeros[dstart+2] = (m->sz[0] >> 16) & 0xff;
|
||||
zeros[dstart+3] = (m->sz[0] >> 24) & 0xff;
|
||||
zeros[dstart+4] = (m->sz[1] >> 0) & 0xff;
|
||||
zeros[dstart+5] = (m->sz[1] >> 8) & 0xff;
|
||||
zeros[dstart+6] = (m->sz[1] >> 16) & 0xff;
|
||||
zeros[dstart+7] = (m->sz[1] >> 24) & 0xff;
|
||||
MD4Update (m, zeros, dstart + 8);
|
||||
{
|
||||
int i;
|
||||
unsigned char *r = (unsigned char *)res;
|
||||
|
Reference in New Issue
Block a user