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