summaryrefslogtreecommitdiff
path: root/validat3.cpp
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2004-07-22 00:51:57 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2004-07-22 00:51:57 +0000
commita2828f6ae67c3d7294118a8144b1b2ec431237c4 (patch)
treefaff40f3429fb7fb70249c83afd5378f92ebdb31 /validat3.cpp
parente87d537834e72b242b4c16b99f0a40586940104b (diff)
downloadcryptopp-a2828f6ae67c3d7294118a8144b1b2ec431237c4.tar.gz
fix documentation, fix PanamaMAC, fix algorithm names
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@186 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'validat3.cpp')
-rw-r--r--validat3.cpp128
1 files changed, 4 insertions, 124 deletions
diff --git a/validat3.cpp b/validat3.cpp
index 2e538cb..dc92398 100644
--- a/validat3.cpp
+++ b/validat3.cpp
@@ -13,8 +13,6 @@
#include "tiger.h"
#include "ripemd.h"
#include "haval.h"
-#include "panama.h"
-#include "whrlpool.h"
#include "xormac.h"
#include "md5mac.h"
@@ -377,135 +375,17 @@ bool ValidateHAVAL()
bool ValidatePanama()
{
- bool pass=true;
-
- // the first two test vectors are from the reference implementation
- // the rest were generated by Crypto++
- HashTestTuple testSet1[] =
- {
- HashTestTuple("", "\xaa\x0c\xc9\x54\xd7\x57\xd7\xac\x77\x79\xca\x33\x42\x33\x4c\xa4\x71\xab\xd4\x7d\x59\x52\xac\x91\xed\x83\x7e\xcd\x5b\x16\x92\x2b"),
- HashTestTuple("The quick brown fox jumps over the lazy dog", "\x5f\x5c\xa3\x55\xb9\x0a\xc6\x22\xb0\xaa\x7e\x65\x4e\xf5\xf2\x7e\x9e\x75\x11\x14\x15\xb4\x8b\x8a\xfe\x3a\xdd\x1c\x6b\x89\xcb\xa1"),
- HashTestTuple("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "\xaf\x9c\x66\xfb\x60\x58\xe2\x23\x2a\x5d\xfb\xa0\x63\xee\x14\xb0\xf8\x6f\x0e\x33\x4e\x16\x58\x12\x55\x94\x35\x46\x4d\xd9\xbb\x60", 15625)
- };
- HashTestTuple testSet2[] =
- {
- HashTestTuple("", "\xe8\x1a\xa0\x45\x23\x53\x2d\xd7\x26\x7e\x5c\x5b\xc3\xba\x0e\x28\x98\x37\xa6\x2b\xa0\x32\x35\x03\x51\x98\x0e\x96\x0a\x84\xb0\xaf"),
- HashTestTuple("The quick brown fox jumps over the lazy dog", "\x8f\xa7\xda\xdc\xe0\x11\x0f\x97\x9a\x0b\x79\x5e\x76\xb2\xc2\x56\x28\xd8\xbd\xa8\x87\x47\x75\x81\x49\xc4\x2e\x3b\xc1\x3f\x85\xbc"),
- HashTestTuple("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "\xcb\x34\xf0\x93\x7e\x8d\x87\x0d\x3b\xd7\xff\x63\x11\x76\x5f\x2c\x22\x9a\x6c\x21\x54\xe4\xdb\x11\x95\x38\xdb\x51\x59\x43\x7c\xab", 15625)
- };
-
- cout << "\nPanama Hash Function (little endian) validation suite running...\n\n";
- PanamaHash<LittleEndian> panamaLE;
- pass = HashModuleTest(panamaLE, testSet1, sizeof(testSet1)/sizeof(testSet1[0])) && pass;
-
- cout << "\nPanama Hash Function (big endian) validation suite running...\n\n";
- PanamaHash<BigEndian> panamaBE;
- pass = HashModuleTest(panamaBE, testSet2, sizeof(testSet2)/sizeof(testSet2[0])) && pass;
-
- // these were generated by Crypto++
- unsigned char Key0[] = {
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
- 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
- 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
- 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
- 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
- 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
- 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};
- unsigned char Input0l[] = {
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
- 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
- 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
- 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};
- unsigned char Output0l[] = {
- 0xF0,0x7F,0x5F,0xF2,0xCC,0xD0,0x1A,0x0A,
- 0x7D,0x44,0xAC,0xD6,0xD2,0x39,0xC2,0xAF,
- 0x0D,0xA1,0xFF,0x35,0x27,0x5B,0xAF,0x5D,
- 0xFA,0x6E,0x09,0x41,0x1B,0x79,0xD8,0xB9};
- unsigned char Input0b[] = {
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
- 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
- 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
- 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};
- unsigned char Output0b[] = {
- 0xE1,0x2E,0x2F,0x6B,0xA4,0x1A,0xE8,0x32,
- 0xD8,0x88,0xDA,0x9F,0xA6,0x86,0x3B,0xC3,
- 0x7C,0x0E,0x99,0x6F,0x19,0x0A,0x17,0x11,
- 0x33,0x03,0x22,0xD3,0x7B,0xD9,0x8C,0xA4};
-
- // VC60 workaround: auto_ptr lacks reset()
- member_ptr<StreamTransformation> cipher;
- bool fail;
-
- cout << "\nPanama Cipher (little endian) validation suite running...\n\n";
-
- cipher.reset(new PanamaCipher<LittleEndian>::Encryption(Key0, 64));
- cipher->ProcessString(Input0l, sizeof(Input0l));
- fail = memcmp(Input0l, Output0l, sizeof(Input0l)) != 0;
- cout << (fail ? "FAILED" : "passed") << " Test 0" << endl;
- pass = pass && !fail;
-
- cout << "\nPanama Cipher (big endian) validation suite running...\n\n";
-
- cipher.reset(new PanamaCipher<BigEndian>::Encryption(Key0, 64));
- cipher->ProcessString(Input0b, sizeof(Input0b));
- fail = memcmp(Input0b, Output0b, sizeof(Input0b)) != 0;
- cout << (fail ? "FAILED" : "passed") << " Test 0" << endl;
- pass = pass && !fail;
+ cout << "\nPanama validation suite running...\n";
- return pass;
+ return RunTestDataFile("TestVectors/panama.txt");
}
bool ValidateWhirlpool()
{
- cout << "\nWhirlpool Hash Function validation suite running...\n\n";
+ cout << "\nWhirlpool Hash Function validation suite running...\n";
#ifdef WORD64_AVAILABLE
- // Selected test vectors from the Whirlpool NESSIE submission.
-
- const char Output0[] =
- "\x47\x0F\x04\x09\xAB\xAA\x44\x6E\x49\x66\x7D\x4E\xBE\x12\xA1\x43"
- "\x87\xCE\xDB\xD1\x0D\xD1\x7B\x82\x43\xCA\xD5\x50\xA0\x89\xDC\x0F"
- "\xEE\xA7\xAA\x40\xF6\xC2\xAA\xAB\x71\xC6\xEB\xD0\x76\xE4\x3C\x7C"
- "\xFC\xA0\xAD\x32\x56\x78\x97\xDC\xB5\x96\x98\x61\x04\x9A\x0F\x5A";
- const char Output1[] =
- "\xEB\xAA\x1D\xF2\xE9\x71\x13\xBE\x18\x7E\xB0\x30\x3C\x66\x0F\x6E"
- "\x64\x3E\x2C\x09\x0E\xF2\xCD\xA9\xA2\xEA\x6D\xCF\x50\x02\x14\x7D"
- "\x1D\x0E\x1E\x9D\x99\x6E\x87\x9C\xEF\x9D\x26\x89\x66\x30\xA5\xDB"
- "\x33\x08\xD5\xA0\xDC\x23\x5B\x19\x9C\x38\x92\x3B\xE2\x25\x9E\x03";
- const char Output16[] =
- "\x40\x23\x8F\x57\xB2\x7D\x07\x4F\x9C\x8D\x04\x3D\xBD\x27\x07\xC7"
- "\x18\xFC\x34\x49\xCC\x1F\x49\x0C\xA2\xF3\x24\xDF\xEC\x48\xB0\x5A"
- "\xE7\x2D\x02\x6D\x89\x1C\xC0\x80\xE6\x31\x1F\xC3\x2E\xCF\xFC\x30"
- "\xF4\x23\xDA\x7E\x63\xE3\x98\x7C\xA0\xCD\x37\xBF\xFD\x97\xCA\x56";
- const char Output32[] =
- "\x48\xCC\xE9\x1F\x62\xB6\xD9\x35\x13\x38\x30\x1D\xF1\x82\xF4\x6A"
- "\xD0\x7B\xB7\xB2\x33\xC1\x19\xCA\x2C\x1F\xC2\x19\xFF\xF9\x49\x85"
- "\x8D\x47\xE5\x0D\x69\x18\xEB\xDC\xDF\x5F\x82\x98\x05\xFB\x86\x07"
- "\x22\x76\x35\x69\xE6\xAB\x73\x41\x05\x4C\x38\x9C\xE9\xD6\xEB\xAC";
- const char Output33[] =
- "\x60\x4B\x8B\x59\x15\xA7\xD6\x21\x42\x78\xDF\x08\x13\x53\x1F\xF2"
- "\x60\xE1\x46\x51\xEC\xAC\xEC\x57\x6F\x01\xC4\x05\x42\x8F\x8D\x55"
- "\x45\xB7\xEA\x6E\x65\x75\x8E\x5E\x83\xA4\x29\xD8\x52\xF4\x8C\x16"
- "\x50\x6B\xBF\x00\xB5\x28\x51\x9B\x14\x2A\x77\x45\xF8\x31\x84\xD4";
- const char Output64[] =
- "\xA0\x72\x51\x3B\x2A\xA9\xE0\x72\x26\xBA\x01\xE7\xD5\xB2\xB6\x26"
- "\xE3\x62\xB1\x40\x1E\x1A\xEC\xF1\x68\xB9\x53\x32\x42\xC0\x18\xFF"
- "\xEA\x81\x83\x7F\x7B\xD1\x60\xD1\xD0\xA9\x64\x4C\x8E\xD6\x41\x50"
- "\xE6\x40\x6D\x2C\x1B\x74\x56\x02\x4F\x10\x98\x53\x90\x81\xFC\x77";
-
- HashTestTuple testSet[] =
- {
- HashTestTuple("", 0, Output0, 1),
- HashTestTuple("\0", 1, Output1, 1),
- HashTestTuple("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, Output16, 1),
- HashTestTuple("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, Output32, 2),
- HashTestTuple("\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", 33, Output33, 1),
- HashTestTuple("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, Output64, 4),
- };
-
- Whirlpool whirlpool;
- return HashModuleTest(whirlpool, testSet, sizeof(testSet)/sizeof(testSet[0]));
+ return RunTestDataFile("TestVectors/whrlpool.txt");
#else
cout << "word64 not available, skipping Whirlpool validation." << endl;
return true;