|
|
1.1 ! root 1: /* Legal Notice: The source code contained in this file has been derived from ! 2: the source code of Encryption for the Masses 2.02a, which is Copyright (c) ! 3: 1998-99 Paul Le Roux and which is covered by the 'License Agreement for ! 4: Encryption for the Masses'. Modifications and additions to that source code ! 5: contained in this file are Copyright (c) 2004-2005 TrueCrypt Foundation and ! 6: Copyright (c) 2004 TrueCrypt Team, and are covered by TrueCrypt License 2.0 ! 7: the full text of which is contained in the file License.txt included in ! 8: TrueCrypt binary and source code distribution archives. */ ! 9: ! 10: #pragma warning(disable : 4295) ! 11: ! 12: #include "Tcdefs.h" ! 13: #include "Crc.h" ! 14: #include "Crypto.h" ! 15: #include "Tests.h" ! 16: ! 17: #ifdef LINUX_DRIVER ! 18: #include <linux/string.h> ! 19: #else ! 20: #include "Pkcs5.h" ! 21: #endif ! 22: ! 23: /* Blowfish Test Vectors */ ! 24: ! 25: /* Blowfish test vectors from www.counterpane.com/blowfish.html */ ! 26: ! 27: #define BF_TEST_COUNT 34 ! 28: ! 29: typedef struct { ! 30: unsigned char key[8]; ! 31: unsigned char plaintext[8]; ! 32: unsigned char ciphertext[8]; ! 33: } BF_TEST; ! 34: ! 35: BF_TEST bf_ecb_vectors[BF_TEST_COUNT] = { ! 36: "\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00","\x4E\xF9\x97\x45\x61\x98\xDD\x78", ! 37: "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x51\x86\x6F\xD5\xB8\x5E\xCB\x8A", ! 38: "\x30\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x01","\x7D\x85\x6F\x9A\x61\x30\x63\xF2", ! 39: "\x11\x11\x11\x11\x11\x11\x11\x11","\x11\x11\x11\x11\x11\x11\x11\x11","\x24\x66\xDD\x87\x8B\x96\x3C\x9D", ! 40: "\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x11\x11\x11\x11\x11\x11\x11\x11","\x61\xF9\xC3\x80\x22\x81\xB0\x96", ! 41: "\x11\x11\x11\x11\x11\x11\x11\x11","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x7D\x0C\xC6\x30\xAF\xDA\x1E\xC7", ! 42: "\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00","\x4E\xF9\x97\x45\x61\x98\xDD\x78", ! 43: "\xFE\xDC\xBA\x98\x76\x54\x32\x10","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x0A\xCE\xAB\x0F\xC6\xA0\xA2\x8D", ! 44: "\x7C\xA1\x10\x45\x4A\x1A\x6E\x57","\x01\xA1\xD6\xD0\x39\x77\x67\x42","\x59\xC6\x82\x45\xEB\x05\x28\x2B", ! 45: "\x01\x31\xD9\x61\x9D\xC1\x37\x6E","\x5C\xD5\x4C\xA8\x3D\xEF\x57\xDA","\xB1\xB8\xCC\x0B\x25\x0F\x09\xA0", ! 46: "\x07\xA1\x13\x3E\x4A\x0B\x26\x86","\x02\x48\xD4\x38\x06\xF6\x71\x72","\x17\x30\xE5\x77\x8B\xEA\x1D\xA4", ! 47: "\x38\x49\x67\x4C\x26\x02\x31\x9E","\x51\x45\x4B\x58\x2D\xDF\x44\x0A","\xA2\x5E\x78\x56\xCF\x26\x51\xEB", ! 48: "\x04\xB9\x15\xBA\x43\xFE\xB5\xB6","\x42\xFD\x44\x30\x59\x57\x7F\xA2","\x35\x38\x82\xB1\x09\xCE\x8F\x1A", ! 49: "\x01\x13\xB9\x70\xFD\x34\xF2\xCE","\x05\x9B\x5E\x08\x51\xCF\x14\x3A","\x48\xF4\xD0\x88\x4C\x37\x99\x18", ! 50: "\x01\x70\xF1\x75\x46\x8F\xB5\xE6","\x07\x56\xD8\xE0\x77\x47\x61\xD2","\x43\x21\x93\xB7\x89\x51\xFC\x98", ! 51: "\x43\x29\x7F\xAD\x38\xE3\x73\xFE","\x76\x25\x14\xB8\x29\xBF\x48\x6A","\x13\xF0\x41\x54\xD6\x9D\x1A\xE5", ! 52: "\x07\xA7\x13\x70\x45\xDA\x2A\x16","\x3B\xDD\x11\x90\x49\x37\x28\x02","\x2E\xED\xDA\x93\xFF\xD3\x9C\x79", ! 53: "\x04\x68\x91\x04\xC2\xFD\x3B\x2F","\x26\x95\x5F\x68\x35\xAF\x60\x9A","\xD8\x87\xE0\x39\x3C\x2D\xA6\xE3", ! 54: "\x37\xD0\x6B\xB5\x16\xCB\x75\x46","\x16\x4D\x5E\x40\x4F\x27\x52\x32","\x5F\x99\xD0\x4F\x5B\x16\x39\x69", ! 55: "\x1F\x08\x26\x0D\x1A\xC2\x46\x5E","\x6B\x05\x6E\x18\x75\x9F\x5C\xCA","\x4A\x05\x7A\x3B\x24\xD3\x97\x7B", ! 56: "\x58\x40\x23\x64\x1A\xBA\x61\x76","\x00\x4B\xD6\xEF\x09\x17\x60\x62","\x45\x20\x31\xC1\xE4\xFA\xDA\x8E", ! 57: "\x02\x58\x16\x16\x46\x29\xB0\x07","\x48\x0D\x39\x00\x6E\xE7\x62\xF2","\x75\x55\xAE\x39\xF5\x9B\x87\xBD", ! 58: "\x49\x79\x3E\xBC\x79\xB3\x25\x8F","\x43\x75\x40\xC8\x69\x8F\x3C\xFA","\x53\xC5\x5F\x9C\xB4\x9F\xC0\x19", ! 59: "\x4F\xB0\x5E\x15\x15\xAB\x73\xA7","\x07\x2D\x43\xA0\x77\x07\x52\x92","\x7A\x8E\x7B\xFA\x93\x7E\x89\xA3", ! 60: "\x49\xE9\x5D\x6D\x4C\xA2\x29\xBF","\x02\xFE\x55\x77\x81\x17\xF1\x2A","\xCF\x9C\x5D\x7A\x49\x86\xAD\xB5", ! 61: "\x01\x83\x10\xDC\x40\x9B\x26\xD6","\x1D\x9D\x5C\x50\x18\xF7\x28\xC2","\xD1\xAB\xB2\x90\x65\x8B\xC7\x78", ! 62: "\x1C\x58\x7F\x1C\x13\x92\x4F\xEF","\x30\x55\x32\x28\x6D\x6F\x29\x5A","\x55\xCB\x37\x74\xD1\x3E\xF2\x01", ! 63: "\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xFA\x34\xEC\x48\x47\xB2\x68\xB2", ! 64: "\x1F\x1F\x1F\x1F\x0E\x0E\x0E\x0E","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xA7\x90\x79\x51\x08\xEA\x3C\xAE", ! 65: "\xE0\xFE\xE0\xFE\xF1\xFE\xF1\xFE","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xC3\x9E\x07\x2D\x9F\xAC\x63\x1D", ! 66: "\x00\x00\x00\x00\x00\x00\x00\x00","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x01\x49\x33\xE0\xCD\xAF\xF6\xE4", ! 67: "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x00\x00\x00\x00\x00\x00\x00\x00","\xF2\x1E\x9A\x77\xB7\x1C\x49\xBC", ! 68: "\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x00\x00\x00\x00\x00\x00\x00\x00","\x24\x59\x46\x88\x57\x54\x36\x9A", ! 69: "\xFE\xDC\xBA\x98\x76\x54\x32\x10","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x6B\x5C\x5A\x9C\x5D\x9E\x0A\x5A" ! 70: }; ! 71: ! 72: ! 73: /* DES Test Vectors */ ! 74: ! 75: /* DES test vectors, derived from "Validating the Correctness of Hardware ! 76: Implementations of the NBS Data Encryption Standard", NBS Special ! 77: Publication 500-20, 1980 */ ! 78: ! 79: /* The data structure for the ( key, plaintext, ciphertext ) triplets */ ! 80: ! 81: typedef struct { ! 82: unsigned char key[8]; ! 83: unsigned char plaintext[8]; ! 84: unsigned char ciphertext[8]; ! 85: } DES_TEST; ! 86: ! 87: ! 88: #define DES56_TEST_COUNT_IP 64 ! 89: #define DES56_TEST_COUNT_VP 64 ! 90: #define DES56_TEST_COUNT_KP 56 ! 91: #define DES56_TEST_COUNT_RS 56 ! 92: #define DES56_TEST_COUNT_DP 32 ! 93: #define DES56_TEST_COUNT_SB 19 ! 94: ! 95: DES_TEST des56_ecb_vectors_ip[DES56_TEST_COUNT_IP] = { ! 96: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 97: { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 }, ! 98: { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 99: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 100: { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 }, ! 101: { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 102: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 103: { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA }, ! 104: { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 105: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 106: { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F }, ! 107: { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 108: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 109: { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 }, ! 110: { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 111: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 112: { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF }, ! 113: { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 114: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 115: { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F }, ! 116: { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 117: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 118: { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 }, ! 119: { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 120: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 121: { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A }, ! 122: { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 123: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 124: { 0x42, 0x42, 0x50, 0xB3, 0x7C, 0x3D, 0xD9, 0x51 }, ! 125: { 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 126: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 127: { 0xB8, 0x06, 0x1B, 0x7E, 0xCD, 0x9A, 0x21, 0xE5 }, ! 128: { 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 129: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 130: { 0xF1, 0x5D, 0x0F, 0x28, 0x6B, 0x65, 0xBD, 0x28 }, ! 131: { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 132: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 133: { 0xAD, 0xD0, 0xCC, 0x8D, 0x6E, 0x5D, 0xEB, 0xA1 }, ! 134: { 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 135: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 136: { 0xE6, 0xD5, 0xF8, 0x27, 0x52, 0xAD, 0x63, 0xD1 }, ! 137: { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 138: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 139: { 0xEC, 0xBF, 0xE3, 0xBD, 0x3F, 0x59, 0x1A, 0x5E }, ! 140: { 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 141: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 142: { 0xF3, 0x56, 0x83, 0x43, 0x79, 0xD1, 0x65, 0xCD }, ! 143: { 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 144: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 145: { 0x2B, 0x9F, 0x98, 0x2F, 0x20, 0x03, 0x7F, 0xA9 }, ! 146: { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 147: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 148: { 0x88, 0x9D, 0xE0, 0x68, 0xA1, 0x6F, 0x0B, 0xE6 }, ! 149: { 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 150: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 151: { 0xE1, 0x9E, 0x27, 0x5D, 0x84, 0x6A, 0x12, 0x98 }, ! 152: { 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 153: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 154: { 0x32, 0x9A, 0x8E, 0xD5, 0x23, 0xD7, 0x1A, 0xEC }, ! 155: { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 156: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 157: { 0xE7, 0xFC, 0xE2, 0x25, 0x57, 0xD2, 0x3C, 0x97 }, ! 158: { 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 159: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 160: { 0x12, 0xA9, 0xF5, 0x81, 0x7F, 0xF2, 0xD6, 0x5D }, ! 161: { 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 162: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 163: { 0xA4, 0x84, 0xC3, 0xAD, 0x38, 0xDC, 0x9C, 0x19 }, ! 164: { 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 165: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 166: { 0xFB, 0xE0, 0x0A, 0x8A, 0x1E, 0xF8, 0xAD, 0x72 }, ! 167: { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 168: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 169: { 0x75, 0x0D, 0x07, 0x94, 0x07, 0x52, 0x13, 0x63 }, ! 170: { 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 } }, ! 171: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 172: { 0x64, 0xFE, 0xED, 0x9C, 0x72, 0x4C, 0x2F, 0xAF }, ! 173: { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 } }, ! 174: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 175: { 0xF0, 0x2B, 0x26, 0x3B, 0x32, 0x8E, 0x2B, 0x60 }, ! 176: { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 } }, ! 177: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 178: { 0x9D, 0x64, 0x55, 0x5A, 0x9A, 0x10, 0xB8, 0x52 }, ! 179: { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 } }, ! 180: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 181: { 0xD1, 0x06, 0xFF, 0x0B, 0xED, 0x52, 0x55, 0xD7 }, ! 182: { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 } }, ! 183: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 184: { 0xE1, 0x65, 0x2C, 0x6B, 0x13, 0x8C, 0x64, 0xA5 }, ! 185: { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 } }, ! 186: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 187: { 0xE4, 0x28, 0x58, 0x11, 0x86, 0xEC, 0x8F, 0x46 }, ! 188: { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 } }, ! 189: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 190: { 0xAE, 0xB5, 0xF5, 0xED, 0xE2, 0x2D, 0x1A, 0x36 }, ! 191: { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 } }, ! 192: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 193: { 0xE9, 0x43, 0xD7, 0x56, 0x8A, 0xEC, 0x0C, 0x5C }, ! 194: { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 } }, ! 195: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 196: { 0xDF, 0x98, 0xC8, 0x27, 0x6F, 0x54, 0xB0, 0x4B }, ! 197: { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 } }, ! 198: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 199: { 0xB1, 0x60, 0xE4, 0x68, 0x0F, 0x6C, 0x69, 0x6F }, ! 200: { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 } }, ! 201: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 202: { 0xFA, 0x07, 0x52, 0xB0, 0x7D, 0x9C, 0x4A, 0xB8 }, ! 203: { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 } }, ! 204: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 205: { 0xCA, 0x3A, 0x2B, 0x03, 0x6D, 0xBC, 0x85, 0x02 }, ! 206: { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 } }, ! 207: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 208: { 0x5E, 0x09, 0x05, 0x51, 0x7B, 0xB5, 0x9B, 0xCF }, ! 209: { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 } }, ! 210: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 211: { 0x81, 0x4E, 0xEB, 0x3B, 0x91, 0xD9, 0x07, 0x26 }, ! 212: { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 } }, ! 213: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 214: { 0x4D, 0x49, 0xDB, 0x15, 0x32, 0x91, 0x9C, 0x9F }, ! 215: { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 } }, ! 216: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 217: { 0x25, 0xEB, 0x5F, 0xC3, 0xF8, 0xCF, 0x06, 0x21 }, ! 218: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 } }, ! 219: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 220: { 0xAB, 0x6A, 0x20, 0xC0, 0x62, 0x0D, 0x1C, 0x6F }, ! 221: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00 } }, ! 222: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 223: { 0x79, 0xE9, 0x0D, 0xBC, 0x98, 0xF9, 0x2C, 0xCA }, ! 224: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 } }, ! 225: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 226: { 0x86, 0x6E, 0xCE, 0xDD, 0x80, 0x72, 0xBB, 0x0E }, ! 227: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 } }, ! 228: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 229: { 0x8B, 0x54, 0x53, 0x6F, 0x2F, 0x3E, 0x64, 0xA8 }, ! 230: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 } }, ! 231: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 232: { 0xEA, 0x51, 0xD3, 0x97, 0x55, 0x95, 0xB8, 0x6B }, ! 233: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00 } }, ! 234: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 235: { 0xCA, 0xFF, 0xC6, 0xAC, 0x45, 0x42, 0xDE, 0x31 }, ! 236: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 } }, ! 237: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 238: { 0x8D, 0xD4, 0x5A, 0x2D, 0xDF, 0x90, 0x79, 0x6C }, ! 239: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 } }, ! 240: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 241: { 0x10, 0x29, 0xD5, 0x5E, 0x88, 0x0E, 0xC2, 0xD0 }, ! 242: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 } }, ! 243: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 244: { 0x5D, 0x86, 0xCB, 0x23, 0x63, 0x9D, 0xBE, 0xA9 }, ! 245: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00 } }, ! 246: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 247: { 0x1D, 0x1C, 0xA8, 0x53, 0xAE, 0x7C, 0x0C, 0x5F }, ! 248: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 } }, ! 249: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 250: { 0xCE, 0x33, 0x23, 0x29, 0x24, 0x8F, 0x32, 0x28 }, ! 251: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 } }, ! 252: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 253: { 0x84, 0x05, 0xD1, 0xAB, 0xE2, 0x4F, 0xB9, 0x42 }, ! 254: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 } }, ! 255: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 256: { 0xE6, 0x43, 0xD7, 0x80, 0x90, 0xCA, 0x42, 0x07 }, ! 257: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 } }, ! 258: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 259: { 0x48, 0x22, 0x1B, 0x99, 0x37, 0x74, 0x8A, 0x23 }, ! 260: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 } }, ! 261: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 262: { 0xDD, 0x7C, 0x0B, 0xBD, 0x61, 0xFA, 0xFD, 0x54 }, ! 263: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 } }, ! 264: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 265: { 0x2F, 0xBC, 0x29, 0x1A, 0x57, 0x0D, 0xB5, 0xC4 }, ! 266: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 } }, ! 267: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 268: { 0xE0, 0x7C, 0x30, 0xD7, 0xE4, 0xE2, 0x6E, 0x12 }, ! 269: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40 } }, ! 270: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 271: { 0x09, 0x53, 0xE2, 0x25, 0x8E, 0x8E, 0x90, 0xA1 }, ! 272: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 } }, ! 273: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 274: { 0x5B, 0x71, 0x1B, 0xC4, 0xCE, 0xEB, 0xF2, 0xEE }, ! 275: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 } }, ! 276: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 277: { 0xCC, 0x08, 0x3F, 0x1E, 0x6D, 0x9E, 0x85, 0xF6 }, ! 278: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 } }, ! 279: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 280: { 0xD2, 0xFD, 0x88, 0x67, 0xD5, 0x0D, 0x2D, 0xFE }, ! 281: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04 } }, ! 282: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 283: { 0x06, 0xE7, 0xEA, 0x22, 0xCE, 0x92, 0x70, 0x8F }, ! 284: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 } }, ! 285: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 286: { 0x16, 0x6B, 0x40, 0xB4, 0x4A, 0xBA, 0x4B, 0xD6 }, ! 287: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } ! 288: }; ! 289: ! 290: /* Inverse Permutation and Expansion test: Encrypt */ ! 291: ! 292: DES_TEST des56_ecb_vectors_vp[DES56_TEST_COUNT_VP] = { ! 293: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 294: { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 295: { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 } }, ! 296: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 297: { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 298: { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 } }, ! 299: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 300: { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 301: { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA } }, ! 302: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 303: { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 304: { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F } }, ! 305: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 306: { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 307: { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 } }, ! 308: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 309: { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 310: { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF } }, ! 311: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 312: { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 313: { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F } }, ! 314: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 315: { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 316: { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 } }, ! 317: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 318: { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 319: { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A } }, ! 320: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 321: { 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 322: { 0x42, 0x42, 0x50, 0xB3, 0x7C, 0x3D, 0xD9, 0x51 } }, ! 323: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 324: { 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 325: { 0xB8, 0x06, 0x1B, 0x7E, 0xCD, 0x9A, 0x21, 0xE5 } }, ! 326: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 327: { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 328: { 0xF1, 0x5D, 0x0F, 0x28, 0x6B, 0x65, 0xBD, 0x28 } }, ! 329: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 330: { 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 331: { 0xAD, 0xD0, 0xCC, 0x8D, 0x6E, 0x5D, 0xEB, 0xA1 } }, ! 332: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 333: { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 334: { 0xE6, 0xD5, 0xF8, 0x27, 0x52, 0xAD, 0x63, 0xD1 } }, ! 335: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 336: { 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 337: { 0xEC, 0xBF, 0xE3, 0xBD, 0x3F, 0x59, 0x1A, 0x5E } }, ! 338: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 339: { 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 340: { 0xF3, 0x56, 0x83, 0x43, 0x79, 0xD1, 0x65, 0xCD } }, ! 341: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 342: { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 343: { 0x2B, 0x9F, 0x98, 0x2F, 0x20, 0x03, 0x7F, 0xA9 } }, ! 344: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 345: { 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 346: { 0x88, 0x9D, 0xE0, 0x68, 0xA1, 0x6F, 0x0B, 0xE6 } }, ! 347: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 348: { 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 349: { 0xE1, 0x9E, 0x27, 0x5D, 0x84, 0x6A, 0x12, 0x98 } }, ! 350: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 351: { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 352: { 0x32, 0x9A, 0x8E, 0xD5, 0x23, 0xD7, 0x1A, 0xEC } }, ! 353: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 354: { 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 355: { 0xE7, 0xFC, 0xE2, 0x25, 0x57, 0xD2, 0x3C, 0x97 } }, ! 356: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 357: { 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 358: { 0x12, 0xA9, 0xF5, 0x81, 0x7F, 0xF2, 0xD6, 0x5D } }, ! 359: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 360: { 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 361: { 0xA4, 0x84, 0xC3, 0xAD, 0x38, 0xDC, 0x9C, 0x19 } }, ! 362: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 363: { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 364: { 0xFB, 0xE0, 0x0A, 0x8A, 0x1E, 0xF8, 0xAD, 0x72 } }, ! 365: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 366: { 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 }, ! 367: { 0x75, 0x0D, 0x07, 0x94, 0x07, 0x52, 0x13, 0x63 } }, ! 368: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 369: { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 }, ! 370: { 0x64, 0xFE, 0xED, 0x9C, 0x72, 0x4C, 0x2F, 0xAF } }, ! 371: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 372: { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 }, ! 373: { 0xF0, 0x2B, 0x26, 0x3B, 0x32, 0x8E, 0x2B, 0x60 } }, ! 374: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 375: { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 }, ! 376: { 0x9D, 0x64, 0x55, 0x5A, 0x9A, 0x10, 0xB8, 0x52 } }, ! 377: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 378: { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }, ! 379: { 0xD1, 0x06, 0xFF, 0x0B, 0xED, 0x52, 0x55, 0xD7 } }, ! 380: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 381: { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 }, ! 382: { 0xE1, 0x65, 0x2C, 0x6B, 0x13, 0x8C, 0x64, 0xA5 } }, ! 383: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 384: { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, ! 385: { 0xE4, 0x28, 0x58, 0x11, 0x86, 0xEC, 0x8F, 0x46 } }, ! 386: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 387: { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 }, ! 388: { 0xAE, 0xB5, 0xF5, 0xED, 0xE2, 0x2D, 0x1A, 0x36 } }, ! 389: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 390: { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 }, ! 391: { 0xE9, 0x43, 0xD7, 0x56, 0x8A, 0xEC, 0x0C, 0x5C } }, ! 392: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 393: { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 }, ! 394: { 0xDF, 0x98, 0xC8, 0x27, 0x6F, 0x54, 0xB0, 0x4B } }, ! 395: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 396: { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 }, ! 397: { 0xB1, 0x60, 0xE4, 0x68, 0x0F, 0x6C, 0x69, 0x6F } }, ! 398: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 399: { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 }, ! 400: { 0xFA, 0x07, 0x52, 0xB0, 0x7D, 0x9C, 0x4A, 0xB8 } }, ! 401: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 402: { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 }, ! 403: { 0xCA, 0x3A, 0x2B, 0x03, 0x6D, 0xBC, 0x85, 0x02 } }, ! 404: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 405: { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 }, ! 406: { 0x5E, 0x09, 0x05, 0x51, 0x7B, 0xB5, 0x9B, 0xCF } }, ! 407: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 408: { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, ! 409: { 0x81, 0x4E, 0xEB, 0x3B, 0x91, 0xD9, 0x07, 0x26 } }, ! 410: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 411: { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 }, ! 412: { 0x4D, 0x49, 0xDB, 0x15, 0x32, 0x91, 0x9C, 0x9F } }, ! 413: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 414: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 }, ! 415: { 0x25, 0xEB, 0x5F, 0xC3, 0xF8, 0xCF, 0x06, 0x21 } }, ! 416: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 417: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00 }, ! 418: { 0xAB, 0x6A, 0x20, 0xC0, 0x62, 0x0D, 0x1C, 0x6F } }, ! 419: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 420: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 }, ! 421: { 0x79, 0xE9, 0x0D, 0xBC, 0x98, 0xF9, 0x2C, 0xCA } }, ! 422: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 423: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 }, ! 424: { 0x86, 0x6E, 0xCE, 0xDD, 0x80, 0x72, 0xBB, 0x0E } }, ! 425: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 426: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 }, ! 427: { 0x8B, 0x54, 0x53, 0x6F, 0x2F, 0x3E, 0x64, 0xA8 } }, ! 428: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 429: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00 }, ! 430: { 0xEA, 0x51, 0xD3, 0x97, 0x55, 0x95, 0xB8, 0x6B } }, ! 431: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 432: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 }, ! 433: { 0xCA, 0xFF, 0xC6, 0xAC, 0x45, 0x42, 0xDE, 0x31 } }, ! 434: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 435: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 }, ! 436: { 0x8D, 0xD4, 0x5A, 0x2D, 0xDF, 0x90, 0x79, 0x6C } }, ! 437: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 438: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 }, ! 439: { 0x10, 0x29, 0xD5, 0x5E, 0x88, 0x0E, 0xC2, 0xD0 } }, ! 440: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 441: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00 }, ! 442: { 0x5D, 0x86, 0xCB, 0x23, 0x63, 0x9D, 0xBE, 0xA9 } }, ! 443: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 444: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 }, ! 445: { 0x1D, 0x1C, 0xA8, 0x53, 0xAE, 0x7C, 0x0C, 0x5F } }, ! 446: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 447: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 }, ! 448: { 0xCE, 0x33, 0x23, 0x29, 0x24, 0x8F, 0x32, 0x28 } }, ! 449: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 450: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }, ! 451: { 0x84, 0x05, 0xD1, 0xAB, 0xE2, 0x4F, 0xB9, 0x42 } }, ! 452: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 453: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 }, ! 454: { 0xE6, 0x43, 0xD7, 0x80, 0x90, 0xCA, 0x42, 0x07 } }, ! 455: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 456: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 }, ! 457: { 0x48, 0x22, 0x1B, 0x99, 0x37, 0x74, 0x8A, 0x23 } }, ! 458: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 459: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 }, ! 460: { 0xDD, 0x7C, 0x0B, 0xBD, 0x61, 0xFA, 0xFD, 0x54 } }, ! 461: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 462: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, ! 463: { 0x2F, 0xBC, 0x29, 0x1A, 0x57, 0x0D, 0xB5, 0xC4 } }, ! 464: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 465: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40 }, ! 466: { 0xE0, 0x7C, 0x30, 0xD7, 0xE4, 0xE2, 0x6E, 0x12 } }, ! 467: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 468: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 }, ! 469: { 0x09, 0x53, 0xE2, 0x25, 0x8E, 0x8E, 0x90, 0xA1 } }, ! 470: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 471: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 }, ! 472: { 0x5B, 0x71, 0x1B, 0xC4, 0xCE, 0xEB, 0xF2, 0xEE } }, ! 473: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 474: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 }, ! 475: { 0xCC, 0x08, 0x3F, 0x1E, 0x6D, 0x9E, 0x85, 0xF6 } }, ! 476: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 477: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04 }, ! 478: { 0xD2, 0xFD, 0x88, 0x67, 0xD5, 0x0D, 0x2D, 0xFE } }, ! 479: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 480: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, ! 481: { 0x06, 0xE7, 0xEA, 0x22, 0xCE, 0x92, 0x70, 0x8F } }, ! 482: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 483: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, ! 484: { 0x16, 0x6B, 0x40, 0xB4, 0x4A, 0xBA, 0x4B, 0xD6 } } ! 485: }; ! 486: ! 487: /* Key Permutation tests: Encrypt */ ! 488: ! 489: DES_TEST des56_ecb_vectors_kp[DES56_TEST_COUNT_KP] = { ! 490: { { 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 491: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 492: { 0x95, 0xA8, 0xD7, 0x28, 0x13, 0xDA, 0xA9, 0x4D } }, ! 493: { { 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 494: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 495: { 0x0E, 0xEC, 0x14, 0x87, 0xDD, 0x8C, 0x26, 0xD5 } }, ! 496: { { 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 497: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 498: { 0x7A, 0xD1, 0x6F, 0xFB, 0x79, 0xC4, 0x59, 0x26 } }, ! 499: { { 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 500: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 501: { 0xD3, 0x74, 0x62, 0x94, 0xCA, 0x6A, 0x6C, 0xF3 } }, ! 502: { { 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 503: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 504: { 0x80, 0x9F, 0x5F, 0x87, 0x3C, 0x1F, 0xD7, 0x61 } }, ! 505: { { 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 506: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 507: { 0xC0, 0x2F, 0xAF, 0xFE, 0xC9, 0x89, 0xD1, 0xFC } }, ! 508: { { 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 509: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 510: { 0x46, 0x15, 0xAA, 0x1D, 0x33, 0xE7, 0x2F, 0x10 } }, ! 511: { { 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 512: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 513: { 0x20, 0x55, 0x12, 0x33, 0x50, 0xC0, 0x08, 0x58 } }, ! 514: { { 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 515: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 516: { 0xDF, 0x3B, 0x99, 0xD6, 0x57, 0x73, 0x97, 0xC8 } }, ! 517: { { 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 518: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 519: { 0x31, 0xFE, 0x17, 0x36, 0x9B, 0x52, 0x88, 0xC9 } }, ! 520: { { 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 521: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 522: { 0xDF, 0xDD, 0x3C, 0xC6, 0x4D, 0xAE, 0x16, 0x42 } }, ! 523: { { 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 524: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 525: { 0x17, 0x8C, 0x83, 0xCE, 0x2B, 0x39, 0x9D, 0x94 } }, ! 526: { { 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 527: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 528: { 0x50, 0xF6, 0x36, 0x32, 0x4A, 0x9B, 0x7F, 0x80 } }, ! 529: { { 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 530: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 531: { 0xA8, 0x46, 0x8E, 0xE3, 0xBC, 0x18, 0xF0, 0x6D } }, ! 532: { { 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 533: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 534: { 0xA2, 0xDC, 0x9E, 0x92, 0xFD, 0x3C, 0xDE, 0x92 } }, ! 535: { { 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 536: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 537: { 0xCA, 0xC0, 0x9F, 0x79, 0x7D, 0x03, 0x12, 0x87 } }, ! 538: { { 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 539: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 540: { 0x90, 0xBA, 0x68, 0x0B, 0x22, 0xAE, 0xB5, 0x25 } }, ! 541: { { 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 542: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 543: { 0xCE, 0x7A, 0x24, 0xF3, 0x50, 0xE2, 0x80, 0xB6 } }, ! 544: { { 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 545: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 546: { 0x88, 0x2B, 0xFF, 0x0A, 0xA0, 0x1A, 0x0B, 0x87 } }, ! 547: { { 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 548: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 549: { 0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xC2 } }, ! 550: { { 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 551: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 552: { 0xC7, 0x15, 0x16, 0xC2, 0x9C, 0x75, 0xD1, 0x70 } }, ! 553: { { 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01 }, ! 554: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 555: { 0x51, 0x99, 0xC2, 0x9A, 0x52, 0xC9, 0xF0, 0x59 } }, ! 556: { { 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01 }, ! 557: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 558: { 0xC2, 0x2F, 0x0A, 0x29, 0x4A, 0x71, 0xF2, 0x9F } }, ! 559: { { 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01 }, ! 560: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 561: { 0xEE, 0x37, 0x14, 0x83, 0x71, 0x4C, 0x02, 0xEA } }, ! 562: { { 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01 }, ! 563: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 564: { 0xA8, 0x1F, 0xBD, 0x44, 0x8F, 0x9E, 0x52, 0x2F } }, ! 565: { { 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01 }, ! 566: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 567: { 0x4F, 0x64, 0x4C, 0x92, 0xE1, 0x92, 0xDF, 0xED } }, ! 568: { { 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01 }, ! 569: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 570: { 0x1A, 0xFA, 0x9A, 0x66, 0xA6, 0xDF, 0x92, 0xAE } }, ! 571: { { 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01 }, ! 572: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 573: { 0xB3, 0xC1, 0xCC, 0x71, 0x5C, 0xB8, 0x79, 0xD8 } }, ! 574: { { 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01 }, ! 575: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 576: { 0x19, 0xD0, 0x32, 0xE6, 0x4A, 0xB0, 0xBD, 0x8B } }, ! 577: { { 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01 }, ! 578: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 579: { 0x3C, 0xFA, 0xA7, 0xA7, 0xDC, 0x87, 0x20, 0xDC } }, ! 580: { { 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01 }, ! 581: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 582: { 0xB7, 0x26, 0x5F, 0x7F, 0x44, 0x7A, 0xC6, 0xF3 } }, ! 583: { { 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01 }, ! 584: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 585: { 0x9D, 0xB7, 0x3B, 0x3C, 0x0D, 0x16, 0x3F, 0x54 } }, ! 586: { { 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01 }, ! 587: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 588: { 0x81, 0x81, 0xB6, 0x5B, 0xAB, 0xF4, 0xA9, 0x75 } }, ! 589: { { 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01 }, ! 590: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 591: { 0x93, 0xC9, 0xB6, 0x40, 0x42, 0xEA, 0xA2, 0x40 } }, ! 592: { { 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01 }, ! 593: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 594: { 0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92 } }, ! 595: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01 }, ! 596: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 597: { 0x86, 0x38, 0x80, 0x9E, 0x87, 0x87, 0x87, 0xA0 } }, ! 598: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01 }, ! 599: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 600: { 0x41, 0xB9, 0xA7, 0x9A, 0xF7, 0x9A, 0xC2, 0x08 } }, ! 601: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01 }, ! 602: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 603: { 0x7A, 0x9B, 0xE4, 0x2F, 0x20, 0x09, 0xA8, 0x92 } }, ! 604: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01 }, ! 605: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 606: { 0x29, 0x03, 0x8D, 0x56, 0xBA, 0x6D, 0x27, 0x45 } }, ! 607: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01 }, ! 608: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 609: { 0x54, 0x95, 0xC6, 0xAB, 0xF1, 0xE5, 0xDF, 0x51 } }, ! 610: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01 }, ! 611: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 612: { 0xAE, 0x13, 0xDB, 0xD5, 0x61, 0x48, 0x89, 0x33 } }, ! 613: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01 }, ! 614: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 615: { 0x02, 0x4D, 0x1F, 0xFA, 0x89, 0x04, 0xE3, 0x89 } }, ! 616: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01 }, ! 617: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 618: { 0xD1, 0x39, 0x97, 0x12, 0xF9, 0x9B, 0xF0, 0x2E } }, ! 619: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01 }, ! 620: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 621: { 0x14, 0xC1, 0xD7, 0xC1, 0xCF, 0xFE, 0xC7, 0x9E } }, ! 622: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01 }, ! 623: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 624: { 0x1D, 0xE5, 0x27, 0x9D, 0xAE, 0x3B, 0xED, 0x6F } }, ! 625: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01 }, ! 626: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 627: { 0xE9, 0x41, 0xA3, 0x3F, 0x85, 0x50, 0x13, 0x03 } }, ! 628: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01 }, ! 629: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 630: { 0xDA, 0x99, 0xDB, 0xBC, 0x9A, 0x03, 0xF3, 0x79 } }, ! 631: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01 }, ! 632: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 633: { 0xB7, 0xFC, 0x92, 0xF9, 0x1D, 0x8E, 0x92, 0xE9 } }, ! 634: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, ! 635: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 636: { 0xAE, 0x8E, 0x5C, 0xAA, 0x3C, 0xA0, 0x4E, 0x85 } }, ! 637: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80 }, ! 638: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 639: { 0x9C, 0xC6, 0x2D, 0xF4, 0x3B, 0x6E, 0xED, 0x74 } }, ! 640: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40 }, ! 641: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 642: { 0xD8, 0x63, 0xDB, 0xB5, 0xC5, 0x9A, 0x91, 0xA0 } }, ! 643: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20 }, ! 644: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 645: { 0xA1, 0xAB, 0x21, 0x90, 0x54, 0x5B, 0x91, 0xD7 } }, ! 646: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10 }, ! 647: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 648: { 0x08, 0x75, 0x04, 0x1E, 0x64, 0xC5, 0x70, 0xF7 } }, ! 649: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08 }, ! 650: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 651: { 0x5A, 0x59, 0x45, 0x28, 0xBE, 0xBE, 0xF1, 0xCC } }, ! 652: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04 }, ! 653: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 654: { 0xFC, 0xDB, 0x32, 0x91, 0xDE, 0x21, 0xF0, 0xC0 } }, ! 655: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }, ! 656: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 657: { 0x86, 0x9E, 0xFD, 0x7F, 0x9F, 0x26, 0x5A, 0x09 } } ! 658: }; ! 659: ! 660: /* Test of right-shifts in Decryption: Decrypt */ ! 661: ! 662: DES_TEST des56_ecb_vectors_rs[DES56_TEST_COUNT_RS] = { ! 663: { { 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 664: { 0x95, 0xA8, 0xD7, 0x28, 0x13, 0xDA, 0xA9, 0x4D }, ! 665: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 666: { { 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 667: { 0x0E, 0xEC, 0x14, 0x87, 0xDD, 0x8C, 0x26, 0xD5 }, ! 668: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 669: { { 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 670: { 0x7A, 0xD1, 0x6F, 0xFB, 0x79, 0xC4, 0x59, 0x26 }, ! 671: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 672: { { 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 673: { 0xD3, 0x74, 0x62, 0x94, 0xCA, 0x6A, 0x6C, 0xF3 }, ! 674: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 675: { { 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 676: { 0x80, 0x9F, 0x5F, 0x87, 0x3C, 0x1F, 0xD7, 0x61 }, ! 677: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 678: { { 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 679: { 0xC0, 0x2F, 0xAF, 0xFE, 0xC9, 0x89, 0xD1, 0xFC }, ! 680: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 681: { { 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 682: { 0x46, 0x15, 0xAA, 0x1D, 0x33, 0xE7, 0x2F, 0x10 }, ! 683: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 684: { { 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 685: { 0x20, 0x55, 0x12, 0x33, 0x50, 0xC0, 0x08, 0x58 }, ! 686: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 687: { { 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 688: { 0xDF, 0x3B, 0x99, 0xD6, 0x57, 0x73, 0x97, 0xC8 }, ! 689: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 690: { { 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 691: { 0x31, 0xFE, 0x17, 0x36, 0x9B, 0x52, 0x88, 0xC9 }, ! 692: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 693: { { 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 694: { 0xDF, 0xDD, 0x3C, 0xC6, 0x4D, 0xAE, 0x16, 0x42 }, ! 695: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 696: { { 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 697: { 0x17, 0x8C, 0x83, 0xCE, 0x2B, 0x39, 0x9D, 0x94 }, ! 698: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 699: { { 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 700: { 0x50, 0xF6, 0x36, 0x32, 0x4A, 0x9B, 0x7F, 0x80 }, ! 701: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 702: { { 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 703: { 0xA8, 0x46, 0x8E, 0xE3, 0xBC, 0x18, 0xF0, 0x6D }, ! 704: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 705: { { 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 706: { 0xA2, 0xDC, 0x9E, 0x92, 0xFD, 0x3C, 0xDE, 0x92 }, ! 707: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 708: { { 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 709: { 0xCA, 0xC0, 0x9F, 0x79, 0x7D, 0x03, 0x12, 0x87 }, ! 710: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 711: { { 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 712: { 0x90, 0xBA, 0x68, 0x0B, 0x22, 0xAE, 0xB5, 0x25 }, ! 713: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 714: { { 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 715: { 0xCE, 0x7A, 0x24, 0xF3, 0x50, 0xE2, 0x80, 0xB6 }, ! 716: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 717: { { 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 718: { 0x88, 0x2B, 0xFF, 0x0A, 0xA0, 0x1A, 0x0B, 0x87 }, ! 719: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 720: { { 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 721: { 0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xC2 }, ! 722: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 723: { { 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 }, ! 724: { 0xC7, 0x15, 0x16, 0xC2, 0x9C, 0x75, 0xD1, 0x70 }, ! 725: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 726: { { 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01 }, ! 727: { 0x51, 0x99, 0xC2, 0x9A, 0x52, 0xC9, 0xF0, 0x59 }, ! 728: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 729: { { 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01 }, ! 730: { 0xC2, 0x2F, 0x0A, 0x29, 0x4A, 0x71, 0xF2, 0x9F }, ! 731: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 732: { { 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01 }, ! 733: { 0xEE, 0x37, 0x14, 0x83, 0x71, 0x4C, 0x02, 0xEA }, ! 734: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 735: { { 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01 }, ! 736: { 0xA8, 0x1F, 0xBD, 0x44, 0x8F, 0x9E, 0x52, 0x2F }, ! 737: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 738: { { 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01 }, ! 739: { 0x4F, 0x64, 0x4C, 0x92, 0xE1, 0x92, 0xDF, 0xED }, ! 740: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 741: { { 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01 }, ! 742: { 0x1A, 0xFA, 0x9A, 0x66, 0xA6, 0xDF, 0x92, 0xAE }, ! 743: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 744: { { 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01 }, ! 745: { 0xB3, 0xC1, 0xCC, 0x71, 0x5C, 0xB8, 0x79, 0xD8 }, ! 746: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 747: { { 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01 }, ! 748: { 0x19, 0xD0, 0x32, 0xE6, 0x4A, 0xB0, 0xBD, 0x8B }, ! 749: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 750: { { 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01 }, ! 751: { 0x3C, 0xFA, 0xA7, 0xA7, 0xDC, 0x87, 0x20, 0xDC }, ! 752: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 753: { { 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01 }, ! 754: { 0xB7, 0x26, 0x5F, 0x7F, 0x44, 0x7A, 0xC6, 0xF3 }, ! 755: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 756: { { 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01 }, ! 757: { 0x9D, 0xB7, 0x3B, 0x3C, 0x0D, 0x16, 0x3F, 0x54 }, ! 758: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 759: { { 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01 }, ! 760: { 0x81, 0x81, 0xB6, 0x5B, 0xAB, 0xF4, 0xA9, 0x75 }, ! 761: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 762: { { 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01 }, ! 763: { 0x93, 0xC9, 0xB6, 0x40, 0x42, 0xEA, 0xA2, 0x40 }, ! 764: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 765: { { 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01 }, ! 766: { 0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92 }, ! 767: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 768: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01 }, ! 769: { 0x86, 0x38, 0x80, 0x9E, 0x87, 0x87, 0x87, 0xA0 }, ! 770: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 771: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01 }, ! 772: { 0x41, 0xB9, 0xA7, 0x9A, 0xF7, 0x9A, 0xC2, 0x08 }, ! 773: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 774: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01 }, ! 775: { 0x7A, 0x9B, 0xE4, 0x2F, 0x20, 0x09, 0xA8, 0x92 }, ! 776: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 777: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01 }, ! 778: { 0x29, 0x03, 0x8D, 0x56, 0xBA, 0x6D, 0x27, 0x45 }, ! 779: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 780: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01 }, ! 781: { 0x54, 0x95, 0xC6, 0xAB, 0xF1, 0xE5, 0xDF, 0x51 }, ! 782: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 783: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01 }, ! 784: { 0xAE, 0x13, 0xDB, 0xD5, 0x61, 0x48, 0x89, 0x33 }, ! 785: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 786: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01 }, ! 787: { 0x02, 0x4D, 0x1F, 0xFA, 0x89, 0x04, 0xE3, 0x89 }, ! 788: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 789: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01 }, ! 790: { 0xD1, 0x39, 0x97, 0x12, 0xF9, 0x9B, 0xF0, 0x2E }, ! 791: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 792: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01 }, ! 793: { 0x14, 0xC1, 0xD7, 0xC1, 0xCF, 0xFE, 0xC7, 0x9E }, ! 794: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 795: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01 }, ! 796: { 0x1D, 0xE5, 0x27, 0x9D, 0xAE, 0x3B, 0xED, 0x6F }, ! 797: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 798: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01 }, ! 799: { 0xE9, 0x41, 0xA3, 0x3F, 0x85, 0x50, 0x13, 0x03 }, ! 800: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 801: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01 }, ! 802: { 0xDA, 0x99, 0xDB, 0xBC, 0x9A, 0x03, 0xF3, 0x79 }, ! 803: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 804: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01 }, ! 805: { 0xB7, 0xFC, 0x92, 0xF9, 0x1D, 0x8E, 0x92, 0xE9 }, ! 806: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 807: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, ! 808: { 0xAE, 0x8E, 0x5C, 0xAA, 0x3C, 0xA0, 0x4E, 0x85 }, ! 809: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 810: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80 }, ! 811: { 0x9C, 0xC6, 0x2D, 0xF4, 0x3B, 0x6E, 0xED, 0x74 }, ! 812: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 813: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40 }, ! 814: { 0xD8, 0x63, 0xDB, 0xB5, 0xC5, 0x9A, 0x91, 0xA0 }, ! 815: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 816: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20 }, ! 817: { 0xA1, 0xAB, 0x21, 0x90, 0x54, 0x5B, 0x91, 0xD7 }, ! 818: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 819: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10 }, ! 820: { 0x08, 0x75, 0x04, 0x1E, 0x64, 0xC5, 0x70, 0xF7 }, ! 821: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 822: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08 }, ! 823: { 0x5A, 0x59, 0x45, 0x28, 0xBE, 0xBE, 0xF1, 0xCC }, ! 824: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 825: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04 }, ! 826: { 0xFC, 0xDB, 0x32, 0x91, 0xDE, 0x21, 0xF0, 0xC0 }, ! 827: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ! 828: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }, ! 829: { 0x86, 0x9E, 0xFD, 0x7F, 0x9F, 0x26, 0x5A, 0x09 }, ! 830: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } ! 831: }; ! 832: ! 833: /* Data permutation test: Encrypt */ ! 834: ! 835: DES_TEST des56_ecb_vectors_dp[DES56_TEST_COUNT_DP] = { ! 836: { { 0x10, 0x46, 0x91, 0x34, 0x89, 0x98, 0x01, 0x31 }, ! 837: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 838: { 0x88, 0xD5, 0x5E, 0x54, 0xF5, 0x4C, 0x97, 0xB4 } }, ! 839: { { 0x10, 0x07, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20 }, ! 840: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 841: { 0x0C, 0x0C, 0xC0, 0x0C, 0x83, 0xEA, 0x48, 0xFD } }, ! 842: { { 0x10, 0x07, 0x10, 0x34, 0xC8, 0x98, 0x01, 0x20 }, ! 843: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 844: { 0x83, 0xBC, 0x8E, 0xF3, 0xA6, 0x57, 0x01, 0x83 } }, ! 845: { { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20 }, ! 846: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 847: { 0xDF, 0x72, 0x5D, 0xCA, 0xD9, 0x4E, 0xA2, 0xE9 } }, ! 848: { { 0x10, 0x86, 0x91, 0x15, 0x19, 0x19, 0x01, 0x01 }, ! 849: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 850: { 0xE6, 0x52, 0xB5, 0x3B, 0x55, 0x0B, 0xE8, 0xB0 } }, ! 851: { { 0x10, 0x86, 0x91, 0x15, 0x19, 0x58, 0x01, 0x01 }, ! 852: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 853: { 0xAF, 0x52, 0x71, 0x20, 0xC4, 0x85, 0xCB, 0xB0 } }, ! 854: { { 0x51, 0x07, 0xB0, 0x15, 0x19, 0x58, 0x01, 0x01 }, ! 855: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 856: { 0x0F, 0x04, 0xCE, 0x39, 0x3D, 0xB9, 0x26, 0xD5 } }, ! 857: { { 0x10, 0x07, 0xB0, 0x15, 0x19, 0x19, 0x01, 0x01 }, ! 858: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 859: { 0xC9, 0xF0, 0x0F, 0xFC, 0x74, 0x07, 0x90, 0x67 } }, ! 860: { { 0x31, 0x07, 0x91, 0x54, 0x98, 0x08, 0x01, 0x01 }, ! 861: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 862: { 0x7C, 0xFD, 0x82, 0xA5, 0x93, 0x25, 0x2B, 0x4E } }, ! 863: { { 0x31, 0x07, 0x91, 0x94, 0x98, 0x08, 0x01, 0x01 }, ! 864: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 865: { 0xCB, 0x49, 0xA2, 0xF9, 0xE9, 0x13, 0x63, 0xE3 } }, ! 866: { { 0x10, 0x07, 0x91, 0x15, 0xB9, 0x08, 0x01, 0x40 }, ! 867: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 868: { 0x00, 0xB5, 0x88, 0xBE, 0x70, 0xD2, 0x3F, 0x56 } }, ! 869: { { 0x31, 0x07, 0x91, 0x15, 0x98, 0x08, 0x01, 0x40 }, ! 870: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 871: { 0x40, 0x6A, 0x9A, 0x6A, 0xB4, 0x33, 0x99, 0xAE } }, ! 872: { { 0x10, 0x07, 0xD0, 0x15, 0x89, 0x98, 0x01, 0x01 }, ! 873: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 874: { 0x6C, 0xB7, 0x73, 0x61, 0x1D, 0xCA, 0x9A, 0xDA } }, ! 875: { { 0x91, 0x07, 0x91, 0x15, 0x89, 0x98, 0x01, 0x01 }, ! 876: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 877: { 0x67, 0xFD, 0x21, 0xC1, 0x7D, 0xBB, 0x5D, 0x70 } }, ! 878: { { 0x91, 0x07, 0xD0, 0x15, 0x89, 0x19, 0x01, 0x01 }, ! 879: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 880: { 0x95, 0x92, 0xCB, 0x41, 0x10, 0x43, 0x07, 0x87 } }, ! 881: { { 0x10, 0x07, 0xD0, 0x15, 0x98, 0x98, 0x01, 0x20 }, ! 882: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 883: { 0xA6, 0xB7, 0xFF, 0x68, 0xA3, 0x18, 0xDD, 0xD3 } }, ! 884: { { 0x10, 0x07, 0x94, 0x04, 0x98, 0x19, 0x01, 0x01 }, ! 885: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 886: { 0x4D, 0x10, 0x21, 0x96, 0xC9, 0x14, 0xCA, 0x16 } }, ! 887: { { 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x04, 0x01 }, ! 888: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 889: { 0x2D, 0xFA, 0x9F, 0x45, 0x73, 0x59, 0x49, 0x65 } }, ! 890: { { 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x01, 0x01 }, ! 891: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 892: { 0xB4, 0x66, 0x04, 0x81, 0x6C, 0x0E, 0x07, 0x74 } }, ! 893: { { 0x01, 0x07, 0x94, 0x04, 0x91, 0x19, 0x04, 0x01 }, ! 894: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 895: { 0x6E, 0x7E, 0x62, 0x21, 0xA4, 0xF3, 0x4E, 0x87 } }, ! 896: { { 0x19, 0x07, 0x92, 0x10, 0x98, 0x1A, 0x01, 0x01 }, ! 897: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 898: { 0xAA, 0x85, 0xE7, 0x46, 0x43, 0x23, 0x31, 0x99 } }, ! 899: { { 0x10, 0x07, 0x91, 0x19, 0x98, 0x19, 0x08, 0x01 }, ! 900: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 901: { 0x2E, 0x5A, 0x19, 0xDB, 0x4D, 0x19, 0x62, 0xD6 } }, ! 902: { { 0x10, 0x07, 0x91, 0x19, 0x98, 0x1A, 0x08, 0x01 }, ! 903: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 904: { 0x23, 0xA8, 0x66, 0xA8, 0x09, 0xD3, 0x08, 0x94 } }, ! 905: { { 0x10, 0x07, 0x92, 0x10, 0x98, 0x19, 0x01, 0x01 }, ! 906: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 907: { 0xD8, 0x12, 0xD9, 0x61, 0xF0, 0x17, 0xD3, 0x20 } }, ! 908: { { 0x10, 0x07, 0x91, 0x15, 0x98, 0x19, 0x01, 0x0B }, ! 909: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 910: { 0x05, 0x56, 0x05, 0x81, 0x6E, 0x58, 0x60, 0x8F } }, ! 911: { { 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x01 }, ! 912: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 913: { 0xAB, 0xD8, 0x8E, 0x8B, 0x1B, 0x77, 0x16, 0xF1 } }, ! 914: { { 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x02 }, ! 915: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 916: { 0x53, 0x7A, 0xC9, 0x5B, 0xE6, 0x9D, 0xA1, 0xE1 } }, ! 917: { { 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x08 }, ! 918: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 919: { 0xAE, 0xD0, 0xF6, 0xAE, 0x3C, 0x25, 0xCD, 0xD8 } }, ! 920: { { 0x10, 0x02, 0x91, 0x14, 0x98, 0x10, 0x01, 0x04 }, ! 921: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 922: { 0xB3, 0xE3, 0x5A, 0x5E, 0xE5, 0x3E, 0x7B, 0x8D } }, ! 923: { { 0x10, 0x02, 0x91, 0x15, 0x98, 0x19, 0x01, 0x04 }, ! 924: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 925: { 0x61, 0xC7, 0x9C, 0x71, 0x92, 0x1A, 0x2E, 0xF8 } }, ! 926: { { 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x02, 0x01 }, ! 927: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 928: { 0xE2, 0xF5, 0x72, 0x8F, 0x09, 0x95, 0x01, 0x3C } }, ! 929: { { 0x10, 0x02, 0x91, 0x16, 0x98, 0x10, 0x01, 0x01 }, ! 930: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, ! 931: { 0x1A, 0xEA, 0xC3, 0x9A, 0x61, 0xF0, 0xA4, 0x64 } } ! 932: }; ! 933: ! 934: /* S-Box test: Encrypt */ ! 935: ! 936: DES_TEST des56_ecb_vectors_sb[DES56_TEST_COUNT_SB] = { ! 937: { { 0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57 }, ! 938: { 0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42 }, ! 939: { 0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B } }, ! 940: { { 0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E }, ! 941: { 0x5C, 0xD5, 0x4C, 0xA8, 0x3D, 0xEF, 0x57, 0xDA }, ! 942: { 0x7A, 0x38, 0x9D, 0x10, 0x35, 0x4B, 0xD2, 0x71 } }, ! 943: { { 0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86 }, ! 944: { 0x02, 0x48, 0xD4, 0x38, 0x06, 0xF6, 0x71, 0x72 }, ! 945: { 0x86, 0x8E, 0xBB, 0x51, 0xCA, 0xB4, 0x59, 0x9A } }, ! 946: { { 0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E }, ! 947: { 0x51, 0x45, 0x4B, 0x58, 0x2D, 0xDF, 0x44, 0x0A }, ! 948: { 0x71, 0x78, 0x87, 0x6E, 0x01, 0xF1, 0x9B, 0x2A } }, ! 949: { { 0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6 }, ! 950: { 0x42, 0xFD, 0x44, 0x30, 0x59, 0x57, 0x7F, 0xA2 }, ! 951: { 0xAF, 0x37, 0xFB, 0x42, 0x1F, 0x8C, 0x40, 0x95 } }, ! 952: { { 0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE }, ! 953: { 0x05, 0x9B, 0x5E, 0x08, 0x51, 0xCF, 0x14, 0x3A }, ! 954: { 0x86, 0xA5, 0x60, 0xF1, 0x0E, 0xC6, 0xD8, 0x5B } }, ! 955: { { 0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6 }, ! 956: { 0x07, 0x56, 0xD8, 0xE0, 0x77, 0x47, 0x61, 0xD2 }, ! 957: { 0x0C, 0xD3, 0xDA, 0x02, 0x00, 0x21, 0xDC, 0x09 } }, ! 958: { { 0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE }, ! 959: { 0x76, 0x25, 0x14, 0xB8, 0x29, 0xBF, 0x48, 0x6A }, ! 960: { 0xEA, 0x67, 0x6B, 0x2C, 0xB7, 0xDB, 0x2B, 0x7A } }, ! 961: { { 0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16 }, ! 962: { 0x3B, 0xDD, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02 }, ! 963: { 0xDF, 0xD6, 0x4A, 0x81, 0x5C, 0xAF, 0x1A, 0x0F } }, ! 964: { { 0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F }, ! 965: { 0x26, 0x95, 0x5F, 0x68, 0x35, 0xAF, 0x60, 0x9A }, ! 966: { 0x5C, 0x51, 0x3C, 0x9C, 0x48, 0x86, 0xC0, 0x88 } }, ! 967: { { 0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46 }, ! 968: { 0x16, 0x4D, 0x5E, 0x40, 0x4F, 0x27, 0x52, 0x32 }, ! 969: { 0x0A, 0x2A, 0xEE, 0xAE, 0x3F, 0xF4, 0xAB, 0x77 } }, ! 970: { { 0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E }, ! 971: { 0x6B, 0x05, 0x6E, 0x18, 0x75, 0x9F, 0x5C, 0xCA }, ! 972: { 0xEF, 0x1B, 0xF0, 0x3E, 0x5D, 0xFA, 0x57, 0x5A } }, ! 973: { { 0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76 }, ! 974: { 0x00, 0x4B, 0xD6, 0xEF, 0x09, 0x17, 0x60, 0x62 }, ! 975: { 0x88, 0xBF, 0x0D, 0xB6, 0xD7, 0x0D, 0xEE, 0x56 } }, ! 976: { { 0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07 }, ! 977: { 0x48, 0x0D, 0x39, 0x00, 0x6E, 0xE7, 0x62, 0xF2 }, ! 978: { 0xA1, 0xF9, 0x91, 0x55, 0x41, 0x02, 0x0B, 0x56 } }, ! 979: { { 0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F }, ! 980: { 0x43, 0x75, 0x40, 0xC8, 0x69, 0x8F, 0x3C, 0xFA }, ! 981: { 0x6F, 0xBF, 0x1C, 0xAF, 0xCF, 0xFD, 0x05, 0x56 } }, ! 982: { { 0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7 }, ! 983: { 0x07, 0x2D, 0x43, 0xA0, 0x77, 0x07, 0x52, 0x92 }, ! 984: { 0x2F, 0x22, 0xE4, 0x9B, 0xAB, 0x7C, 0xA1, 0xAC } }, ! 985: { { 0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF }, ! 986: { 0x02, 0xFE, 0x55, 0x77, 0x81, 0x17, 0xF1, 0x2A }, ! 987: { 0x5A, 0x6B, 0x61, 0x2C, 0xC2, 0x6C, 0xCE, 0x4A } }, ! 988: { { 0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6 }, ! 989: { 0x1D, 0x9D, 0x5C, 0x50, 0x18, 0xF7, 0x28, 0xC2 }, ! 990: { 0x5F, 0x4C, 0x03, 0x8E, 0xD1, 0x2B, 0x2E, 0x41 } }, ! 991: { { 0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF }, ! 992: { 0x30, 0x55, 0x32, 0x28, 0x6D, 0x6F, 0x29, 0x5A }, ! 993: { 0x63, 0xFA, 0xC0, 0xD0, 0x34, 0xD9, 0xF7, 0x93 } } ! 994: }; ! 995: ! 996: /* Triple DES TECB (EDE) test vectors */ ! 997: ! 998: #define TRIPLEDES_TEST_COUNT 1 ! 999: ! 1000: typedef struct { ! 1001: unsigned char key[24]; ! 1002: unsigned char plaintext[8]; ! 1003: unsigned char ciphertext[8]; ! 1004: } TRIPLEDES_TEST; ! 1005: ! 1006: TRIPLEDES_TEST tripledes_vectors[TRIPLEDES_TEST_COUNT] = { ! 1007: 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, ! 1008: 0x76, 0x54, 0x32, 0x10, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, ! 1009: ! 1010: 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, ! 1011: ! 1012: 0xde, 0x0b, 0x7c, 0x06, 0xae, 0x5e, 0x0e, 0xd5 ! 1013: }; ! 1014: ! 1015: /* CAST-128 Test Vectors from RFC2144 */ ! 1016: ! 1017: #define CAST_TEST_COUNT 1 ! 1018: ! 1019: typedef struct { ! 1020: unsigned char key[16]; ! 1021: unsigned char plaintext[8]; ! 1022: unsigned char ciphertext[8]; ! 1023: } CAST_TEST; ! 1024: ! 1025: ! 1026: CAST_TEST cast_ecb_vectors[CAST_TEST_COUNT] = { ! 1027: "\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A", ! 1028: "\x01\x23\x45\x67\x89\xAB\xCD\xEF", ! 1029: "\x23\x8B\x4F\xE5\x84\x7E\x44\xB2" ! 1030: }; ! 1031: ! 1032: // AES ECB test vectors FIPS-197 ! 1033: ! 1034: #define AES_TEST_COUNT 1 ! 1035: ! 1036: typedef struct { ! 1037: unsigned char key[32]; ! 1038: unsigned char plaintext[16]; ! 1039: unsigned char ciphertext[16]; ! 1040: } AES_TEST; ! 1041: ! 1042: AES_TEST aes_ecb_vectors[AES_TEST_COUNT] = { ! 1043: 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, ! 1044: 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, ! 1045: ! 1046: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff, ! 1047: ! 1048: 0x8e,0xa2,0xb7,0xca,0x51,0x67,0x45,0xbf,0xea,0xfc,0x49,0x90,0x4b,0x49,0x60,0x89 ! 1049: }; ! 1050: ! 1051: // Serpent ECB test vectors ! 1052: ! 1053: #define SERPENT_TEST_COUNT 1 ! 1054: ! 1055: typedef struct { ! 1056: unsigned char key[32]; ! 1057: unsigned char plaintext[16]; ! 1058: unsigned char ciphertext[16]; ! 1059: } SERPENT_TEST; ! 1060: ! 1061: SERPENT_TEST serpent_vectors[SERPENT_TEST_COUNT] = { ! 1062: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, ! 1063: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 1064: ! 1065: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, ! 1066: 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8, 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c ! 1067: }; ! 1068: ! 1069: // Twofish ECB test vectors ! 1070: ! 1071: #define TWOFISH_TEST_COUNT 1 ! 1072: ! 1073: typedef struct { ! 1074: unsigned char key[32]; ! 1075: unsigned char plaintext[16]; ! 1076: unsigned char ciphertext[16]; ! 1077: } TWOFISH_TEST; ! 1078: ! 1079: TWOFISH_TEST twofish_vectors[TWOFISH_TEST_COUNT] = { ! 1080: 0xD4, 0x3B, 0xB7, 0x55, 0x6E, 0xA3, 0x2E, 0x46, 0xF2, 0xA2, 0x82, 0xB7, 0xD4, 0x5B, 0x4E, 0x0D, ! 1081: 0x57, 0xFF, 0x73, 0x9D, 0x4D, 0xC9, 0x2C, 0x1B, 0xD7, 0xFC, 0x01, 0x70, 0x0C, 0xC8, 0x21, 0x6F, ! 1082: ! 1083: 0x90, 0xAF, 0xE9, 0x1B, 0xB2, 0x88, 0x54, 0x4F, 0x2C, 0x32, 0xDC, 0x23, 0x9B, 0x26, 0x35, 0xE6, ! 1084: 0x6C, 0xB4, 0x56, 0x1C, 0x40, 0xBF, 0x0A, 0x97, 0x05, 0x93, 0x1C, 0xB6, 0xD4, 0x08, 0xE7, 0xFA ! 1085: }; ! 1086: ! 1087: /* Test vectors from FIPS 198a, RFC 2104, RFC 2202, and other sources. */ ! 1088: ! 1089: char *hmac_sha1_test_keys[] = ! 1090: { ! 1091: "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3", ! 1092: "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", ! 1093: "Jefe", ! 1094: "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ! 1095: }; ! 1096: ! 1097: char *hmac_sha1_test_data[] = ! 1098: { ! 1099: "Sample #3", ! 1100: "Hi There", ! 1101: "what do ya want for nothing?", ! 1102: "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ! 1103: "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ! 1104: "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ! 1105: }; ! 1106: ! 1107: char *hmac_sha1_test_vectors[] = ! 1108: { ! 1109: "\xbc\xf4\x1e\xab\x8b\xb2\xd8\x02\xf3\xd0\x5c\xaf\x7c\xb0\x92\xec\xf8\xd1\xa3\xaa", ! 1110: "\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1\x46\xbe\x00", ! 1111: "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79", ! 1112: "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3" ! 1113: }; ! 1114: ! 1115: char *hmac_ripemd160_test_keys[] = ! 1116: { ! 1117: "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x01\x23\x45\x67", ! 1118: "\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10\x00\x11\x22\x33", ! 1119: }; ! 1120: ! 1121: char *hmac_ripemd160_test_data[] = ! 1122: { ! 1123: "message digest", ! 1124: "12345678901234567890123456789012345678901234567890123456789012345678901234567890", ! 1125: }; ! 1126: ! 1127: char *hmac_ripemd160_test_vectors[] = ! 1128: { ! 1129: "\xf8\x36\x62\xcc\x8d\x33\x9c\x22\x7e\x60\x0f\xcd\x63\x6c\x57\xd2\x57\x1b\x1c\x34", ! 1130: "\x85\xf1\x64\x70\x3e\x61\xa6\x31\x31\xbe\x7e\x45\x95\x8e\x07\x94\x12\x39\x04\xf9", ! 1131: }; ! 1132: ! 1133: char *hmac_whirlpool_test_key = ! 1134: { ! 1135: "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF\x01\x23\x45\x67\x89\xAB\xCD\xEF\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF\x01\x23\x45\x67\x89\xAB\xCD\xEF\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF" ! 1136: }; ! 1137: ! 1138: char *hmac_whirlpool_test_data = ! 1139: { ! 1140: "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" ! 1141: }; ! 1142: ! 1143: char *hmac_whirlpool_test_vectors = ! 1144: { ! 1145: "\x03\x91\xd2\x80\x00\xb6\x62\xbb\xb8\xe6\x23\x3e\xe8\x6c\xf2\xb2\x84\x74\x4c\x73" ! 1146: "\x8b\x58\x00\xba\x28\x12\xed\x52\x6f\xe3\x15\x3a\xb1\xba\xe7\xe2\x36\xbe\x96\x54" ! 1147: "\x49\x3f\x19\xfa\xce\xa6\x44\x1f\x60\xf5\xf0\x18\x93\x09\x11\xa5\xe5\xce\xd8\xf2" ! 1148: "\x6a\xbf\xa4\x02" ! 1149: }; ! 1150: ! 1151: unsigned char ks_tmp[MAX_EXPANDED_KEY]; ! 1152: ! 1153: void ! 1154: CipherInit2(int cipher, void* key, void* ks, int key_len) ! 1155: { ! 1156: switch (cipher) ! 1157: { ! 1158: case BLOWFISH: ! 1159: BF_set_key (ks, key_len, key); ! 1160: break; ! 1161: ! 1162: case AES: ! 1163: CipherInit(cipher,key,ks); ! 1164: break; ! 1165: ! 1166: case DES56: ! 1167: CipherInit(cipher,key,ks); ! 1168: break; ! 1169: ! 1170: case CAST: ! 1171: CipherInit(cipher,key,ks); ! 1172: break; ! 1173: ! 1174: case SERPENT: ! 1175: CipherInit(cipher,key,ks); ! 1176: break; ! 1177: ! 1178: case TRIPLEDES: ! 1179: CipherInit(cipher,key,ks); ! 1180: break; ! 1181: ! 1182: case TWOFISH: ! 1183: CipherInit(cipher,key,ks); ! 1184: break; ! 1185: } ! 1186: } ! 1187: ! 1188: BOOL Des56TestLoop(void *test_vectors, int nVectorCount, int enc) ! 1189: { ! 1190: char key[32]; ! 1191: __int32 tmp[2]; ! 1192: int i, cipher; ! 1193: ! 1194: cipher = DES56; ! 1195: for (i=0;i<nVectorCount;i++) ! 1196: { ! 1197: memcpy(key, ((DES_TEST*)test_vectors)->key, 8); ! 1198: memcpy(tmp, ((DES_TEST*)test_vectors)->plaintext, 8); ! 1199: ! 1200: memset(ks_tmp,0,sizeof(ks_tmp)); ! 1201: CipherInit2(cipher, key, ks_tmp, 8); ! 1202: ! 1203: if (enc) ! 1204: { ! 1205: EncipherBlock(cipher, tmp, ks_tmp); ! 1206: } ! 1207: else ! 1208: { ! 1209: DecipherBlock(cipher, tmp, ks_tmp); ! 1210: } ! 1211: ! 1212: if (memcmp(((DES_TEST*)test_vectors)->ciphertext, tmp,8)!=0) ! 1213: return FALSE; ! 1214: } ! 1215: ! 1216: return TRUE; ! 1217: } ! 1218: ! 1219: static unsigned char test_ks[MAX_EXPANDED_KEY]; ! 1220: ! 1221: BOOL TestSectorBufEncryption () ! 1222: { ! 1223: unsigned char buf[SECTOR_SIZE], iv[DISK_IV_SIZE]; ! 1224: unsigned int i, ea; ! 1225: char name[64]; ! 1226: unsigned __int32 crc; ! 1227: unsigned char *ks = test_ks; ! 1228: unsigned __int64 secNo = 0x12345678; ! 1229: secNo = (secNo << 32) | 0x90ABCDEF; ! 1230: ! 1231: for (i = 0; i < sizeof (buf); i++) ! 1232: buf[i] = (unsigned char) i; ! 1233: ! 1234: for (i = 0; i < sizeof (iv); i++) ! 1235: iv[i] = (unsigned char) i; ! 1236: ! 1237: // Test all EAs ! 1238: for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea)) ! 1239: { ! 1240: EAGetName (name, ea); ! 1241: ! 1242: // Copy header for decryption and init an encryption algorithm ! 1243: if (EAInit (ea, (unsigned char *)buf, ks) == ERR_CIPHER_INIT_FAILURE) ! 1244: return FALSE; ! 1245: ! 1246: EncryptSectors ((unsigned __int32 *)buf, secNo, 1, ks, iv, ea); ! 1247: crc = crc32 (buf, sizeof (buf)); ! 1248: ! 1249: if (strcmp (name, "AES") == 0 && crc != 0x51d3645b) ! 1250: return FALSE; ! 1251: if (strcmp (name, "Blowfish") == 0 && crc != 0x129edcd8) ! 1252: return FALSE; ! 1253: if (strcmp (name, "CAST5") == 0 && crc != 0x0d88aa74) ! 1254: return FALSE; ! 1255: if (strcmp (name, "Serpent") == 0 && crc != 0xfa02f4a3) ! 1256: return FALSE; ! 1257: if (strcmp (name, "Triple DES") == 0 && crc != 0xeede9b5b) ! 1258: return FALSE; ! 1259: if (strcmp (name, "AES-Blowfish") == 0 && crc != 0xd0af336e) ! 1260: return FALSE; ! 1261: if (strcmp (name, "Serpent-Twofish-AES") == 0 && crc != 0x8f3b1b8a) ! 1262: return FALSE; ! 1263: ! 1264: if (crc == 0x1c613576) ! 1265: return FALSE; ! 1266: ! 1267: DecryptSectors ((unsigned __int32 *)buf, secNo, 1, ks, iv, ea); ! 1268: ! 1269: if (crc32 (buf, sizeof (buf)) != 0x1c613576) ! 1270: return FALSE; ! 1271: ! 1272: EncryptBuffer ((unsigned __int32 *)buf, sizeof (buf), ks, iv, iv, ea); ! 1273: crc = crc32 (buf, sizeof (buf)); ! 1274: ! 1275: if (strcmp (name, "AES") == 0 && crc != 0xdea34fa9) ! 1276: return FALSE; ! 1277: if (strcmp (name, "Blowfish") == 0 && crc != 0xdd2c10ef) ! 1278: return FALSE; ! 1279: if (strcmp (name, "AES-Blowfish") == 0 && crc != 0xd50b63d1) ! 1280: return FALSE; ! 1281: if (strcmp (name, "Serpent-Twofish-AES") == 0 && crc != 0xb10f4616) ! 1282: return FALSE; ! 1283: ! 1284: if (crc == 0x1c613576) ! 1285: return FALSE; ! 1286: ! 1287: DecryptBuffer ((unsigned __int32 *)buf, sizeof (buf), ks, iv, iv, ea); ! 1288: ! 1289: if (crc32 (buf, sizeof (buf)) != 0x1c613576) ! 1290: return FALSE; ! 1291: } ! 1292: return TRUE; ! 1293: } ! 1294: ! 1295: ! 1296: BOOL AutoTestAlgorithms (void) ! 1297: { ! 1298: char key[32]; ! 1299: unsigned char tmp[16]; ! 1300: BOOL bFailed = FALSE; ! 1301: int i; ! 1302: ! 1303: /* Blowfish */ ! 1304: ! 1305: for (i=0;i<BF_TEST_COUNT;i++) ! 1306: { ! 1307: memcpy(key, bf_ecb_vectors[i].key, 8); ! 1308: memcpy(tmp, bf_ecb_vectors[i].plaintext, 8); ! 1309: CipherInit2(BLOWFISH, key, ks_tmp, 8); ! 1310: BF_ecb_encrypt(tmp,tmp,(struct bf_key_st *)ks_tmp,1); ! 1311: if (memcmp(bf_ecb_vectors[i].ciphertext,tmp,8)!=0) ! 1312: break; ! 1313: } ! 1314: ! 1315: if (i==BF_TEST_COUNT) ! 1316: { ! 1317: /* Test the Blowfish code against Bruce Schneiers test vectors (1 & 2) and ! 1318: Mike Morgans test vector (3) */ ! 1319: ! 1320: unsigned char *plain1 = ( unsigned char * ) "BLOWFISH"; ! 1321: unsigned char *key1 = ( unsigned char * ) "abcdefghijklmnopqrstuvwxyz"; ! 1322: unsigned char cipher1[] = { 0x32, 0x4E, 0xD0, 0xFE, 0xF4, 0x13, 0xA2, 0x03 }; ! 1323: unsigned char plain2[] = { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }; ! 1324: unsigned char *key2 = ( unsigned char * ) "Who is John Galt?"; ! 1325: unsigned char cipher2[] = { 0xCC, 0x91, 0x73, 0x2B, 0x80, 0x22, 0xF6, 0x84 }; ! 1326: unsigned char plain3[] = { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }; ! 1327: unsigned char key3[] = { 0x41, 0x79, 0x6E, 0xA0, 0x52, 0x61, 0x6E, 0xE4 }; ! 1328: unsigned char cipher3[] = { 0xE1, 0x13, 0xF4, 0x10, 0x2C, 0xFC, 0xCE, 0x43 }; ! 1329: unsigned char tmp[8]; ! 1330: ! 1331: ! 1332: CipherInit2(BLOWFISH, key1, ks_tmp, 26); ! 1333: BF_ecb_encrypt(plain1,tmp,(struct bf_key_st *)ks_tmp,1); ! 1334: if (memcmp(cipher1,tmp,8)!=0) ! 1335: bFailed = TRUE; ! 1336: ! 1337: CipherInit2(BLOWFISH, key2, ks_tmp, 17); ! 1338: BF_ecb_encrypt(plain2,tmp,(struct bf_key_st *)ks_tmp,1); ! 1339: if (memcmp(cipher2,tmp,8)!=0) ! 1340: bFailed = TRUE; ! 1341: ! 1342: CipherInit2(BLOWFISH, key3, ks_tmp, 8); ! 1343: BF_ecb_encrypt(plain3,tmp,(struct bf_key_st *)ks_tmp,1); ! 1344: if (memcmp(cipher3,tmp,8)!=0) ! 1345: bFailed = TRUE; ! 1346: ! 1347: } else ! 1348: bFailed = TRUE; ! 1349: ! 1350: ! 1351: /* CAST5 */ ! 1352: ! 1353: for (i=0;i<CAST_TEST_COUNT;i++) ! 1354: { ! 1355: int cipher = CAST; ! 1356: memcpy(key, cast_ecb_vectors[i].key, 16); ! 1357: memcpy(tmp, cast_ecb_vectors[i].plaintext, 8); ! 1358: CipherInit2(cipher, key, ks_tmp, 16); ! 1359: EncipherBlock(cipher, tmp, ks_tmp); ! 1360: if (memcmp(cast_ecb_vectors[i].ciphertext, tmp,8)!=0) ! 1361: break; ! 1362: } ! 1363: ! 1364: if (i!=CAST_TEST_COUNT) ! 1365: bFailed = TRUE; ! 1366: ! 1367: ! 1368: /* DES */ ! 1369: ! 1370: if (Des56TestLoop(des56_ecb_vectors_ip, DES56_TEST_COUNT_IP,1)!=TRUE) ! 1371: bFailed = TRUE; ! 1372: if (Des56TestLoop(des56_ecb_vectors_vp, DES56_TEST_COUNT_VP,1)!=TRUE) ! 1373: bFailed = TRUE; ! 1374: if (Des56TestLoop(des56_ecb_vectors_kp, DES56_TEST_COUNT_KP,1)!=TRUE) ! 1375: bFailed = TRUE; ! 1376: if (Des56TestLoop(des56_ecb_vectors_rs, DES56_TEST_COUNT_RS,0)!=TRUE) ! 1377: bFailed = TRUE; ! 1378: if (Des56TestLoop(des56_ecb_vectors_dp, DES56_TEST_COUNT_DP,1)!=TRUE) ! 1379: bFailed = TRUE; ! 1380: if (Des56TestLoop(des56_ecb_vectors_sb, DES56_TEST_COUNT_SB,1)!=TRUE) ! 1381: bFailed = TRUE; ! 1382: ! 1383: ! 1384: /* Triple DES (TECB, EDE) */ ! 1385: ! 1386: for (i = 0; i < TRIPLEDES_TEST_COUNT; i++) ! 1387: { ! 1388: int cipher = TRIPLEDES; ! 1389: memcpy(key, tripledes_vectors[i].key, sizeof(tripledes_vectors->key)); ! 1390: memcpy(tmp, tripledes_vectors[i].plaintext, sizeof(tripledes_vectors->plaintext)); ! 1391: CipherInit(cipher, key, ks_tmp); ! 1392: ! 1393: EncipherBlock(cipher, tmp, ks_tmp); ! 1394: if (memcmp(tripledes_vectors[i].ciphertext, tmp, sizeof(tripledes_vectors->ciphertext)) != 0) ! 1395: break; ! 1396: ! 1397: DecipherBlock(cipher, tmp, ks_tmp); ! 1398: if (memcmp(tripledes_vectors[i].plaintext, tmp, sizeof(tripledes_vectors->plaintext)) != 0) ! 1399: break; ! 1400: } ! 1401: if (i != TRIPLEDES_TEST_COUNT) ! 1402: bFailed = TRUE; ! 1403: ! 1404: ! 1405: /* AES */ ! 1406: ! 1407: for (i = 0; i < AES_TEST_COUNT; i++) ! 1408: { ! 1409: int cipher = AES; ! 1410: memcpy(key, aes_ecb_vectors[i].key, 32); ! 1411: memcpy(tmp, aes_ecb_vectors[i].plaintext, 16); ! 1412: CipherInit(cipher, key, ks_tmp); ! 1413: ! 1414: EncipherBlock(cipher, tmp, ks_tmp); ! 1415: if (memcmp(aes_ecb_vectors[i].ciphertext, tmp, 16) != 0) ! 1416: break; ! 1417: ! 1418: DecipherBlock(cipher, tmp, ks_tmp); ! 1419: if (memcmp(aes_ecb_vectors[i].plaintext, tmp, 16) != 0) ! 1420: break; ! 1421: } ! 1422: if (i != AES_TEST_COUNT) ! 1423: bFailed = TRUE; ! 1424: ! 1425: ! 1426: /* Serpent */ ! 1427: ! 1428: for (i = 0; i < SERPENT_TEST_COUNT; i++) ! 1429: { ! 1430: int cipher = SERPENT; ! 1431: memcpy(key, serpent_vectors[i].key, 32); ! 1432: memcpy(tmp, serpent_vectors[i].plaintext, 16); ! 1433: CipherInit(cipher, key, ks_tmp); ! 1434: ! 1435: EncipherBlock(cipher, tmp, ks_tmp); ! 1436: if (memcmp(serpent_vectors[i].ciphertext, tmp, 16) != 0) ! 1437: break; ! 1438: ! 1439: DecipherBlock(cipher, tmp, ks_tmp); ! 1440: if (memcmp(serpent_vectors[i].plaintext, tmp, 16) != 0) ! 1441: break; ! 1442: } ! 1443: if (i != SERPENT_TEST_COUNT) ! 1444: bFailed = TRUE; ! 1445: ! 1446: ! 1447: /* Twofish */ ! 1448: ! 1449: for (i = 0; i < TWOFISH_TEST_COUNT; i++) ! 1450: { ! 1451: int cipher = TWOFISH; ! 1452: memcpy(key, twofish_vectors[i].key, 32); ! 1453: memcpy(tmp, twofish_vectors[i].plaintext, 16); ! 1454: CipherInit(cipher, key, ks_tmp); ! 1455: ! 1456: EncipherBlock(cipher, tmp, ks_tmp); ! 1457: if (memcmp(twofish_vectors[i].ciphertext, tmp, 16) != 0) ! 1458: break; ! 1459: ! 1460: DecipherBlock(cipher, tmp, ks_tmp); ! 1461: if (memcmp(twofish_vectors[i].plaintext, tmp, 16) != 0) ! 1462: break; ! 1463: } ! 1464: if (i != TWOFISH_TEST_COUNT) ! 1465: bFailed = TRUE; ! 1466: ! 1467: ! 1468: /* PKCS #5 and HMACs */ ! 1469: ! 1470: #ifndef LINUX_DRIVER ! 1471: if (!test_pkcs5 ()) ! 1472: bFailed = TRUE; ! 1473: #endif ! 1474: ! 1475: /* CRC-32 */ ! 1476: ! 1477: if (!crc32_selftests ()) ! 1478: bFailed = TRUE; ! 1479: ! 1480: /* Sector and buffer algorithms */ ! 1481: if (!TestSectorBufEncryption ()) ! 1482: bFailed = TRUE; ! 1483: ! 1484: return !bFailed; ! 1485: } ! 1486: ! 1487: #ifndef LINUX_DRIVER ! 1488: BOOL test_hmac_sha1 () ! 1489: { ! 1490: int i; ! 1491: ! 1492: for (i = 0; i < 3; i++) ! 1493: { ! 1494: char digest[SHA1_DIGESTSIZE]; ! 1495: hmac_sha1 (hmac_sha1_test_keys[i], strlen (hmac_sha1_test_keys[i]), hmac_sha1_test_data[i], strlen (hmac_sha1_test_data[i]), digest, SHA1_DIGESTSIZE); ! 1496: if (memcmp (digest, hmac_sha1_test_vectors[i], SHA1_DIGESTSIZE) != 0) ! 1497: return FALSE; ! 1498: } ! 1499: ! 1500: return TRUE; ! 1501: } ! 1502: ! 1503: BOOL test_hmac_ripemd160 () ! 1504: { ! 1505: unsigned int i; ! 1506: for (i = 0; i < sizeof (hmac_ripemd160_test_data) / sizeof(char *); i++) ! 1507: { ! 1508: char digest[RIPEMD160_DIGESTSIZE]; ! 1509: hmac_ripemd160 (hmac_ripemd160_test_keys[i], RIPEMD160_DIGESTSIZE, hmac_ripemd160_test_data[i], strlen (hmac_ripemd160_test_data[i]), digest); ! 1510: if (memcmp (digest, hmac_ripemd160_test_vectors[i], RIPEMD160_DIGESTSIZE) != 0) ! 1511: return FALSE; ! 1512: } ! 1513: ! 1514: return TRUE; ! 1515: } ! 1516: ! 1517: BOOL test_hmac_whirlpool () ! 1518: { ! 1519: unsigned char digest[WHIRLPOOL_DIGESTSIZE]; ! 1520: ! 1521: hmac_whirlpool (hmac_whirlpool_test_key, 64, hmac_whirlpool_test_data, strlen (hmac_whirlpool_test_data), digest, WHIRLPOOL_DIGESTSIZE); ! 1522: if (memcmp (digest, hmac_whirlpool_test_vectors, WHIRLPOOL_DIGESTSIZE) != 0) ! 1523: return FALSE; ! 1524: ! 1525: return TRUE; ! 1526: } ! 1527: ! 1528: BOOL test_pkcs5 () ! 1529: { ! 1530: char dk[4]; ! 1531: ! 1532: /* HMAC-SHA-1 tests */ ! 1533: if (test_hmac_sha1() == FALSE) ! 1534: return FALSE; ! 1535: ! 1536: /* HMAC-RIPEMD-160 tests */ ! 1537: if (test_hmac_ripemd160() == FALSE) ! 1538: return FALSE; ! 1539: ! 1540: /* HMAC-Whirlpool tests */ ! 1541: if (test_hmac_whirlpool() == FALSE) ! 1542: return FALSE; ! 1543: ! 1544: /* PKCS-5 test with HMAC-SHA-1 used as the PRF */ ! 1545: derive_key_sha1 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); ! 1546: if (memcmp (dk, "\x5c\x75\xce\xf0", 4) != 0) ! 1547: return FALSE; ! 1548: ! 1549: /* PKCS-5 test with HMAC-RIPEMD-160 used as the PRF */ ! 1550: derive_key_ripemd160 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); ! 1551: if (memcmp (dk, "\x7a\x3d\x7c\x03", 4) != 0) ! 1552: return FALSE; ! 1553: ! 1554: /* PKCS-5 test with HMAC-Whirlpool used as the PRF */ ! 1555: derive_key_whirlpool ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); ! 1556: if (memcmp (dk, "\x50\x7c\x36\x6f", 4) != 0) ! 1557: return FALSE; ! 1558: ! 1559: return TRUE; ! 1560: } ! 1561: #endif /* LINUX_DRIVER */ ! 1562:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.