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