11daecf63SSunyang Wu /* SPDX-License-Identifier: BSD-3-Clause 21daecf63SSunyang Wu * Copyright(c) 2016-2019 Intel Corporation 31daecf63SSunyang Wu */ 41daecf63SSunyang Wu 51daecf63SSunyang Wu #ifndef TEST_CRYPTODEV_SM4_TEST_VECTORS_H_ 61daecf63SSunyang Wu #define TEST_CRYPTODEV_SM4_TEST_VECTORS_H_ 71daecf63SSunyang Wu 81daecf63SSunyang Wu static const uint8_t plaintext_sm4[] = { 91daecf63SSunyang Wu 0x81, 0x70, 0x99, 0x44, 0xE0, 0xCB, 0x2E, 0x1D, 101daecf63SSunyang Wu 0xB5, 0xB0, 0xA4, 0x77, 0xD1, 0xA8, 0x53, 0x9B, 111daecf63SSunyang Wu 0x0A, 0x87, 0x86, 0xE3, 0x4E, 0xAA, 0xED, 0x99, 121daecf63SSunyang Wu 0x30, 0x3E, 0xA6, 0x97, 0x55, 0x95, 0xB2, 0x45, 131daecf63SSunyang Wu 0x4D, 0x5D, 0x7F, 0x91, 0xEB, 0xBD, 0x4A, 0xCD, 141daecf63SSunyang Wu 0x72, 0x6C, 0x0E, 0x0E, 0x5E, 0x3E, 0xB5, 0x5E, 151daecf63SSunyang Wu 0xF6, 0xB1, 0x5A, 0x13, 0x8E, 0x22, 0x6E, 0xCD, 161daecf63SSunyang Wu 0x1B, 0x23, 0x5A, 0xB5, 0xBB, 0x52, 0x51, 0xC1, 171daecf63SSunyang Wu 0x33, 0x76, 0xB2, 0x64, 0x48, 0xA9, 0xAC, 0x1D, 181daecf63SSunyang Wu 0xE8, 0xBD, 0x52, 0x64, 0x8C, 0x0B, 0x5F, 0xFA, 191daecf63SSunyang Wu 0x94, 0x44, 0x86, 0x82, 0xE3, 0xCB, 0x4D, 0xE9, 201daecf63SSunyang Wu 0xCB, 0x8A, 0xE7, 0xF4, 0xBD, 0x41, 0x0E, 0xD5, 211daecf63SSunyang Wu 0x02, 0xB1, 0x25, 0x3A, 0xD0, 0x8B, 0xB2, 0x79, 221daecf63SSunyang Wu 0x69, 0xB5, 0xF0, 0x2B, 0x10, 0x02, 0x9D, 0x67, 231daecf63SSunyang Wu 0xD0, 0x7E, 0x18, 0x64, 0xD9, 0x4D, 0x4F, 0xCA, 241daecf63SSunyang Wu 0x20, 0x81, 0x51, 0xE2, 0x6F, 0x5F, 0xEE, 0x26 251daecf63SSunyang Wu }; 261daecf63SSunyang Wu 271daecf63SSunyang Wu static const uint8_t ciphertext_sm4_ecb[] = { 281daecf63SSunyang Wu 0xCC, 0x62, 0x37, 0xA6, 0xA1, 0x35, 0x39, 0x75, 291daecf63SSunyang Wu 0xFF, 0xF5, 0xEE, 0x6A, 0xFD, 0xD7, 0x70, 0x15, 301daecf63SSunyang Wu 0xE1, 0x32, 0x23, 0x1F, 0x18, 0xB8, 0xC9, 0x16, 311daecf63SSunyang Wu 0x07, 0x27, 0x9C, 0x6C, 0x7F, 0x8F, 0x7F, 0xF6, 321daecf63SSunyang Wu 0xFD, 0xF1, 0xE4, 0x01, 0xEC, 0x7E, 0xD2, 0x60, 331daecf63SSunyang Wu 0xFD, 0xE7, 0x5C, 0xE5, 0xCF, 0x6E, 0xE7, 0x87, 341daecf63SSunyang Wu 0x97, 0x13, 0xCC, 0x01, 0x92, 0x1A, 0xC5, 0x62, 351daecf63SSunyang Wu 0xB5, 0x0C, 0x45, 0xE4, 0xDC, 0x9A, 0x30, 0xC2, 361daecf63SSunyang Wu 0x35, 0xED, 0x7D, 0x1A, 0x93, 0x0D, 0x33, 0x96, 371daecf63SSunyang Wu 0xD6, 0xE1, 0x8B, 0x77, 0x64, 0x40, 0x25, 0x3D, 381daecf63SSunyang Wu 0x9F, 0x4B, 0x8E, 0xFF, 0x3F, 0x11, 0x41, 0x58, 391daecf63SSunyang Wu 0x3B, 0x55, 0x4F, 0x59, 0x38, 0x2E, 0xAA, 0xBB, 401daecf63SSunyang Wu 0x8B, 0x42, 0xFA, 0x30, 0x38, 0x0D, 0x05, 0x3B, 411daecf63SSunyang Wu 0x86, 0x7C, 0xB0, 0xF2, 0x77, 0xCE, 0xEE, 0x1B, 421daecf63SSunyang Wu 0x78, 0xE8, 0x64, 0x7D, 0x59, 0xE3, 0xDA, 0x61, 431daecf63SSunyang Wu 0x05, 0x27, 0x56, 0x12, 0x95, 0x6D, 0x34, 0x9C 441daecf63SSunyang Wu }; 451daecf63SSunyang Wu 461daecf63SSunyang Wu static const uint8_t ciphertext_sm4_cbc[] = { 471daecf63SSunyang Wu 0x60, 0x7A, 0xBE, 0xC9, 0xDA, 0xD7, 0x90, 0x73, 481daecf63SSunyang Wu 0xC7, 0x96, 0xDB, 0x34, 0x26, 0xFD, 0x2C, 0x2F, 491daecf63SSunyang Wu 0x8E, 0x39, 0xC7, 0x0B, 0x60, 0xB2, 0x3D, 0xBE, 501daecf63SSunyang Wu 0xF3, 0xA9, 0xA5, 0x46, 0x65, 0x26, 0x41, 0xB7, 511daecf63SSunyang Wu 0xAE, 0xC9, 0xC3, 0xAD, 0x8C, 0x9B, 0x95, 0x8D, 521daecf63SSunyang Wu 0x17, 0x53, 0x15, 0x35, 0x40, 0x2A, 0x8C, 0x6B, 531daecf63SSunyang Wu 0x02, 0x5C, 0xBD, 0x13, 0xA6, 0x7E, 0xB7, 0x63, 541daecf63SSunyang Wu 0xC0, 0x3F, 0xA8, 0xBC, 0x73, 0xDD, 0x0B, 0x7A, 551daecf63SSunyang Wu 0x88, 0x0E, 0xF8, 0xC5, 0x5B, 0x00, 0x07, 0xFF, 561daecf63SSunyang Wu 0x53, 0x7B, 0xF1, 0x6A, 0xA0, 0xFD, 0x0B, 0x89, 571daecf63SSunyang Wu 0x03, 0x91, 0x4D, 0xD8, 0xC4, 0xB3, 0xC0, 0x12, 581daecf63SSunyang Wu 0x41, 0xEB, 0xF7, 0xCB, 0x0A, 0xFB, 0x68, 0xE7, 591daecf63SSunyang Wu 0x8E, 0x0C, 0x14, 0x33, 0x1A, 0x34, 0x55, 0xDA, 601daecf63SSunyang Wu 0x04, 0xE2, 0xA3, 0xFC, 0xBE, 0xB6, 0xDF, 0x2B, 611daecf63SSunyang Wu 0x61, 0x33, 0x05, 0xBD, 0xBC, 0x0A, 0xB5, 0x8B, 621daecf63SSunyang Wu 0x6D, 0x0F, 0x1B, 0x7D, 0x5F, 0x24, 0x46, 0x0E 631daecf63SSunyang Wu }; 641daecf63SSunyang Wu 651daecf63SSunyang Wu static const uint8_t ciphertext_sm4_cfb[] = { 661daecf63SSunyang Wu 0xC1, 0x27, 0x47, 0xC7, 0x44, 0x0C, 0x9A, 0x5C, 671daecf63SSunyang Wu 0x7D, 0x51, 0x26, 0x0D, 0x1B, 0xDB, 0x0D, 0x9D, 681daecf63SSunyang Wu 0x52, 0x59, 0xAD, 0x56, 0x05, 0xBE, 0x92, 0xD2, 691daecf63SSunyang Wu 0xB7, 0x62, 0xF5, 0xD7, 0x53, 0xD3, 0x12, 0x2A, 701daecf63SSunyang Wu 0x3C, 0x9A, 0x6E, 0x75, 0x80, 0xAB, 0x18, 0xE5, 711daecf63SSunyang Wu 0x72, 0x49, 0x9A, 0xD9, 0x80, 0x99, 0xC2, 0xE7, 721daecf63SSunyang Wu 0xCA, 0xD9, 0xDC, 0xD1, 0x45, 0x2F, 0xDD, 0xFC, 731daecf63SSunyang Wu 0x01, 0x7F, 0xB8, 0x01, 0x51, 0xCF, 0x43, 0x74, 741daecf63SSunyang Wu 0xC0, 0xBA, 0xFE, 0xB0, 0x28, 0xFE, 0xA4, 0xCD, 751daecf63SSunyang Wu 0x35, 0x0E, 0xEC, 0xE5, 0x70, 0xA2, 0x7F, 0x5D, 761daecf63SSunyang Wu 0x38, 0x1B, 0x50, 0xEB, 0x46, 0xBE, 0x61, 0x6E, 771daecf63SSunyang Wu 0x6C, 0x76, 0xF3, 0x65, 0x75, 0xCD, 0xA1, 0xBB, 781daecf63SSunyang Wu 0x9F, 0xFA, 0x7B, 0x86, 0x12, 0x87, 0x04, 0xEB, 791daecf63SSunyang Wu 0x00, 0x24, 0x81, 0xE7, 0x91, 0xFC, 0x1B, 0xC7, 801daecf63SSunyang Wu 0xA6, 0xB2, 0x67, 0xE2, 0x6E, 0x88, 0x8F, 0xB6, 811daecf63SSunyang Wu 0x4C, 0x45, 0x96, 0xEF, 0xBF, 0x4C, 0x26, 0x69 821daecf63SSunyang Wu }; 831daecf63SSunyang Wu 841daecf63SSunyang Wu static const uint8_t ciphertext_sm4_ofb[] = { 851daecf63SSunyang Wu 0xC1, 0x27, 0x47, 0xC7, 0x44, 0x0C, 0x9A, 0x5C, 861daecf63SSunyang Wu 0x7D, 0x51, 0x26, 0x0D, 0x1B, 0xDB, 0x0D, 0x9D, 871daecf63SSunyang Wu 0x0F, 0x0C, 0xAD, 0xA0, 0x2D, 0x18, 0x0B, 0x3C, 881daecf63SSunyang Wu 0x54, 0xA9, 0x87, 0x86, 0xBC, 0x6B, 0xF9, 0xFB, 891daecf63SSunyang Wu 0x18, 0x68, 0x51, 0x1E, 0xB2, 0x53, 0x1D, 0xD5, 901daecf63SSunyang Wu 0x7F, 0x4B, 0xED, 0xB8, 0xCA, 0x8E, 0x81, 0xCE, 911daecf63SSunyang Wu 0xE1, 0x16, 0x7F, 0x84, 0x69, 0xD1, 0x15, 0xCE, 921daecf63SSunyang Wu 0x84, 0xF0, 0xB0, 0x3A, 0x21, 0xF2, 0x85, 0xA2, 931daecf63SSunyang Wu 0xEB, 0x2F, 0xDF, 0x34, 0x52, 0x62, 0x42, 0x87, 941daecf63SSunyang Wu 0xFA, 0x7F, 0x02, 0x2A, 0xC2, 0xD9, 0xE4, 0xB0, 951daecf63SSunyang Wu 0x8D, 0xC5, 0x52, 0xEC, 0x3D, 0x96, 0x3F, 0xD3, 961daecf63SSunyang Wu 0x8C, 0x39, 0x9C, 0x0F, 0xD9, 0x66, 0xDD, 0x29, 971daecf63SSunyang Wu 0x90, 0x00, 0x5D, 0x4F, 0x4D, 0x82, 0x2A, 0x47, 981daecf63SSunyang Wu 0x9E, 0x7E, 0x46, 0x87, 0x84, 0xE8, 0xDD, 0xAE, 991daecf63SSunyang Wu 0xB3, 0x03, 0xF8, 0xE8, 0x7B, 0xA6, 0xC9, 0x9A, 1001daecf63SSunyang Wu 0x56, 0x9C, 0xC7, 0x82, 0x1E, 0x9A, 0x9D, 0x13 1011daecf63SSunyang Wu }; 1021daecf63SSunyang Wu 1031daecf63SSunyang Wu static const uint8_t ciphertext_sm4_ctr[] = { 1041daecf63SSunyang Wu 0xC1, 0x27, 0x47, 0xC7, 0x44, 0x0C, 0x9A, 0x5C, 1051daecf63SSunyang Wu 0x7D, 0x51, 0x26, 0x0D, 0x1B, 0xDB, 0x0D, 0x9D, 1061daecf63SSunyang Wu 0xC3, 0x75, 0xCE, 0xBB, 0x63, 0x9A, 0x5B, 0x0C, 1071daecf63SSunyang Wu 0xED, 0x64, 0x3F, 0x33, 0x80, 0x8F, 0x97, 0x40, 1081daecf63SSunyang Wu 0xB7, 0x5C, 0xA7, 0xFE, 0x2F, 0x7F, 0xFB, 0x20, 1091daecf63SSunyang Wu 0x13, 0xEC, 0xDC, 0xBC, 0x96, 0xC8, 0x05, 0xF0, 1101daecf63SSunyang Wu 0xA4, 0x95, 0xC4, 0x0A, 0xB7, 0x1B, 0x18, 0xB4, 1111daecf63SSunyang Wu 0xDA, 0x35, 0xFF, 0xA5, 0xB5, 0x90, 0x1B, 0x07, 1121daecf63SSunyang Wu 0x5C, 0x5B, 0x91, 0x36, 0xF0, 0xC9, 0xFE, 0xFB, 1131daecf63SSunyang Wu 0xC4, 0x71, 0xD6, 0x3B, 0x03, 0x28, 0x62, 0xB9, 1141daecf63SSunyang Wu 0x22, 0x7A, 0x97, 0xC9, 0x54, 0xC0, 0x8C, 0x71, 1151daecf63SSunyang Wu 0xEC, 0x8F, 0xE1, 0xBB, 0x56, 0xAE, 0xAB, 0x16, 1161daecf63SSunyang Wu 0xF6, 0x57, 0x76, 0x65, 0xC2, 0x4B, 0xE0, 0x46, 1171daecf63SSunyang Wu 0x4E, 0x13, 0x77, 0x50, 0x91, 0x24, 0x76, 0xD9, 1181daecf63SSunyang Wu 0xB7, 0x16, 0xFF, 0x9E, 0xD0, 0x2E, 0x14, 0x23, 1191daecf63SSunyang Wu 0x27, 0xF4, 0x99, 0x03, 0xDA, 0x1C, 0x52, 0x04 1201daecf63SSunyang Wu }; 1211daecf63SSunyang Wu 122*4acc862bSHanxiao Li static const uint8_t ciphertext_sm4_xts[] = { 123*4acc862bSHanxiao Li 0xEB, 0x4E, 0x0F, 0x8B, 0x44, 0x75, 0x9A, 0xE4, 124*4acc862bSHanxiao Li 0xCD, 0xAF, 0x1F, 0x69, 0xCA, 0x90, 0x62, 0x58, 125*4acc862bSHanxiao Li 0x91, 0x7A, 0xA8, 0x14, 0x5D, 0xF3, 0x4E, 0xBC, 126*4acc862bSHanxiao Li 0xFC, 0xA6, 0xFE, 0x36, 0x48, 0x8D, 0x4D, 0x55, 127*4acc862bSHanxiao Li 0x10, 0x00, 0xF0, 0xA5, 0xB2, 0x6D, 0xAB, 0x61, 128*4acc862bSHanxiao Li 0x54, 0x14, 0x8C, 0x9A, 0xFA, 0x8B, 0xDA, 0xA2, 129*4acc862bSHanxiao Li 0x00, 0x12, 0xFE, 0xDF, 0x4A, 0x26, 0x61, 0xE8, 130*4acc862bSHanxiao Li 0x6E, 0x67, 0x8F, 0xE1, 0xBA, 0xAC, 0x27, 0x72, 131*4acc862bSHanxiao Li 0xD8, 0xA1, 0x84, 0xF4, 0xD2, 0x3C, 0xFA, 0xB5, 132*4acc862bSHanxiao Li 0x59, 0xE2, 0x0E, 0xC0, 0x7B, 0xCF, 0x25, 0x78, 133*4acc862bSHanxiao Li 0x1C, 0x02, 0xDE, 0xB7, 0x17, 0xF8, 0x9E, 0x22, 134*4acc862bSHanxiao Li 0x8B, 0x79, 0xF8, 0xA2, 0xFC, 0x12, 0xF9, 0x4A, 135*4acc862bSHanxiao Li 0x5E, 0x48, 0x82, 0xBF, 0x87, 0x57, 0x5E, 0xDC, 136*4acc862bSHanxiao Li 0xF3, 0xA7, 0x47, 0x96, 0x56, 0x00, 0xDD, 0x04, 137*4acc862bSHanxiao Li 0x0E, 0x0E, 0x1B, 0x9E, 0x6B, 0x5C, 0xD0, 0xA6, 138*4acc862bSHanxiao Li 0xB5, 0x7B, 0x9E, 0xB5, 0x5A, 0x19, 0xD9, 0x52, 139*4acc862bSHanxiao Li }; 140*4acc862bSHanxiao Li 1411daecf63SSunyang Wu static const struct blockcipher_test_data 1421daecf63SSunyang Wu sm4_test_data_cbc = { 1431daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_CBC, 1441daecf63SSunyang Wu .cipher_key = { 1451daecf63SSunyang Wu .data = { 1461daecf63SSunyang Wu 0xE0, 0x70, 0x99, 0xF1, 0xBF, 0xAF, 0xFD, 0x7F, 1471daecf63SSunyang Wu 0x24, 0x0C, 0xD7, 0x90, 0xCA, 0x4F, 0xE1, 0x34 1481daecf63SSunyang Wu }, 1491daecf63SSunyang Wu .len = 16 1501daecf63SSunyang Wu }, 1511daecf63SSunyang Wu .iv = { 1521daecf63SSunyang Wu .data = { 1531daecf63SSunyang Wu 0xC7, 0x2B, 0x65, 0x91, 0xA0, 0xD7, 0xDE, 0x8F, 1541daecf63SSunyang Wu 0x6B, 0x40, 0x72, 0x33, 0xAD, 0x35, 0x81, 0xD6 1551daecf63SSunyang Wu }, 1561daecf63SSunyang Wu .len = 16 1571daecf63SSunyang Wu }, 1581daecf63SSunyang Wu .plaintext = { 1591daecf63SSunyang Wu .data = plaintext_sm4, 1601daecf63SSunyang Wu .len = 128 1611daecf63SSunyang Wu }, 1621daecf63SSunyang Wu .ciphertext = { 1631daecf63SSunyang Wu .data = ciphertext_sm4_cbc, 1641daecf63SSunyang Wu .len = 128 1651daecf63SSunyang Wu }, 1661daecf63SSunyang Wu }; 1671daecf63SSunyang Wu 1681daecf63SSunyang Wu static const struct blockcipher_test_data 1691daecf63SSunyang Wu sm4_test_data_ctr = { 1701daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_CTR, 1711daecf63SSunyang Wu .cipher_key = { 1721daecf63SSunyang Wu .data = { 1731daecf63SSunyang Wu 0xE0, 0x70, 0x99, 0xF1, 0xBF, 0xAF, 0xFD, 0x7F, 1741daecf63SSunyang Wu 0x24, 0x0C, 0xD7, 0x90, 0xCA, 0x4F, 0xE1, 0x34 1751daecf63SSunyang Wu }, 1761daecf63SSunyang Wu .len = 16 1771daecf63SSunyang Wu }, 1781daecf63SSunyang Wu .iv = { 1791daecf63SSunyang Wu .data = { 1801daecf63SSunyang Wu 0xC7, 0x2B, 0x65, 0x91, 0xA0, 0xD7, 0xDE, 0x8F, 1811daecf63SSunyang Wu 0x6B, 0x40, 0x72, 0x33, 0xAD, 0x35, 0x81, 0xD6 1821daecf63SSunyang Wu }, 1831daecf63SSunyang Wu .len = 16 1841daecf63SSunyang Wu }, 1851daecf63SSunyang Wu .plaintext = { 1861daecf63SSunyang Wu .data = plaintext_sm4, 1871daecf63SSunyang Wu .len = 128 1881daecf63SSunyang Wu }, 1891daecf63SSunyang Wu .ciphertext = { 1901daecf63SSunyang Wu .data = ciphertext_sm4_ctr, 1911daecf63SSunyang Wu .len = 128 1921daecf63SSunyang Wu }, 1931daecf63SSunyang Wu }; 1941daecf63SSunyang Wu 1951daecf63SSunyang Wu static const struct blockcipher_test_data 1961daecf63SSunyang Wu sm4_test_data_ecb = { 1971daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_ECB, 1981daecf63SSunyang Wu .cipher_key = { 1991daecf63SSunyang Wu .data = { 2001daecf63SSunyang Wu 0xE0, 0x70, 0x99, 0xF1, 0xBF, 0xAF, 0xFD, 0x7F, 2011daecf63SSunyang Wu 0x24, 0x0C, 0xD7, 0x90, 0xCA, 0x4F, 0xE1, 0x34 2021daecf63SSunyang Wu }, 2031daecf63SSunyang Wu .len = 16 2041daecf63SSunyang Wu }, 2051daecf63SSunyang Wu .plaintext = { 2061daecf63SSunyang Wu .data = plaintext_sm4, 2071daecf63SSunyang Wu .len = 128 2081daecf63SSunyang Wu }, 2091daecf63SSunyang Wu .ciphertext = { 2101daecf63SSunyang Wu .data = ciphertext_sm4_ecb, 2111daecf63SSunyang Wu .len = 128 2121daecf63SSunyang Wu }, 2131daecf63SSunyang Wu }; 2141daecf63SSunyang Wu 2151daecf63SSunyang Wu static const struct blockcipher_test_data 2161daecf63SSunyang Wu sm4_test_data_ofb = { 2171daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_OFB, 2181daecf63SSunyang Wu .cipher_key = { 2191daecf63SSunyang Wu .data = { 2201daecf63SSunyang Wu 0xE0, 0x70, 0x99, 0xF1, 0xBF, 0xAF, 0xFD, 0x7F, 2211daecf63SSunyang Wu 0x24, 0x0C, 0xD7, 0x90, 0xCA, 0x4F, 0xE1, 0x34 2221daecf63SSunyang Wu }, 2231daecf63SSunyang Wu .len = 16 2241daecf63SSunyang Wu }, 2251daecf63SSunyang Wu .iv = { 2261daecf63SSunyang Wu .data = { 2271daecf63SSunyang Wu 0xC7, 0x2B, 0x65, 0x91, 0xA0, 0xD7, 0xDE, 0x8F, 2281daecf63SSunyang Wu 0x6B, 0x40, 0x72, 0x33, 0xAD, 0x35, 0x81, 0xD6 2291daecf63SSunyang Wu }, 2301daecf63SSunyang Wu .len = 16 2311daecf63SSunyang Wu }, 2321daecf63SSunyang Wu .plaintext = { 2331daecf63SSunyang Wu .data = plaintext_sm4, 2341daecf63SSunyang Wu .len = 128 2351daecf63SSunyang Wu }, 2361daecf63SSunyang Wu .ciphertext = { 2371daecf63SSunyang Wu .data = ciphertext_sm4_ofb, 2381daecf63SSunyang Wu .len = 128 2391daecf63SSunyang Wu }, 2401daecf63SSunyang Wu }; 2411daecf63SSunyang Wu 2421daecf63SSunyang Wu static const struct blockcipher_test_data 2431daecf63SSunyang Wu sm4_test_data_cfb = { 2441daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_CFB, 2451daecf63SSunyang Wu .cipher_key = { 2461daecf63SSunyang Wu .data = { 2471daecf63SSunyang Wu 0xE0, 0x70, 0x99, 0xF1, 0xBF, 0xAF, 0xFD, 0x7F, 2481daecf63SSunyang Wu 0x24, 0x0C, 0xD7, 0x90, 0xCA, 0x4F, 0xE1, 0x34 2491daecf63SSunyang Wu }, 2501daecf63SSunyang Wu .len = 16 2511daecf63SSunyang Wu }, 2521daecf63SSunyang Wu .iv = { 2531daecf63SSunyang Wu .data = { 2541daecf63SSunyang Wu 0xC7, 0x2B, 0x65, 0x91, 0xA0, 0xD7, 0xDE, 0x8F, 2551daecf63SSunyang Wu 0x6B, 0x40, 0x72, 0x33, 0xAD, 0x35, 0x81, 0xD6 2561daecf63SSunyang Wu }, 2571daecf63SSunyang Wu .len = 16 2581daecf63SSunyang Wu }, 2591daecf63SSunyang Wu .plaintext = { 2601daecf63SSunyang Wu .data = plaintext_sm4, 2611daecf63SSunyang Wu .len = 128 2621daecf63SSunyang Wu }, 2631daecf63SSunyang Wu .ciphertext = { 2641daecf63SSunyang Wu .data = ciphertext_sm4_cfb, 2651daecf63SSunyang Wu .len = 128 2661daecf63SSunyang Wu }, 2671daecf63SSunyang Wu }; 2681daecf63SSunyang Wu 269*4acc862bSHanxiao Li static const struct blockcipher_test_data 270*4acc862bSHanxiao Li sm4_test_data_xts = { 271*4acc862bSHanxiao Li .crypto_algo = RTE_CRYPTO_CIPHER_SM4_XTS, 272*4acc862bSHanxiao Li .cipher_key = { 273*4acc862bSHanxiao Li .data = { 274*4acc862bSHanxiao Li 0x59, 0x32, 0x43, 0x97, 0x5c, 0xce, 0x7c, 0x8a, 275*4acc862bSHanxiao Li 0x32, 0xac, 0x6b, 0x3c, 0xaf, 0x8a, 0x19, 0xc5, 276*4acc862bSHanxiao Li 0x90, 0xb4, 0x46, 0x18, 0xc8, 0xbf, 0x7a, 0x18, 277*4acc862bSHanxiao Li 0x23, 0x26, 0xc3, 0xb2, 0xb0, 0xa9, 0x93, 0x1c 278*4acc862bSHanxiao Li }, 279*4acc862bSHanxiao Li .len = 32 280*4acc862bSHanxiao Li }, 281*4acc862bSHanxiao Li .iv = { 282*4acc862bSHanxiao Li .data = { 283*4acc862bSHanxiao Li 0xC7, 0x2B, 0x65, 0x91, 0xA0, 0xD7, 0xDE, 0x8F, 284*4acc862bSHanxiao Li 0x6B, 0x40, 0x72, 0x33, 0xAD, 0x35, 0x81, 0xD6 285*4acc862bSHanxiao Li }, 286*4acc862bSHanxiao Li .len = 16 287*4acc862bSHanxiao Li }, 288*4acc862bSHanxiao Li .plaintext = { 289*4acc862bSHanxiao Li .data = plaintext_sm4, 290*4acc862bSHanxiao Li .len = 128 291*4acc862bSHanxiao Li }, 292*4acc862bSHanxiao Li .ciphertext = { 293*4acc862bSHanxiao Li .data = ciphertext_sm4_xts, 294*4acc862bSHanxiao Li .len = 128 295*4acc862bSHanxiao Li }, 296*4acc862bSHanxiao Li }; 297*4acc862bSHanxiao Li 2981daecf63SSunyang Wu static const struct blockcipher_test_case sm4_cipheronly_test_cases[] = { 2991daecf63SSunyang Wu { 3001daecf63SSunyang Wu .test_descr = "SM4-CBC Encryption", 3011daecf63SSunyang Wu .test_data = &sm4_test_data_cbc, 3021daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, 3031daecf63SSunyang Wu }, 3041daecf63SSunyang Wu { 3051daecf63SSunyang Wu .test_descr = "SM4-CBC Decryption", 3061daecf63SSunyang Wu .test_data = &sm4_test_data_cbc, 3071daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, 3081daecf63SSunyang Wu }, 3091daecf63SSunyang Wu { 3101daecf63SSunyang Wu .test_descr = "SM4-CTR Encryption", 3111daecf63SSunyang Wu .test_data = &sm4_test_data_ctr, 3121daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, 3131daecf63SSunyang Wu }, 3141daecf63SSunyang Wu { 3151daecf63SSunyang Wu .test_descr = "SM4-CTR Decryption", 3161daecf63SSunyang Wu .test_data = &sm4_test_data_ctr, 3171daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, 3181daecf63SSunyang Wu }, 3191daecf63SSunyang Wu { 3201daecf63SSunyang Wu .test_descr = "SM4-ECB Encryption", 3211daecf63SSunyang Wu .test_data = &sm4_test_data_ecb, 3221daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, 3231daecf63SSunyang Wu }, 3241daecf63SSunyang Wu { 3251daecf63SSunyang Wu .test_descr = "SM4-ECB Decryption", 3261daecf63SSunyang Wu .test_data = &sm4_test_data_ecb, 3271daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, 3281daecf63SSunyang Wu }, 3291daecf63SSunyang Wu { 3301daecf63SSunyang Wu .test_descr = "SM4-OFB Encryption", 3311daecf63SSunyang Wu .test_data = &sm4_test_data_ofb, 3321daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, 3331daecf63SSunyang Wu }, 3341daecf63SSunyang Wu { 3351daecf63SSunyang Wu .test_descr = "SM4-OFB Decryption", 3361daecf63SSunyang Wu .test_data = &sm4_test_data_ofb, 3371daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, 3381daecf63SSunyang Wu }, 3391daecf63SSunyang Wu { 3401daecf63SSunyang Wu .test_descr = "SM4-CFB Encryption", 3411daecf63SSunyang Wu .test_data = &sm4_test_data_cfb, 3421daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, 3431daecf63SSunyang Wu }, 3441daecf63SSunyang Wu { 3451daecf63SSunyang Wu .test_descr = "SM4-CFB Decryption", 3461daecf63SSunyang Wu .test_data = &sm4_test_data_cfb, 3471daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, 3481daecf63SSunyang Wu }, 349*4acc862bSHanxiao Li { 350*4acc862bSHanxiao Li .test_descr = "SM4-XTS Encryption", 351*4acc862bSHanxiao Li .test_data = &sm4_test_data_xts, 352*4acc862bSHanxiao Li .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, 353*4acc862bSHanxiao Li }, 354*4acc862bSHanxiao Li { 355*4acc862bSHanxiao Li .test_descr = "SM4-XTS Decryption", 356*4acc862bSHanxiao Li .test_data = &sm4_test_data_xts, 357*4acc862bSHanxiao Li .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, 358*4acc862bSHanxiao Li }, 3591daecf63SSunyang Wu }; 3601daecf63SSunyang Wu 3611daecf63SSunyang Wu static const uint8_t plaintext_sm4_common[] = { 3621daecf63SSunyang Wu "What a lousy earth! He wondered how many people were destitute that" 3631daecf63SSunyang Wu }; 3641daecf63SSunyang Wu 3651daecf63SSunyang Wu static const uint8_t ciphertext64_sm4_cbc[] = { 3661daecf63SSunyang Wu 0x5D, 0x93, 0x4E, 0x50, 0xDC, 0x26, 0x03, 0xB5, 3671daecf63SSunyang Wu 0x6C, 0xFC, 0xB7, 0x09, 0x11, 0x28, 0x2F, 0xF7, 3681daecf63SSunyang Wu 0x6C, 0xB6, 0xE6, 0xCC, 0xB8, 0xC5, 0x01, 0x5F, 3691daecf63SSunyang Wu 0xBE, 0x89, 0xF8, 0xD3, 0xE8, 0xCD, 0x51, 0xC6, 3701daecf63SSunyang Wu 0x17, 0x31, 0x07, 0xDE, 0xA5, 0x8F, 0xFD, 0x79, 3711daecf63SSunyang Wu 0x2A, 0xAC, 0xAC, 0x90, 0x47, 0x8D, 0x0F, 0x16, 3721daecf63SSunyang Wu 0x66, 0xCF, 0x16, 0xF1, 0xE2, 0x4C, 0x79, 0x4A, 3731daecf63SSunyang Wu 0x6B, 0x5D, 0x6C, 0xAB, 0x98, 0x2B, 0xDB, 0xF8 3741daecf63SSunyang Wu }; 3751daecf63SSunyang Wu 3761daecf63SSunyang Wu /* test vectors */ 3771daecf63SSunyang Wu static const uint8_t plaintext64_sm4_ctr[] = { 3781daecf63SSunyang Wu 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 3791daecf63SSunyang Wu 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A, 3801daecf63SSunyang Wu 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C, 3811daecf63SSunyang Wu 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51, 3821daecf63SSunyang Wu 0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11, 3831daecf63SSunyang Wu 0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF, 3841daecf63SSunyang Wu 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, 3851daecf63SSunyang Wu 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 3861daecf63SSunyang Wu }; 3871daecf63SSunyang Wu 3881daecf63SSunyang Wu static const uint8_t ciphertext64_sm4_ctr[] = { 3891daecf63SSunyang Wu 0x14, 0xAE, 0x4A, 0x72, 0xB9, 0x7A, 0x93, 0xCE, 3901daecf63SSunyang Wu 0x12, 0x16, 0xCC, 0xD9, 0x98, 0xE3, 0x71, 0xC1, 3911daecf63SSunyang Wu 0x60, 0xF7, 0xEF, 0x8B, 0x63, 0x44, 0xBD, 0x6D, 3921daecf63SSunyang Wu 0xA1, 0x99, 0x25, 0x05, 0xE5, 0xFC, 0x21, 0x9B, 3931daecf63SSunyang Wu 0x0B, 0xF0, 0x57, 0xF8, 0x6C, 0x5D, 0x75, 0x10, 3941daecf63SSunyang Wu 0x3C, 0x0F, 0x46, 0x51, 0x9C, 0x7F, 0xB2, 0xE7, 3951daecf63SSunyang Wu 0x29, 0x28, 0x05, 0x03, 0x5A, 0xDB, 0x9A, 0x90, 3961daecf63SSunyang Wu 0xEC, 0xEF, 0x14, 0x53, 0x59, 0xD7, 0xCF, 0x0E 3971daecf63SSunyang Wu }; 3981daecf63SSunyang Wu 3991daecf63SSunyang Wu static const struct blockcipher_test_data sm4_test_data_1 = { 4001daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_CTR, 4011daecf63SSunyang Wu .cipher_key = { 4021daecf63SSunyang Wu .data = { 4031daecf63SSunyang Wu 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 4041daecf63SSunyang Wu 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C 4051daecf63SSunyang Wu }, 4061daecf63SSunyang Wu .len = 16 4071daecf63SSunyang Wu }, 4081daecf63SSunyang Wu .iv = { 4091daecf63SSunyang Wu .data = { 4101daecf63SSunyang Wu 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 4111daecf63SSunyang Wu 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF 4121daecf63SSunyang Wu }, 4131daecf63SSunyang Wu .len = 16 4141daecf63SSunyang Wu }, 4151daecf63SSunyang Wu .plaintext = { 4161daecf63SSunyang Wu .data = plaintext64_sm4_ctr, 4171daecf63SSunyang Wu .len = 64 4181daecf63SSunyang Wu }, 4191daecf63SSunyang Wu .ciphertext = { 4201daecf63SSunyang Wu .data = ciphertext64_sm4_ctr, 4211daecf63SSunyang Wu .len = 64 4221daecf63SSunyang Wu }, 4231daecf63SSunyang Wu .auth_algo = RTE_CRYPTO_AUTH_SM3_HMAC, 4241daecf63SSunyang Wu .auth_key = { 4251daecf63SSunyang Wu .data = { 4261daecf63SSunyang Wu 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA, 4271daecf63SSunyang Wu 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD, 4281daecf63SSunyang Wu 0xDE, 0xF4, 0xDE, 0xAD 4291daecf63SSunyang Wu }, 4301daecf63SSunyang Wu .len = 20 4311daecf63SSunyang Wu }, 4321daecf63SSunyang Wu .digest = { 4331daecf63SSunyang Wu .data = { 4341daecf63SSunyang Wu 0x3A, 0x90, 0x8E, 0x9E, 0x07, 0x48, 0xBE, 0xFE, 4351daecf63SSunyang Wu 0x29, 0xB9, 0x61, 0xD8, 0x1A, 0x01, 0x5E, 0x34, 4361daecf63SSunyang Wu 0x98, 0x1A, 0x35, 0xE5, 0x26, 0x1A, 0x28, 0x1E, 4371daecf63SSunyang Wu 0xB1, 0xDC, 0xDB, 0xEB, 0xC7, 0x16, 0xF9, 0x9E 4381daecf63SSunyang Wu }, 4391daecf63SSunyang Wu .len = 32, 4401daecf63SSunyang Wu .truncated_len = 16 4411daecf63SSunyang Wu } 4421daecf63SSunyang Wu }; 4431daecf63SSunyang Wu 4441daecf63SSunyang Wu /* test vectors */ 4451daecf63SSunyang Wu static const uint8_t plaintext64_sm4_cfb[] = { 4461daecf63SSunyang Wu 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 4471daecf63SSunyang Wu 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A, 4481daecf63SSunyang Wu 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C, 4491daecf63SSunyang Wu 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51, 4501daecf63SSunyang Wu 0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11, 4511daecf63SSunyang Wu 0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF, 4521daecf63SSunyang Wu 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, 4531daecf63SSunyang Wu 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 4541daecf63SSunyang Wu }; 4551daecf63SSunyang Wu 4561daecf63SSunyang Wu static const uint8_t ciphertext64_sm4_cfb[] = { 4571daecf63SSunyang Wu 0x14, 0xAE, 0x4A, 0x72, 0xB9, 0x7A, 0x93, 0xCE, 4581daecf63SSunyang Wu 0x12, 0x16, 0xCC, 0xD9, 0x98, 0xE3, 0x71, 0xC1, 4591daecf63SSunyang Wu 0xAA, 0x8A, 0x2C, 0x8C, 0x61, 0x89, 0x6B, 0x8B, 4601daecf63SSunyang Wu 0x7C, 0xF8, 0x32, 0x6A, 0xEB, 0xAC, 0xD4, 0x0C, 4611daecf63SSunyang Wu 0xD1, 0x5D, 0xFA, 0x1D, 0xFD, 0x17, 0x67, 0x02, 4621daecf63SSunyang Wu 0x06, 0xCD, 0x38, 0x2C, 0x4D, 0x04, 0xF3, 0x96, 4631daecf63SSunyang Wu 0x2F, 0x85, 0x5C, 0x3F, 0xBB, 0x79, 0x56, 0xA9, 4641daecf63SSunyang Wu 0xC4, 0x6F, 0x34, 0xB3, 0xBE, 0xEC, 0xCA, 0x40 4651daecf63SSunyang Wu }; 4661daecf63SSunyang Wu 4671daecf63SSunyang Wu static const struct blockcipher_test_data sm4_test_data_2 = { 4681daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_CFB, 4691daecf63SSunyang Wu .cipher_key = { 4701daecf63SSunyang Wu .data = { 4711daecf63SSunyang Wu 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 4721daecf63SSunyang Wu 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C 4731daecf63SSunyang Wu }, 4741daecf63SSunyang Wu .len = 16 4751daecf63SSunyang Wu }, 4761daecf63SSunyang Wu .iv = { 4771daecf63SSunyang Wu .data = { 4781daecf63SSunyang Wu 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 4791daecf63SSunyang Wu 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF 4801daecf63SSunyang Wu }, 4811daecf63SSunyang Wu .len = 16 4821daecf63SSunyang Wu }, 4831daecf63SSunyang Wu .plaintext = { 4841daecf63SSunyang Wu .data = plaintext64_sm4_cfb, 4851daecf63SSunyang Wu .len = 64 4861daecf63SSunyang Wu }, 4871daecf63SSunyang Wu .ciphertext = { 4881daecf63SSunyang Wu .data = ciphertext64_sm4_cfb, 4891daecf63SSunyang Wu .len = 64 4901daecf63SSunyang Wu }, 4911daecf63SSunyang Wu .auth_algo = RTE_CRYPTO_AUTH_SM3_HMAC, 4921daecf63SSunyang Wu .auth_key = { 4931daecf63SSunyang Wu .data = { 4941daecf63SSunyang Wu 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA, 4951daecf63SSunyang Wu 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD, 4961daecf63SSunyang Wu 0xDE, 0xF4, 0xDE, 0xAD 4971daecf63SSunyang Wu }, 4981daecf63SSunyang Wu .len = 20 4991daecf63SSunyang Wu }, 5001daecf63SSunyang Wu .digest = { 5011daecf63SSunyang Wu .data = { 5021daecf63SSunyang Wu 0x6F, 0x7C, 0xFA, 0x6D, 0x02, 0x5D, 0xE2, 0x4B, 5031daecf63SSunyang Wu 0x4A, 0xEE, 0xC6, 0x67, 0x0B, 0xD3, 0xCF, 0xBD, 5041daecf63SSunyang Wu 0x64, 0x8F, 0x01, 0x17, 0x19, 0xD6, 0xFB, 0xEC, 5051daecf63SSunyang Wu 0x3A, 0x27, 0xE8, 0x0F, 0x51, 0xA3, 0xE2, 0x3F 5061daecf63SSunyang Wu }, 5071daecf63SSunyang Wu .len = 32, 5081daecf63SSunyang Wu .truncated_len = 16 5091daecf63SSunyang Wu } 5101daecf63SSunyang Wu }; 5111daecf63SSunyang Wu 5121daecf63SSunyang Wu /* test vectors */ 5131daecf63SSunyang Wu static const uint8_t plaintext64_sm4_ofb[] = { 5141daecf63SSunyang Wu 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 5151daecf63SSunyang Wu 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A, 5161daecf63SSunyang Wu 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C, 5171daecf63SSunyang Wu 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51, 5181daecf63SSunyang Wu 0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11, 5191daecf63SSunyang Wu 0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF, 5201daecf63SSunyang Wu 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, 5211daecf63SSunyang Wu 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 5221daecf63SSunyang Wu }; 5231daecf63SSunyang Wu 5241daecf63SSunyang Wu static const uint8_t ciphertext64_sm4_ofb[] = { 5251daecf63SSunyang Wu 0x14, 0xAE, 0x4A, 0x72, 0xB9, 0x7A, 0x93, 0xCE, 5261daecf63SSunyang Wu 0x12, 0x16, 0xCC, 0xD9, 0x98, 0xE3, 0x71, 0xC1, 5271daecf63SSunyang Wu 0x94, 0x54, 0x3E, 0x9A, 0x3A, 0x0A, 0x22, 0x63, 5281daecf63SSunyang Wu 0x22, 0xE8, 0xA5, 0xF3, 0x82, 0xB9, 0x14, 0x2D, 5291daecf63SSunyang Wu 0xEF, 0x5F, 0x94, 0xCB, 0x49, 0x17, 0xEF, 0xA4, 5301daecf63SSunyang Wu 0xD9, 0xCF, 0x3F, 0xC3, 0x32, 0x30, 0x90, 0x11, 5311daecf63SSunyang Wu 0x12, 0x61, 0x52, 0xCC, 0xEC, 0x43, 0x61, 0xF2, 5321daecf63SSunyang Wu 0x6F, 0x1E, 0x1A, 0x8D, 0xB4, 0x9D, 0x2F, 0xC4 5331daecf63SSunyang Wu }; 5341daecf63SSunyang Wu 5351daecf63SSunyang Wu static const struct blockcipher_test_data sm4_test_data_3 = { 5361daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_OFB, 5371daecf63SSunyang Wu .cipher_key = { 5381daecf63SSunyang Wu .data = { 5391daecf63SSunyang Wu 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 5401daecf63SSunyang Wu 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C 5411daecf63SSunyang Wu }, 5421daecf63SSunyang Wu .len = 16 5431daecf63SSunyang Wu }, 5441daecf63SSunyang Wu .iv = { 5451daecf63SSunyang Wu .data = { 5461daecf63SSunyang Wu 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 5471daecf63SSunyang Wu 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF 5481daecf63SSunyang Wu }, 5491daecf63SSunyang Wu .len = 16 5501daecf63SSunyang Wu }, 5511daecf63SSunyang Wu .plaintext = { 5521daecf63SSunyang Wu .data = plaintext64_sm4_ofb, 5531daecf63SSunyang Wu .len = 64 5541daecf63SSunyang Wu }, 5551daecf63SSunyang Wu .ciphertext = { 5561daecf63SSunyang Wu .data = ciphertext64_sm4_ofb, 5571daecf63SSunyang Wu .len = 64 5581daecf63SSunyang Wu }, 5591daecf63SSunyang Wu .auth_algo = RTE_CRYPTO_AUTH_SM3_HMAC, 5601daecf63SSunyang Wu .auth_key = { 5611daecf63SSunyang Wu .data = { 5621daecf63SSunyang Wu 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA, 5631daecf63SSunyang Wu 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD, 5641daecf63SSunyang Wu 0xDE, 0xF4, 0xDE, 0xAD 5651daecf63SSunyang Wu }, 5661daecf63SSunyang Wu .len = 20 5671daecf63SSunyang Wu }, 5681daecf63SSunyang Wu .digest = { 5691daecf63SSunyang Wu .data = { 5701daecf63SSunyang Wu 0xA7, 0x6F, 0x7D, 0xB5, 0xFB, 0x35, 0x92, 0x82, 5711daecf63SSunyang Wu 0x97, 0xB7, 0x9B, 0xBF, 0xA9, 0xCE, 0xA8, 0x4C, 5721daecf63SSunyang Wu 0x5A, 0xC5, 0x53, 0x62, 0x9F, 0x03, 0x54, 0x88, 5731daecf63SSunyang Wu 0x7D, 0xFE, 0x2D, 0xD3, 0x9C, 0xFB, 0x56, 0xED 5741daecf63SSunyang Wu }, 5751daecf63SSunyang Wu .len = 32, 5761daecf63SSunyang Wu .truncated_len = 16 5771daecf63SSunyang Wu } 5781daecf63SSunyang Wu }; 5791daecf63SSunyang Wu 5801daecf63SSunyang Wu static const struct blockcipher_test_data sm4_test_data_4 = { 5811daecf63SSunyang Wu .crypto_algo = RTE_CRYPTO_CIPHER_SM4_CBC, 5821daecf63SSunyang Wu .cipher_key = { 5831daecf63SSunyang Wu .data = { 5841daecf63SSunyang Wu 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2, 5851daecf63SSunyang Wu 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A 5861daecf63SSunyang Wu }, 5871daecf63SSunyang Wu .len = 16 5881daecf63SSunyang Wu }, 5891daecf63SSunyang Wu .iv = { 5901daecf63SSunyang Wu .data = { 5911daecf63SSunyang Wu 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 5921daecf63SSunyang Wu 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F 5931daecf63SSunyang Wu }, 5941daecf63SSunyang Wu .len = 16 5951daecf63SSunyang Wu }, 5961daecf63SSunyang Wu .plaintext = { 5971daecf63SSunyang Wu .data = plaintext_sm4_common, 5981daecf63SSunyang Wu .len = 64 5991daecf63SSunyang Wu }, 6001daecf63SSunyang Wu .ciphertext = { 6011daecf63SSunyang Wu .data = ciphertext64_sm4_cbc, 6021daecf63SSunyang Wu .len = 64 6031daecf63SSunyang Wu }, 6041daecf63SSunyang Wu .auth_algo = RTE_CRYPTO_AUTH_SM3_HMAC, 6051daecf63SSunyang Wu .auth_key = { 6061daecf63SSunyang Wu .data = { 6071daecf63SSunyang Wu 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA, 6081daecf63SSunyang Wu 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD, 6091daecf63SSunyang Wu 0xDE, 0xF4, 0xDE, 0xAD 6101daecf63SSunyang Wu }, 6111daecf63SSunyang Wu .len = 20 6121daecf63SSunyang Wu }, 6131daecf63SSunyang Wu .digest = { 6141daecf63SSunyang Wu .data = { 6151daecf63SSunyang Wu 0xA7, 0x87, 0x94, 0x53, 0x17, 0xAE, 0xF9, 0xCD, 6161daecf63SSunyang Wu 0x8A, 0x60, 0x34, 0xFB, 0x9F, 0x07, 0xED, 0x28, 6171daecf63SSunyang Wu 0x04, 0x13, 0x8C, 0xD4, 0x48, 0x83, 0x4A, 0xBA, 6181daecf63SSunyang Wu 0xB8, 0xE8, 0x45, 0xDB, 0xE0, 0x66, 0xF9, 0xDA 6191daecf63SSunyang Wu }, 6201daecf63SSunyang Wu .len = 32, 6211daecf63SSunyang Wu .truncated_len = 16 6221daecf63SSunyang Wu } 6231daecf63SSunyang Wu }; 6241daecf63SSunyang Wu 6251daecf63SSunyang Wu static const struct blockcipher_test_case sm4_chain_test_cases[] = { 6261daecf63SSunyang Wu { 6271daecf63SSunyang Wu .test_descr = "SM4-CBC HMAC-SM3 Encryption Digest", 6281daecf63SSunyang Wu .test_data = &sm4_test_data_4, 6291daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 6301daecf63SSunyang Wu }, 6311daecf63SSunyang Wu { 6321daecf63SSunyang Wu .test_descr = "SM4-CBC HMAC-SM3 Decryption Digest Verify", 6331daecf63SSunyang Wu .test_data = &sm4_test_data_4, 6341daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 6351daecf63SSunyang Wu }, 6361daecf63SSunyang Wu { 6371daecf63SSunyang Wu .test_descr = "SM4-CBC HMAC-SM3 Encryption Digest Scatter Gather", 6381daecf63SSunyang Wu .test_data = &sm4_test_data_4, 6391daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 6401daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG | 6411daecf63SSunyang Wu BLOCKCIPHER_TEST_FEATURE_OOP, 6421daecf63SSunyang Wu }, 6431daecf63SSunyang Wu { 6441daecf63SSunyang Wu .test_descr = "SM4-CBC HMAC-SM3 Decryption Digest Verify Scatter Gather", 6451daecf63SSunyang Wu .test_data = &sm4_test_data_4, 6461daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 6471daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG, 6481daecf63SSunyang Wu }, 6491daecf63SSunyang Wu { 6501daecf63SSunyang Wu .test_descr = "SM4-CBC HMAC-SM3 Encryption Digest OOP", 6511daecf63SSunyang Wu .test_data = &sm4_test_data_4, 6521daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 6531daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 6541daecf63SSunyang Wu }, 6551daecf63SSunyang Wu { 6561daecf63SSunyang Wu .test_descr = "SM4-CBC HMAC-SM3 Decryption Digest Verify OOP", 6571daecf63SSunyang Wu .test_data = &sm4_test_data_4, 6581daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 6591daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 6601daecf63SSunyang Wu }, 6611daecf63SSunyang Wu { 6621daecf63SSunyang Wu .test_descr = "SM4-CTR HMAC-SM3 Encryption Digest", 6631daecf63SSunyang Wu .test_data = &sm4_test_data_1, 6641daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 6651daecf63SSunyang Wu }, 6661daecf63SSunyang Wu { 6671daecf63SSunyang Wu .test_descr = "SM4-CTR HMAC-SM3 Decryption Digest Verify", 6681daecf63SSunyang Wu .test_data = &sm4_test_data_1, 6691daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 6701daecf63SSunyang Wu }, 6711daecf63SSunyang Wu { 6721daecf63SSunyang Wu .test_descr = "SM4-CTR HMAC-SM3 Encryption Digest Scatter Gather", 6731daecf63SSunyang Wu .test_data = &sm4_test_data_1, 6741daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 6751daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG | 6761daecf63SSunyang Wu BLOCKCIPHER_TEST_FEATURE_OOP, 6771daecf63SSunyang Wu }, 6781daecf63SSunyang Wu { 6791daecf63SSunyang Wu .test_descr = "SM4-CTR HMAC-SM3 Decryption Digest Verify Scatter Gather", 6801daecf63SSunyang Wu .test_data = &sm4_test_data_1, 6811daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 6821daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG, 6831daecf63SSunyang Wu }, 6841daecf63SSunyang Wu { 6851daecf63SSunyang Wu .test_descr = "SM4-CTR HMAC-SM3 Encryption Digest OOP", 6861daecf63SSunyang Wu .test_data = &sm4_test_data_1, 6871daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 6881daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 6891daecf63SSunyang Wu }, 6901daecf63SSunyang Wu { 6911daecf63SSunyang Wu .test_descr = "SM4-CTR HMAC-SM3 Decryption Digest Verify OOP", 6921daecf63SSunyang Wu .test_data = &sm4_test_data_1, 6931daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 6941daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 6951daecf63SSunyang Wu }, 6961daecf63SSunyang Wu { 6971daecf63SSunyang Wu .test_descr = "SM4-CFB HMAC-SM3 Encryption Digest", 6981daecf63SSunyang Wu .test_data = &sm4_test_data_2, 6991daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 7001daecf63SSunyang Wu }, 7011daecf63SSunyang Wu { 7021daecf63SSunyang Wu .test_descr = "SM4-CFB HMAC-SM3 Decryption Digest Verify", 7031daecf63SSunyang Wu .test_data = &sm4_test_data_2, 7041daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 7051daecf63SSunyang Wu }, 7061daecf63SSunyang Wu { 7071daecf63SSunyang Wu .test_descr = "SM4-CFB HMAC-SM3 Encryption Digest Scatter Gather", 7081daecf63SSunyang Wu .test_data = &sm4_test_data_2, 7091daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 7101daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG | 7111daecf63SSunyang Wu BLOCKCIPHER_TEST_FEATURE_OOP, 7121daecf63SSunyang Wu }, 7131daecf63SSunyang Wu { 7141daecf63SSunyang Wu .test_descr = "SM4-CFB HMAC-SM3 Decryption Digest Verify Scatter Gather", 7151daecf63SSunyang Wu .test_data = &sm4_test_data_2, 7161daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 7171daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG, 7181daecf63SSunyang Wu }, 7191daecf63SSunyang Wu { 7201daecf63SSunyang Wu .test_descr = "SM4-CFB HMAC-SM3 Encryption Digest OOP", 7211daecf63SSunyang Wu .test_data = &sm4_test_data_2, 7221daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 7231daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 7241daecf63SSunyang Wu }, 7251daecf63SSunyang Wu { 7261daecf63SSunyang Wu .test_descr = "SM4-CFB HMAC-SM3 Decryption Digest Verify OOP", 7271daecf63SSunyang Wu .test_data = &sm4_test_data_2, 7281daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 7291daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 7301daecf63SSunyang Wu }, 7311daecf63SSunyang Wu { 7321daecf63SSunyang Wu .test_descr = "SM4-OFB HMAC-SM3 Encryption Digest", 7331daecf63SSunyang Wu .test_data = &sm4_test_data_3, 7341daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 7351daecf63SSunyang Wu }, 7361daecf63SSunyang Wu { 7371daecf63SSunyang Wu .test_descr = "SM4-OFB HMAC-SM3 Decryption Digest Verify", 7381daecf63SSunyang Wu .test_data = &sm4_test_data_3, 7391daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 7401daecf63SSunyang Wu }, 7411daecf63SSunyang Wu { 7421daecf63SSunyang Wu .test_descr = "SM4-OFB HMAC-SM3 Encryption Digest Scatter Gather", 7431daecf63SSunyang Wu .test_data = &sm4_test_data_3, 7441daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 7451daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG | 7461daecf63SSunyang Wu BLOCKCIPHER_TEST_FEATURE_OOP, 7471daecf63SSunyang Wu }, 7481daecf63SSunyang Wu { 7491daecf63SSunyang Wu .test_descr = "SM4-OFB HMAC-SM3 Decryption Digest Verify Scatter Gather", 7501daecf63SSunyang Wu .test_data = &sm4_test_data_3, 7511daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 7521daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG, 7531daecf63SSunyang Wu }, 7541daecf63SSunyang Wu { 7551daecf63SSunyang Wu .test_descr = "SM4-OFB HMAC-SM3 Encryption Digest OOP", 7561daecf63SSunyang Wu .test_data = &sm4_test_data_3, 7571daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, 7581daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 7591daecf63SSunyang Wu }, 7601daecf63SSunyang Wu { 7611daecf63SSunyang Wu .test_descr = "SM4-OFB HMAC-SM3 Decryption Digest Verify OOP", 7621daecf63SSunyang Wu .test_data = &sm4_test_data_3, 7631daecf63SSunyang Wu .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, 7641daecf63SSunyang Wu .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, 7651daecf63SSunyang Wu }, 7661daecf63SSunyang Wu }; 7671daecf63SSunyang Wu 7681daecf63SSunyang Wu #endif 769