#include "drivers.h"
#include "mmcau.h"
static void md5(unsigned char in[], unsigned char out[], int nbytes);
static unsigned char pad[] =
{
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char md5_string[]=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
unsigned char md5_out[16];
static void md5(unsigned char in[], unsigned char out[], int nbytes)
{
int i, j, k, n, npad;
unsigned char padded_input[192];
if (nbytes < 64)
k = 0;
else
{
k = 64;
for (i = 0; i < 64; i++)
padded_input[i] = in[i];
}
npad = nbytes & 63;
if (npad)
{
j = nbytes - npad;
for (i = 0; i < npad; i++)
padded_input[k+i] = in[i + j];
}
j = ((npad < 56) ? 56 : 120) - npad;
for (i = 0; i < j; i++)
padded_input[k + i + npad] = pad[i];
j += npad;
n = nbytes << 3;
padded_input[k+j] = n & 0xff;
padded_input[k+j+1] = n>>8 & 0xff;
padded_input[k+j+2] = n>>16 & 0xff;
padded_input[k+j+3] = n>>24 & 0xff;
padded_input[k+j+4] = 0;
padded_input[k+j+5] = 0;
padded_input[k+j+6] = 0;
padded_input[k+j+7] = 0;
n = (nbytes > 56) ? 2 : 1;
}
void main (void)
{
md5(md5_string, md5_out, sizeof(md5_string)-1);
while(1);
}