*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
{
- unsigned int i, index, partLen;
+ unsigned int i, idx, partLen;
/* Compute number of bytes mod 64 */
- index = (unsigned int)((context->count[0] >> 3) & 0x3F);
+ idx = (unsigned int)((context->count[0] >> 3) & 0x3F);
/* Update number of bits */
if ((context->count[0] += ((UINT4)inputLen << 3))
context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);
- partLen = 64 - index;
+ partLen = 64 - idx;
/* Transform as many times as possible. */
if (inputLen >= partLen) {
- memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen);
+ memcpy((POINTER)&context->buffer[idx], (POINTER)input, partLen);
MD5Transform (context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64)
MD5Transform (context->state, &input[i]);
- index = 0;
+ idx = 0;
}
else
i = 0;
/* Buffer remaining input */
- memcpy((POINTER)&context->buffer[index], (POINTER)&input[i],
+ memcpy((POINTER)&context->buffer[idx], (POINTER)&input[i],
inputLen-i);
}
MD5_CTX *context; /* context */
{
unsigned char bits[8];
- unsigned int index, padLen;
+ unsigned int idx, padLen;
/* Save number of bits */
Encode (bits, context->count, 8);
/* Pad out to 56 mod 64. */
- index = (unsigned int)((context->count[0] >> 3) & 0x3f);
- padLen = (index < 56) ? (56 - index) : (120 - index);
+ idx = (unsigned int)((context->count[0] >> 3) & 0x3f);
+ padLen = (idx < 56) ? (56 - idx) : (120 - idx);
MD5Update (context, PADDING, padLen);
/* Append length (before padding) */
C = ctx->state[2];
D = ctx->state[3];
+#undef F
#define F(x,y,z) (z ^ (x & (y ^ z)))
P( A, B, C, D, 0, 7, 0xD76AA478 );
* those are the standard RFC 1321 test vectors
*/
-static char *msg[] =
-{
- "",
- "a",
- "abc",
- "message digest",
- "abcdefghijklmnopqrstuvwxyz",
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
- "12345678901234567890123456789012345678901234567890123456789012" \
- "345678901234567890"
-};
-
-static char *val[] =
-{
- "d41d8cd98f00b204e9800998ecf8427e",
- "0cc175b9c0f1b6a831c399e269772661",
- "900150983cd24fb0d6963f7d28e17f72",
- "f96b697d7cb7938d525a2f31aaf161d0",
- "c3fcd3d76192e4007dfb496cca67e13b",
- "d174ab98d277d9f5a5611c2c9f419d9f",
- "57edf4a22be3c955ac49da2e2107b67a"
-};
-
-char* md5(char* pass, char* output)
+char* md5(const char* pass, char* output)
{
md5_context ctx;
int j;
{
sprintf(output + j * 2, "%02x", md5sum[j]);
}
- printf("The hash of %s is %s\n\n", pass, output);
+ /* printf("The hash of %s is %s\n\n", pass, output); */
+ return 0;
}
const char *
}
int
-checkpass(const char *pass, const char *crypt)
+checkpass(const char *pass, const char *crypted)
{
- char new_crypt[MD5_CRYPT_LENGTH], hseed[9];
+ char new_crypted[MD5_CRYPT_LENGTH], hseed[9];
int seed;
- if (crypt[0] == '$') {
+ if (crypted[0] == '$') {
/* new-style crypt, use "seed" after '$' */
- strncpy(hseed, crypt+1, 8);
+ strncpy(hseed, crypted+1, 8);
hseed[8] = 0;
seed = strtoul(hseed, NULL, 16);
- cryptpass_real(pass, new_crypt, seed);
+ cryptpass_real(pass, new_crypted, seed);
} else {
/* new "old-style" md5 crypt compatable with php, md5sum etc */
- md5(pass, new_crypt);
+ md5(pass, new_crypted);
}
- return !strcmp(crypt, new_crypt);
+ return !strcmp(crypted, new_crypted);
}