32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
40 #if (MD5_CRYPT_SUPPORT == ENABLED)
43 static const char_t base64EncTable[64] =
45 '.',
'/',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
46 'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
47 'U',
'V',
'W',
'X',
'Y',
'Z',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
48 'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z'
70 #if (CRYPTO_STATIC_MEM_SUPPORT == DISABLED)
77 if(password == NULL || salt == NULL || output == NULL)
94 #if (CRYPTO_STATIC_MEM_SUPPORT == DISABLED)
98 if(md5Context == NULL)
105 md5Update(&md5Context[0], password, passwordLen);
109 md5Update(&md5Context[0], salt, saltLen);
114 md5Update(&md5Context[1], password, passwordLen);
116 md5Update(&md5Context[1], salt, saltLen);
118 md5Update(&md5Context[1], password, passwordLen);
125 for(j = 0; j < passwordLen; j +=
n)
134 for(
n = passwordLen;
n > 0;
n >>= 1)
162 md5Update(&md5Context[0], password, passwordLen);
174 md5Update(&md5Context[0], salt, saltLen);
181 md5Update(&md5Context[0], password, passwordLen);
193 md5Update(&md5Context[0], password, passwordLen);
217 #if (CRYPTO_STATIC_MEM_SUPPORT == DISABLED)
223 if(outputLen != NULL)
247 for(i = 0, j = 0; i < 5; i++)
250 value = input[i] << 16;
251 value |= input[i + 6] << 8;
252 value |= (i < 4) ? input[i + 12] : input[5];
255 output[j++] = base64EncTable[
value & 0x3F];
256 output[j++] = base64EncTable[(
value >> 6) & 0x3F];
257 output[j++] = base64EncTable[(
value >> 12) & 0x3F];
258 output[j++] = base64EncTable[(
value >> 18) & 0x3F];
266 output[j++] = base64EncTable[
value & 0x3F];
267 output[j++] = base64EncTable[(
value >> 6) & 0x3F];