test/crypto: fix SNOW3G vector IV format

Some of the cipher and authentication IVs did not follow the spec for
SNOW3G algorithm [1].

Cipher IVs must have the last 3 bytes of each 8 byte block as 0x0.
IV[4] and IV[12] must have the last 2 bits set to 0.
Each 8 byte block is repeated.

Auth IVs must also have a repeated 8 byte block.
IV[8] and IV[14] may have a flipped bit based on direction.

[1] https://www.gsma.com/aboutus/wp-content/uploads/2014/12/uea2uia2d1v21.pdf

Fixes: 8bdf665fe6 ("app/test: add SNOW 3G")
Fixes: 24342ade2c ("test/crypto: check SNOW3G when digest is encrypted")
Fixes: 02ed7b3871 ("test/crypto: add SNOW3G test cases for auth-cipher")
Fixes: 11c5485bb2 ("test/crypto: add scatter-gather tests for IP and OOP")
Cc: stable@dpdk.org

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Tejasree Kondoj <ktejasree@marvell.com>
This commit is contained in:
Ciara Power 2022-06-23 14:42:50 +00:00 committed by Akhil Goyal
parent 3025fe2910
commit 3271c24b29

View File

@ -359,8 +359,8 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_1 = {
},
.cipher_iv = {
.data = {
0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD,
0x94, 0x79, 0x3E, 0x41, 0x03, 0x97, 0x68, 0xFD
0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00,
0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00
},
.len = 16
},
@ -384,12 +384,12 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_1 = {
},
.ciphertext = {
.data = {
0x95, 0x2E, 0x5A, 0xE1, 0x50, 0xB8, 0x59, 0x2A,
0x9B, 0xA0, 0x38, 0xA9, 0x8E, 0x2F, 0xED, 0xAB,
0xFD, 0xC8, 0x3B, 0x47, 0x46, 0x0B, 0x50, 0x16,
0xEC, 0x88, 0x45, 0xB6, 0x05, 0xC7, 0x54, 0xF8,
0xBD, 0x91, 0xAA, 0xB6, 0xA4, 0xDC, 0x64, 0xB4,
0xCB, 0xEB, 0x97, 0x06, 0x4C, 0xF7, 0x02, 0x3D
0x86, 0x4F, 0x4D, 0xE8, 0x86, 0xE6, 0x3E, 0x66,
0x52, 0x97, 0xC7, 0x62, 0xAE, 0x8E, 0xA2, 0xDB,
0x01, 0xD6, 0x33, 0xA9, 0xA4, 0xCE, 0x02, 0xD5,
0xC2, 0xC5, 0x5F, 0x90, 0xE0, 0x89, 0x48, 0xD4,
0x92, 0xF4, 0xE5, 0x9A, 0xDA, 0x13, 0x76, 0xFF,
0x6E, 0x76, 0x6B, 0x71, 0x62, 0x28, 0xB2, 0xEC
},
.len = 384
},
@ -428,15 +428,15 @@ struct snow3g_test_data snow3g_test_case_7 = {
},
.cipher_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00,
0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00
},
.len = 16
},
.auth_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x36, 0xAF, 0x61, 0x44, 0x98, 0x38, 0xF0, 0x3A,
0x36, 0xAF, 0x61, 0x44, 0x98, 0x38, 0xF0, 0x3A
},
.len = 16
},
@ -457,28 +457,28 @@ struct snow3g_test_data snow3g_test_case_7 = {
0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
0x5A, 0x5A, 0x5A, 0x5A, 0xF1, 0x9E, 0x2B, 0x6F,
0x5A, 0x5A, 0x5A, 0x5A, 0xBB, 0x2B, 0x8B, 0x15,
},
.len = 128 << 3
},
.ciphertext = {
.data = {
0x5A, 0x5A, 0xE4, 0xAD, 0x29, 0xA2, 0x6A, 0xA6,
0x20, 0x1D, 0xCD, 0x08, 0x50, 0xD6, 0xE6, 0x47,
0xBC, 0x88, 0x08, 0x01, 0x17, 0xFA, 0x47, 0x5B,
0x90, 0x40, 0xBA, 0x0C, 0xB5, 0x58, 0xF3, 0x0C,
0xA0, 0xD4, 0x98, 0x83, 0x1B, 0xCE, 0x54, 0xE3,
0x29, 0x00, 0x3C, 0xA4, 0xAD, 0x74, 0xEE, 0x05,
0xA3, 0x6C, 0xD4, 0xAC, 0xC6, 0x30, 0x33, 0xC9,
0x37, 0x57, 0x41, 0x9B, 0xD4, 0x73, 0xB9, 0x77,
0x70, 0x8B, 0x63, 0xDD, 0x22, 0xB8, 0xE1, 0x85,
0xB2, 0x92, 0x7C, 0x37, 0xD3, 0x2E, 0xD9, 0xF4,
0x4A, 0x69, 0x25, 0x30, 0xE3, 0x5B, 0x8B, 0xF6,
0x0F, 0xDE, 0x0B, 0x92, 0xD5, 0x25, 0x52, 0x6D,
0x26, 0xEB, 0x2F, 0x8A, 0x3B, 0x8B, 0x38, 0xE2,
0x48, 0xD3, 0x4A, 0x98, 0xF7, 0x3A, 0xC2, 0x46,
0x69, 0x8D, 0x73, 0x3E, 0x57, 0x88, 0x2C, 0x80,
0xF0, 0xF2, 0x75, 0xB8, 0x7D, 0x27, 0xC6, 0xDA,
0x5A, 0x5A, 0x8A, 0x35, 0xF7, 0x36, 0xDA, 0xD7,
0xC4, 0x2C, 0x10, 0xEA, 0x92, 0x9C, 0x00, 0xF0,
0xAE, 0x35, 0x5E, 0x8D, 0xB6, 0x88, 0x30, 0x66,
0x74, 0x8B, 0xA2, 0x82, 0x5C, 0xA7, 0xF3, 0x54,
0x75, 0x02, 0xA9, 0x90, 0x6B, 0x4B, 0x6A, 0x63,
0xFF, 0x4B, 0x08, 0xFE, 0x11, 0x3C, 0x5A, 0x53,
0xEE, 0x68, 0x14, 0x41, 0x17, 0xCD, 0x7B, 0x27,
0x88, 0xAF, 0x99, 0xE2, 0x9C, 0x86, 0x42, 0x12,
0x97, 0x93, 0xF0, 0xE6, 0xE2, 0xB2, 0x2D, 0xDA,
0x2C, 0x59, 0xB0, 0xA7, 0x09, 0xF6, 0x32, 0xC0,
0x35, 0x9A, 0xD3, 0xBA, 0xDC, 0x8F, 0x2E, 0x18,
0x97, 0x87, 0x44, 0xD6, 0x43, 0xFA, 0x86, 0x5A,
0xB0, 0xA2, 0x5A, 0xB8, 0x5F, 0x57, 0xE3, 0x2F,
0x73, 0x9C, 0x01, 0x3A, 0x02, 0x08, 0x8C, 0xEB,
0xA0, 0x5D, 0x74, 0x58, 0x5A, 0xA1, 0x58, 0x17,
0x5E, 0x86, 0x96, 0xE6, 0x9C, 0xEE, 0x8C, 0xA8
},
.len = 128 << 3
@ -493,7 +493,7 @@ struct snow3g_test_data snow3g_test_case_7 = {
},
.digest = {
.data = {
0x7D, 0x27, 0xC6, 0xDA
0x9C, 0xEE, 0x8C, 0xA8
},
.len = 4,
.offset_bytes = 124
@ -520,15 +520,15 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_2 = {
},
.cipher_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00,
0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
},
.len = 16
},
.auth_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x3E, 0xDC, 0x87, 0xE2, 0xA4, 0xF2, 0xD8, 0xE2,
0x3E, 0xDC, 0x87, 0xE2, 0xA4, 0xF2, 0xD8, 0xE2
},
.len = 16
},
@ -556,22 +556,22 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_2 = {
},
.ciphertext = {
.data = {
0x5A, 0x5A, 0xE4, 0xAD, 0x29, 0xA2, 0x6A, 0xA6,
0x20, 0x1D, 0xCD, 0x08, 0x50, 0xD6, 0xE6, 0x47,
0xBC, 0x88, 0x08, 0x01, 0x17, 0xFA, 0x47, 0x5B,
0x90, 0x40, 0xBA, 0x0C, 0xB5, 0x58, 0xF3, 0x0C,
0xA0, 0xD4, 0x98, 0x83, 0x1B, 0xCE, 0x54, 0xE3,
0x29, 0x00, 0x3C, 0xA4, 0xAD, 0x74, 0xEE, 0x05,
0xA3, 0x6C, 0xD4, 0xAC, 0xC6, 0x30, 0x33, 0xC9,
0x37, 0x57, 0x41, 0x9B, 0xD4, 0x73, 0xB9, 0x77,
0x70, 0x8B, 0x63, 0xDD, 0x22, 0xB8, 0xE1, 0x85,
0xB2, 0x92, 0x7C, 0x37, 0xD3, 0x2E, 0xD9, 0xF4,
0x4A, 0x69, 0x25, 0x30, 0xE3, 0x5B, 0x8B, 0xF6,
0x0F, 0xDE, 0x0B, 0x92, 0xD5, 0x25, 0x52, 0x6D,
0x26, 0xEB, 0x2F, 0x8A, 0x3B, 0x8B, 0x38, 0xE2,
0x48, 0xD3, 0x4A, 0x98, 0xF7, 0x3A, 0xC2, 0x46,
0x69, 0x8D, 0x73, 0x3E, 0x57, 0x88, 0x2C, 0x80,
0xF0, 0xF2, 0x75, 0xB8, 0x7D, 0x27, 0xC6, 0xDA,
0x5A, 0x5A, 0xCF, 0xCF, 0x3D, 0x11, 0xBF, 0xD9,
0xC3, 0x7F, 0x7C, 0xA8, 0x1A, 0x9F, 0x9F, 0x34,
0xC5, 0x6E, 0x1B, 0x2C, 0xE0, 0x81, 0x4B, 0x66,
0x87, 0xCB, 0xD5, 0x61, 0x04, 0xED, 0xBC, 0x69,
0x79, 0x86, 0x73, 0x48, 0x69, 0x4A, 0xBA, 0x55,
0x44, 0x6C, 0xEF, 0xD9, 0x34, 0x61, 0x59, 0x67,
0x80, 0x4E, 0x03, 0x95, 0x0A, 0xA1, 0x6C, 0xBA,
0x74, 0xBD, 0xAF, 0x11, 0x4B, 0xE6, 0x98, 0x61,
0x4E, 0xD4, 0x3E, 0xE4, 0x99, 0x55, 0x5C, 0x3A,
0x8C, 0x3E, 0xC0, 0x01, 0x6E, 0x15, 0xE1, 0x0E,
0x71, 0x4C, 0x89, 0x43, 0x8A, 0x48, 0x69, 0x6D,
0x02, 0x10, 0xC6, 0x54, 0x37, 0x18, 0xAA, 0x10,
0x90, 0x80, 0x0B, 0x69, 0x08, 0xB4, 0xF9, 0x4D,
0xD1, 0x2E, 0x43, 0xD9, 0x92, 0xAF, 0x06, 0x4A,
0xAF, 0x26, 0x25, 0x77, 0x37, 0xD0, 0xFC, 0x3C,
0xA0, 0xCB, 0xAF, 0x06, 0x95, 0x26, 0x30, 0x38,
},
.len = 128 << 3
@ -586,7 +586,7 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_2 = {
},
.digest = {
.data = {
0x7D, 0x27, 0xC6, 0xDA
0x95, 0x26, 0x30, 0x38
},
.len = 4,
.offset_bytes = 124
@ -613,15 +613,15 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_3 = {
},
.cipher_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00,
0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00
},
.len = 16
},
.auth_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x29, 0x6F, 0x39, 0x3C, 0x6B, 0x22, 0x77, 0x37,
0x29, 0x6F, 0x39, 0x3C, 0x6B, 0x22, 0x77, 0x37
},
.len = 16
},
@ -636,10 +636,10 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_3 = {
},
.ciphertext = {
.data = {
0x5A, 0x5A, 0xE4, 0xAD, 0x29, 0xA2, 0x6A, 0xA6,
0x20, 0x1D, 0xCD, 0x08, 0x50, 0xD6, 0xE6, 0x47,
0xBC, 0x88, 0x08, 0x01, 0x17, 0xFA, 0x47, 0x5B,
0x90, 0x40, 0xBA, 0x0C, 0xBA, 0x6D, 0x6A, 0x5E,
0x5A, 0x5A, 0x93, 0xB0, 0x3F, 0xA4, 0xEB, 0xD4,
0x51, 0x12, 0x3B, 0x95, 0x93, 0x12, 0xBF, 0xBE,
0xF2, 0xFE, 0xA5, 0xAE, 0xE7, 0xF4, 0x80, 0x3E,
0xB2, 0xD1, 0xFF, 0x5F, 0xD9, 0x32, 0x72, 0xFE,
},
.len = 32 << 3
},
@ -653,7 +653,7 @@ struct snow3g_test_data snow3g_auth_cipher_test_case_3 = {
},
.digest = {
.data = {
0xBA, 0x6D, 0x6A, 0x5E
0xD9, 0x32, 0x72, 0xFE
},
.len = 4,
.offset_bytes = 28
@ -680,15 +680,15 @@ struct snow3g_test_data snow3g_auth_cipher_partial_digest_encryption = {
},
.cipher_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00,
0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00
},
.len = 16
},
.auth_iv = {
.data = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD,
0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD
},
.len = 16
},
@ -704,9 +704,9 @@ struct snow3g_test_data snow3g_auth_cipher_partial_digest_encryption = {
.ciphertext = {
.data = {
0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0xE4, 0xAD,
0x29, 0xA2, 0x6A, 0xA6, 0x20, 0x1D, 0xCD, 0x08,
0x50, 0xD6, 0xE6, 0x47, 0xB3, 0xBD, 0xC3, 0x08
0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0xA2, 0xB7,
0xDF, 0xA7, 0x98, 0xA1, 0xD8, 0xD4, 0x9B, 0x6E,
0x2C, 0x7A, 0x66, 0x15, 0xCC, 0x4C, 0xE5, 0xE0
},
.len = 32 << 3
},
@ -720,7 +720,7 @@ struct snow3g_test_data snow3g_auth_cipher_partial_digest_encryption = {
},
.digest = {
.data = {
0xB3, 0xBD, 0xC3, 0x08
0xCC, 0x4C, 0xE5, 0xE0
},
.len = 4,
.offset_bytes = 28