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