| 340 | } |
| 341 | |
| 342 | void TestMD5() |
| 343 | { |
| 344 | // RFC 1321 known-answer tests for MD5 |
| 345 | struct { const char *pszData; const char *pszExpected; } rgTests[] = |
| 346 | { |
| 347 | { "", "d41d8cd98f00b204e9800998ecf8427e" }, |
| 348 | { "a", "0cc175b9c0f1b6a831c399e269772661" }, |
| 349 | { "abc", "900150983cd24fb0d6963f7d28e17f72" }, |
| 350 | { "message digest", "f96b697d7cb7938d525a2f31aaf161d0" }, |
| 351 | { "abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b" }, |
| 352 | }; |
| 353 | for ( auto &t : rgTests ) |
| 354 | { |
| 355 | MD5Digest_t digest; |
| 356 | CCrypto::GenerateMD5Digest( t.pszData, strlen(t.pszData), &digest ); |
| 357 | char hex[sizeof(MD5Digest_t)*2+1]; |
| 358 | CCrypto::HexEncode( digest, sizeof(digest), hex, sizeof(hex) ); |
| 359 | for ( int i = 0; hex[i]; ++i ) hex[i] = tolower(hex[i]); |
| 360 | CHECK_EQUAL( 0, strcmp( hex, t.pszExpected ) ); |
| 361 | } |
| 362 | } |
| 363 | |
| 364 | void TestHMAC() |
| 365 | { |