@@ -47,13 +47,7 @@ namespace VeraCrypt
4747 struct CipherTestVector
4848 {
4949 uint8 Key[32 ];
50- uint8 Plaintext[16 ];
51- uint8 Ciphertext[16 ];
52- };
53-
54- struct Cipher128TestVector
55- {
56- uint8 Key[16 ];
50+ size_t KeyLength;
5751 uint8 Plaintext[16 ];
5852 uint8 Ciphertext[16 ];
5953 };
@@ -65,6 +59,7 @@ namespace VeraCrypt
6559 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f ,
6660 0x10 , 0x11 , 0x12 , 0x13 , 0x14 , 0x15 , 0x16 , 0x17 , 0x18 , 0x19 , 0x1a , 0x1b , 0x1c , 0x1d , 0x1e , 0x1f ,
6761 },
62+ 32 ,
6863 {
6964 0x00 , 0x11 , 0x22 , 0x33 , 0x44 , 0x55 , 0x66 , 0x77 , 0x88 , 0x99 , 0xaa , 0xbb , 0xcc , 0xdd , 0xee , 0xff
7065 },
@@ -82,6 +77,7 @@ namespace VeraCrypt
8277 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f ,
8378 0x10 , 0x11 , 0x12 , 0x13 , 0x14 , 0x15 , 0x16 , 0x17 , 0x18 , 0x19 , 0x1a , 0x1b , 0x1c , 0x1d , 0x1e , 0x1f
8479 },
80+ 32 ,
8581 {
8682 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f
8783 },
@@ -98,6 +94,7 @@ namespace VeraCrypt
9894 0xD4 , 0x3B , 0xB7 , 0x55 , 0x6E , 0xA3 , 0x2E , 0x46 , 0xF2 , 0xA2 , 0x82 , 0xB7 , 0xD4 , 0x5B , 0x4E , 0x0D ,
9995 0x57 , 0xFF , 0x73 , 0x9D , 0x4D , 0xC9 , 0x2C , 0x1B , 0xD7 , 0xFC , 0x01 , 0x70 , 0x0C , 0xC8 , 0x21 , 0x6F
10096 },
97+ 32 ,
10198 {
10299 0x90 , 0xAF , 0xE9 , 0x1B , 0xB2 , 0x88 , 0x54 , 0x4F , 0x2C , 0x32 , 0xDC , 0x23 , 0x9B , 0x26 , 0x35 , 0xE6
103100 },
@@ -114,6 +111,7 @@ namespace VeraCrypt
114111 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF , 0xFE , 0xDC , 0xBA , 0x98 , 0x76 , 0x54 , 0x32 , 0x10 ,
115112 0x00 , 0x11 , 0x22 , 0x33 , 0x44 , 0x55 , 0x66 , 0x77 , 0x88 , 0x99 , 0xAA , 0xBB , 0xCC , 0xDD , 0xEE , 0xFF
116113 },
114+ 32 ,
117115 {
118116 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF , 0xFE , 0xDC , 0xBA , 0x98 , 0x76 , 0x54 , 0x32 , 0x10
119117 },
@@ -126,6 +124,7 @@ namespace VeraCrypt
126124 0x2B , 0xD6 , 0x45 , 0x9F , 0x82 , 0xC5 , 0xB3 , 0x00 , 0x95 , 0x2C , 0x49 , 0x10 , 0x48 , 0x81 , 0xFF , 0x48 ,
127125 0x2B , 0xD6 , 0x45 , 0x9F , 0x82 , 0xC5 , 0xB3 , 0x00 , 0x95 , 0x2C , 0x49 , 0x10 , 0x48 , 0x81 , 0xFF , 0x48
128126 },
127+ 32 ,
129128 {
130129 0xE6 , 0x84 , 0x42 , 0x17 , 0x16 , 0xFC , 0x0B , 0x01 , 0xAE , 0xB5 , 0xC6 , 0x76 , 0x51 , 0x20 , 0xF9 , 0x5F
131130 },
@@ -142,6 +141,7 @@ namespace VeraCrypt
142141 0x88 , 0x99 , 0xAA , 0xBB , 0xCC , 0xDD , 0xEE , 0xFF , 0x00 , 0x11 , 0x22 , 0x33 , 0x44 , 0x55 , 0x66 , 0x77 ,
143142 0xFE , 0xDC , 0xBA , 0x98 , 0x76 , 0x54 , 0x32 , 0x10 , 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF
144143 },
144+ 32 ,
145145 {
146146 0x11 , 0x22 , 0x33 , 0x44 , 0x55 , 0x66 , 0x77 , 0x00 , 0xFF , 0xEE , 0xDD , 0xCC , 0xBB , 0xAA , 0x99 , 0x88
147147 },
@@ -154,6 +154,7 @@ namespace VeraCrypt
154154 0x88 , 0x99 , 0xAA , 0xBB , 0xCC , 0xDD , 0xEE , 0xFF , 0x00 , 0x11 , 0x22 , 0x33 , 0x44 , 0x55 , 0x66 , 0x77 ,
155155 0xFE , 0xDC , 0xBA , 0x98 , 0x76 , 0x54 , 0x32 , 0x10 , 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF
156156 },
157+ 32 ,
157158 {
158159 0x00 , 0x11 , 0x22 , 0x33 , 0x44 , 0x55 , 0x66 , 0x77 , 0x88 , 0x99 , 0xAA , 0xBB , 0xCC , 0xEE , 0xFF , 0x0A
159160 },
@@ -170,6 +171,7 @@ namespace VeraCrypt
170171 { 0x01 ,0x23 ,0x45 ,0x67 ,0x89 ,0xab ,0xcd ,0xef ,0xfe ,0xdc ,0xba ,0x98 ,0x76 ,0x54 ,0x32 ,0x10 ,
171172 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
172173 },
174+ 16 ,
173175 { 0x01 ,0x23 ,0x45 ,0x67 ,0x89 ,0xab ,0xcd ,0xef ,0xfe ,0xdc ,0xba ,0x98 ,0x76 ,0x54 ,0x32 ,0x10 },
174176 { 0x68 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x46 }
175177 },
@@ -178,6 +180,7 @@ namespace VeraCrypt
178180 { 0x68 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x46 ,
179181 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
180182 },
183+ 16 ,
181184 { 0xf4 ,0x21 ,0x31 ,0xb0 ,0x02 ,0x42 ,0x5b ,0x6f ,0x5c ,0xf5 ,0x2a ,0x81 ,0x06 ,0x82 ,0xa0 ,0x9d },
182185 { 0xec ,0x4b ,0x7b ,0x17 ,0x57 ,0xfe ,0xe9 ,0xce ,0x45 ,0x51 ,0x97 ,0xe5 ,0xbf ,0x9c ,0x3a ,0x90 }
183186 },
@@ -186,20 +189,23 @@ namespace VeraCrypt
186189 { 0x68 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x46 ,
187190 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
188191 },
192+ 16 ,
189193 { 0x07 ,0xbc ,0xae ,0x6a ,0x83 ,0x88 ,0xe1 ,0x46 ,0x51 ,0xfe ,0xd8 ,0x4b ,0x37 ,0x49 ,0xd3 ,0x86 },
190194 { 0x89 ,0xf2 ,0xc4 ,0x1e ,0xd9 ,0x7d ,0xbb ,0x1b ,0x74 ,0xa2 ,0xad ,0x93 ,0xb9 ,0x03 ,0xbb ,0xc9 }
191195 },
192196 {
193197 { 0x68 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x46 ,
194198 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
195199 },
200+ 16 ,
196201 { 0xf4 ,0x76 ,0x26 ,0x15 ,0xb3 ,0x2c ,0x00 ,0x0a ,0x16 ,0x5e ,0x1d ,0x72 ,0x2d ,0x70 ,0x80 ,0x52 },
197202 { 0xf4 ,0x5a ,0x41 ,0x05 ,0x2f ,0x9b ,0xf3 ,0xd5 ,0xb6 ,0x5d ,0xf8 ,0xcc ,0x1c ,0x75 ,0xb4 ,0xcf }
198203 },
199204 {
200205 { 0x68 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x46 ,
201206 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
202207 },
208+ 16 ,
203209 { 0xba ,0x3c ,0x19 ,0xd8 ,0x92 ,0x63 ,0x56 ,0xed ,0x14 ,0x91 ,0xc6 ,0xe4 ,0xe5 ,0x28 ,0x78 ,0x2f },
204210 { 0x3e ,0x1f ,0x30 ,0xd5 ,0x7d ,0xf4 ,0xb6 ,0x06 ,0x94 ,0xf5 ,0x66 ,0xde ,0x44 ,0x48 ,0x4f ,0xaf }
205211 },
@@ -208,41 +214,47 @@ namespace VeraCrypt
208214 { 0x78 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x47 ,
209215 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
210216 },
217+ 16 ,
211218 { 0x91 ,0x08 ,0x95 ,0x7f ,0xf9 ,0x17 ,0xe3 ,0xd6 ,0x1c ,0x4e ,0xa3 ,0x3e ,0x53 ,0xdb ,0x6e ,0xf3 },
212219 { 0x6a ,0x52 ,0x9a ,0xc0 ,0x93 ,0xa5 ,0xf3 ,0x04 ,0x5a ,0xed ,0x78 ,0x7f ,0x70 ,0xcc ,0xb7 ,0xf5 }
213220 },
214221 {
215222 { 0x78 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x47 ,
216223 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
217224 },
225+ 16 ,
218226 { 0xcb ,0xa0 ,0xf0 ,0x56 ,0x75 ,0x35 ,0xd6 ,0x61 ,0x48 ,0xb3 ,0x5a ,0x92 ,0x58 ,0x72 ,0x9c ,0x23 },
219227 { 0x63 ,0x46 ,0xf0 ,0xe4 ,0xc5 ,0x95 ,0x32 ,0xd4 ,0x18 ,0xce ,0x31 ,0x5b ,0x9f ,0x22 ,0xa0 ,0xf4 }
220228 },
221229 {
222230 { 0x78 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x47 ,
223231 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
224232 },
233+ 16 ,
225234 { 0xfa ,0x59 ,0x80 ,0x11 ,0xf7 ,0xc2 ,0x10 ,0x07 ,0x99 ,0x45 ,0x1e ,0x62 ,0xf3 ,0xb5 ,0xcf ,0x09 },
226235 { 0x62 ,0x55 ,0x45 ,0x91 ,0x00 ,0x95 ,0x8f ,0x4d ,0x95 ,0x3a ,0x9d ,0x56 ,0x67 ,0x69 ,0x2d ,0x6d }
227236 },
228237 {
229238 { 0x78 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x47 ,
230239 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
231240 },
241+ 16 ,
232242 { 0xba ,0x1f ,0x85 ,0x55 ,0xb2 ,0xdd ,0xab ,0x0e ,0x4e ,0x4d ,0x80 ,0x26 ,0xb0 ,0x5a ,0xf3 ,0x89 },
233243 { 0x37 ,0x6f ,0xeb ,0x09 ,0x78 ,0xb5 ,0x2a ,0xb9 ,0xc9 ,0x84 ,0xa1 ,0x4d ,0x7e ,0x66 ,0xf6 ,0x71 }
234244 },
235245 {
236246 { 0x78 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x47 ,
237247 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
238248 },
249+ 16 ,
239250 { 0x50 ,0xc6 ,0x3c ,0xe2 ,0x55 ,0x82 ,0x57 ,0x1a ,0xa5 ,0xd8 ,0xee ,0x22 ,0x08 ,0x9c ,0x1b ,0x59 },
240251 { 0x31 ,0xff ,0xaf ,0x2c ,0xad ,0x65 ,0x49 ,0xf3 ,0xd9 ,0xfc ,0xd7 ,0xf0 ,0x2d ,0xf5 ,0x81 ,0x24 }
241252 },
242253 {
243254 { 0x78 ,0x1e ,0xdf ,0x34 ,0xd2 ,0x06 ,0x96 ,0x5e ,0x86 ,0xb3 ,0xe9 ,0x4f ,0x53 ,0x6e ,0x42 ,0x47 ,
244255 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 // dummy
245256 },
257+ 16 ,
246258 { 0x22 ,0x9a ,0xd7 ,0xa8 ,0xa8 ,0x3c ,0x5e ,0x23 ,0x84 ,0xb4 ,0x08 ,0x2e ,0x50 ,0xd0 ,0x6e ,0xbf },
247259 { 0x76 ,0xf2 ,0x9e ,0x93 ,0xdd ,0xf5 ,0x79 ,0x32 ,0xa4 ,0x1e ,0x83 ,0xbb ,0x7b ,0x61 ,0xa4 ,0x06 }
248260 }
@@ -254,7 +266,7 @@ namespace VeraCrypt
254266 Buffer buffer (cipher.GetBlockSize ());
255267 for (size_t i = 0 ; i < testVectorCount; ++i)
256268 {
257- cipher.SetKey (ConstBufferPtr (testVector[i].Key , sizeof ( testVector[i].Key ) ));
269+ cipher.SetKey (ConstBufferPtr (testVector[i].Key , testVector[i].KeyLength ));
258270 buffer.CopyFrom (ConstBufferPtr (testVector[i].Plaintext , sizeof (testVector[i].Plaintext )));
259271 cipher.EncryptBlock (buffer);
260272
@@ -617,7 +629,8 @@ namespace VeraCrypt
617629 Buffer modeKey (ea.GetKeySize ());
618630 for (size_t mi = 0 ; mi < modeKey.Size (); mi++)
619631 modeKey[mi] = (uint8) mi;
620- modeKey.CopyFrom (ConstBufferPtr (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 , sizeof (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 )));
632+ size_t copySize = VC_MIN (modeKey.Size (), sizeof (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 ));
633+ modeKey.CopyFrom (ConstBufferPtr (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 , copySize));
621634
622635 mode->SetKey (modeKey);
623636 ea.SetMode (mode);
@@ -1202,7 +1215,8 @@ namespace VeraCrypt
12021215 Buffer modeKey (ea.GetKeySize ());
12031216 for (size_t mi = 0 ; mi < modeKey.Size (); mi++)
12041217 modeKey[mi] = (uint8) mi;
1205- modeKey.CopyFrom (ConstBufferPtr (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 , sizeof (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 )));
1218+ size_t copySize = VC_MIN (modeKey.Size (), sizeof (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 ));
1219+ modeKey.CopyFrom (ConstBufferPtr (XtsTestVectors[array_capacity (XtsTestVectors)-1 ].key2 , copySize));
12061220
12071221 mode->SetKey (modeKey);
12081222 ea.SetMode (mode);
0 commit comments