@ -227,6 +227,114 @@ static const struct gcm_test_vector gcm_tests[] = {
" 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b " ,
" 8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5 " ,
" 619cc5aefffe0bfa462af43c1699d050 "
} ,
{
/* Test Case 7 */
" 000000000000000000000000000000000000000000000000 " ,
" " ,
" " ,
" 000000000000000000000000 " ,
" " ,
" cd33b28ac773f74ba00ed1f312572435 "
} ,
{
/* Test Case 8 */
" 000000000000000000000000000000000000000000000000 " ,
" 00000000000000000000000000000000 " ,
" " ,
" 000000000000000000000000 " ,
" 98e7247c07f0fe411c267e4384b0f600 " ,
" 2ff58d80033927ab8ef4d4587514f0fb "
} ,
{
/* Test Case 9 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255 " ,
" " ,
" cafebabefacedbaddecaf888 " ,
" 3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710acade256 " ,
" 9924a7c8587336bfb118024db8674a14 "
} ,
{
/* Test Case 10 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 " ,
" feedfacedeadbeeffeedfacedeadbeefabaddad2 " ,
" cafebabefacedbaddecaf888 " ,
" 3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710 " ,
" 2519498e80f1478f37ba55bd6d27618c "
} ,
{
/* Test Case 11 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 " ,
" feedfacedeadbeeffeedfacedeadbeefabaddad2 " ,
" cafebabefacedbad " ,
" 0f10f599ae14a154ed24b36e25324db8c566632ef2bbb34f8347280fc4507057fddc29df9a471f75c66541d4d4dad1c9e93a19a58e8b473fa0f062f7 " ,
" 65dcc57fcf623a24094fcca40d3533f8 "
} ,
{
/* Test Case 12 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 " ,
" feedfacedeadbeeffeedfacedeadbeefabaddad2 " ,
" 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b " ,
" d27e88681ce3243c4830165a8fdcf9ff1de9a1d8e6b447ef6ef7b79828666e4581e79012af34ddd9e2f037589b292db3e67c036745fa22e7e9b7373b " ,
" dcf566ff291c25bbb8568fc3d376a6d9 "
} ,
{
/* Test Case 13 */
" 0000000000000000000000000000000000000000000000000000000000000000 " ,
" " ,
" " ,
" 000000000000000000000000 " ,
" " ,
" 530f8afbc74536b9a963b4f1c4cb738b "
} ,
{
/* Test Case 14 */
" 0000000000000000000000000000000000000000000000000000000000000000 " ,
" 00000000000000000000000000000000 " ,
" " ,
" 000000000000000000000000 " ,
" cea7403d4d606b6e074ec5d3baf39d18 " ,
" d0d1c8a799996bf0265b98b5d48ab919 "
} ,
{
/* Test Case 15 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255 " ,
" " ,
" cafebabefacedbaddecaf888 " ,
" 522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad " ,
" b094dac5d93471bdec1a502270e3cc6c "
} ,
{
/* Test Case 16 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 " ,
" feedfacedeadbeeffeedfacedeadbeefabaddad2 " ,
" cafebabefacedbaddecaf888 " ,
" 522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662 " ,
" 76fc6ece0f4e1768cddf8853bb2d551b "
} ,
{
/* Test Case 17 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 " ,
" feedfacedeadbeeffeedfacedeadbeefabaddad2 " ,
" cafebabefacedbad " ,
" c3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f " ,
" 3a337dbf46a792c45e454913fe2ea8f2 "
} ,
{
/* Test Case 18 */
" feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 " ,
" d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 " ,
" feedfacedeadbeeffeedfacedeadbeefabaddad2 " ,
" 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b " ,
" 5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3f " ,
" a44a8266ee1c8eb0c8b5d4cf5ae9f19a "
}
} ;
@ -235,14 +343,15 @@ static int test_gcm(void)
{
int ret = 0 ;
int i ;
u8 k [ 16 ] , aad [ 32 ] , iv [ 64 ] , t [ 16 ] , tag [ 16 ] ;
u8 k [ 32 ] , aad [ 32 ] , iv [ 64 ] , t [ 16 ] , tag [ 16 ] ;
u8 p [ 64 ] , c [ 64 ] , tmp [ 64 ] ;
size_t p_len, aad_len , iv_len ;
size_t k_len, p_len, aad_len , iv_len ;
for ( i = 0 ; i < sizeof ( gcm_tests ) / sizeof ( gcm_tests [ 0 ] ) ; i + + ) {
const struct gcm_test_vector * tc = & gcm_tests [ i ] ;
if ( hexstr2bin ( tc - > k , k , sizeof ( k ) ) ) {
k_len = os_strlen ( tc - > k ) / 2 ;
if ( hexstr2bin ( tc - > k , k , k_len ) ) {
printf ( " Invalid GCM test vector %d (k) \n " , i ) ;
ret + + ;
continue ;
@ -281,8 +390,8 @@ static int test_gcm(void)
continue ;
}
if ( aes_ 128_ gcm_ae( k , iv , iv_len , p , p_len , aad , aad_len , tmp ,
tag ) < 0 ) {
if ( aes_ gcm_ae( k , k_len , iv , iv_len , p , p_len , aad , aad_len ,
tmp , tag ) < 0 ) {
printf ( " GCM-AE failed (test case %d) \n " , i ) ;
ret + + ;
continue ;
@ -298,8 +407,8 @@ static int test_gcm(void)
ret + + ;
}
if ( aes_ 128_ gcm_ad( k , iv , iv_len , c , p_len , aad , aad_len , t ,
tmp ) < 0 ) {
if ( aes_ gcm_ad( k , k_len , iv , iv_len , c , p_len , aad , aad_len ,
t , tmp ) < 0 ) {
printf ( " GCM-AD failed (test case %d) \n " , i ) ;
ret + + ;
continue ;