|
|
1.1.1.5 root 1: /* 1.1.1.7 ! root 2: Legal Notice: Some portions of the source code contained in this file were ! 3: derived from the source code of Encryption for the Masses 2.02a, which is ! 4: Copyright (c) 1998-2000 Paul Le Roux and which is governed by the 'License ! 5: Agreement for Encryption for the Masses'. Modifications and additions to ! 6: the original source code (contained in this file) and all other portions of ! 7: this file are Copyright (c) 2003-2008 TrueCrypt Foundation and are governed ! 8: by the TrueCrypt License 2.4 the full text of which is contained in the ! 9: file License.txt included in TrueCrypt binary and source code distribution 1.1.1.5 root 10: packages. */ 1.1 root 11: 12: #include "Tcdefs.h" 13: #include "Crc.h" 14: #include "Crypto.h" 1.1.1.5 root 15: #include "Common/Endian.h" 1.1 root 16: #include "Tests.h" 1.1.1.7 ! root 17: #include "Xts.h" 1.1 root 18: 19: #ifdef LINUX_DRIVER 20: #include <linux/string.h> 21: #else 1.1.1.5 root 22: #include <string.h> 1.1 root 23: #include "Pkcs5.h" 24: #endif 25: 1.1.1.7 ! root 26: typedef struct { ! 27: unsigned __int8 key1[32]; ! 28: unsigned __int8 key2[32]; ! 29: unsigned __int8 dataUnitNo[8]; ! 30: unsigned int blockNo; ! 31: unsigned __int8 plaintext[ENCRYPTION_DATA_UNIT_SIZE]; ! 32: unsigned __int8 ciphertext[ENCRYPTION_DATA_UNIT_SIZE]; ! 33: } XTS_TEST; ! 34: ! 35: #define XTS_TEST_COUNT 5 ! 36: ! 37: XTS_TEST XTS_vectors[XTS_TEST_COUNT] = { ! 38: /* XTS-AES-256 */ ! 39: { ! 40: // IEEE 1619 - Vector 10 ! 41: ! 42: { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 0x62, 0x49, 0x77, 0x57, 0x24, 0x70, 0x93, 0x69, 0x99, 0x59, 0x57, 0x49, 0x66, 0x96, 0x76, 0x27 }, ! 43: { 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, 0x45, 0x92 }, ! 44: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff }, ! 45: 0, ! 46: { ! 47: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 48: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 49: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 50: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 51: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 52: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 53: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 54: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, ! 55: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 56: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 57: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 58: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 59: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 60: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 61: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 62: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff ! 63: }, ! 64: { ! 65: 0x1c, 0x3b, 0x3a, 0x10, 0x2f, 0x77, 0x03, 0x86, 0xe4, 0x83, 0x6c, 0x99, 0xe3, 0x70, 0xcf, 0x9b, 0xea, 0x00, 0x80, 0x3f, 0x5e, 0x48, 0x23, 0x57, 0xa4, 0xae, 0x12, 0xd4, 0x14, 0xa3, 0xe6, 0x3b, ! 66: 0x5d, 0x31, 0xe2, 0x76, 0xf8, 0xfe, 0x4a, 0x8d, 0x66, 0xb3, 0x17, 0xf9, 0xac, 0x68, 0x3f, 0x44, 0x68, 0x0a, 0x86, 0xac, 0x35, 0xad, 0xfc, 0x33, 0x45, 0xbe, 0xfe, 0xcb, 0x4b, 0xb1, 0x88, 0xfd, ! 67: 0x57, 0x76, 0x92, 0x6c, 0x49, 0xa3, 0x09, 0x5e, 0xb1, 0x08, 0xfd, 0x10, 0x98, 0xba, 0xec, 0x70, 0xaa, 0xa6, 0x69, 0x99, 0xa7, 0x2a, 0x82, 0xf2, 0x7d, 0x84, 0x8b, 0x21, 0xd4, 0xa7, 0x41, 0xb0, ! 68: 0xc5, 0xcd, 0x4d, 0x5f, 0xff, 0x9d, 0xac, 0x89, 0xae, 0xba, 0x12, 0x29, 0x61, 0xd0, 0x3a, 0x75, 0x71, 0x23, 0xe9, 0x87, 0x0f, 0x8a, 0xcf, 0x10, 0x00, 0x02, 0x08, 0x87, 0x89, 0x14, 0x29, 0xca, ! 69: 0x2a, 0x3e, 0x7a, 0x7d, 0x7d, 0xf7, 0xb1, 0x03, 0x55, 0x16, 0x5c, 0x8b, 0x9a, 0x6d, 0x0a, 0x7d, 0xe8, 0xb0, 0x62, 0xc4, 0x50, 0x0d, 0xc4, 0xcd, 0x12, 0x0c, 0x0f, 0x74, 0x18, 0xda, 0xe3, 0xd0, ! 70: 0xb5, 0x78, 0x1c, 0x34, 0x80, 0x3f, 0xa7, 0x54, 0x21, 0xc7, 0x90, 0xdf, 0xe1, 0xde, 0x18, 0x34, 0xf2, 0x80, 0xd7, 0x66, 0x7b, 0x32, 0x7f, 0x6c, 0x8c, 0xd7, 0x55, 0x7e, 0x12, 0xac, 0x3a, 0x0f, ! 71: 0x93, 0xec, 0x05, 0xc5, 0x2e, 0x04, 0x93, 0xef, 0x31, 0xa1, 0x2d, 0x3d, 0x92, 0x60, 0xf7, 0x9a, 0x28, 0x9d, 0x6a, 0x37, 0x9b, 0xc7, 0x0c, 0x50, 0x84, 0x14, 0x73, 0xd1, 0xa8, 0xcc, 0x81, 0xec, ! 72: 0x58, 0x3e, 0x96, 0x45, 0xe0, 0x7b, 0x8d, 0x96, 0x70, 0x65, 0x5b, 0xa5, 0xbb, 0xcf, 0xec, 0xc6, 0xdc, 0x39, 0x66, 0x38, 0x0a, 0xd8, 0xfe, 0xcb, 0x17, 0xb6, 0xba, 0x02, 0x46, 0x9a, 0x02, 0x0a, ! 73: 0x84, 0xe1, 0x8e, 0x8f, 0x84, 0x25, 0x20, 0x70, 0xc1, 0x3e, 0x9f, 0x1f, 0x28, 0x9b, 0xe5, 0x4f, 0xbc, 0x48, 0x14, 0x57, 0x77, 0x8f, 0x61, 0x60, 0x15, 0xe1, 0x32, 0x7a, 0x02, 0xb1, 0x40, 0xf1, ! 74: 0x50, 0x5e, 0xb3, 0x09, 0x32, 0x6d, 0x68, 0x37, 0x8f, 0x83, 0x74, 0x59, 0x5c, 0x84, 0x9d, 0x84, 0xf4, 0xc3, 0x33, 0xec, 0x44, 0x23, 0x88, 0x51, 0x43, 0xcb, 0x47, 0xbd, 0x71, 0xc5, 0xed, 0xae, ! 75: 0x9b, 0xe6, 0x9a, 0x2f, 0xfe, 0xce, 0xb1, 0xbe, 0xc9, 0xde, 0x24, 0x4f, 0xbe, 0x15, 0x99, 0x2b, 0x11, 0xb7, 0x7c, 0x04, 0x0f, 0x12, 0xbd, 0x8f, 0x6a, 0x97, 0x5a, 0x44, 0xa0, 0xf9, 0x0c, 0x29, ! 76: 0xa9, 0xab, 0xc3, 0xd4, 0xd8, 0x93, 0x92, 0x72, 0x84, 0xc5, 0x87, 0x54, 0xcc, 0xe2, 0x94, 0x52, 0x9f, 0x86, 0x14, 0xdc, 0xd2, 0xab, 0xa9, 0x91, 0x92, 0x5f, 0xed, 0xc4, 0xae, 0x74, 0xff, 0xac, ! 77: 0x6e, 0x33, 0x3b, 0x93, 0xeb, 0x4a, 0xff, 0x04, 0x79, 0xda, 0x9a, 0x41, 0x0e, 0x44, 0x50, 0xe0, 0xdd, 0x7a, 0xe4, 0xc6, 0xe2, 0x91, 0x09, 0x00, 0x57, 0x5d, 0xa4, 0x01, 0xfc, 0x07, 0x05, 0x9f, ! 78: 0x64, 0x5e, 0x8b, 0x7e, 0x9b, 0xfd, 0xef, 0x33, 0x94, 0x30, 0x54, 0xff, 0x84, 0x01, 0x14, 0x93, 0xc2, 0x7b, 0x34, 0x29, 0xea, 0xed, 0xb4, 0xed, 0x53, 0x76, 0x44, 0x1a, 0x77, 0xed, 0x43, 0x85, ! 79: 0x1a, 0xd7, 0x7f, 0x16, 0xf5, 0x41, 0xdf, 0xd2, 0x69, 0xd5, 0x0d, 0x6a, 0x5f, 0x14, 0xfb, 0x0a, 0xab, 0x1c, 0xbb, 0x4c, 0x15, 0x50, 0xbe, 0x97, 0xf7, 0xab, 0x40, 0x66, 0x19, 0x3c, 0x4c, 0xaa, ! 80: 0x77, 0x3d, 0xad, 0x38, 0x01, 0x4b, 0xd2, 0x09, 0x2f, 0xa7, 0x55, 0xc8, 0x24, 0xbb, 0x5e, 0x54, 0xc4, 0xf3, 0x6f, 0xfd, 0xa9, 0xfc, 0xea, 0x70, 0xb9, 0xc6, 0xe6, 0x93, 0xe1, 0x48, 0xc1, 0x51 ! 81: } ! 82: }, ! 83: { ! 84: // IEEE 1619 - Vector 11 ! 85: ! 86: { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 0x62, 0x49, 0x77, 0x57, 0x24, 0x70, 0x93, 0x69, 0x99, 0x59, 0x57, 0x49, 0x66, 0x96, 0x76, 0x27 }, ! 87: { 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, 0x45, 0x92 }, ! 88: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff }, ! 89: 0, ! 90: { ! 91: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 92: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 93: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 94: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 95: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 96: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 97: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 98: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, ! 99: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 100: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 101: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 102: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 103: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 104: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 105: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 106: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff ! 107: }, ! 108: { ! 109: 0x77, 0xa3, 0x12, 0x51, 0x61, 0x8a, 0x15, 0xe6, 0xb9, 0x2d, 0x1d, 0x66, 0xdf, 0xfe, 0x7b, 0x50, 0xb5, 0x0b, 0xad, 0x55, 0x23, 0x05, 0xba, 0x02, 0x17, 0xa6, 0x10, 0x68, 0x8e, 0xff, 0x7e, 0x11, ! 110: 0xe1, 0xd0, 0x22, 0x54, 0x38, 0xe0, 0x93, 0x24, 0x2d, 0x6d, 0xb2, 0x74, 0xfd, 0xe8, 0x01, 0xd4, 0xca, 0xe0, 0x6f, 0x20, 0x92, 0xc7, 0x28, 0xb2, 0x47, 0x85, 0x59, 0xdf, 0x58, 0xe8, 0x37, 0xc2, ! 111: 0x46, 0x9e, 0xe4, 0xa4, 0xfa, 0x79, 0x4e, 0x4b, 0xbc, 0x7f, 0x39, 0xbc, 0x02, 0x6e, 0x3c, 0xb7, 0x2c, 0x33, 0xb0, 0x88, 0x8f, 0x25, 0xb4, 0xac, 0xf5, 0x6a, 0x2a, 0x98, 0x04, 0xf1, 0xce, 0x6d, ! 112: 0x3d, 0x6e, 0x1d, 0xc6, 0xca, 0x18, 0x1d, 0x4b, 0x54, 0x61, 0x79, 0xd5, 0x55, 0x44, 0xaa, 0x77, 0x60, 0xc4, 0x0d, 0x06, 0x74, 0x15, 0x39, 0xc7, 0xe3, 0xcd, 0x9d, 0x2f, 0x66, 0x50, 0xb2, 0x01, ! 113: 0x3f, 0xd0, 0xee, 0xb8, 0xc2, 0xb8, 0xe3, 0xd8, 0xd2, 0x40, 0xcc, 0xae, 0x2d, 0x4c, 0x98, 0x32, 0x0a, 0x74, 0x42, 0xe1, 0xc8, 0xd7, 0x5a, 0x42, 0xd6, 0xe6, 0xcf, 0xa4, 0xc2, 0xec, 0xa1, 0x79, ! 114: 0x8d, 0x15, 0x8c, 0x7a, 0xec, 0xdf, 0x82, 0x49, 0x0f, 0x24, 0xbb, 0x9b, 0x38, 0xe1, 0x08, 0xbc, 0xda, 0x12, 0xc3, 0xfa, 0xf9, 0xa2, 0x11, 0x41, 0xc3, 0x61, 0x3b, 0x58, 0x36, 0x7f, 0x92, 0x2a, ! 115: 0xaa, 0x26, 0xcd, 0x22, 0xf2, 0x3d, 0x70, 0x8d, 0xae, 0x69, 0x9a, 0xd7, 0xcb, 0x40, 0xa8, 0xad, 0x0b, 0x6e, 0x27, 0x84, 0x97, 0x3d, 0xcb, 0x60, 0x56, 0x84, 0xc0, 0x8b, 0x8d, 0x69, 0x98, 0xc6, ! 116: 0x9a, 0xac, 0x04, 0x99, 0x21, 0x87, 0x1e, 0xbb, 0x65, 0x30, 0x1a, 0x46, 0x19, 0xca, 0x80, 0xec, 0xb4, 0x85, 0xa3, 0x1d, 0x74, 0x42, 0x23, 0xce, 0x8d, 0xdc, 0x23, 0x94, 0x82, 0x8d, 0x6a, 0x80, ! 117: 0x47, 0x0c, 0x09, 0x2f, 0x5b, 0xa4, 0x13, 0xc3, 0x37, 0x8f, 0xa6, 0x05, 0x42, 0x55, 0xc6, 0xf9, 0xdf, 0x44, 0x95, 0x86, 0x2b, 0xbb, 0x32, 0x87, 0x68, 0x1f, 0x93, 0x1b, 0x68, 0x7c, 0x88, 0x8a, ! 118: 0xbf, 0x84, 0x4d, 0xfc, 0x8f, 0xc2, 0x83, 0x31, 0xe5, 0x79, 0x92, 0x8c, 0xd1, 0x2b, 0xd2, 0x39, 0x0a, 0xe1, 0x23, 0xcf, 0x03, 0x81, 0x8d, 0x14, 0xde, 0xdd, 0xe5, 0xc0, 0xc2, 0x4c, 0x8a, 0xb0, ! 119: 0x18, 0xbf, 0xca, 0x75, 0xca, 0x09, 0x6f, 0x2d, 0x53, 0x1f, 0x3d, 0x16, 0x19, 0xe7, 0x85, 0xf1, 0xad, 0xa4, 0x37, 0xca, 0xb9, 0x2e, 0x98, 0x05, 0x58, 0xb3, 0xdc, 0xe1, 0x47, 0x4a, 0xfb, 0x75, ! 120: 0xbf, 0xed, 0xbf, 0x8f, 0xf5, 0x4c, 0xb2, 0x61, 0x8e, 0x02, 0x44, 0xc9, 0xac, 0x0d, 0x3c, 0x66, 0xfb, 0x51, 0x59, 0x8c, 0xd2, 0xdb, 0x11, 0xf9, 0xbe, 0x39, 0x79, 0x1a, 0xbe, 0x44, 0x7c, 0x63, ! 121: 0x09, 0x4f, 0x7c, 0x45, 0x3b, 0x7f, 0xf8, 0x7c, 0xb5, 0xbb, 0x36, 0xb7, 0xc7, 0x9e, 0xfb, 0x08, 0x72, 0xd1, 0x70, 0x58, 0xb8, 0x3b, 0x15, 0xab, 0x08, 0x66, 0xad, 0x8a, 0x58, 0x65, 0x6c, 0x5a, ! 122: 0x7e, 0x20, 0xdb, 0xdf, 0x30, 0x8b, 0x24, 0x61, 0xd9, 0x7c, 0x0e, 0xc0, 0x02, 0x4a, 0x27, 0x15, 0x05, 0x52, 0x49, 0xcf, 0x3b, 0x47, 0x8d, 0xdd, 0x47, 0x40, 0xde, 0x65, 0x4f, 0x75, 0xca, 0x68, ! 123: 0x6e, 0x0d, 0x73, 0x45, 0xc6, 0x9e, 0xd5, 0x0c, 0xdc, 0x2a, 0x8b, 0x33, 0x2b, 0x1f, 0x88, 0x24, 0x10, 0x8a, 0xc9, 0x37, 0xeb, 0x05, 0x05, 0x85, 0x60, 0x8e, 0xe7, 0x34, 0x09, 0x7f, 0xc0, 0x90, ! 124: 0x54, 0xfb, 0xff, 0x89, 0xee, 0xae, 0xea, 0x79, 0x1f, 0x4a, 0x7a, 0xb1, 0xf9, 0x86, 0x82, 0x94, 0xa4, 0xf9, 0xe2, 0x7b, 0x42, 0xaf, 0x81, 0x00, 0xcb, 0x9d, 0x59, 0xce, 0xf9, 0x64, 0x58, 0x03 ! 125: } ! 126: }, ! 127: { ! 128: // IEEE 1619 - Vector 12 ! 129: ! 130: { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 0x62, 0x49, 0x77, 0x57, 0x24, 0x70, 0x93, 0x69, 0x99, 0x59, 0x57, 0x49, 0x66, 0x96, 0x76, 0x27 }, ! 131: { 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, 0x45, 0x92 }, ! 132: { 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff }, ! 133: 0, ! 134: { ! 135: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 136: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 137: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 138: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 139: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 140: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 141: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 142: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, ! 143: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 144: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 145: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 146: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 147: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 148: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 149: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 150: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff ! 151: }, ! 152: { ! 153: 0xe3, 0x87, 0xaa, 0xa5, 0x8b, 0xa4, 0x83, 0xaf, 0xa7, 0xe8, 0xeb, 0x46, 0x97, 0x78, 0x31, 0x7e, 0xcf, 0x4c, 0xf5, 0x73, 0xaa, 0x9d, 0x4e, 0xac, 0x23, 0xf2, 0xcd, 0xf9, 0x14, 0xe4, 0xe2, 0x00, ! 154: 0xa8, 0xb4, 0x90, 0xe4, 0x2e, 0xe6, 0x46, 0x80, 0x2d, 0xc6, 0xee, 0x2b, 0x47, 0x1b, 0x27, 0x81, 0x95, 0xd6, 0x09, 0x18, 0xec, 0xec, 0xb4, 0x4b, 0xf7, 0x99, 0x66, 0xf8, 0x3f, 0xab, 0xa0, 0x49, ! 155: 0x92, 0x98, 0xeb, 0xc6, 0x99, 0xc0, 0xc8, 0x63, 0x47, 0x15, 0xa3, 0x20, 0xbb, 0x4f, 0x07, 0x5d, 0x62, 0x2e, 0x74, 0xc8, 0xc9, 0x32, 0x00, 0x4f, 0x25, 0xb4, 0x1e, 0x36, 0x10, 0x25, 0xb5, 0xa8, ! 156: 0x78, 0x15, 0x39, 0x1f, 0x61, 0x08, 0xfc, 0x4a, 0xfa, 0x6a, 0x05, 0xd9, 0x30, 0x3c, 0x6b, 0xa6, 0x8a, 0x12, 0x8a, 0x55, 0x70, 0x5d, 0x41, 0x59, 0x85, 0x83, 0x2f, 0xde, 0xaa, 0xe6, 0xc8, 0xe1, ! 157: 0x91, 0x10, 0xe8, 0x4d, 0x1b, 0x1f, 0x19, 0x9a, 0x26, 0x92, 0x11, 0x9e, 0xdc, 0x96, 0x13, 0x26, 0x58, 0xf0, 0x9d, 0xa7, 0xc6, 0x23, 0xef, 0xce, 0xc7, 0x12, 0x53, 0x7a, 0x3d, 0x94, 0xc0, 0xbf, ! 158: 0x5d, 0x7e, 0x35, 0x2e, 0xc9, 0x4a, 0xe5, 0x79, 0x7f, 0xdb, 0x37, 0x7d, 0xc1, 0x55, 0x11, 0x50, 0x72, 0x1a, 0xdf, 0x15, 0xbd, 0x26, 0xa8, 0xef, 0xc2, 0xfc, 0xaa, 0xd5, 0x68, 0x81, 0xfa, 0x9e, ! 159: 0x62, 0x46, 0x2c, 0x28, 0xf3, 0x0a, 0xe1, 0xce, 0xac, 0xa9, 0x3c, 0x34, 0x5c, 0xf2, 0x43, 0xb7, 0x3f, 0x54, 0x2e, 0x20, 0x74, 0xa7, 0x05, 0xbd, 0x26, 0x43, 0xbb, 0x9f, 0x7c, 0xc7, 0x9b, 0xb6, ! 160: 0xe7, 0x09, 0x1e, 0xa6, 0xe2, 0x32, 0xdf, 0x0f, 0x9a, 0xd0, 0xd6, 0xcf, 0x50, 0x23, 0x27, 0x87, 0x6d, 0x82, 0x20, 0x7a, 0xbf, 0x21, 0x15, 0xcd, 0xac, 0xf6, 0xd5, 0xa4, 0x8f, 0x6c, 0x18, 0x79, ! 161: 0xa6, 0x5b, 0x11, 0x5f, 0x0f, 0x8b, 0x3c, 0xb3, 0xc5, 0x9d, 0x15, 0xdd, 0x8c, 0x76, 0x9b, 0xc0, 0x14, 0x79, 0x5a, 0x18, 0x37, 0xf3, 0x90, 0x1b, 0x58, 0x45, 0xeb, 0x49, 0x1a, 0xdf, 0xef, 0xe0, ! 162: 0x97, 0xb1, 0xfa, 0x30, 0xa1, 0x2f, 0xc1, 0xf6, 0x5b, 0xa2, 0x29, 0x05, 0x03, 0x15, 0x39, 0x97, 0x1a, 0x10, 0xf2, 0xf3, 0x6c, 0x32, 0x1b, 0xb5, 0x13, 0x31, 0xcd, 0xef, 0xb3, 0x9e, 0x39, 0x64, ! 163: 0xc7, 0xef, 0x07, 0x99, 0x94, 0xf5, 0xb6, 0x9b, 0x2e, 0xdd, 0x83, 0xa7, 0x1e, 0xf5, 0x49, 0x97, 0x1e, 0xe9, 0x3f, 0x44, 0xea, 0xc3, 0x93, 0x8f, 0xcd, 0xd6, 0x1d, 0x01, 0xfa, 0x71, 0x79, 0x9d, ! 164: 0xa3, 0xa8, 0x09, 0x1c, 0x4c, 0x48, 0xaa, 0x9e, 0xd2, 0x63, 0xff, 0x07, 0x49, 0xdf, 0x95, 0xd4, 0x4f, 0xef, 0x6a, 0x0b, 0xb5, 0x78, 0xec, 0x69, 0x45, 0x6a, 0xa5, 0x40, 0x8a, 0xe3, 0x2c, 0x7a, ! 165: 0xf0, 0x8a, 0xd7, 0xba, 0x89, 0x21, 0x28, 0x7e, 0x3b, 0xbe, 0xe3, 0x1b, 0x76, 0x7b, 0xe0, 0x6a, 0x0e, 0x70, 0x5c, 0x86, 0x4a, 0x76, 0x91, 0x37, 0xdf, 0x28, 0x29, 0x22, 0x83, 0xea, 0x81, 0xa2, ! 166: 0x48, 0x02, 0x41, 0xb4, 0x4d, 0x99, 0x21, 0xcd, 0xbe, 0xc1, 0xbc, 0x28, 0xdc, 0x1f, 0xda, 0x11, 0x4b, 0xd8, 0xe5, 0x21, 0x7a, 0xc9, 0xd8, 0xeb, 0xaf, 0xa7, 0x20, 0xe9, 0xda, 0x4f, 0x9a, 0xce, ! 167: 0x23, 0x1c, 0xc9, 0x49, 0xe5, 0xb9, 0x6f, 0xe7, 0x6f, 0xfc, 0x21, 0x06, 0x3f, 0xdd, 0xc8, 0x3a, 0x6b, 0x86, 0x79, 0xc0, 0x0d, 0x35, 0xe0, 0x95, 0x76, 0xa8, 0x75, 0x30, 0x5b, 0xed, 0x5f, 0x36, ! 168: 0xed, 0x24, 0x2c, 0x89, 0x00, 0xdd, 0x1f, 0xa9, 0x65, 0xbc, 0x95, 0x0d, 0xfc, 0xe0, 0x9b, 0x13, 0x22, 0x63, 0xa1, 0xee, 0xf5, 0x2d, 0xd6, 0x88, 0x8c, 0x30, 0x9f, 0x5a, 0x7d, 0x71, 0x28, 0x26 ! 169: } ! 170: }, ! 171: { ! 172: // IEEE 1619 - Vector 13 ! 173: ! 174: { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 0x62, 0x49, 0x77, 0x57, 0x24, 0x70, 0x93, 0x69, 0x99, 0x59, 0x57, 0x49, 0x66, 0x96, 0x76, 0x27 }, ! 175: { 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, 0x45, 0x92 }, ! 176: { 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff }, ! 177: 0, ! 178: { ! 179: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 180: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 181: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 182: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 183: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 184: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 185: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 186: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, ! 187: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 188: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 189: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 190: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 191: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 192: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 193: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 194: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff ! 195: }, ! 196: { ! 197: 0xbf, 0x53, 0xd2, 0xda, 0xde, 0x78, 0xe8, 0x22, 0xa4, 0xd9, 0x49, 0xa9, 0xbc, 0x67, 0x66, 0xb0, 0x1b, 0x06, 0xa8, 0xef, 0x70, 0xd2, 0x67, 0x48, 0xc6, 0xa7, 0xfc, 0x36, 0xd8, 0x0a, 0xe4, 0xc5, ! 198: 0x52, 0x0f, 0x7c, 0x4a, 0xb0, 0xac, 0x85, 0x44, 0x42, 0x4f, 0xa4, 0x05, 0x16, 0x2f, 0xef, 0x5a, 0x6b, 0x7f, 0x22, 0x94, 0x98, 0x06, 0x36, 0x18, 0xd3, 0x9f, 0x00, 0x03, 0xcb, 0x5f, 0xb8, 0xd1, ! 199: 0xc8, 0x6b, 0x64, 0x34, 0x97, 0xda, 0x1f, 0xf9, 0x45, 0xc8, 0xd3, 0xbe, 0xde, 0xca, 0x4f, 0x47, 0x97, 0x02, 0xa7, 0xa7, 0x35, 0xf0, 0x43, 0xdd, 0xb1, 0xd6, 0xaa, 0xad, 0xe3, 0xc4, 0xa0, 0xac, ! 200: 0x7c, 0xa7, 0xf3, 0xfa, 0x52, 0x79, 0xbe, 0xf5, 0x6f, 0x82, 0xcd, 0x7a, 0x2f, 0x38, 0x67, 0x2e, 0x82, 0x48, 0x14, 0xe1, 0x07, 0x00, 0x30, 0x0a, 0x05, 0x5e, 0x16, 0x30, 0xb8, 0xf1, 0xcb, 0x0e, ! 201: 0x91, 0x9f, 0x5e, 0x94, 0x20, 0x10, 0xa4, 0x16, 0xe2, 0xbf, 0x48, 0xcb, 0x46, 0x99, 0x3d, 0x3c, 0xb6, 0xa5, 0x1c, 0x19, 0xba, 0xcf, 0x86, 0x47, 0x85, 0xa0, 0x0b, 0xc2, 0xec, 0xff, 0x15, 0xd3, ! 202: 0x50, 0x87, 0x5b, 0x24, 0x6e, 0xd5, 0x3e, 0x68, 0xbe, 0x6f, 0x55, 0xbd, 0x7e, 0x05, 0xcf, 0xc2, 0xb2, 0xed, 0x64, 0x32, 0x19, 0x8a, 0x64, 0x44, 0xb6, 0xd8, 0xc2, 0x47, 0xfa, 0xb9, 0x41, 0xf5, ! 203: 0x69, 0x76, 0x8b, 0x5c, 0x42, 0x93, 0x66, 0xf1, 0xd3, 0xf0, 0x0f, 0x03, 0x45, 0xb9, 0x61, 0x23, 0xd5, 0x62, 0x04, 0xc0, 0x1c, 0x63, 0xb2, 0x2c, 0xe7, 0x8b, 0xaf, 0x11, 0x6e, 0x52, 0x5e, 0xd9, ! 204: 0x0f, 0xde, 0xa3, 0x9f, 0xa4, 0x69, 0x49, 0x4d, 0x38, 0x66, 0xc3, 0x1e, 0x05, 0xf2, 0x95, 0xff, 0x21, 0xfe, 0xa8, 0xd4, 0xe6, 0xe1, 0x3d, 0x67, 0xe4, 0x7c, 0xe7, 0x22, 0xe9, 0x69, 0x8a, 0x1c, ! 205: 0x10, 0x48, 0xd6, 0x8e, 0xbc, 0xde, 0x76, 0xb8, 0x6f, 0xcf, 0x97, 0x6e, 0xab, 0x8a, 0xa9, 0x79, 0x02, 0x68, 0xb7, 0x06, 0x8e, 0x01, 0x7a, 0x8b, 0x9b, 0x74, 0x94, 0x09, 0x51, 0x4f, 0x10, 0x53, ! 206: 0x02, 0x7f, 0xd1, 0x6c, 0x37, 0x86, 0xea, 0x1b, 0xac, 0x5f, 0x15, 0xcb, 0x79, 0x71, 0x1e, 0xe2, 0xab, 0xe8, 0x2f, 0x5c, 0xf8, 0xb1, 0x3a, 0xe7, 0x30, 0x30, 0xef, 0x5b, 0x9e, 0x44, 0x57, 0xe7, ! 207: 0x5d, 0x13, 0x04, 0xf9, 0x88, 0xd6, 0x2d, 0xd6, 0xfc, 0x4b, 0x94, 0xed, 0x38, 0xba, 0x83, 0x1d, 0xa4, 0xb7, 0x63, 0x49, 0x71, 0xb6, 0xcd, 0x8e, 0xc3, 0x25, 0xd9, 0xc6, 0x1c, 0x00, 0xf1, 0xdf, ! 208: 0x73, 0x62, 0x7e, 0xd3, 0x74, 0x5a, 0x5e, 0x84, 0x89, 0xf3, 0xa9, 0x5c, 0x69, 0x63, 0x9c, 0x32, 0xcd, 0x6e, 0x1d, 0x53, 0x7a, 0x85, 0xf7, 0x5c, 0xc8, 0x44, 0x72, 0x6e, 0x8a, 0x72, 0xfc, 0x00, ! 209: 0x77, 0xad, 0x22, 0x00, 0x0f, 0x1d, 0x50, 0x78, 0xf6, 0xb8, 0x66, 0x31, 0x8c, 0x66, 0x8f, 0x1a, 0xd0, 0x3d, 0x5a, 0x5f, 0xce, 0xd5, 0x21, 0x9f, 0x2e, 0xab, 0xbd, 0x0a, 0xa5, 0xc0, 0xf4, 0x60, ! 210: 0xd1, 0x83, 0xf0, 0x44, 0x04, 0xa0, 0xd6, 0xf4, 0x69, 0x55, 0x8e, 0x81, 0xfa, 0xb2, 0x4a, 0x16, 0x79, 0x05, 0xab, 0x4c, 0x78, 0x78, 0x50, 0x2a, 0xd3, 0xe3, 0x8f, 0xdb, 0xe6, 0x2a, 0x41, 0x55, ! 211: 0x6c, 0xec, 0x37, 0x32, 0x57, 0x59, 0x53, 0x3c, 0xe8, 0xf2, 0x5f, 0x36, 0x7c, 0x87, 0xbb, 0x55, 0x78, 0xd6, 0x67, 0xae, 0x93, 0xf9, 0xe2, 0xfd, 0x99, 0xbc, 0xbc, 0x5f, 0x2f, 0xbb, 0xa8, 0x8c, ! 212: 0xf6, 0x51, 0x61, 0x39, 0x42, 0x0f, 0xcf, 0xf3, 0xb7, 0x36, 0x1d, 0x86, 0x32, 0x2c, 0x4b, 0xd8, 0x4c, 0x82, 0xf3, 0x35, 0xab, 0xb1, 0x52, 0xc4, 0xa9, 0x34, 0x11, 0x37, 0x3a, 0xaa, 0x82, 0x20 ! 213: } ! 214: }, ! 215: { ! 216: // IEEE 1619 - Vector 14 ! 217: ! 218: /* This vector must always be the last one in XTS_vectors[] because TestSectorBufEncryption() relies on it. */ ! 219: ! 220: { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 0x62, 0x49, 0x77, 0x57, 0x24, 0x70, 0x93, 0x69, 0x99, 0x59, 0x57, 0x49, 0x66, 0x96, 0x76, 0x27 }, ! 221: { 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, 0x45, 0x92 }, ! 222: { 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff }, ! 223: 0, ! 224: { ! 225: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 226: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 227: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 228: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 229: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 230: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 231: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 232: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, ! 233: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, ! 234: 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 235: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, ! 236: 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, ! 237: 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ! 238: 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ! 239: 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ! 240: 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff ! 241: }, ! 242: { ! 243: 0x64, 0x49, 0x7e, 0x5a, 0x83, 0x1e, 0x4a, 0x93, 0x2c, 0x09, 0xbe, 0x3e, 0x53, 0x93, 0x37, 0x6d, 0xaa, 0x59, 0x95, 0x48, 0xb8, 0x16, 0x03, 0x1d, 0x22, 0x4b, 0xbf, 0x50, 0xa8, 0x18, 0xed, 0x23, ! 244: 0x50, 0xea, 0xe7, 0xe9, 0x60, 0x87, 0xc8, 0xa0, 0xdb, 0x51, 0xad, 0x29, 0x0b, 0xd0, 0x0c, 0x1a, 0xc1, 0x62, 0x08, 0x57, 0x63, 0x5b, 0xf2, 0x46, 0xc1, 0x76, 0xab, 0x46, 0x3b, 0xe3, 0x0b, 0x80, ! 245: 0x8d, 0xa5, 0x48, 0x08, 0x1a, 0xc8, 0x47, 0xb1, 0x58, 0xe1, 0x26, 0x4b, 0xe2, 0x5b, 0xb0, 0x91, 0x0b, 0xbc, 0x92, 0x64, 0x71, 0x08, 0x08, 0x94, 0x15, 0xd4, 0x5f, 0xab, 0x1b, 0x3d, 0x26, 0x04, ! 246: 0xe8, 0xa8, 0xef, 0xf1, 0xae, 0x40, 0x20, 0xcf, 0xa3, 0x99, 0x36, 0xb6, 0x68, 0x27, 0xb2, 0x3f, 0x37, 0x1b, 0x92, 0x20, 0x0b, 0xe9, 0x02, 0x51, 0xe6, 0xd7, 0x3c, 0x5f, 0x86, 0xde, 0x5f, 0xd4, ! 247: 0xa9, 0x50, 0x78, 0x19, 0x33, 0xd7, 0x9a, 0x28, 0x27, 0x2b, 0x78, 0x2a, 0x2e, 0xc3, 0x13, 0xef, 0xdf, 0xcc, 0x06, 0x28, 0xf4, 0x3d, 0x74, 0x4c, 0x2d, 0xc2, 0xff, 0x3d, 0xcb, 0x66, 0x99, 0x9b, ! 248: 0x50, 0xc7, 0xca, 0x89, 0x5b, 0x0c, 0x64, 0x79, 0x1e, 0xea, 0xa5, 0xf2, 0x94, 0x99, 0xfb, 0x1c, 0x02, 0x6f, 0x84, 0xce, 0x5b, 0x5c, 0x72, 0xba, 0x10, 0x83, 0xcd, 0xdb, 0x5c, 0xe4, 0x54, 0x34, ! 249: 0x63, 0x16, 0x65, 0xc3, 0x33, 0xb6, 0x0b, 0x11, 0x59, 0x3f, 0xb2, 0x53, 0xc5, 0x17, 0x9a, 0x2c, 0x8d, 0xb8, 0x13, 0x78, 0x2a, 0x00, 0x48, 0x56, 0xa1, 0x65, 0x30, 0x11, 0xe9, 0x3f, 0xb6, 0xd8, ! 250: 0x76, 0xc1, 0x83, 0x66, 0xdd, 0x86, 0x83, 0xf5, 0x34, 0x12, 0xc0, 0xc1, 0x80, 0xf9, 0xc8, 0x48, 0x59, 0x2d, 0x59, 0x3f, 0x86, 0x09, 0xca, 0x73, 0x63, 0x17, 0xd3, 0x56, 0xe1, 0x3e, 0x2b, 0xff, ! 251: 0x3a, 0x9f, 0x59, 0xcd, 0x9a, 0xeb, 0x19, 0xcd, 0x48, 0x25, 0x93, 0xd8, 0xc4, 0x61, 0x28, 0xbb, 0x32, 0x42, 0x3b, 0x37, 0xa9, 0xad, 0xfb, 0x48, 0x2b, 0x99, 0x45, 0x3f, 0xbe, 0x25, 0xa4, 0x1b, ! 252: 0xf6, 0xfe, 0xb4, 0xaa, 0x0b, 0xef, 0x5e, 0xd2, 0x4b, 0xf7, 0x3c, 0x76, 0x29, 0x78, 0x02, 0x54, 0x82, 0xc1, 0x31, 0x15, 0xe4, 0x01, 0x5a, 0xac, 0x99, 0x2e, 0x56, 0x13, 0xa3, 0xb5, 0xc2, 0xf6, ! 253: 0x85, 0xb8, 0x47, 0x95, 0xcb, 0x6e, 0x9b, 0x26, 0x56, 0xd8, 0xc8, 0x81, 0x57, 0xe5, 0x2c, 0x42, 0xf9, 0x78, 0xd8, 0x63, 0x4c, 0x43, 0xd0, 0x6f, 0xea, 0x92, 0x8f, 0x28, 0x22, 0xe4, 0x65, 0xaa, ! 254: 0x65, 0x76, 0xe9, 0xbf, 0x41, 0x93, 0x84, 0x50, 0x6c, 0xc3, 0xce, 0x3c, 0x54, 0xac, 0x1a, 0x6f, 0x67, 0xdc, 0x66, 0xf3, 0xb3, 0x01, 0x91, 0xe6, 0x98, 0x38, 0x0b, 0xc9, 0x99, 0xb0, 0x5a, 0xbc, ! 255: 0xe1, 0x9d, 0xc0, 0xc6, 0xdc, 0xc2, 0xdd, 0x00, 0x1e, 0xc5, 0x35, 0xba, 0x18, 0xde, 0xb2, 0xdf, 0x1a, 0x10, 0x10, 0x23, 0x10, 0x83, 0x18, 0xc7, 0x5d, 0xc9, 0x86, 0x11, 0xa0, 0x9d, 0xc4, 0x8a, ! 256: 0x0a, 0xcd, 0xec, 0x67, 0x6f, 0xab, 0xdf, 0x22, 0x2f, 0x07, 0xe0, 0x26, 0xf0, 0x59, 0xb6, 0x72, 0xb5, 0x6e, 0x5c, 0xbc, 0x8e, 0x1d, 0x21, 0xbb, 0xd8, 0x67, 0xdd, 0x92, 0x72, 0x12, 0x05, 0x46, ! 257: 0x81, 0xd7, 0x0e, 0xa7, 0x37, 0x13, 0x4c, 0xdf, 0xce, 0x93, 0xb6, 0xf8, 0x2a, 0xe2, 0x24, 0x23, 0x27, 0x4e, 0x58, 0xa0, 0x82, 0x1c, 0xc5, 0x50, 0x2e, 0x2d, 0x0a, 0xb4, 0x58, 0x5e, 0x94, 0xde, ! 258: 0x69, 0x75, 0xbe, 0x5e, 0x0b, 0x4e, 0xfc, 0xe5, 0x1c, 0xd3, 0xe7, 0x0c, 0x25, 0xa1, 0xfb, 0xbb, 0xd6, 0x09, 0xd2, 0x73, 0xad, 0x5b, 0x0d, 0x59, 0x63, 0x1c, 0x53, 0x1f, 0x6a, 0x0a, 0x57, 0xb9 ! 259: } ! 260: } }; // XTS_TEST XTS_vectors[] ! 261: ! 262: ! 263: BOOL XTSAesTest (PCRYPTO_INFO ci) ! 264: { ! 265: unsigned __int8 p[ENCRYPTION_DATA_UNIT_SIZE]; ! 266: UINT64_STRUCT dataUnitNo; ! 267: int i; ! 268: ! 269: for (i = 0; i < XTS_TEST_COUNT; i++) ! 270: { ! 271: ci->ea = EAGetByName ("AES"); ! 272: if (ci->ea == 0) ! 273: return FALSE; ! 274: ! 275: ci->mode = XTS; ! 276: ! 277: if (EAInit (ci->ea, XTS_vectors[i].key1, ci->ks) != ERR_SUCCESS) ! 278: return FALSE; ! 279: ! 280: memcpy (&ci->k2, XTS_vectors[i].key2, sizeof (XTS_vectors[i].key2)); ! 281: ! 282: if (!EAInitMode (ci)) ! 283: return FALSE; ! 284: ! 285: memcpy (p, XTS_vectors[i].plaintext, sizeof (p)); ! 286: ! 287: dataUnitNo.Value = BE64 (*((unsigned __int64 *) XTS_vectors[i].dataUnitNo)); ! 288: ! 289: EncryptBufferXTS (p, sizeof (p), &dataUnitNo, XTS_vectors[i].blockNo, (unsigned char *) (ci->ks), (unsigned char *) ci->ks2, AES); ! 290: ! 291: if (memcmp (XTS_vectors[i].ciphertext, p, sizeof (p)) != 0) ! 292: return FALSE; ! 293: } ! 294: ! 295: return TRUE; ! 296: } ! 297: 1.1.1.6 root 298: /* Blowfish Test Vectors (deprecated/legacy) */ 1.1 root 299: 300: /* Blowfish test vectors from www.counterpane.com/blowfish.html */ 301: 302: #define BF_TEST_COUNT 34 303: 304: typedef struct { 305: unsigned char key[8]; 306: unsigned char plaintext[8]; 307: unsigned char ciphertext[8]; 308: } BF_TEST; 309: 310: BF_TEST bf_ecb_vectors[BF_TEST_COUNT] = { 311: "\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00","\x4E\xF9\x97\x45\x61\x98\xDD\x78", 312: "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x51\x86\x6F\xD5\xB8\x5E\xCB\x8A", 313: "\x30\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x01","\x7D\x85\x6F\x9A\x61\x30\x63\xF2", 314: "\x11\x11\x11\x11\x11\x11\x11\x11","\x11\x11\x11\x11\x11\x11\x11\x11","\x24\x66\xDD\x87\x8B\x96\x3C\x9D", 315: "\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x11\x11\x11\x11\x11\x11\x11\x11","\x61\xF9\xC3\x80\x22\x81\xB0\x96", 316: "\x11\x11\x11\x11\x11\x11\x11\x11","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x7D\x0C\xC6\x30\xAF\xDA\x1E\xC7", 317: "\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00","\x4E\xF9\x97\x45\x61\x98\xDD\x78", 318: "\xFE\xDC\xBA\x98\x76\x54\x32\x10","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x0A\xCE\xAB\x0F\xC6\xA0\xA2\x8D", 319: "\x7C\xA1\x10\x45\x4A\x1A\x6E\x57","\x01\xA1\xD6\xD0\x39\x77\x67\x42","\x59\xC6\x82\x45\xEB\x05\x28\x2B", 320: "\x01\x31\xD9\x61\x9D\xC1\x37\x6E","\x5C\xD5\x4C\xA8\x3D\xEF\x57\xDA","\xB1\xB8\xCC\x0B\x25\x0F\x09\xA0", 321: "\x07\xA1\x13\x3E\x4A\x0B\x26\x86","\x02\x48\xD4\x38\x06\xF6\x71\x72","\x17\x30\xE5\x77\x8B\xEA\x1D\xA4", 322: "\x38\x49\x67\x4C\x26\x02\x31\x9E","\x51\x45\x4B\x58\x2D\xDF\x44\x0A","\xA2\x5E\x78\x56\xCF\x26\x51\xEB", 323: "\x04\xB9\x15\xBA\x43\xFE\xB5\xB6","\x42\xFD\x44\x30\x59\x57\x7F\xA2","\x35\x38\x82\xB1\x09\xCE\x8F\x1A", 324: "\x01\x13\xB9\x70\xFD\x34\xF2\xCE","\x05\x9B\x5E\x08\x51\xCF\x14\x3A","\x48\xF4\xD0\x88\x4C\x37\x99\x18", 325: "\x01\x70\xF1\x75\x46\x8F\xB5\xE6","\x07\x56\xD8\xE0\x77\x47\x61\xD2","\x43\x21\x93\xB7\x89\x51\xFC\x98", 326: "\x43\x29\x7F\xAD\x38\xE3\x73\xFE","\x76\x25\x14\xB8\x29\xBF\x48\x6A","\x13\xF0\x41\x54\xD6\x9D\x1A\xE5", 327: "\x07\xA7\x13\x70\x45\xDA\x2A\x16","\x3B\xDD\x11\x90\x49\x37\x28\x02","\x2E\xED\xDA\x93\xFF\xD3\x9C\x79", 328: "\x04\x68\x91\x04\xC2\xFD\x3B\x2F","\x26\x95\x5F\x68\x35\xAF\x60\x9A","\xD8\x87\xE0\x39\x3C\x2D\xA6\xE3", 329: "\x37\xD0\x6B\xB5\x16\xCB\x75\x46","\x16\x4D\x5E\x40\x4F\x27\x52\x32","\x5F\x99\xD0\x4F\x5B\x16\x39\x69", 330: "\x1F\x08\x26\x0D\x1A\xC2\x46\x5E","\x6B\x05\x6E\x18\x75\x9F\x5C\xCA","\x4A\x05\x7A\x3B\x24\xD3\x97\x7B", 331: "\x58\x40\x23\x64\x1A\xBA\x61\x76","\x00\x4B\xD6\xEF\x09\x17\x60\x62","\x45\x20\x31\xC1\xE4\xFA\xDA\x8E", 332: "\x02\x58\x16\x16\x46\x29\xB0\x07","\x48\x0D\x39\x00\x6E\xE7\x62\xF2","\x75\x55\xAE\x39\xF5\x9B\x87\xBD", 333: "\x49\x79\x3E\xBC\x79\xB3\x25\x8F","\x43\x75\x40\xC8\x69\x8F\x3C\xFA","\x53\xC5\x5F\x9C\xB4\x9F\xC0\x19", 334: "\x4F\xB0\x5E\x15\x15\xAB\x73\xA7","\x07\x2D\x43\xA0\x77\x07\x52\x92","\x7A\x8E\x7B\xFA\x93\x7E\x89\xA3", 335: "\x49\xE9\x5D\x6D\x4C\xA2\x29\xBF","\x02\xFE\x55\x77\x81\x17\xF1\x2A","\xCF\x9C\x5D\x7A\x49\x86\xAD\xB5", 336: "\x01\x83\x10\xDC\x40\x9B\x26\xD6","\x1D\x9D\x5C\x50\x18\xF7\x28\xC2","\xD1\xAB\xB2\x90\x65\x8B\xC7\x78", 337: "\x1C\x58\x7F\x1C\x13\x92\x4F\xEF","\x30\x55\x32\x28\x6D\x6F\x29\x5A","\x55\xCB\x37\x74\xD1\x3E\xF2\x01", 338: "\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xFA\x34\xEC\x48\x47\xB2\x68\xB2", 339: "\x1F\x1F\x1F\x1F\x0E\x0E\x0E\x0E","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xA7\x90\x79\x51\x08\xEA\x3C\xAE", 340: "\xE0\xFE\xE0\xFE\xF1\xFE\xF1\xFE","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xC3\x9E\x07\x2D\x9F\xAC\x63\x1D", 341: "\x00\x00\x00\x00\x00\x00\x00\x00","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x01\x49\x33\xE0\xCD\xAF\xF6\xE4", 342: "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x00\x00\x00\x00\x00\x00\x00\x00","\xF2\x1E\x9A\x77\xB7\x1C\x49\xBC", 343: "\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x00\x00\x00\x00\x00\x00\x00\x00","\x24\x59\x46\x88\x57\x54\x36\x9A", 344: "\xFE\xDC\xBA\x98\x76\x54\x32\x10","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x6B\x5C\x5A\x9C\x5D\x9E\x0A\x5A" 345: }; 346: 347: 1.1.1.6 root 348: /* DES Test Vectors (deprecated/legacy) */ 1.1 root 349: 350: /* DES test vectors, derived from "Validating the Correctness of Hardware 351: Implementations of the NBS Data Encryption Standard", NBS Special 352: Publication 500-20, 1980 */ 353: 354: /* The data structure for the ( key, plaintext, ciphertext ) triplets */ 355: 356: typedef struct { 357: unsigned char key[8]; 358: unsigned char plaintext[8]; 359: unsigned char ciphertext[8]; 360: } DES_TEST; 361: 362: 363: #define DES56_TEST_COUNT_IP 64 364: #define DES56_TEST_COUNT_VP 64 365: #define DES56_TEST_COUNT_KP 56 366: #define DES56_TEST_COUNT_RS 56 367: #define DES56_TEST_COUNT_DP 32 368: #define DES56_TEST_COUNT_SB 19 369: 370: DES_TEST des56_ecb_vectors_ip[DES56_TEST_COUNT_IP] = { 371: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 372: { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 }, 373: { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 374: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 375: { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 }, 376: { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 377: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 378: { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA }, 379: { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 380: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 381: { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F }, 382: { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 383: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 384: { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 }, 385: { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 386: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 387: { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF }, 388: { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 389: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 390: { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F }, 391: { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 392: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 393: { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 }, 394: { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 395: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 396: { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A }, 397: { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 398: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 399: { 0x42, 0x42, 0x50, 0xB3, 0x7C, 0x3D, 0xD9, 0x51 }, 400: { 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 401: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 402: { 0xB8, 0x06, 0x1B, 0x7E, 0xCD, 0x9A, 0x21, 0xE5 }, 403: { 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 404: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 405: { 0xF1, 0x5D, 0x0F, 0x28, 0x6B, 0x65, 0xBD, 0x28 }, 406: { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 407: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 408: { 0xAD, 0xD0, 0xCC, 0x8D, 0x6E, 0x5D, 0xEB, 0xA1 }, 409: { 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 410: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 411: { 0xE6, 0xD5, 0xF8, 0x27, 0x52, 0xAD, 0x63, 0xD1 }, 412: { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 413: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 414: { 0xEC, 0xBF, 0xE3, 0xBD, 0x3F, 0x59, 0x1A, 0x5E }, 415: { 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 416: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 417: { 0xF3, 0x56, 0x83, 0x43, 0x79, 0xD1, 0x65, 0xCD }, 418: { 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 419: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 420: { 0x2B, 0x9F, 0x98, 0x2F, 0x20, 0x03, 0x7F, 0xA9 }, 421: { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 422: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 423: { 0x88, 0x9D, 0xE0, 0x68, 0xA1, 0x6F, 0x0B, 0xE6 }, 424: { 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 425: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 426: { 0xE1, 0x9E, 0x27, 0x5D, 0x84, 0x6A, 0x12, 0x98 }, 427: { 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 428: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 429: { 0x32, 0x9A, 0x8E, 0xD5, 0x23, 0xD7, 0x1A, 0xEC }, 430: { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 431: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 432: { 0xE7, 0xFC, 0xE2, 0x25, 0x57, 0xD2, 0x3C, 0x97 }, 433: { 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 434: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 435: { 0x12, 0xA9, 0xF5, 0x81, 0x7F, 0xF2, 0xD6, 0x5D }, 436: { 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 437: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 438: { 0xA4, 0x84, 0xC3, 0xAD, 0x38, 0xDC, 0x9C, 0x19 }, 439: { 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 440: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 441: { 0xFB, 0xE0, 0x0A, 0x8A, 0x1E, 0xF8, 0xAD, 0x72 }, 442: { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 443: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 444: { 0x75, 0x0D, 0x07, 0x94, 0x07, 0x52, 0x13, 0x63 }, 445: { 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 } }, 446: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 447: { 0x64, 0xFE, 0xED, 0x9C, 0x72, 0x4C, 0x2F, 0xAF }, 448: { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 } }, 449: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 450: { 0xF0, 0x2B, 0x26, 0x3B, 0x32, 0x8E, 0x2B, 0x60 }, 451: { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 } }, 452: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 453: { 0x9D, 0x64, 0x55, 0x5A, 0x9A, 0x10, 0xB8, 0x52 }, 454: { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 } }, 455: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 456: { 0xD1, 0x06, 0xFF, 0x0B, 0xED, 0x52, 0x55, 0xD7 }, 457: { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 } }, 458: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 459: { 0xE1, 0x65, 0x2C, 0x6B, 0x13, 0x8C, 0x64, 0xA5 }, 460: { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 } }, 461: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 462: { 0xE4, 0x28, 0x58, 0x11, 0x86, 0xEC, 0x8F, 0x46 }, 463: { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 } }, 464: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 465: { 0xAE, 0xB5, 0xF5, 0xED, 0xE2, 0x2D, 0x1A, 0x36 }, 466: { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 } }, 467: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 468: { 0xE9, 0x43, 0xD7, 0x56, 0x8A, 0xEC, 0x0C, 0x5C }, 469: { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 } }, 470: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 471: { 0xDF, 0x98, 0xC8, 0x27, 0x6F, 0x54, 0xB0, 0x4B }, 472: { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 } }, 473: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 474: { 0xB1, 0x60, 0xE4, 0x68, 0x0F, 0x6C, 0x69, 0x6F }, 475: { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 } }, 476: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 477: { 0xFA, 0x07, 0x52, 0xB0, 0x7D, 0x9C, 0x4A, 0xB8 }, 478: { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 } }, 479: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 480: { 0xCA, 0x3A, 0x2B, 0x03, 0x6D, 0xBC, 0x85, 0x02 }, 481: { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 } }, 482: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 483: { 0x5E, 0x09, 0x05, 0x51, 0x7B, 0xB5, 0x9B, 0xCF }, 484: { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 } }, 485: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 486: { 0x81, 0x4E, 0xEB, 0x3B, 0x91, 0xD9, 0x07, 0x26 }, 487: { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 } }, 488: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 489: { 0x4D, 0x49, 0xDB, 0x15, 0x32, 0x91, 0x9C, 0x9F }, 490: { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 } }, 491: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 492: { 0x25, 0xEB, 0x5F, 0xC3, 0xF8, 0xCF, 0x06, 0x21 }, 493: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 } }, 494: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 495: { 0xAB, 0x6A, 0x20, 0xC0, 0x62, 0x0D, 0x1C, 0x6F }, 496: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00 } }, 497: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 498: { 0x79, 0xE9, 0x0D, 0xBC, 0x98, 0xF9, 0x2C, 0xCA }, 499: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 } }, 500: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 501: { 0x86, 0x6E, 0xCE, 0xDD, 0x80, 0x72, 0xBB, 0x0E }, 502: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 } }, 503: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 504: { 0x8B, 0x54, 0x53, 0x6F, 0x2F, 0x3E, 0x64, 0xA8 }, 505: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 } }, 506: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 507: { 0xEA, 0x51, 0xD3, 0x97, 0x55, 0x95, 0xB8, 0x6B }, 508: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00 } }, 509: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 510: { 0xCA, 0xFF, 0xC6, 0xAC, 0x45, 0x42, 0xDE, 0x31 }, 511: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 } }, 512: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 513: { 0x8D, 0xD4, 0x5A, 0x2D, 0xDF, 0x90, 0x79, 0x6C }, 514: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 } }, 515: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 516: { 0x10, 0x29, 0xD5, 0x5E, 0x88, 0x0E, 0xC2, 0xD0 }, 517: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 } }, 518: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 519: { 0x5D, 0x86, 0xCB, 0x23, 0x63, 0x9D, 0xBE, 0xA9 }, 520: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00 } }, 521: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 522: { 0x1D, 0x1C, 0xA8, 0x53, 0xAE, 0x7C, 0x0C, 0x5F }, 523: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 } }, 524: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 525: { 0xCE, 0x33, 0x23, 0x29, 0x24, 0x8F, 0x32, 0x28 }, 526: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 } }, 527: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 528: { 0x84, 0x05, 0xD1, 0xAB, 0xE2, 0x4F, 0xB9, 0x42 }, 529: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 } }, 530: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 531: { 0xE6, 0x43, 0xD7, 0x80, 0x90, 0xCA, 0x42, 0x07 }, 532: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 } }, 533: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 534: { 0x48, 0x22, 0x1B, 0x99, 0x37, 0x74, 0x8A, 0x23 }, 535: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 } }, 536: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 537: { 0xDD, 0x7C, 0x0B, 0xBD, 0x61, 0xFA, 0xFD, 0x54 }, 538: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 } }, 539: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 540: { 0x2F, 0xBC, 0x29, 0x1A, 0x57, 0x0D, 0xB5, 0xC4 }, 541: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 } }, 542: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 543: { 0xE0, 0x7C, 0x30, 0xD7, 0xE4, 0xE2, 0x6E, 0x12 }, 544: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40 } }, 545: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 546: { 0x09, 0x53, 0xE2, 0x25, 0x8E, 0x8E, 0x90, 0xA1 }, 547: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 } }, 548: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 549: { 0x5B, 0x71, 0x1B, 0xC4, 0xCE, 0xEB, 0xF2, 0xEE }, 550: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 } }, 551: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 552: { 0xCC, 0x08, 0x3F, 0x1E, 0x6D, 0x9E, 0x85, 0xF6 }, 553: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 } }, 554: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 555: { 0xD2, 0xFD, 0x88, 0x67, 0xD5, 0x0D, 0x2D, 0xFE }, 556: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04 } }, 557: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 558: { 0x06, 0xE7, 0xEA, 0x22, 0xCE, 0x92, 0x70, 0x8F }, 559: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 } }, 560: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 561: { 0x16, 0x6B, 0x40, 0xB4, 0x4A, 0xBA, 0x4B, 0xD6 }, 562: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } 563: }; 564: 565: /* Inverse Permutation and Expansion test: Encrypt */ 566: 567: DES_TEST des56_ecb_vectors_vp[DES56_TEST_COUNT_VP] = { 568: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 569: { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 570: { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 } }, 571: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 572: { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 573: { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 } }, 574: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 575: { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 576: { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA } }, 577: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 578: { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 579: { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F } }, 580: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 581: { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 582: { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 } }, 583: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 584: { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 585: { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF } }, 586: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 587: { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 588: { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F } }, 589: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 590: { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 591: { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 } }, 592: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 593: { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 594: { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A } }, 595: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 596: { 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 597: { 0x42, 0x42, 0x50, 0xB3, 0x7C, 0x3D, 0xD9, 0x51 } }, 598: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 599: { 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 600: { 0xB8, 0x06, 0x1B, 0x7E, 0xCD, 0x9A, 0x21, 0xE5 } }, 601: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 602: { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 603: { 0xF1, 0x5D, 0x0F, 0x28, 0x6B, 0x65, 0xBD, 0x28 } }, 604: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 605: { 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 606: { 0xAD, 0xD0, 0xCC, 0x8D, 0x6E, 0x5D, 0xEB, 0xA1 } }, 607: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 608: { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 609: { 0xE6, 0xD5, 0xF8, 0x27, 0x52, 0xAD, 0x63, 0xD1 } }, 610: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 611: { 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 612: { 0xEC, 0xBF, 0xE3, 0xBD, 0x3F, 0x59, 0x1A, 0x5E } }, 613: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 614: { 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 615: { 0xF3, 0x56, 0x83, 0x43, 0x79, 0xD1, 0x65, 0xCD } }, 616: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 617: { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 }, 618: { 0x2B, 0x9F, 0x98, 0x2F, 0x20, 0x03, 0x7F, 0xA9 } }, 619: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 620: { 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 }, 621: { 0x88, 0x9D, 0xE0, 0x68, 0xA1, 0x6F, 0x0B, 0xE6 } }, 622: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 623: { 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, 624: { 0xE1, 0x9E, 0x27, 0x5D, 0x84, 0x6A, 0x12, 0x98 } }, 625: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 626: { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, 627: { 0x32, 0x9A, 0x8E, 0xD5, 0x23, 0xD7, 0x1A, 0xEC } }, 628: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 629: { 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }, 630: { 0xE7, 0xFC, 0xE2, 0x25, 0x57, 0xD2, 0x3C, 0x97 } }, 631: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 632: { 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, 633: { 0x12, 0xA9, 0xF5, 0x81, 0x7F, 0xF2, 0xD6, 0x5D } }, 634: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 635: { 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, 636: { 0xA4, 0x84, 0xC3, 0xAD, 0x38, 0xDC, 0x9C, 0x19 } }, 637: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 638: { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, 639: { 0xFB, 0xE0, 0x0A, 0x8A, 0x1E, 0xF8, 0xAD, 0x72 } }, 640: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 641: { 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 }, 642: { 0x75, 0x0D, 0x07, 0x94, 0x07, 0x52, 0x13, 0x63 } }, 643: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 644: { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 }, 645: { 0x64, 0xFE, 0xED, 0x9C, 0x72, 0x4C, 0x2F, 0xAF } }, 646: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 647: { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 }, 648: { 0xF0, 0x2B, 0x26, 0x3B, 0x32, 0x8E, 0x2B, 0x60 } }, 649: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 650: { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 }, 651: { 0x9D, 0x64, 0x55, 0x5A, 0x9A, 0x10, 0xB8, 0x52 } }, 652: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 653: { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }, 654: { 0xD1, 0x06, 0xFF, 0x0B, 0xED, 0x52, 0x55, 0xD7 } }, 655: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 656: { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 }, 657: { 0xE1, 0x65, 0x2C, 0x6B, 0x13, 0x8C, 0x64, 0xA5 } }, 658: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 659: { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 660: { 0xE4, 0x28, 0x58, 0x11, 0x86, 0xEC, 0x8F, 0x46 } }, 661: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 662: { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 }, 663: { 0xAE, 0xB5, 0xF5, 0xED, 0xE2, 0x2D, 0x1A, 0x36 } }, 664: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 665: { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 }, 666: { 0xE9, 0x43, 0xD7, 0x56, 0x8A, 0xEC, 0x0C, 0x5C } }, 667: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 668: { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 }, 669: { 0xDF, 0x98, 0xC8, 0x27, 0x6F, 0x54, 0xB0, 0x4B } }, 670: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 671: { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 }, 672: { 0xB1, 0x60, 0xE4, 0x68, 0x0F, 0x6C, 0x69, 0x6F } }, 673: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 674: { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 }, 675: { 0xFA, 0x07, 0x52, 0xB0, 0x7D, 0x9C, 0x4A, 0xB8 } }, 676: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 677: { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 }, 678: { 0xCA, 0x3A, 0x2B, 0x03, 0x6D, 0xBC, 0x85, 0x02 } }, 679: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 680: { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 }, 681: { 0x5E, 0x09, 0x05, 0x51, 0x7B, 0xB5, 0x9B, 0xCF } }, 682: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 683: { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 684: { 0x81, 0x4E, 0xEB, 0x3B, 0x91, 0xD9, 0x07, 0x26 } }, 685: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 686: { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 }, 687: { 0x4D, 0x49, 0xDB, 0x15, 0x32, 0x91, 0x9C, 0x9F } }, 688: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 689: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 }, 690: { 0x25, 0xEB, 0x5F, 0xC3, 0xF8, 0xCF, 0x06, 0x21 } }, 691: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 692: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00 }, 693: { 0xAB, 0x6A, 0x20, 0xC0, 0x62, 0x0D, 0x1C, 0x6F } }, 694: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 695: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 }, 696: { 0x79, 0xE9, 0x0D, 0xBC, 0x98, 0xF9, 0x2C, 0xCA } }, 697: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 698: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 }, 699: { 0x86, 0x6E, 0xCE, 0xDD, 0x80, 0x72, 0xBB, 0x0E } }, 700: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 701: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 }, 702: { 0x8B, 0x54, 0x53, 0x6F, 0x2F, 0x3E, 0x64, 0xA8 } }, 703: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 704: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00 }, 705: { 0xEA, 0x51, 0xD3, 0x97, 0x55, 0x95, 0xB8, 0x6B } }, 706: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 707: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 }, 708: { 0xCA, 0xFF, 0xC6, 0xAC, 0x45, 0x42, 0xDE, 0x31 } }, 709: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 710: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 }, 711: { 0x8D, 0xD4, 0x5A, 0x2D, 0xDF, 0x90, 0x79, 0x6C } }, 712: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 713: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 }, 714: { 0x10, 0x29, 0xD5, 0x5E, 0x88, 0x0E, 0xC2, 0xD0 } }, 715: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 716: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00 }, 717: { 0x5D, 0x86, 0xCB, 0x23, 0x63, 0x9D, 0xBE, 0xA9 } }, 718: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 719: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 }, 720: { 0x1D, 0x1C, 0xA8, 0x53, 0xAE, 0x7C, 0x0C, 0x5F } }, 721: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 722: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 }, 723: { 0xCE, 0x33, 0x23, 0x29, 0x24, 0x8F, 0x32, 0x28 } }, 724: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 725: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }, 726: { 0x84, 0x05, 0xD1, 0xAB, 0xE2, 0x4F, 0xB9, 0x42 } }, 727: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 728: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 }, 729: { 0xE6, 0x43, 0xD7, 0x80, 0x90, 0xCA, 0x42, 0x07 } }, 730: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 731: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 }, 732: { 0x48, 0x22, 0x1B, 0x99, 0x37, 0x74, 0x8A, 0x23 } }, 733: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 734: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 }, 735: { 0xDD, 0x7C, 0x0B, 0xBD, 0x61, 0xFA, 0xFD, 0x54 } }, 736: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 737: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, 738: { 0x2F, 0xBC, 0x29, 0x1A, 0x57, 0x0D, 0xB5, 0xC4 } }, 739: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 740: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40 }, 741: { 0xE0, 0x7C, 0x30, 0xD7, 0xE4, 0xE2, 0x6E, 0x12 } }, 742: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 743: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 }, 744: { 0x09, 0x53, 0xE2, 0x25, 0x8E, 0x8E, 0x90, 0xA1 } }, 745: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 746: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 }, 747: { 0x5B, 0x71, 0x1B, 0xC4, 0xCE, 0xEB, 0xF2, 0xEE } }, 748: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 749: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 }, 750: { 0xCC, 0x08, 0x3F, 0x1E, 0x6D, 0x9E, 0x85, 0xF6 } }, 751: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 752: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04 }, 753: { 0xD2, 0xFD, 0x88, 0x67, 0xD5, 0x0D, 0x2D, 0xFE } }, 754: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 755: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, 756: { 0x06, 0xE7, 0xEA, 0x22, 0xCE, 0x92, 0x70, 0x8F } }, 757: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 758: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 759: { 0x16, 0x6B, 0x40, 0xB4, 0x4A, 0xBA, 0x4B, 0xD6 } } 760: }; 761: 762: /* Key Permutation tests: Encrypt */ 763: 764: DES_TEST des56_ecb_vectors_kp[DES56_TEST_COUNT_KP] = { 765: { { 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 766: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 767: { 0x95, 0xA8, 0xD7, 0x28, 0x13, 0xDA, 0xA9, 0x4D } }, 768: { { 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 769: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 770: { 0x0E, 0xEC, 0x14, 0x87, 0xDD, 0x8C, 0x26, 0xD5 } }, 771: { { 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 772: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 773: { 0x7A, 0xD1, 0x6F, 0xFB, 0x79, 0xC4, 0x59, 0x26 } }, 774: { { 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 775: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 776: { 0xD3, 0x74, 0x62, 0x94, 0xCA, 0x6A, 0x6C, 0xF3 } }, 777: { { 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 778: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 779: { 0x80, 0x9F, 0x5F, 0x87, 0x3C, 0x1F, 0xD7, 0x61 } }, 780: { { 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 781: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 782: { 0xC0, 0x2F, 0xAF, 0xFE, 0xC9, 0x89, 0xD1, 0xFC } }, 783: { { 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 784: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 785: { 0x46, 0x15, 0xAA, 0x1D, 0x33, 0xE7, 0x2F, 0x10 } }, 786: { { 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 787: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 788: { 0x20, 0x55, 0x12, 0x33, 0x50, 0xC0, 0x08, 0x58 } }, 789: { { 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 790: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 791: { 0xDF, 0x3B, 0x99, 0xD6, 0x57, 0x73, 0x97, 0xC8 } }, 792: { { 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 793: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 794: { 0x31, 0xFE, 0x17, 0x36, 0x9B, 0x52, 0x88, 0xC9 } }, 795: { { 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 796: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 797: { 0xDF, 0xDD, 0x3C, 0xC6, 0x4D, 0xAE, 0x16, 0x42 } }, 798: { { 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 799: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 800: { 0x17, 0x8C, 0x83, 0xCE, 0x2B, 0x39, 0x9D, 0x94 } }, 801: { { 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 802: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 803: { 0x50, 0xF6, 0x36, 0x32, 0x4A, 0x9B, 0x7F, 0x80 } }, 804: { { 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 805: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 806: { 0xA8, 0x46, 0x8E, 0xE3, 0xBC, 0x18, 0xF0, 0x6D } }, 807: { { 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01 }, 808: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 809: { 0xA2, 0xDC, 0x9E, 0x92, 0xFD, 0x3C, 0xDE, 0x92 } }, 810: { { 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01 }, 811: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 812: { 0xCA, 0xC0, 0x9F, 0x79, 0x7D, 0x03, 0x12, 0x87 } }, 813: { { 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01 }, 814: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 815: { 0x90, 0xBA, 0x68, 0x0B, 0x22, 0xAE, 0xB5, 0x25 } }, 816: { { 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, 817: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 818: { 0xCE, 0x7A, 0x24, 0xF3, 0x50, 0xE2, 0x80, 0xB6 } }, 819: { { 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01 }, 820: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 821: { 0x88, 0x2B, 0xFF, 0x0A, 0xA0, 0x1A, 0x0B, 0x87 } }, 822: { { 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01 }, 823: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 824: { 0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xC2 } }, 825: { { 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 }, 826: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 827: { 0xC7, 0x15, 0x16, 0xC2, 0x9C, 0x75, 0xD1, 0x70 } }, 828: { { 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01 }, 829: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 830: { 0x51, 0x99, 0xC2, 0x9A, 0x52, 0xC9, 0xF0, 0x59 } }, 831: { { 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01 }, 832: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 833: { 0xC2, 0x2F, 0x0A, 0x29, 0x4A, 0x71, 0xF2, 0x9F } }, 834: { { 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01 }, 835: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 836: { 0xEE, 0x37, 0x14, 0x83, 0x71, 0x4C, 0x02, 0xEA } }, 837: { { 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01 }, 838: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 839: { 0xA8, 0x1F, 0xBD, 0x44, 0x8F, 0x9E, 0x52, 0x2F } }, 840: { { 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01 }, 841: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 842: { 0x4F, 0x64, 0x4C, 0x92, 0xE1, 0x92, 0xDF, 0xED } }, 843: { { 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01 }, 844: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 845: { 0x1A, 0xFA, 0x9A, 0x66, 0xA6, 0xDF, 0x92, 0xAE } }, 846: { { 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01 }, 847: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 848: { 0xB3, 0xC1, 0xCC, 0x71, 0x5C, 0xB8, 0x79, 0xD8 } }, 849: { { 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01 }, 850: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 851: { 0x19, 0xD0, 0x32, 0xE6, 0x4A, 0xB0, 0xBD, 0x8B } }, 852: { { 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01 }, 853: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 854: { 0x3C, 0xFA, 0xA7, 0xA7, 0xDC, 0x87, 0x20, 0xDC } }, 855: { { 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01 }, 856: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 857: { 0xB7, 0x26, 0x5F, 0x7F, 0x44, 0x7A, 0xC6, 0xF3 } }, 858: { { 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01 }, 859: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 860: { 0x9D, 0xB7, 0x3B, 0x3C, 0x0D, 0x16, 0x3F, 0x54 } }, 861: { { 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01 }, 862: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 863: { 0x81, 0x81, 0xB6, 0x5B, 0xAB, 0xF4, 0xA9, 0x75 } }, 864: { { 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01 }, 865: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 866: { 0x93, 0xC9, 0xB6, 0x40, 0x42, 0xEA, 0xA2, 0x40 } }, 867: { { 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01 }, 868: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 869: { 0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92 } }, 870: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01 }, 871: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 872: { 0x86, 0x38, 0x80, 0x9E, 0x87, 0x87, 0x87, 0xA0 } }, 873: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01 }, 874: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 875: { 0x41, 0xB9, 0xA7, 0x9A, 0xF7, 0x9A, 0xC2, 0x08 } }, 876: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01 }, 877: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 878: { 0x7A, 0x9B, 0xE4, 0x2F, 0x20, 0x09, 0xA8, 0x92 } }, 879: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01 }, 880: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 881: { 0x29, 0x03, 0x8D, 0x56, 0xBA, 0x6D, 0x27, 0x45 } }, 882: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01 }, 883: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 884: { 0x54, 0x95, 0xC6, 0xAB, 0xF1, 0xE5, 0xDF, 0x51 } }, 885: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01 }, 886: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 887: { 0xAE, 0x13, 0xDB, 0xD5, 0x61, 0x48, 0x89, 0x33 } }, 888: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01 }, 889: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 890: { 0x02, 0x4D, 0x1F, 0xFA, 0x89, 0x04, 0xE3, 0x89 } }, 891: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01 }, 892: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 893: { 0xD1, 0x39, 0x97, 0x12, 0xF9, 0x9B, 0xF0, 0x2E } }, 894: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01 }, 895: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 896: { 0x14, 0xC1, 0xD7, 0xC1, 0xCF, 0xFE, 0xC7, 0x9E } }, 897: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01 }, 898: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 899: { 0x1D, 0xE5, 0x27, 0x9D, 0xAE, 0x3B, 0xED, 0x6F } }, 900: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01 }, 901: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 902: { 0xE9, 0x41, 0xA3, 0x3F, 0x85, 0x50, 0x13, 0x03 } }, 903: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01 }, 904: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 905: { 0xDA, 0x99, 0xDB, 0xBC, 0x9A, 0x03, 0xF3, 0x79 } }, 906: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01 }, 907: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 908: { 0xB7, 0xFC, 0x92, 0xF9, 0x1D, 0x8E, 0x92, 0xE9 } }, 909: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, 910: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 911: { 0xAE, 0x8E, 0x5C, 0xAA, 0x3C, 0xA0, 0x4E, 0x85 } }, 912: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80 }, 913: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 914: { 0x9C, 0xC6, 0x2D, 0xF4, 0x3B, 0x6E, 0xED, 0x74 } }, 915: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40 }, 916: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 917: { 0xD8, 0x63, 0xDB, 0xB5, 0xC5, 0x9A, 0x91, 0xA0 } }, 918: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20 }, 919: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 920: { 0xA1, 0xAB, 0x21, 0x90, 0x54, 0x5B, 0x91, 0xD7 } }, 921: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10 }, 922: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 923: { 0x08, 0x75, 0x04, 0x1E, 0x64, 0xC5, 0x70, 0xF7 } }, 924: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08 }, 925: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 926: { 0x5A, 0x59, 0x45, 0x28, 0xBE, 0xBE, 0xF1, 0xCC } }, 927: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04 }, 928: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 929: { 0xFC, 0xDB, 0x32, 0x91, 0xDE, 0x21, 0xF0, 0xC0 } }, 930: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }, 931: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 932: { 0x86, 0x9E, 0xFD, 0x7F, 0x9F, 0x26, 0x5A, 0x09 } } 933: }; 934: 935: /* Test of right-shifts in Decryption: Decrypt */ 936: 937: DES_TEST des56_ecb_vectors_rs[DES56_TEST_COUNT_RS] = { 938: { { 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 939: { 0x95, 0xA8, 0xD7, 0x28, 0x13, 0xDA, 0xA9, 0x4D }, 940: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 941: { { 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 942: { 0x0E, 0xEC, 0x14, 0x87, 0xDD, 0x8C, 0x26, 0xD5 }, 943: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 944: { { 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 945: { 0x7A, 0xD1, 0x6F, 0xFB, 0x79, 0xC4, 0x59, 0x26 }, 946: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 947: { { 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 948: { 0xD3, 0x74, 0x62, 0x94, 0xCA, 0x6A, 0x6C, 0xF3 }, 949: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 950: { { 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 951: { 0x80, 0x9F, 0x5F, 0x87, 0x3C, 0x1F, 0xD7, 0x61 }, 952: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 953: { { 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 954: { 0xC0, 0x2F, 0xAF, 0xFE, 0xC9, 0x89, 0xD1, 0xFC }, 955: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 956: { { 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 957: { 0x46, 0x15, 0xAA, 0x1D, 0x33, 0xE7, 0x2F, 0x10 }, 958: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 959: { { 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 960: { 0x20, 0x55, 0x12, 0x33, 0x50, 0xC0, 0x08, 0x58 }, 961: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 962: { { 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 963: { 0xDF, 0x3B, 0x99, 0xD6, 0x57, 0x73, 0x97, 0xC8 }, 964: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 965: { { 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 966: { 0x31, 0xFE, 0x17, 0x36, 0x9B, 0x52, 0x88, 0xC9 }, 967: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 968: { { 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 969: { 0xDF, 0xDD, 0x3C, 0xC6, 0x4D, 0xAE, 0x16, 0x42 }, 970: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 971: { { 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 972: { 0x17, 0x8C, 0x83, 0xCE, 0x2B, 0x39, 0x9D, 0x94 }, 973: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 974: { { 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 975: { 0x50, 0xF6, 0x36, 0x32, 0x4A, 0x9B, 0x7F, 0x80 }, 976: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 977: { { 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 978: { 0xA8, 0x46, 0x8E, 0xE3, 0xBC, 0x18, 0xF0, 0x6D }, 979: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 980: { { 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01 }, 981: { 0xA2, 0xDC, 0x9E, 0x92, 0xFD, 0x3C, 0xDE, 0x92 }, 982: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 983: { { 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01 }, 984: { 0xCA, 0xC0, 0x9F, 0x79, 0x7D, 0x03, 0x12, 0x87 }, 985: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 986: { { 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01 }, 987: { 0x90, 0xBA, 0x68, 0x0B, 0x22, 0xAE, 0xB5, 0x25 }, 988: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 989: { { 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, 990: { 0xCE, 0x7A, 0x24, 0xF3, 0x50, 0xE2, 0x80, 0xB6 }, 991: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 992: { { 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01 }, 993: { 0x88, 0x2B, 0xFF, 0x0A, 0xA0, 0x1A, 0x0B, 0x87 }, 994: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 995: { { 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01 }, 996: { 0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xC2 }, 997: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 998: { { 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 }, 999: { 0xC7, 0x15, 0x16, 0xC2, 0x9C, 0x75, 0xD1, 0x70 }, 1000: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1001: { { 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01 }, 1002: { 0x51, 0x99, 0xC2, 0x9A, 0x52, 0xC9, 0xF0, 0x59 }, 1003: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1004: { { 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01 }, 1005: { 0xC2, 0x2F, 0x0A, 0x29, 0x4A, 0x71, 0xF2, 0x9F }, 1006: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1007: { { 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01 }, 1008: { 0xEE, 0x37, 0x14, 0x83, 0x71, 0x4C, 0x02, 0xEA }, 1009: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1010: { { 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01 }, 1011: { 0xA8, 0x1F, 0xBD, 0x44, 0x8F, 0x9E, 0x52, 0x2F }, 1012: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1013: { { 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01 }, 1014: { 0x4F, 0x64, 0x4C, 0x92, 0xE1, 0x92, 0xDF, 0xED }, 1015: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1016: { { 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01 }, 1017: { 0x1A, 0xFA, 0x9A, 0x66, 0xA6, 0xDF, 0x92, 0xAE }, 1018: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1019: { { 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01 }, 1020: { 0xB3, 0xC1, 0xCC, 0x71, 0x5C, 0xB8, 0x79, 0xD8 }, 1021: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1022: { { 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01 }, 1023: { 0x19, 0xD0, 0x32, 0xE6, 0x4A, 0xB0, 0xBD, 0x8B }, 1024: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1025: { { 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01 }, 1026: { 0x3C, 0xFA, 0xA7, 0xA7, 0xDC, 0x87, 0x20, 0xDC }, 1027: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1028: { { 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01 }, 1029: { 0xB7, 0x26, 0x5F, 0x7F, 0x44, 0x7A, 0xC6, 0xF3 }, 1030: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1031: { { 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01 }, 1032: { 0x9D, 0xB7, 0x3B, 0x3C, 0x0D, 0x16, 0x3F, 0x54 }, 1033: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1034: { { 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01 }, 1035: { 0x81, 0x81, 0xB6, 0x5B, 0xAB, 0xF4, 0xA9, 0x75 }, 1036: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1037: { { 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01 }, 1038: { 0x93, 0xC9, 0xB6, 0x40, 0x42, 0xEA, 0xA2, 0x40 }, 1039: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1040: { { 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01 }, 1041: { 0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92 }, 1042: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1043: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01 }, 1044: { 0x86, 0x38, 0x80, 0x9E, 0x87, 0x87, 0x87, 0xA0 }, 1045: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1046: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01 }, 1047: { 0x41, 0xB9, 0xA7, 0x9A, 0xF7, 0x9A, 0xC2, 0x08 }, 1048: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1049: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01 }, 1050: { 0x7A, 0x9B, 0xE4, 0x2F, 0x20, 0x09, 0xA8, 0x92 }, 1051: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1052: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01 }, 1053: { 0x29, 0x03, 0x8D, 0x56, 0xBA, 0x6D, 0x27, 0x45 }, 1054: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1055: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01 }, 1056: { 0x54, 0x95, 0xC6, 0xAB, 0xF1, 0xE5, 0xDF, 0x51 }, 1057: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1058: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01 }, 1059: { 0xAE, 0x13, 0xDB, 0xD5, 0x61, 0x48, 0x89, 0x33 }, 1060: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1061: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01 }, 1062: { 0x02, 0x4D, 0x1F, 0xFA, 0x89, 0x04, 0xE3, 0x89 }, 1063: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1064: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01 }, 1065: { 0xD1, 0x39, 0x97, 0x12, 0xF9, 0x9B, 0xF0, 0x2E }, 1066: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1067: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01 }, 1068: { 0x14, 0xC1, 0xD7, 0xC1, 0xCF, 0xFE, 0xC7, 0x9E }, 1069: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1070: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01 }, 1071: { 0x1D, 0xE5, 0x27, 0x9D, 0xAE, 0x3B, 0xED, 0x6F }, 1072: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1073: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01 }, 1074: { 0xE9, 0x41, 0xA3, 0x3F, 0x85, 0x50, 0x13, 0x03 }, 1075: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1076: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01 }, 1077: { 0xDA, 0x99, 0xDB, 0xBC, 0x9A, 0x03, 0xF3, 0x79 }, 1078: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1079: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01 }, 1080: { 0xB7, 0xFC, 0x92, 0xF9, 0x1D, 0x8E, 0x92, 0xE9 }, 1081: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1082: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, 1083: { 0xAE, 0x8E, 0x5C, 0xAA, 0x3C, 0xA0, 0x4E, 0x85 }, 1084: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1085: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80 }, 1086: { 0x9C, 0xC6, 0x2D, 0xF4, 0x3B, 0x6E, 0xED, 0x74 }, 1087: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1088: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40 }, 1089: { 0xD8, 0x63, 0xDB, 0xB5, 0xC5, 0x9A, 0x91, 0xA0 }, 1090: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1091: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20 }, 1092: { 0xA1, 0xAB, 0x21, 0x90, 0x54, 0x5B, 0x91, 0xD7 }, 1093: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1094: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10 }, 1095: { 0x08, 0x75, 0x04, 0x1E, 0x64, 0xC5, 0x70, 0xF7 }, 1096: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1097: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08 }, 1098: { 0x5A, 0x59, 0x45, 0x28, 0xBE, 0xBE, 0xF1, 0xCC }, 1099: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1100: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04 }, 1101: { 0xFC, 0xDB, 0x32, 0x91, 0xDE, 0x21, 0xF0, 0xC0 }, 1102: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, 1103: { { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }, 1104: { 0x86, 0x9E, 0xFD, 0x7F, 0x9F, 0x26, 0x5A, 0x09 }, 1105: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } 1106: }; 1107: 1108: /* Data permutation test: Encrypt */ 1109: 1110: DES_TEST des56_ecb_vectors_dp[DES56_TEST_COUNT_DP] = { 1111: { { 0x10, 0x46, 0x91, 0x34, 0x89, 0x98, 0x01, 0x31 }, 1112: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1113: { 0x88, 0xD5, 0x5E, 0x54, 0xF5, 0x4C, 0x97, 0xB4 } }, 1114: { { 0x10, 0x07, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20 }, 1115: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1116: { 0x0C, 0x0C, 0xC0, 0x0C, 0x83, 0xEA, 0x48, 0xFD } }, 1117: { { 0x10, 0x07, 0x10, 0x34, 0xC8, 0x98, 0x01, 0x20 }, 1118: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1119: { 0x83, 0xBC, 0x8E, 0xF3, 0xA6, 0x57, 0x01, 0x83 } }, 1120: { { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20 }, 1121: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1122: { 0xDF, 0x72, 0x5D, 0xCA, 0xD9, 0x4E, 0xA2, 0xE9 } }, 1123: { { 0x10, 0x86, 0x91, 0x15, 0x19, 0x19, 0x01, 0x01 }, 1124: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1125: { 0xE6, 0x52, 0xB5, 0x3B, 0x55, 0x0B, 0xE8, 0xB0 } }, 1126: { { 0x10, 0x86, 0x91, 0x15, 0x19, 0x58, 0x01, 0x01 }, 1127: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1128: { 0xAF, 0x52, 0x71, 0x20, 0xC4, 0x85, 0xCB, 0xB0 } }, 1129: { { 0x51, 0x07, 0xB0, 0x15, 0x19, 0x58, 0x01, 0x01 }, 1130: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1131: { 0x0F, 0x04, 0xCE, 0x39, 0x3D, 0xB9, 0x26, 0xD5 } }, 1132: { { 0x10, 0x07, 0xB0, 0x15, 0x19, 0x19, 0x01, 0x01 }, 1133: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1134: { 0xC9, 0xF0, 0x0F, 0xFC, 0x74, 0x07, 0x90, 0x67 } }, 1135: { { 0x31, 0x07, 0x91, 0x54, 0x98, 0x08, 0x01, 0x01 }, 1136: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1137: { 0x7C, 0xFD, 0x82, 0xA5, 0x93, 0x25, 0x2B, 0x4E } }, 1138: { { 0x31, 0x07, 0x91, 0x94, 0x98, 0x08, 0x01, 0x01 }, 1139: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1140: { 0xCB, 0x49, 0xA2, 0xF9, 0xE9, 0x13, 0x63, 0xE3 } }, 1141: { { 0x10, 0x07, 0x91, 0x15, 0xB9, 0x08, 0x01, 0x40 }, 1142: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1143: { 0x00, 0xB5, 0x88, 0xBE, 0x70, 0xD2, 0x3F, 0x56 } }, 1144: { { 0x31, 0x07, 0x91, 0x15, 0x98, 0x08, 0x01, 0x40 }, 1145: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1146: { 0x40, 0x6A, 0x9A, 0x6A, 0xB4, 0x33, 0x99, 0xAE } }, 1147: { { 0x10, 0x07, 0xD0, 0x15, 0x89, 0x98, 0x01, 0x01 }, 1148: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1149: { 0x6C, 0xB7, 0x73, 0x61, 0x1D, 0xCA, 0x9A, 0xDA } }, 1150: { { 0x91, 0x07, 0x91, 0x15, 0x89, 0x98, 0x01, 0x01 }, 1151: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1152: { 0x67, 0xFD, 0x21, 0xC1, 0x7D, 0xBB, 0x5D, 0x70 } }, 1153: { { 0x91, 0x07, 0xD0, 0x15, 0x89, 0x19, 0x01, 0x01 }, 1154: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1155: { 0x95, 0x92, 0xCB, 0x41, 0x10, 0x43, 0x07, 0x87 } }, 1156: { { 0x10, 0x07, 0xD0, 0x15, 0x98, 0x98, 0x01, 0x20 }, 1157: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1158: { 0xA6, 0xB7, 0xFF, 0x68, 0xA3, 0x18, 0xDD, 0xD3 } }, 1159: { { 0x10, 0x07, 0x94, 0x04, 0x98, 0x19, 0x01, 0x01 }, 1160: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1161: { 0x4D, 0x10, 0x21, 0x96, 0xC9, 0x14, 0xCA, 0x16 } }, 1162: { { 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x04, 0x01 }, 1163: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1164: { 0x2D, 0xFA, 0x9F, 0x45, 0x73, 0x59, 0x49, 0x65 } }, 1165: { { 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x01, 0x01 }, 1166: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1167: { 0xB4, 0x66, 0x04, 0x81, 0x6C, 0x0E, 0x07, 0x74 } }, 1168: { { 0x01, 0x07, 0x94, 0x04, 0x91, 0x19, 0x04, 0x01 }, 1169: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1170: { 0x6E, 0x7E, 0x62, 0x21, 0xA4, 0xF3, 0x4E, 0x87 } }, 1171: { { 0x19, 0x07, 0x92, 0x10, 0x98, 0x1A, 0x01, 0x01 }, 1172: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1173: { 0xAA, 0x85, 0xE7, 0x46, 0x43, 0x23, 0x31, 0x99 } }, 1174: { { 0x10, 0x07, 0x91, 0x19, 0x98, 0x19, 0x08, 0x01 }, 1175: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1176: { 0x2E, 0x5A, 0x19, 0xDB, 0x4D, 0x19, 0x62, 0xD6 } }, 1177: { { 0x10, 0x07, 0x91, 0x19, 0x98, 0x1A, 0x08, 0x01 }, 1178: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1179: { 0x23, 0xA8, 0x66, 0xA8, 0x09, 0xD3, 0x08, 0x94 } }, 1180: { { 0x10, 0x07, 0x92, 0x10, 0x98, 0x19, 0x01, 0x01 }, 1181: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1182: { 0xD8, 0x12, 0xD9, 0x61, 0xF0, 0x17, 0xD3, 0x20 } }, 1183: { { 0x10, 0x07, 0x91, 0x15, 0x98, 0x19, 0x01, 0x0B }, 1184: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1185: { 0x05, 0x56, 0x05, 0x81, 0x6E, 0x58, 0x60, 0x8F } }, 1186: { { 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x01 }, 1187: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1188: { 0xAB, 0xD8, 0x8E, 0x8B, 0x1B, 0x77, 0x16, 0xF1 } }, 1189: { { 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x02 }, 1190: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1191: { 0x53, 0x7A, 0xC9, 0x5B, 0xE6, 0x9D, 0xA1, 0xE1 } }, 1192: { { 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x08 }, 1193: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1194: { 0xAE, 0xD0, 0xF6, 0xAE, 0x3C, 0x25, 0xCD, 0xD8 } }, 1195: { { 0x10, 0x02, 0x91, 0x14, 0x98, 0x10, 0x01, 0x04 }, 1196: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1197: { 0xB3, 0xE3, 0x5A, 0x5E, 0xE5, 0x3E, 0x7B, 0x8D } }, 1198: { { 0x10, 0x02, 0x91, 0x15, 0x98, 0x19, 0x01, 0x04 }, 1199: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1200: { 0x61, 0xC7, 0x9C, 0x71, 0x92, 0x1A, 0x2E, 0xF8 } }, 1201: { { 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x02, 0x01 }, 1202: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1203: { 0xE2, 0xF5, 0x72, 0x8F, 0x09, 0x95, 0x01, 0x3C } }, 1204: { { 0x10, 0x02, 0x91, 0x16, 0x98, 0x10, 0x01, 0x01 }, 1205: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1206: { 0x1A, 0xEA, 0xC3, 0x9A, 0x61, 0xF0, 0xA4, 0x64 } } 1207: }; 1208: 1209: /* S-Box test: Encrypt */ 1210: 1211: DES_TEST des56_ecb_vectors_sb[DES56_TEST_COUNT_SB] = { 1212: { { 0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57 }, 1213: { 0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42 }, 1214: { 0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B } }, 1215: { { 0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E }, 1216: { 0x5C, 0xD5, 0x4C, 0xA8, 0x3D, 0xEF, 0x57, 0xDA }, 1217: { 0x7A, 0x38, 0x9D, 0x10, 0x35, 0x4B, 0xD2, 0x71 } }, 1218: { { 0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86 }, 1219: { 0x02, 0x48, 0xD4, 0x38, 0x06, 0xF6, 0x71, 0x72 }, 1220: { 0x86, 0x8E, 0xBB, 0x51, 0xCA, 0xB4, 0x59, 0x9A } }, 1221: { { 0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E }, 1222: { 0x51, 0x45, 0x4B, 0x58, 0x2D, 0xDF, 0x44, 0x0A }, 1223: { 0x71, 0x78, 0x87, 0x6E, 0x01, 0xF1, 0x9B, 0x2A } }, 1224: { { 0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6 }, 1225: { 0x42, 0xFD, 0x44, 0x30, 0x59, 0x57, 0x7F, 0xA2 }, 1226: { 0xAF, 0x37, 0xFB, 0x42, 0x1F, 0x8C, 0x40, 0x95 } }, 1227: { { 0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE }, 1228: { 0x05, 0x9B, 0x5E, 0x08, 0x51, 0xCF, 0x14, 0x3A }, 1229: { 0x86, 0xA5, 0x60, 0xF1, 0x0E, 0xC6, 0xD8, 0x5B } }, 1230: { { 0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6 }, 1231: { 0x07, 0x56, 0xD8, 0xE0, 0x77, 0x47, 0x61, 0xD2 }, 1232: { 0x0C, 0xD3, 0xDA, 0x02, 0x00, 0x21, 0xDC, 0x09 } }, 1233: { { 0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE }, 1234: { 0x76, 0x25, 0x14, 0xB8, 0x29, 0xBF, 0x48, 0x6A }, 1235: { 0xEA, 0x67, 0x6B, 0x2C, 0xB7, 0xDB, 0x2B, 0x7A } }, 1236: { { 0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16 }, 1237: { 0x3B, 0xDD, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02 }, 1238: { 0xDF, 0xD6, 0x4A, 0x81, 0x5C, 0xAF, 0x1A, 0x0F } }, 1239: { { 0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F }, 1240: { 0x26, 0x95, 0x5F, 0x68, 0x35, 0xAF, 0x60, 0x9A }, 1241: { 0x5C, 0x51, 0x3C, 0x9C, 0x48, 0x86, 0xC0, 0x88 } }, 1242: { { 0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46 }, 1243: { 0x16, 0x4D, 0x5E, 0x40, 0x4F, 0x27, 0x52, 0x32 }, 1244: { 0x0A, 0x2A, 0xEE, 0xAE, 0x3F, 0xF4, 0xAB, 0x77 } }, 1245: { { 0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E }, 1246: { 0x6B, 0x05, 0x6E, 0x18, 0x75, 0x9F, 0x5C, 0xCA }, 1247: { 0xEF, 0x1B, 0xF0, 0x3E, 0x5D, 0xFA, 0x57, 0x5A } }, 1248: { { 0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76 }, 1249: { 0x00, 0x4B, 0xD6, 0xEF, 0x09, 0x17, 0x60, 0x62 }, 1250: { 0x88, 0xBF, 0x0D, 0xB6, 0xD7, 0x0D, 0xEE, 0x56 } }, 1251: { { 0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07 }, 1252: { 0x48, 0x0D, 0x39, 0x00, 0x6E, 0xE7, 0x62, 0xF2 }, 1253: { 0xA1, 0xF9, 0x91, 0x55, 0x41, 0x02, 0x0B, 0x56 } }, 1254: { { 0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F }, 1255: { 0x43, 0x75, 0x40, 0xC8, 0x69, 0x8F, 0x3C, 0xFA }, 1256: { 0x6F, 0xBF, 0x1C, 0xAF, 0xCF, 0xFD, 0x05, 0x56 } }, 1257: { { 0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7 }, 1258: { 0x07, 0x2D, 0x43, 0xA0, 0x77, 0x07, 0x52, 0x92 }, 1259: { 0x2F, 0x22, 0xE4, 0x9B, 0xAB, 0x7C, 0xA1, 0xAC } }, 1260: { { 0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF }, 1261: { 0x02, 0xFE, 0x55, 0x77, 0x81, 0x17, 0xF1, 0x2A }, 1262: { 0x5A, 0x6B, 0x61, 0x2C, 0xC2, 0x6C, 0xCE, 0x4A } }, 1263: { { 0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6 }, 1264: { 0x1D, 0x9D, 0x5C, 0x50, 0x18, 0xF7, 0x28, 0xC2 }, 1265: { 0x5F, 0x4C, 0x03, 0x8E, 0xD1, 0x2B, 0x2E, 0x41 } }, 1266: { { 0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF }, 1267: { 0x30, 0x55, 0x32, 0x28, 0x6D, 0x6F, 0x29, 0x5A }, 1268: { 0x63, 0xFA, 0xC0, 0xD0, 0x34, 0xD9, 0xF7, 0x93 } } 1269: }; 1270: 1.1.1.6 root 1271: /* Triple DES TECB (EDE) test vectors (deprecated/legacy) */ 1.1 root 1272: 1273: #define TRIPLEDES_TEST_COUNT 1 1274: 1275: typedef struct { 1276: unsigned char key[24]; 1277: unsigned char plaintext[8]; 1278: unsigned char ciphertext[8]; 1279: } TRIPLEDES_TEST; 1280: 1281: TRIPLEDES_TEST tripledes_vectors[TRIPLEDES_TEST_COUNT] = { 1282: 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 1283: 0x76, 0x54, 0x32, 0x10, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 1284: 1285: 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1286: 1287: 0xde, 0x0b, 0x7c, 0x06, 0xae, 0x5e, 0x0e, 0xd5 1288: }; 1289: 1.1.1.6 root 1290: /* CAST-128 Test Vectors from RFC2144 (deprecated/legacy) */ 1.1 root 1291: 1292: #define CAST_TEST_COUNT 1 1293: 1294: typedef struct { 1295: unsigned char key[16]; 1296: unsigned char plaintext[8]; 1297: unsigned char ciphertext[8]; 1298: } CAST_TEST; 1299: 1300: 1301: CAST_TEST cast_ecb_vectors[CAST_TEST_COUNT] = { 1302: "\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A", 1303: "\x01\x23\x45\x67\x89\xAB\xCD\xEF", 1304: "\x23\x8B\x4F\xE5\x84\x7E\x44\xB2" 1305: }; 1306: 1307: // AES ECB test vectors FIPS-197 1308: 1309: #define AES_TEST_COUNT 1 1310: 1311: typedef struct { 1312: unsigned char key[32]; 1313: unsigned char plaintext[16]; 1314: unsigned char ciphertext[16]; 1315: } AES_TEST; 1316: 1317: AES_TEST aes_ecb_vectors[AES_TEST_COUNT] = { 1318: 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, 1319: 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, 1320: 1321: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff, 1322: 1323: 0x8e,0xa2,0xb7,0xca,0x51,0x67,0x45,0xbf,0xea,0xfc,0x49,0x90,0x4b,0x49,0x60,0x89 1324: }; 1325: 1326: // Serpent ECB test vectors 1327: 1328: #define SERPENT_TEST_COUNT 1 1329: 1330: typedef struct { 1331: unsigned char key[32]; 1332: unsigned char plaintext[16]; 1333: unsigned char ciphertext[16]; 1334: } SERPENT_TEST; 1335: 1336: SERPENT_TEST serpent_vectors[SERPENT_TEST_COUNT] = { 1337: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1338: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 1339: 1340: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1341: 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8, 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c 1342: }; 1343: 1344: // Twofish ECB test vectors 1345: 1346: #define TWOFISH_TEST_COUNT 1 1347: 1348: typedef struct { 1349: unsigned char key[32]; 1350: unsigned char plaintext[16]; 1351: unsigned char ciphertext[16]; 1352: } TWOFISH_TEST; 1353: 1354: TWOFISH_TEST twofish_vectors[TWOFISH_TEST_COUNT] = { 1355: 0xD4, 0x3B, 0xB7, 0x55, 0x6E, 0xA3, 0x2E, 0x46, 0xF2, 0xA2, 0x82, 0xB7, 0xD4, 0x5B, 0x4E, 0x0D, 1356: 0x57, 0xFF, 0x73, 0x9D, 0x4D, 0xC9, 0x2C, 0x1B, 0xD7, 0xFC, 0x01, 0x70, 0x0C, 0xC8, 0x21, 0x6F, 1357: 1358: 0x90, 0xAF, 0xE9, 0x1B, 0xB2, 0x88, 0x54, 0x4F, 0x2C, 0x32, 0xDC, 0x23, 0x9B, 0x26, 0x35, 0xE6, 1359: 0x6C, 0xB4, 0x56, 0x1C, 0x40, 0xBF, 0x0A, 0x97, 0x05, 0x93, 0x1C, 0xB6, 0xD4, 0x08, 0xE7, 0xFA 1360: }; 1361: 1.1.1.7 ! root 1362: /* Test vectors from FIPS 198a, RFC 4231, RFC 2104, RFC 2202, and other sources. */ ! 1363: ! 1364: char *hmac_sha512_test_keys[] = ! 1365: { ! 1366: "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", ! 1367: "Jefe", ! 1368: "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", ! 1369: "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19", ! 1370: "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", ! 1371: "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", ! 1372: }; ! 1373: ! 1374: char *hmac_sha512_test_data[] = ! 1375: { ! 1376: "Hi There", ! 1377: "what do ya want for nothing?", ! 1378: "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", ! 1379: "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd", ! 1380: "Test Using Larger Than Block-Size Key - Hash Key First", ! 1381: "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.", ! 1382: }; ! 1383: ! 1384: char *hmac_sha512_test_vectors[] = ! 1385: { ! 1386: "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20\x3a\x12\x68\x54", ! 1387: "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3\x87\xbd\x64\x22\x2e\x83\x1f\xd6\x10\x27\x0c\xd7\xea\x25\x05\x54\x97\x58\xbf\x75\xc0\x5a\x99\x4a\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b\x63\x6e\x07\x0a\x38\xbc\xe7\x37", ! 1388: "\xfa\x73\xb0\x08\x9d\x56\xa2\x84\xef\xb0\xf0\x75\x6c\x89\x0b\xe9\xb1\xb5\xdb\xdd\x8e\xe8\x1a\x36\x55\xf8\x3e\x33\xb2\x27\x9d\x39\xbf\x3e\x84\x82\x79\xa7\x22\xc8\x06\xb4\x85\xa4\x7e\x67\xc8\x07\xb9\x46\xa3\x37\xbe\xe8\x94\x26\x74\x27\x88\x59\xe1\x32\x92\xfb", ! 1389: "\xb0\xba\x46\x56\x37\x45\x8c\x69\x90\xe5\xa8\xc5\xf6\x1d\x4a\xf7\xe5\x76\xd9\x7f\xf9\x4b\x87\x2d\xe7\x6f\x80\x50\x36\x1e\xe3\xdb\xa9\x1c\xa5\xc1\x1a\xa2\x5e\xb4\xd6\x79\x27\x5c\xc5\x78\x80\x63\xa5\xf1\x97\x41\x12\x0c\x4f\x2d\xe2\xad\xeb\xeb\x10\xa2\x98\xdd", ! 1390: "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1\x12\x1b\x01\x37\x83\xf8\xf3\x52\x6b\x56\xd0\x37\xe0\x5f\x25\x98\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52\x95\xe6\x4f\x73\xf6\x3f\x0a\xec\x8b\x91\x5a\x98\x5d\x78\x65\x98", ! 1391: "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd\xde\xbd\x71\xf8\x86\x72\x89\x86\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44\xb6\x02\x2c\xac\x3c\x49\x82\xb1\x0d\x5e\xeb\x55\xc3\xe4\xde\x15\x13\x46\x76\xfb\x6d\xe0\x44\x60\x65\xc9\x74\x40\xfa\x8c\x6a\x58", ! 1392: }; 1.1 root 1393: 1394: char *hmac_sha1_test_keys[] = 1395: { 1.1.1.7 ! root 1396: // Deprecated/legacy 1.1 root 1397: "\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", 1398: "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", 1399: "Jefe", 1400: "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" 1401: }; 1402: 1403: char *hmac_sha1_test_data[] = 1404: { 1.1.1.7 ! root 1405: // Deprecated/legacy 1.1 root 1406: "Sample #3", 1407: "Hi There", 1408: "what do ya want for nothing?", 1409: "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" 1410: "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" 1411: "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" 1412: }; 1413: 1414: char *hmac_sha1_test_vectors[] = 1415: { 1.1.1.7 ! root 1416: // Deprecated/legacy 1.1 root 1417: "\xbc\xf4\x1e\xab\x8b\xb2\xd8\x02\xf3\xd0\x5c\xaf\x7c\xb0\x92\xec\xf8\xd1\xa3\xaa", 1418: "\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1\x46\xbe\x00", 1419: "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79", 1420: "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3" 1421: }; 1422: 1423: char *hmac_ripemd160_test_keys[] = 1424: { 1425: "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x01\x23\x45\x67", 1426: "\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10\x00\x11\x22\x33", 1427: }; 1428: 1429: char *hmac_ripemd160_test_data[] = 1430: { 1431: "message digest", 1432: "12345678901234567890123456789012345678901234567890123456789012345678901234567890", 1433: }; 1434: 1435: char *hmac_ripemd160_test_vectors[] = 1436: { 1437: "\xf8\x36\x62\xcc\x8d\x33\x9c\x22\x7e\x60\x0f\xcd\x63\x6c\x57\xd2\x57\x1b\x1c\x34", 1438: "\x85\xf1\x64\x70\x3e\x61\xa6\x31\x31\xbe\x7e\x45\x95\x8e\x07\x94\x12\x39\x04\xf9", 1439: }; 1440: 1441: char *hmac_whirlpool_test_key = 1442: { 1443: "\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" 1444: }; 1445: 1446: char *hmac_whirlpool_test_data = 1447: { 1448: "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 1449: }; 1450: 1451: char *hmac_whirlpool_test_vectors = 1452: { 1453: "\x03\x91\xd2\x80\x00\xb6\x62\xbb\xb8\xe6\x23\x3e\xe8\x6c\xf2\xb2\x84\x74\x4c\x73" 1454: "\x8b\x58\x00\xba\x28\x12\xed\x52\x6f\xe3\x15\x3a\xb1\xba\xe7\xe2\x36\xbe\x96\x54" 1455: "\x49\x3f\x19\xfa\xce\xa6\x44\x1f\x60\xf5\xf0\x18\x93\x09\x11\xa5\xe5\xce\xd8\xf2" 1456: "\x6a\xbf\xa4\x02" 1457: }; 1458: 1459: unsigned char ks_tmp[MAX_EXPANDED_KEY]; 1460: 1.1.1.7 ! root 1461: void CipherInit2(int cipher, void* key, void* ks, int key_len) 1.1 root 1462: { 1463: switch (cipher) 1464: { 1465: case BLOWFISH: 1.1.1.6 root 1466: /* Deprecated/legacy */ 1.1 root 1467: BF_set_key (ks, key_len, key); 1468: break; 1469: 1470: case AES: 1471: CipherInit(cipher,key,ks); 1472: break; 1473: 1474: case DES56: 1.1.1.6 root 1475: /* Deprecated/legacy */ 1.1 root 1476: CipherInit(cipher,key,ks); 1477: break; 1478: 1479: case CAST: 1.1.1.6 root 1480: /* Deprecated/legacy */ 1.1 root 1481: CipherInit(cipher,key,ks); 1482: break; 1483: 1484: case SERPENT: 1485: CipherInit(cipher,key,ks); 1486: break; 1487: 1488: case TRIPLEDES: 1.1.1.6 root 1489: /* Deprecated/legacy */ 1.1 root 1490: CipherInit(cipher,key,ks); 1491: break; 1492: 1493: case TWOFISH: 1494: CipherInit(cipher,key,ks); 1495: break; 1.1.1.7 ! root 1496: ! 1497: default: ! 1498: /* Unknown/wrong ID */ ! 1499: TC_THROW_FATAL_EXCEPTION; 1.1 root 1500: } 1501: } 1502: 1503: BOOL Des56TestLoop(void *test_vectors, int nVectorCount, int enc) 1504: { 1.1.1.6 root 1505: /* Deprecated/legacy */ 1506: 1.1 root 1507: char key[32]; 1508: __int32 tmp[2]; 1509: int i, cipher; 1510: 1511: cipher = DES56; 1512: for (i=0;i<nVectorCount;i++) 1513: { 1514: memcpy(key, ((DES_TEST*)test_vectors)->key, 8); 1515: memcpy(tmp, ((DES_TEST*)test_vectors)->plaintext, 8); 1516: 1517: memset(ks_tmp,0,sizeof(ks_tmp)); 1518: CipherInit2(cipher, key, ks_tmp, 8); 1519: 1520: if (enc) 1521: { 1522: EncipherBlock(cipher, tmp, ks_tmp); 1523: } 1524: else 1525: { 1526: DecipherBlock(cipher, tmp, ks_tmp); 1527: } 1528: 1529: if (memcmp(((DES_TEST*)test_vectors)->ciphertext, tmp,8)!=0) 1530: return FALSE; 1531: } 1532: 1533: return TRUE; 1534: } 1535: 1536: 1.1.1.7 ! root 1537: /* Deprecated/legacy */ 1.1.1.2 root 1538: typedef struct { 1539: unsigned __int8 key1[32]; 1540: unsigned __int8 key2[16]; 1541: unsigned __int8 index[16]; 1542: unsigned __int8 plaintext[16]; 1543: unsigned __int8 ciphertext[16]; 1544: } LRW_TEST; 1.1 root 1545: 1.1.1.2 root 1546: #define LRW_TEST_COUNT 2 1.1 root 1547: 1.1.1.7 ! root 1548: /* Deprecated/legacy */ 1.1.1.2 root 1549: LRW_TEST lrw_vectors[LRW_TEST_COUNT] = { 1.1 root 1550: { 1.1.1.2 root 1551: { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c, 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d, 1552: 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21, 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89 }, 1553: { 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1, 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e }, 1554: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 1555: { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 1556: { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e, 0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b } 1557: }, 1558: { 1559: { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d, 0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8, 1560: 0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d, 0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7 }, 1561: { 0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4, 0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c }, 1562: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 1563: { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 1564: { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f, 0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 } 1565: } 1566: }; 1.1 root 1567: 1568: 1.1.1.2 root 1569: BOOL LRWAesTest (PCRYPTO_INFO ci) 1570: { 1.1.1.7 ! root 1571: /* Deprecated/legacy */ ! 1572: 1.1.1.2 root 1573: unsigned __int8 p[16]; 1574: int i; 1.1 root 1575: 1.1.1.2 root 1576: for (i = 0; i < LRW_TEST_COUNT; i++) 1577: { 1578: ci->ea = EAGetByName ("AES"); 1579: if (ci->ea == 0) 1.1.1.7 ! root 1580: return FALSE; 1.1.1.2 root 1581: 1582: ci->mode = LRW; 1.1 root 1583: 1.1.1.7 ! root 1584: if (EAInit (ci->ea, lrw_vectors[i].key1, ci->ks) != ERR_SUCCESS) 1.1 root 1585: return FALSE; 1586: 1.1.1.7 ! root 1587: memcpy (&ci->k2, lrw_vectors[i].key2, sizeof (lrw_vectors[i].key2)); 1.1.1.2 root 1588: if (!EAInitMode (ci)) 1.1 root 1589: return FALSE; 1590: 1.1.1.2 root 1591: memcpy (p, lrw_vectors[i].plaintext, sizeof (p)); 1.1 root 1592: 1.1.1.2 root 1593: EncryptBufferLRW128 (p, sizeof (p), BE64(((unsigned __int64 *)(lrw_vectors[i].index))[1]), ci); 1.1 root 1594: 1.1.1.2 root 1595: if (memcmp (lrw_vectors[i].ciphertext, p, sizeof (p)) != 0) 1.1 root 1596: return FALSE; 1.1.1.2 root 1597: } 1598: 1599: return TRUE; 1600: } 1601: 1602: 1603: BOOL TestSectorBufEncryption (PCRYPTO_INFO ci) 1604: { 1.1.1.7 ! root 1605: unsigned char buf [ENCRYPTION_DATA_UNIT_SIZE * 4]; 1.1.1.2 root 1606: unsigned int i; 1607: char name[64]; 1608: unsigned __int32 crc; 1.1.1.7 ! root 1609: UINT64_STRUCT unitNo; ! 1610: TC_LARGEST_COMPILER_UINT nbrUnits; ! 1611: unsigned __int64 writeOffset; ! 1612: int testCase = 0; ! 1613: int nTestsPerformed = 0; ! 1614: ! 1615: static unsigned char key1[] = ! 1616: { ! 1617: 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 0x62, 0x49, 0x77, 0x57, 0x24, 0x70, 0x93, 0x69, 0x99, 0x59, 0x57, 0x49, 0x66, 0x96, 0x76, 0x27, ! 1618: 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, 0x45, 0x92, ! 1619: 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 ! 1620: }; ! 1621: ! 1622: if (!TestLegacySectorBufEncryption (ci)) ! 1623: return FALSE; ! 1624: ! 1625: ! 1626: /* Encryption/decryption of data units (typically, volume data sectors) */ ! 1627: ! 1628: nbrUnits = sizeof (buf) / ENCRYPTION_DATA_UNIT_SIZE; ! 1629: ! 1630: ci->mode = XTS; // Other modes of operation are tested in TestLegacySectorBufEncryption() ! 1631: ! 1632: /* The buffer can accommodate 4 data units and we'll test 4 cases by "scrolling". The data unit 0xFFFFFFFFFF ! 1633: will "move" from the start of the buffer to its end. For a 512-byte data unit, the byte offset 562949953420800 ! 1634: corresponds to the data unit 0xFFFFFFFFFF. */ ! 1635: for (writeOffset = 562949953420800LL; ! 1636: writeOffset > 562949953420800LL - nbrUnits * ENCRYPTION_DATA_UNIT_SIZE; ! 1637: writeOffset -= ENCRYPTION_DATA_UNIT_SIZE) ! 1638: { ! 1639: unitNo.Value = writeOffset / ENCRYPTION_DATA_UNIT_SIZE; ! 1640: ! 1641: // Test all EAs that support this mode of operation ! 1642: for (ci->ea = EAGetFirst (); ci->ea != 0; ci->ea = EAGetNext (ci->ea)) ! 1643: { ! 1644: if (!EAIsModeSupported (ci->ea, ci->mode)) ! 1645: continue; ! 1646: ! 1647: EAGetName (name, ci->ea); ! 1648: ! 1649: if (EAInit (ci->ea, key1, ci->ks) != ERR_SUCCESS) ! 1650: return FALSE; ! 1651: ! 1652: for (i = 0; i < sizeof (ci->k2); i++) ! 1653: ci->k2[i] = (unsigned char) i; ! 1654: ! 1655: memcpy (&ci->k2, XTS_vectors[XTS_TEST_COUNT-1].key2, sizeof (XTS_vectors[XTS_TEST_COUNT-1].key2)); ! 1656: ! 1657: if (!EAInitMode (ci)) ! 1658: return FALSE; ! 1659: ! 1660: // Each data unit will contain the same plaintext ! 1661: for (i = 0; i < nbrUnits; i++) ! 1662: { ! 1663: memcpy ((unsigned char *) buf + i * ENCRYPTION_DATA_UNIT_SIZE, ! 1664: XTS_vectors[XTS_TEST_COUNT-1].plaintext, ! 1665: ENCRYPTION_DATA_UNIT_SIZE); ! 1666: } ! 1667: ! 1668: EncryptDataUnits (buf, &unitNo, nbrUnits, ci); ! 1669: ! 1670: crc = GetCrc32 (buf, sizeof (buf)); ! 1671: ! 1672: if (strcmp (name, "AES") == 0) ! 1673: { ! 1674: // Verify the ciphertext of the "moving" data unit using the IEEE test vector #14 ! 1675: if (memcmp (XTS_vectors[XTS_TEST_COUNT-1].ciphertext, ! 1676: (unsigned char *) buf + testCase * ENCRYPTION_DATA_UNIT_SIZE, ! 1677: ENCRYPTION_DATA_UNIT_SIZE) != 0) ! 1678: { ! 1679: return FALSE; ! 1680: } ! 1681: ! 1682: // CRC of all data units in the buffer for each test case ! 1683: switch (testCase) ! 1684: { ! 1685: case 0: ! 1686: if (crc != 0x888f2990) ! 1687: return FALSE; ! 1688: nTestsPerformed++; ! 1689: break; ! 1690: case 1: ! 1691: if (crc != 0xea28ea34) ! 1692: return FALSE; ! 1693: nTestsPerformed++; ! 1694: break; ! 1695: case 2: ! 1696: if (crc != 0xe058f5a2) ! 1697: return FALSE; ! 1698: nTestsPerformed++; ! 1699: break; ! 1700: case 3: ! 1701: if (crc != 0x10473dc9) ! 1702: return FALSE; ! 1703: nTestsPerformed++; ! 1704: break; ! 1705: } ! 1706: } ! 1707: else if (strcmp (name, "Serpent") == 0) ! 1708: { ! 1709: switch (testCase) ! 1710: { ! 1711: case 0: ! 1712: if (crc != 0x7edfecb3) ! 1713: return FALSE; ! 1714: nTestsPerformed++; ! 1715: break; ! 1716: case 1: ! 1717: if (crc != 0x357baaaa) ! 1718: return FALSE; ! 1719: nTestsPerformed++; ! 1720: break; ! 1721: case 2: ! 1722: if (crc != 0xc7b9fca5) ! 1723: return FALSE; ! 1724: nTestsPerformed++; ! 1725: break; ! 1726: case 3: ! 1727: if (crc != 0xb5263e0c) ! 1728: return FALSE; ! 1729: nTestsPerformed++; ! 1730: break; ! 1731: } ! 1732: } ! 1733: else if (strcmp (name, "Twofish") == 0) ! 1734: { ! 1735: switch (testCase) ! 1736: { ! 1737: case 0: ! 1738: if (crc != 0x91525124) ! 1739: return FALSE; ! 1740: nTestsPerformed++; ! 1741: break; ! 1742: case 1: ! 1743: if (crc != 0x2895cc47) ! 1744: return FALSE; ! 1745: nTestsPerformed++; ! 1746: break; ! 1747: case 2: ! 1748: if (crc != 0x6bee346d) ! 1749: return FALSE; ! 1750: nTestsPerformed++; ! 1751: break; ! 1752: case 3: ! 1753: if (crc != 0xb1c45759) ! 1754: return FALSE; ! 1755: nTestsPerformed++; ! 1756: break; ! 1757: } ! 1758: } ! 1759: else if (strcmp (name, "AES-Twofish") == 0) ! 1760: { ! 1761: switch (testCase) ! 1762: { ! 1763: case 0: ! 1764: if (crc != 0x6cea7fa2) ! 1765: return FALSE; ! 1766: nTestsPerformed++; ! 1767: break; ! 1768: case 1: ! 1769: if (crc != 0x69052c4c) ! 1770: return FALSE; ! 1771: nTestsPerformed++; ! 1772: break; ! 1773: case 2: ! 1774: if (crc != 0x88db8de5) ! 1775: return FALSE; ! 1776: nTestsPerformed++; ! 1777: break; ! 1778: case 3: ! 1779: if (crc != 0xf16fd8c5) ! 1780: return FALSE; ! 1781: nTestsPerformed++; ! 1782: break; ! 1783: } ! 1784: } ! 1785: else if (strcmp (name, "AES-Twofish-Serpent") == 0) ! 1786: { ! 1787: switch (testCase) ! 1788: { ! 1789: case 0: ! 1790: if (crc != 0xa2d7d82a) ! 1791: return FALSE; ! 1792: nTestsPerformed++; ! 1793: break; ! 1794: case 1: ! 1795: if (crc != 0xdbf76412) ! 1796: return FALSE; ! 1797: nTestsPerformed++; ! 1798: break; ! 1799: case 2: ! 1800: if (crc != 0xdf0ea03e) ! 1801: return FALSE; ! 1802: nTestsPerformed++; ! 1803: break; ! 1804: case 3: ! 1805: if (crc != 0xdadedff7) ! 1806: return FALSE; ! 1807: nTestsPerformed++; ! 1808: break; ! 1809: } ! 1810: } ! 1811: else if (strcmp (name, "Serpent-AES") == 0) ! 1812: { ! 1813: switch (testCase) ! 1814: { ! 1815: case 0: ! 1816: if (crc != 0x6dd133b3) ! 1817: return FALSE; ! 1818: nTestsPerformed++; ! 1819: break; ! 1820: case 1: ! 1821: if (crc != 0x0e5717d2) ! 1822: return FALSE; ! 1823: nTestsPerformed++; ! 1824: break; ! 1825: case 2: ! 1826: if (crc != 0x39f83cd9) ! 1827: return FALSE; ! 1828: nTestsPerformed++; ! 1829: break; ! 1830: case 3: ! 1831: if (crc != 0x8a79fa2c) ! 1832: return FALSE; ! 1833: nTestsPerformed++; ! 1834: break; ! 1835: } ! 1836: } ! 1837: else if (strcmp (name, "Serpent-Twofish-AES") == 0) ! 1838: { ! 1839: switch (testCase) ! 1840: { ! 1841: case 0: ! 1842: if (crc != 0xe536daf8) ! 1843: return FALSE; ! 1844: nTestsPerformed++; ! 1845: break; ! 1846: case 1: ! 1847: if (crc != 0x3ae89e7f) ! 1848: return FALSE; ! 1849: nTestsPerformed++; ! 1850: break; ! 1851: case 2: ! 1852: if (crc != 0x2cc1301a) ! 1853: return FALSE; ! 1854: nTestsPerformed++; ! 1855: break; ! 1856: case 3: ! 1857: if (crc != 0xcac7bdc7) ! 1858: return FALSE; ! 1859: nTestsPerformed++; ! 1860: break; ! 1861: } ! 1862: } ! 1863: else if (strcmp (name, "Twofish-Serpent") == 0) ! 1864: { ! 1865: switch (testCase) ! 1866: { ! 1867: case 0: ! 1868: if (crc != 0x2686c859) ! 1869: return FALSE; ! 1870: nTestsPerformed++; ! 1871: break; ! 1872: case 1: ! 1873: if (crc != 0x8a201780) ! 1874: return FALSE; ! 1875: nTestsPerformed++; ! 1876: break; ! 1877: case 2: ! 1878: if (crc != 0x8dd13796) ! 1879: return FALSE; ! 1880: nTestsPerformed++; ! 1881: break; ! 1882: case 3: ! 1883: if (crc != 0xe95196cb) ! 1884: return FALSE; ! 1885: nTestsPerformed++; ! 1886: break; ! 1887: } ! 1888: } ! 1889: ! 1890: if (crc == 0x9f5edd58) ! 1891: return FALSE; ! 1892: ! 1893: DecryptDataUnits (buf, &unitNo, nbrUnits, ci); ! 1894: ! 1895: if (GetCrc32 (buf, sizeof (buf)) != 0x9f5edd58) ! 1896: return FALSE; ! 1897: ! 1898: nTestsPerformed++; ! 1899: } ! 1900: testCase++; ! 1901: } ! 1902: ! 1903: /* Encryption/decryption of a buffer (typically, a volume header) */ ! 1904: ! 1905: nbrUnits = sizeof (buf) / ENCRYPTION_DATA_UNIT_SIZE; ! 1906: ! 1907: // Test all EAs that support this mode of operation ! 1908: for (ci->ea = EAGetFirst (); ci->ea != 0; ci->ea = EAGetNext (ci->ea)) ! 1909: { ! 1910: if (!EAIsModeSupported (ci->ea, ci->mode)) ! 1911: continue; ! 1912: ! 1913: EAGetName (name, ci->ea); ! 1914: ! 1915: if (EAInit (ci->ea, key1, ci->ks) != ERR_SUCCESS) ! 1916: return FALSE; ! 1917: ! 1918: memcpy (&ci->k2, XTS_vectors[XTS_TEST_COUNT-1].key2, sizeof (XTS_vectors[XTS_TEST_COUNT-1].key2)); ! 1919: ! 1920: if (!EAInitMode (ci)) ! 1921: return FALSE; ! 1922: ! 1923: // Each data unit will contain the same plaintext ! 1924: for (i = 0; i < nbrUnits; i++) ! 1925: { ! 1926: memcpy ((unsigned char *) buf + i * ENCRYPTION_DATA_UNIT_SIZE, ! 1927: XTS_vectors[XTS_TEST_COUNT-1].plaintext, ! 1928: ENCRYPTION_DATA_UNIT_SIZE); ! 1929: } ! 1930: ! 1931: EncryptBuffer (buf, sizeof (buf), ci); ! 1932: ! 1933: crc = GetCrc32 (buf, sizeof (buf)); ! 1934: ! 1935: if (strcmp (name, "AES") == 0) ! 1936: { ! 1937: if (crc != 0x33b91fab) ! 1938: return FALSE; ! 1939: nTestsPerformed++; ! 1940: } ! 1941: else if (strcmp (name, "Serpent") == 0) ! 1942: { ! 1943: if (crc != 0x3494d480) ! 1944: return FALSE; ! 1945: nTestsPerformed++; ! 1946: } ! 1947: else if (strcmp (name, "Twofish") == 0) ! 1948: { ! 1949: if (crc != 0xc4d65b46) ! 1950: return FALSE; ! 1951: nTestsPerformed++; ! 1952: } ! 1953: else if (strcmp (name, "AES-Twofish") == 0) ! 1954: { ! 1955: if (crc != 0x14ce7385) ! 1956: return FALSE; ! 1957: nTestsPerformed++; ! 1958: } ! 1959: else if (strcmp (name, "AES-Twofish-Serpent") == 0) ! 1960: { ! 1961: if (crc != 0x0ec81bf7) ! 1962: return FALSE; ! 1963: nTestsPerformed++; ! 1964: } ! 1965: else if (strcmp (name, "Serpent-AES") == 0) ! 1966: { ! 1967: if (crc != 0x42f919ad) ! 1968: return FALSE; ! 1969: nTestsPerformed++; ! 1970: } ! 1971: else if (strcmp (name, "Serpent-Twofish-AES") == 0) ! 1972: { ! 1973: if (crc != 0x208d5c58) ! 1974: return FALSE; ! 1975: nTestsPerformed++; ! 1976: } ! 1977: else if (strcmp (name, "Twofish-Serpent") == 0) ! 1978: { ! 1979: if (crc != 0xbe78cec1) ! 1980: return FALSE; ! 1981: nTestsPerformed++; ! 1982: } ! 1983: ! 1984: if (crc == 0x9f5edd58) ! 1985: return FALSE; ! 1986: ! 1987: DecryptBuffer (buf, sizeof (buf), ci); ! 1988: ! 1989: if (GetCrc32 (buf, sizeof (buf)) != 0x9f5edd58) ! 1990: return FALSE; ! 1991: ! 1992: nTestsPerformed++; ! 1993: } ! 1994: ! 1995: return (nTestsPerformed == 80); ! 1996: } ! 1997: ! 1998: ! 1999: BOOL TestLegacySectorBufEncryption (PCRYPTO_INFO ci) ! 2000: { ! 2001: unsigned char buf [ENCRYPTION_DATA_UNIT_SIZE * 2]; ! 2002: unsigned int i; ! 2003: char name[64]; ! 2004: unsigned __int32 crc; ! 2005: UINT64_STRUCT unitNo; ! 2006: TC_LARGEST_COMPILER_UINT nbrUnits; 1.1.1.2 root 2007: int blockSize; 2008: BOOL lrw64InitDone = FALSE; 2009: BOOL lrw128InitDone = FALSE; 1.1.1.7 ! root 2010: int nTestsPerformed = 0; ! 2011: ! 2012: unitNo.Value = 0x0234567890ABCDEFull; ! 2013: nbrUnits = sizeof (buf) / ENCRYPTION_DATA_UNIT_SIZE; 1.1 root 2014: 1.1.1.2 root 2015: for (i = 0; i < sizeof (buf); i++) 2016: buf[i] = (unsigned char) i; 2017: 1.1.1.7 ! root 2018: for (i = 0; i < sizeof (ci->k2); i++) ! 2019: ci->k2[i] = (unsigned char) i; 1.1.1.2 root 2020: 2021: // Test all EAs 2022: for (ci->ea = EAGetFirst (); ci->ea != 0; ci->ea = EAGetNext (ci->ea)) 2023: { 2024: EAGetName (name, ci->ea); 2025: blockSize = CipherGetBlockSize (EAGetFirstCipher (ci->ea)); 2026: 2027: if (EAInit (ci->ea, (unsigned char *)buf, ci->ks) == ERR_CIPHER_INIT_FAILURE) 1.1 root 2028: return FALSE; 1.1.1.2 root 2029: 2030: // Test all available modes of operation 2031: for (ci->mode = EAGetFirstMode (ci->ea); 2032: ci->mode != 0; 2033: ci->mode = EAGetNextMode (ci->ea, ci->mode)) 2034: { 1.1.1.7 ! root 2035: if (ci->mode == XTS) ! 2036: continue; // XTS mode is tested in another function ! 2037: 1.1.1.2 root 2038: if (ci->mode == LRW 2039: && (blockSize == 8 && !lrw64InitDone || blockSize == 16 && !lrw128InitDone )) 2040: { 2041: if (!EAInitMode (ci)) 2042: return FALSE; 2043: 1.1.1.7 ! root 2044: if (blockSize == 8) 1.1.1.2 root 2045: lrw64InitDone = TRUE; 2046: else if (blockSize == 16) 2047: lrw128InitDone = TRUE; 2048: } 2049: 1.1.1.7 ! root 2050: EncryptDataUnits (buf, &unitNo, nbrUnits, ci); ! 2051: crc = GetCrc32 (buf, sizeof (buf)); 1.1.1.2 root 2052: 2053: switch (ci->mode) 2054: { 1.1.1.7 ! root 2055: case LRW: // Deprecated/legacy ! 2056: if (strcmp (name, "AES") == 0) ! 2057: { ! 2058: if (crc != 0x5237acf9) ! 2059: return FALSE; ! 2060: nTestsPerformed++; ! 2061: } ! 2062: else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy ! 2063: { ! 2064: if (crc != 0xf94d5300) ! 2065: return FALSE; ! 2066: nTestsPerformed++; ! 2067: } ! 2068: else if (strcmp (name, "CAST5") == 0) // Deprecated/legacy ! 2069: { ! 2070: if (crc != 0x33971e82) ! 2071: return FALSE; ! 2072: nTestsPerformed++; ! 2073: } ! 2074: else if (strcmp (name, "Serpent") == 0) ! 2075: { ! 2076: if (crc != 0x7fb86805) ! 2077: return FALSE; ! 2078: nTestsPerformed++; ! 2079: } ! 2080: else if (strcmp (name, "Triple DES") == 0) // Deprecated/legacy ! 2081: { ! 2082: if (crc != 0x2b20bb84) ! 2083: return FALSE; ! 2084: nTestsPerformed++; ! 2085: } ! 2086: else if (strcmp (name, "Twofish") == 0) ! 2087: { ! 2088: if (crc != 0xa9de0f0b) ! 2089: return FALSE; ! 2090: nTestsPerformed++; ! 2091: } ! 2092: else if (strcmp (name, "AES-Twofish") == 0) ! 2093: { ! 2094: if (crc != 0x4ed0fd80) ! 2095: return FALSE; ! 2096: nTestsPerformed++; ! 2097: } ! 2098: else if (strcmp (name, "AES-Twofish-Serpent") == 0) ! 2099: { ! 2100: if (crc != 0xea04b3cf) ! 2101: return FALSE; ! 2102: nTestsPerformed++; ! 2103: } ! 2104: else if (strcmp (name, "Serpent-AES") == 0) ! 2105: { ! 2106: if (crc != 0x0d33596a) ! 2107: return FALSE; ! 2108: nTestsPerformed++; ! 2109: } ! 2110: else if (strcmp (name, "Serpent-Twofish-AES") == 0) ! 2111: { ! 2112: if (crc != 0x2845d0e3) ! 2113: return FALSE; ! 2114: nTestsPerformed++; ! 2115: } ! 2116: else if (strcmp (name, "Twofish-Serpent") == 0) ! 2117: { ! 2118: if (crc != 0xca65c5cd) ! 2119: return FALSE; ! 2120: nTestsPerformed++; ! 2121: } 1.1.1.2 root 2122: break; 2123: 1.1.1.6 root 2124: case CBC: // Deprecated/legacy 2125: case INNER_CBC: // Deprecated/legacy 2126: case OUTER_CBC: // Deprecated/legacy 1.1.1.7 ! root 2127: if (strcmp (name, "AES") == 0) ! 2128: { ! 2129: if (crc != 0x2274f53d) ! 2130: return FALSE; ! 2131: nTestsPerformed++; ! 2132: } ! 2133: else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy ! 2134: { ! 2135: if (crc != 0x033899a1) ! 2136: return FALSE; ! 2137: nTestsPerformed++; ! 2138: } ! 2139: else if (strcmp (name, "CAST5") == 0) // Deprecated/legacy ! 2140: { ! 2141: if (crc != 0x331cecc7) ! 2142: return FALSE; ! 2143: nTestsPerformed++; ! 2144: } ! 2145: else if (strcmp (name, "Serpent") == 0) ! 2146: { ! 2147: if (crc != 0x42dff3d4) ! 2148: return FALSE; ! 2149: nTestsPerformed++; ! 2150: } ! 2151: else if (strcmp (name, "Triple DES") == 0) // Deprecated/legacy ! 2152: { ! 2153: if (crc != 0xfe497d0c) ! 2154: return FALSE; ! 2155: nTestsPerformed++; ! 2156: } ! 2157: else if (strcmp (name, "AES-Blowfish") == 0) // Deprecated/legacy ! 2158: { ! 2159: if (crc != 0xa7a80c84) ! 2160: return FALSE; ! 2161: nTestsPerformed++; ! 2162: } ! 2163: else if (strcmp (name, "AES-Blowfish-Serpent") == 0) // Deprecated/legacy ! 2164: { ! 2165: if (crc != 0xa0584562) ! 2166: return FALSE; ! 2167: nTestsPerformed++; ! 2168: } ! 2169: else if (strcmp (name, "AES-Twofish") == 0) ! 2170: { ! 2171: if (crc != 0x3c226444) ! 2172: return FALSE; ! 2173: nTestsPerformed++; ! 2174: } ! 2175: else if (strcmp (name, "AES-Twofish-Serpent") == 0) ! 2176: { ! 2177: if (crc != 0x5e5e77fd) ! 2178: return FALSE; ! 2179: nTestsPerformed++; ! 2180: } ! 2181: else if (strcmp (name, "Serpent-AES") == 0) ! 2182: { ! 2183: if (crc != 0x57c612d5) ! 2184: return FALSE; ! 2185: nTestsPerformed++; ! 2186: } ! 2187: else if (strcmp (name, "Serpent-Twofish-AES") == 0) ! 2188: { ! 2189: if (crc != 0x081e045a) ! 2190: return FALSE; ! 2191: nTestsPerformed++; ! 2192: } ! 2193: else if (strcmp (name, "Twofish-Serpent") == 0) ! 2194: { ! 2195: if (crc != 0xa7b659f3) ! 2196: return FALSE; ! 2197: nTestsPerformed++; ! 2198: } 1.1.1.2 root 2199: break; 2200: } 2201: 2202: if (crc == 0xb70b4c26) 2203: return FALSE; 2204: 1.1.1.7 ! root 2205: DecryptDataUnits (buf, &unitNo, nbrUnits, ci); 1.1.1.2 root 2206: 1.1.1.7 ! root 2207: if (GetCrc32 (buf, sizeof (buf)) != 0xb70b4c26) 1.1.1.2 root 2208: return FALSE; 2209: 1.1.1.7 ! root 2210: nTestsPerformed++; ! 2211: ! 2212: EncryptBuffer (buf, sizeof (buf), ci); ! 2213: crc = GetCrc32 (buf, sizeof (buf)); 1.1.1.2 root 2214: 2215: switch (ci->mode) 2216: { 1.1.1.7 ! root 2217: case LRW: // Deprecated/legacy ! 2218: if (strcmp (name, "AES") == 0) ! 2219: { ! 2220: if (crc != 0x5ae1e3d8) ! 2221: return FALSE; ! 2222: nTestsPerformed++; ! 2223: } ! 2224: else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy ! 2225: { ! 2226: if (crc != 0x2738426f) ! 2227: return FALSE; ! 2228: nTestsPerformed++; ! 2229: } ! 2230: else if (strcmp (name, "AES-Twofish-Serpent") == 0) ! 2231: { ! 2232: if (crc != 0x14f2948a) ! 2233: return FALSE; ! 2234: nTestsPerformed++; ! 2235: } 1.1.1.2 root 2236: break; 2237: 1.1.1.6 root 2238: case CBC: // Deprecated/legacy 2239: case INNER_CBC: // Deprecated/legacy 2240: case OUTER_CBC: // Deprecated/legacy 1.1.1.7 ! root 2241: if (strcmp (name, "AES") == 0) ! 2242: { ! 2243: if (crc != 0x960f740e) ! 2244: return FALSE; ! 2245: nTestsPerformed++; ! 2246: } ! 2247: else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy ! 2248: { ! 2249: if (crc != 0x7e1cfabb) ! 2250: return FALSE; ! 2251: nTestsPerformed++; ! 2252: } ! 2253: else if (strcmp (name, "CAST5") == 0) // Deprecated/legacy ! 2254: { ! 2255: if (crc != 0xeaae21c8) ! 2256: return FALSE; ! 2257: nTestsPerformed++; ! 2258: } ! 2259: else if (strcmp (name, "Serpent") == 0) ! 2260: { ! 2261: if (crc != 0xa8139d62) ! 2262: return FALSE; ! 2263: nTestsPerformed++; ! 2264: } ! 2265: else if (strcmp (name, "Triple DES") == 0) // Deprecated/legacy ! 2266: { ! 2267: if (crc != 0xecf5d7d0) ! 2268: return FALSE; ! 2269: nTestsPerformed++; ! 2270: } ! 2271: else if (strcmp (name, "AES-Blowfish") == 0) // Deprecated/legacy ! 2272: { ! 2273: if (crc != 0xb70171b6) ! 2274: return FALSE; ! 2275: nTestsPerformed++; ! 2276: } ! 2277: else if (strcmp (name, "AES-Blowfish-Serpent") == 0) // Deprecated/legacy ! 2278: { ! 2279: if (crc != 0x1e749a87) ! 2280: return FALSE; ! 2281: nTestsPerformed++; ! 2282: } ! 2283: else if (strcmp (name, "AES-Twofish") == 0) ! 2284: { ! 2285: if (crc != 0xb4b8bb9b) ! 2286: return FALSE; ! 2287: nTestsPerformed++; ! 2288: } ! 2289: else if (strcmp (name, "AES-Twofish-Serpent") == 0) ! 2290: { ! 2291: if (crc != 0x76b6c1cb) ! 2292: return FALSE; ! 2293: nTestsPerformed++; ! 2294: } ! 2295: else if (strcmp (name, "Serpent-AES") == 0) ! 2296: { ! 2297: if (crc != 0x634f12ed) ! 2298: return FALSE; ! 2299: nTestsPerformed++; ! 2300: } ! 2301: else if (strcmp (name, "Serpent-Twofish-AES") == 0) ! 2302: { ! 2303: if (crc != 0xe54bc1b9) ! 2304: return FALSE; ! 2305: nTestsPerformed++; ! 2306: } ! 2307: else if (strcmp (name, "Twofish-Serpent") == 0) ! 2308: { ! 2309: if (crc != 0x21cdb382) ! 2310: return FALSE; ! 2311: nTestsPerformed++; ! 2312: } 1.1.1.2 root 2313: break; 2314: } 2315: 2316: if (crc == 0xb70b4c26) 2317: return FALSE; 2318: 1.1.1.7 ! root 2319: DecryptBuffer (buf, sizeof (buf), ci); 1.1.1.2 root 2320: 1.1.1.7 ! root 2321: if (GetCrc32 (buf, sizeof (buf)) != 0xb70b4c26) 1.1.1.2 root 2322: return FALSE; 1.1.1.7 ! root 2323: ! 2324: nTestsPerformed++; 1.1.1.2 root 2325: } 1.1 root 2326: } 1.1.1.7 ! root 2327: return (nTestsPerformed == 86); 1.1 root 2328: } 2329: 2330: 2331: BOOL AutoTestAlgorithms (void) 2332: { 1.1.1.2 root 2333: PCRYPTO_INFO ci; 1.1 root 2334: char key[32]; 2335: unsigned char tmp[16]; 2336: BOOL bFailed = FALSE; 2337: int i; 2338: 1.1.1.2 root 2339: ci = crypto_open (); 2340: if (!ci) 2341: return FALSE; 2342: 2343: memset (ci, 0, sizeof (*ci)); 2344: 1.1.1.6 root 2345: /* Blowfish (deprecated/legacy) */ 1.1 root 2346: 2347: for (i=0;i<BF_TEST_COUNT;i++) 2348: { 2349: memcpy(key, bf_ecb_vectors[i].key, 8); 2350: memcpy(tmp, bf_ecb_vectors[i].plaintext, 8); 2351: CipherInit2(BLOWFISH, key, ks_tmp, 8); 2352: BF_ecb_encrypt(tmp,tmp,(struct bf_key_st *)ks_tmp,1); 2353: if (memcmp(bf_ecb_vectors[i].ciphertext,tmp,8)!=0) 2354: break; 2355: } 2356: 2357: if (i==BF_TEST_COUNT) 2358: { 2359: /* Test the Blowfish code against Bruce Schneiers test vectors (1 & 2) and 2360: Mike Morgans test vector (3) */ 2361: 2362: unsigned char *plain1 = ( unsigned char * ) "BLOWFISH"; 2363: unsigned char *key1 = ( unsigned char * ) "abcdefghijklmnopqrstuvwxyz"; 2364: unsigned char cipher1[] = { 0x32, 0x4E, 0xD0, 0xFE, 0xF4, 0x13, 0xA2, 0x03 }; 2365: unsigned char plain2[] = { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }; 2366: unsigned char *key2 = ( unsigned char * ) "Who is John Galt?"; 2367: unsigned char cipher2[] = { 0xCC, 0x91, 0x73, 0x2B, 0x80, 0x22, 0xF6, 0x84 }; 2368: unsigned char plain3[] = { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }; 2369: unsigned char key3[] = { 0x41, 0x79, 0x6E, 0xA0, 0x52, 0x61, 0x6E, 0xE4 }; 2370: unsigned char cipher3[] = { 0xE1, 0x13, 0xF4, 0x10, 0x2C, 0xFC, 0xCE, 0x43 }; 2371: unsigned char tmp[8]; 2372: 2373: 2374: CipherInit2(BLOWFISH, key1, ks_tmp, 26); 2375: BF_ecb_encrypt(plain1,tmp,(struct bf_key_st *)ks_tmp,1); 2376: if (memcmp(cipher1,tmp,8)!=0) 2377: bFailed = TRUE; 2378: 2379: CipherInit2(BLOWFISH, key2, ks_tmp, 17); 2380: BF_ecb_encrypt(plain2,tmp,(struct bf_key_st *)ks_tmp,1); 2381: if (memcmp(cipher2,tmp,8)!=0) 2382: bFailed = TRUE; 2383: 2384: CipherInit2(BLOWFISH, key3, ks_tmp, 8); 2385: BF_ecb_encrypt(plain3,tmp,(struct bf_key_st *)ks_tmp,1); 2386: if (memcmp(cipher3,tmp,8)!=0) 2387: bFailed = TRUE; 2388: 2389: } else 2390: bFailed = TRUE; 2391: 2392: 1.1.1.6 root 2393: /* CAST5 (deprecated/legacy) */ 1.1 root 2394: 2395: for (i=0;i<CAST_TEST_COUNT;i++) 2396: { 2397: int cipher = CAST; 2398: memcpy(key, cast_ecb_vectors[i].key, 16); 2399: memcpy(tmp, cast_ecb_vectors[i].plaintext, 8); 2400: CipherInit2(cipher, key, ks_tmp, 16); 2401: EncipherBlock(cipher, tmp, ks_tmp); 2402: if (memcmp(cast_ecb_vectors[i].ciphertext, tmp,8)!=0) 2403: break; 2404: } 2405: 2406: if (i!=CAST_TEST_COUNT) 2407: bFailed = TRUE; 2408: 2409: 1.1.1.6 root 2410: /* DES (deprecated/legacy) */ 1.1 root 2411: 2412: if (Des56TestLoop(des56_ecb_vectors_ip, DES56_TEST_COUNT_IP,1)!=TRUE) 2413: bFailed = TRUE; 2414: if (Des56TestLoop(des56_ecb_vectors_vp, DES56_TEST_COUNT_VP,1)!=TRUE) 2415: bFailed = TRUE; 2416: if (Des56TestLoop(des56_ecb_vectors_kp, DES56_TEST_COUNT_KP,1)!=TRUE) 2417: bFailed = TRUE; 2418: if (Des56TestLoop(des56_ecb_vectors_rs, DES56_TEST_COUNT_RS,0)!=TRUE) 2419: bFailed = TRUE; 2420: if (Des56TestLoop(des56_ecb_vectors_dp, DES56_TEST_COUNT_DP,1)!=TRUE) 2421: bFailed = TRUE; 2422: if (Des56TestLoop(des56_ecb_vectors_sb, DES56_TEST_COUNT_SB,1)!=TRUE) 2423: bFailed = TRUE; 2424: 2425: 1.1.1.6 root 2426: /* Triple DES (TECB, EDE) - deprecated/legacy */ 1.1 root 2427: 2428: for (i = 0; i < TRIPLEDES_TEST_COUNT; i++) 2429: { 2430: int cipher = TRIPLEDES; 2431: memcpy(key, tripledes_vectors[i].key, sizeof(tripledes_vectors->key)); 2432: memcpy(tmp, tripledes_vectors[i].plaintext, sizeof(tripledes_vectors->plaintext)); 2433: CipherInit(cipher, key, ks_tmp); 2434: 2435: EncipherBlock(cipher, tmp, ks_tmp); 2436: if (memcmp(tripledes_vectors[i].ciphertext, tmp, sizeof(tripledes_vectors->ciphertext)) != 0) 2437: break; 2438: 2439: DecipherBlock(cipher, tmp, ks_tmp); 2440: if (memcmp(tripledes_vectors[i].plaintext, tmp, sizeof(tripledes_vectors->plaintext)) != 0) 2441: break; 2442: } 2443: if (i != TRIPLEDES_TEST_COUNT) 2444: bFailed = TRUE; 2445: 2446: 2447: /* AES */ 2448: 2449: for (i = 0; i < AES_TEST_COUNT; i++) 2450: { 2451: int cipher = AES; 2452: memcpy(key, aes_ecb_vectors[i].key, 32); 2453: memcpy(tmp, aes_ecb_vectors[i].plaintext, 16); 2454: CipherInit(cipher, key, ks_tmp); 2455: 2456: EncipherBlock(cipher, tmp, ks_tmp); 2457: if (memcmp(aes_ecb_vectors[i].ciphertext, tmp, 16) != 0) 2458: break; 2459: 2460: DecipherBlock(cipher, tmp, ks_tmp); 2461: if (memcmp(aes_ecb_vectors[i].plaintext, tmp, 16) != 0) 2462: break; 2463: } 2464: if (i != AES_TEST_COUNT) 2465: bFailed = TRUE; 2466: 2467: 2468: /* Serpent */ 2469: 2470: for (i = 0; i < SERPENT_TEST_COUNT; i++) 2471: { 2472: int cipher = SERPENT; 2473: memcpy(key, serpent_vectors[i].key, 32); 2474: memcpy(tmp, serpent_vectors[i].plaintext, 16); 2475: CipherInit(cipher, key, ks_tmp); 2476: 2477: EncipherBlock(cipher, tmp, ks_tmp); 2478: if (memcmp(serpent_vectors[i].ciphertext, tmp, 16) != 0) 2479: break; 2480: 2481: DecipherBlock(cipher, tmp, ks_tmp); 2482: if (memcmp(serpent_vectors[i].plaintext, tmp, 16) != 0) 2483: break; 2484: } 2485: if (i != SERPENT_TEST_COUNT) 2486: bFailed = TRUE; 2487: 2488: 2489: /* Twofish */ 2490: 2491: for (i = 0; i < TWOFISH_TEST_COUNT; i++) 2492: { 2493: int cipher = TWOFISH; 2494: memcpy(key, twofish_vectors[i].key, 32); 2495: memcpy(tmp, twofish_vectors[i].plaintext, 16); 2496: CipherInit(cipher, key, ks_tmp); 2497: 2498: EncipherBlock(cipher, tmp, ks_tmp); 2499: if (memcmp(twofish_vectors[i].ciphertext, tmp, 16) != 0) 2500: break; 2501: 2502: DecipherBlock(cipher, tmp, ks_tmp); 2503: if (memcmp(twofish_vectors[i].plaintext, tmp, 16) != 0) 2504: break; 2505: } 2506: if (i != TWOFISH_TEST_COUNT) 2507: bFailed = TRUE; 2508: 2509: 2510: /* PKCS #5 and HMACs */ 2511: #ifndef LINUX_DRIVER 2512: if (!test_pkcs5 ()) 2513: bFailed = TRUE; 2514: #endif 2515: 2516: /* CRC-32 */ 2517: if (!crc32_selftests ()) 2518: bFailed = TRUE; 2519: 1.1.1.2 root 2520: /* GF multiplicator */ 2521: #if 0 2522: if (!GfMulSelfTest ()) 2523: bFailed = TRUE; 2524: #endif 2525: 1.1.1.7 ! root 2526: /* XTS-AES */ ! 2527: if (!XTSAesTest (ci)) ! 2528: bFailed = TRUE; ! 2529: ! 2530: /* LRW-AES (deprecated/legacy) */ 1.1.1.2 root 2531: if (!LRWAesTest (ci)) 2532: bFailed = TRUE; 2533: 1.1.1.7 ! root 2534: /* Sector and buffer related algorithms */ 1.1.1.2 root 2535: if (!TestSectorBufEncryption (ci)) 1.1 root 2536: bFailed = TRUE; 2537: 1.1.1.2 root 2538: crypto_close (ci); 1.1 root 2539: return !bFailed; 2540: } 2541: 2542: #ifndef LINUX_DRIVER 1.1.1.7 ! root 2543: ! 2544: BOOL test_hmac_sha512 () ! 2545: { ! 2546: unsigned int i; ! 2547: int nTestsPerformed = 0; ! 2548: ! 2549: for (i = 0; i < sizeof (hmac_sha512_test_data) / sizeof(char *); i++) ! 2550: { ! 2551: char digest[SHA512_DIGESTSIZE]; ! 2552: hmac_sha512 (hmac_sha512_test_keys[i], strlen (hmac_sha512_test_keys[i]), hmac_sha512_test_data[i], strlen (hmac_sha512_test_data[i]), digest, SHA512_DIGESTSIZE); ! 2553: if (memcmp (digest, hmac_sha512_test_vectors[i], SHA512_DIGESTSIZE) != 0) ! 2554: return FALSE; ! 2555: else ! 2556: nTestsPerformed++; ! 2557: } ! 2558: ! 2559: return (nTestsPerformed == 6); ! 2560: } ! 2561: 1.1 root 2562: BOOL test_hmac_sha1 () 2563: { 1.1.1.7 ! root 2564: // Deprecated/legacy ! 2565: ! 2566: int nTestsPerformed = 0; 1.1 root 2567: int i; 2568: 2569: for (i = 0; i < 3; i++) 2570: { 2571: char digest[SHA1_DIGESTSIZE]; 2572: 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); 2573: if (memcmp (digest, hmac_sha1_test_vectors[i], SHA1_DIGESTSIZE) != 0) 2574: return FALSE; 1.1.1.7 ! root 2575: else ! 2576: nTestsPerformed++; 1.1 root 2577: } 2578: 1.1.1.7 ! root 2579: return (nTestsPerformed == 3); 1.1 root 2580: } 2581: 2582: BOOL test_hmac_ripemd160 () 2583: { 1.1.1.7 ! root 2584: int nTestsPerformed = 0; 1.1 root 2585: unsigned int i; 1.1.1.7 ! root 2586: 1.1 root 2587: for (i = 0; i < sizeof (hmac_ripemd160_test_data) / sizeof(char *); i++) 2588: { 2589: char digest[RIPEMD160_DIGESTSIZE]; 2590: hmac_ripemd160 (hmac_ripemd160_test_keys[i], RIPEMD160_DIGESTSIZE, hmac_ripemd160_test_data[i], strlen (hmac_ripemd160_test_data[i]), digest); 2591: if (memcmp (digest, hmac_ripemd160_test_vectors[i], RIPEMD160_DIGESTSIZE) != 0) 2592: return FALSE; 1.1.1.7 ! root 2593: else ! 2594: nTestsPerformed++; 1.1 root 2595: } 2596: 1.1.1.7 ! root 2597: return (nTestsPerformed == 2); 1.1 root 2598: } 2599: 2600: BOOL test_hmac_whirlpool () 2601: { 2602: unsigned char digest[WHIRLPOOL_DIGESTSIZE]; 2603: 2604: hmac_whirlpool (hmac_whirlpool_test_key, 64, hmac_whirlpool_test_data, strlen (hmac_whirlpool_test_data), digest, WHIRLPOOL_DIGESTSIZE); 2605: if (memcmp (digest, hmac_whirlpool_test_vectors, WHIRLPOOL_DIGESTSIZE) != 0) 2606: return FALSE; 2607: 2608: return TRUE; 2609: } 2610: 2611: BOOL test_pkcs5 () 2612: { 1.1.1.7 ! root 2613: char dk[144]; 1.1 root 2614: 1.1.1.7 ! root 2615: /* HMAC-SHA-512 tests */ ! 2616: if (!test_hmac_sha512()) ! 2617: return FALSE; ! 2618: ! 2619: /* HMAC-SHA-1 tests (deprecated/legacy) */ 1.1 root 2620: if (test_hmac_sha1() == FALSE) 2621: return FALSE; 2622: 2623: /* HMAC-RIPEMD-160 tests */ 2624: if (test_hmac_ripemd160() == FALSE) 2625: return FALSE; 2626: 2627: /* HMAC-Whirlpool tests */ 2628: if (test_hmac_whirlpool() == FALSE) 2629: return FALSE; 2630: 1.1.1.7 ! root 2631: /* PKCS-5 test 1 with HMAC-SHA-512 used as the PRF */ ! 2632: derive_key_sha512 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); ! 2633: if (memcmp (dk, "\x13\x64\xae\xf8", 4) != 0) ! 2634: return FALSE; ! 2635: ! 2636: /* PKCS-5 test 2 with HMAC-SHA-512 used as the PRF (derives a key longer than the underlying ! 2637: hash output size and block size) */ ! 2638: derive_key_sha512 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 144); ! 2639: if (memcmp (dk, "\x13\x64\xae\xf8\x0d\xf5\x57\x6c\x30\xd5\x71\x4c\xa7\x75\x3f\xfd\x00\xe5\x25\x8b\x39\xc7\x44\x7f\xce\x23\x3d\x08\x75\xe0\x2f\x48\xd6\x30\xd7\x00\xb6\x24\xdb\xe0\x5a\xd7\x47\xef\x52\xca\xa6\x34\x83\x47\xe5\xcb\xe9\x87\xf1\x20\x59\x6a\xe6\xa9\xcf\x51\x78\xc6\xb6\x23\xa6\x74\x0d\xe8\x91\xbe\x1a\xd0\x28\xcc\xce\x16\x98\x9a\xbe\xfb\xdc\x78\xc9\xe1\x7d\x72\x67\xce\xe1\x61\x56\x5f\x96\x68\xe6\xe1\xdd\xf4\xbf\x1b\x80\xe0\x19\x1c\xf4\xc4\xd3\xdd\xd5\xd5\x57\x2d\x83\xc7\xa3\x37\x87\xf4\x4e\xe0\xf6\xd8\x6d\x65\xdc\xa0\x52\xa3\x13\xbe\x81\xfc\x30\xbe\x7d\x69\x58\x34\xb6\xdd\x41\xc6", 144) != 0) ! 2640: return FALSE; ! 2641: ! 2642: /* PKCS-5 test 1 with HMAC-SHA-1 (deprecated/legacy) used as the PRF (derives a key longer than the underlying hash) */ ! 2643: derive_key_sha1 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 48); ! 2644: if (memcmp (dk, "\x5c\x75\xce\xf0\x1a\x96\x0d\xf7\x4c\xb6\xb4\x9b\x9e\x38\xe6\xb5\x3b\x11\x80\xe3\x2f\xf7\xe0\xdd\xaa\xca\x8f\x81\x27\xf6\x9f\x4f\x1d\xc8\x2f\x48\x2d\xdb\x1a\x0a\xca\x90\xcb\x80\xb9\x2e\x90\x9e", 48) != 0) ! 2645: return FALSE; ! 2646: ! 2647: /* PKCS-5 test 2 with HMAC-SHA-1 (deprecated/legacy) used as the PRF */ 1.1 root 2648: derive_key_sha1 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); 2649: if (memcmp (dk, "\x5c\x75\xce\xf0", 4) != 0) 2650: return FALSE; 2651: 1.1.1.7 ! root 2652: #if 0 // This test is disabled because it uses 1200 iterations (to prevent startup slowdown) ! 2653: /* PKCS-5 test 3 with HMAC-SHA-1 (deprecated/legacy) used as the PRF */ ! 2654: derive_key_sha1 ("password", 8, "ATHENA.MIT.EDUraeburn", 21, 1200, dk, 16); ! 2655: if (memcmp (dk, "\x5c\x08\xeb\x61\xfd\xf7\x1e\x4e\x4e\xc3\xcf\x6b\xa1\xf5\x51\x2b", 16) != 0) ! 2656: return FALSE; ! 2657: #endif ! 2658: ! 2659: /* PKCS-5 test 1 with HMAC-RIPEMD-160 used as the PRF */ 1.1 root 2660: derive_key_ripemd160 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); 2661: if (memcmp (dk, "\x7a\x3d\x7c\x03", 4) != 0) 2662: return FALSE; 2663: 1.1.1.7 ! root 2664: /* PKCS-5 test 2 with HMAC-RIPEMD-160 used as the PRF (derives a key longer than the underlying hash) */ ! 2665: derive_key_ripemd160 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 48); ! 2666: if (memcmp (dk, "\x7a\x3d\x7c\x03\xe7\x26\x6b\xf8\x3d\x78\xfb\x29\xd2\x64\x1f\x56\xea\xf0\xe5\xf5\xcc\xc4\x3a\x31\xa8\x84\x70\xbf\xbd\x6f\x8e\x78\x24\x5a\xc0\x0a\xf6\xfa\xf0\xf6\xe9\x00\x47\x5f\x73\xce\xe1\x43", 48) != 0) ! 2667: return FALSE; ! 2668: ! 2669: /* PKCS-5 test 1 with HMAC-Whirlpool used as the PRF */ 1.1 root 2670: derive_key_whirlpool ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4); 2671: if (memcmp (dk, "\x50\x7c\x36\x6f", 4) != 0) 2672: return FALSE; 2673: 1.1.1.7 ! root 2674: /* PKCS-5 test 2 with HMAC-Whirlpool used as the PRF (derives a key longer than the underlying hash) */ ! 2675: derive_key_whirlpool ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 96); ! 2676: if (memcmp (dk, "\x50\x7c\x36\x6f\xee\x10\x2e\x9a\xe2\x8a\xd5\x82\x72\x7d\x27\x0f\xe8\x4d\x7f\x68\x7a\xcf\xb5\xe7\x43\x67\xaa\x98\x93\x52\x2b\x09\x6e\x42\xdf\x2c\x59\x4a\x91\x6d\x7e\x10\xae\xb2\x1a\x89\x8f\xb9\x8f\xe6\x31\xa9\xd8\x9f\x98\x26\xf4\xda\xcd\x7d\x65\x65\xde\x10\x95\x91\xb4\x84\x26\xae\x43\xa1\x00\x5b\x1e\xb8\x38\x97\xa4\x1e\x4b\xd2\x65\x64\xbc\xfa\x1f\x35\x85\xdb\x4f\x97\x65\x6f\xbd\x24", 96) != 0) ! 2677: return FALSE; ! 2678: 1.1 root 2679: return TRUE; 2680: } 2681: #endif /* LINUX_DRIVER */ 2682:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.