#include "drivers.h"
#include "mmcau.h"
static void sha1(unsigned char in[], unsigned int 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 sha1_string[]=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
unsigned int sha1_out[5];
static void sha1(unsigned char in[], unsigned int out[], int nbytes)
{
int i, j, k, n, npad;
unsigned char padded_input[192];
if (nbytes < 64)
k = 0;
else
{
k = 1;
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] = 0;
padded_input[k+j+1] = 0;
padded_input[k+j+2] = 0;
padded_input[k+j+3] = 0;
padded_input[k+j+4] = n>>24 & 0xff;
padded_input[k+j+5] = n>>16 & 0xff;
padded_input[k+j+6] = n>>8 & 0xff;
padded_input[k+j+7] = n & 0xff;
n = (nbytes >= 56) ? 2 : 1;
}
void main (void)
{
sha1(sha1_string, sha1_out, sizeof(sha1_string)-1);
while(1);
}