aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/tcrypt.c3
-rw-r--r--crypto/testmgr.c9
-rw-r--r--crypto/testmgr.h131
3 files changed, 143 insertions, 0 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 14213a096fd2..51fe7c8744ae 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -1983,6 +1983,9 @@ static int do_test(const char *alg, u32 type, u32 mask, int m)
1983 case 190: 1983 case 190:
1984 ret += tcrypt_test("authenc(hmac(sha512),cbc(des3_ede))"); 1984 ret += tcrypt_test("authenc(hmac(sha512),cbc(des3_ede))");
1985 break; 1985 break;
1986 case 191:
1987 ret += tcrypt_test("ecb(sm4)");
1988 break;
1986 case 200: 1989 case 200:
1987 test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0, 1990 test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0,
1988 speed_template_16_24_32); 1991 speed_template_16_24_32);
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 9f82e7bc9c56..af4a01c5037b 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3001,6 +3001,15 @@ static const struct alg_test_desc alg_test_descs[] = {
3001 } 3001 }
3002 } 3002 }
3003 }, { 3003 }, {
3004 .alg = "ecb(sm4)",
3005 .test = alg_test_skcipher,
3006 .suite = {
3007 .cipher = {
3008 .enc = __VECS(sm4_enc_tv_template),
3009 .dec = __VECS(sm4_dec_tv_template)
3010 }
3011 }
3012 }, {
3004 .alg = "ecb(speck128)", 3013 .alg = "ecb(speck128)",
3005 .test = alg_test_skcipher, 3014 .test = alg_test_skcipher,
3006 .suite = { 3015 .suite = {
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 73ba22c87da9..c80ed56a25a3 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -14324,6 +14324,137 @@ static const struct cipher_testvec serpent_xts_dec_tv_template[] = {
14324}; 14324};
14325 14325
14326/* 14326/*
14327 * SM4 test vector taken from the draft RFC
14328 * https://tools.ietf.org/html/draft-crypto-sm4-00#ref-GBT.32907-2016
14329 */
14330
14331static const struct cipher_testvec sm4_enc_tv_template[] = {
14332 { /* SM4 Appendix A: Example Calculations. Example 1. */
14333 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
14334 "\xFE\xDC\xBA\x98\x76\x54\x32\x10",
14335 .klen = 16,
14336 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
14337 "\xFE\xDC\xBA\x98\x76\x54\x32\x10",
14338 .ilen = 16,
14339 .result = "\x68\x1E\xDF\x34\xD2\x06\x96\x5E"
14340 "\x86\xB3\xE9\x4F\x53\x6E\x42\x46",
14341 .rlen = 16,
14342 }, { /*
14343 * SM4 Appendix A: Example Calculations.
14344 * Last 10 iterations of Example 2.
14345 */
14346 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
14347 "\xFE\xDC\xBA\x98\x76\x54\x32\x10",
14348 .klen = 16,
14349 .input = "\x99\x4a\xc3\xe7\xc3\x57\x89\x6a"
14350 "\x81\xfc\xa8\xe\x38\x3e\xef\x80"
14351 "\xb1\x98\xf2\xde\x3f\x4b\xae\xd1"
14352 "\xf0\xf1\x30\x4c\x1\x27\x5a\x8f"
14353 "\x45\xe1\x39\xb7\xae\xff\x1f\x27"
14354 "\xad\x57\x15\xab\x31\x5d\xc\xef"
14355 "\x8c\xc8\x80\xbd\x11\x98\xf3\x7b"
14356 "\xa2\xdd\x14\x20\xf9\xe8\xbb\x82"
14357 "\xf7\x32\xca\x4b\xa8\xf7\xb3\x4d"
14358 "\x27\xd1\xcd\xe6\xb6\x65\x5a\x23"
14359 "\xc2\xf3\x54\x84\x53\xe3\xb9\x20"
14360 "\xa5\x37\x0\xbe\xe7\x7b\x48\xfb"
14361 "\x21\x3d\x9e\x48\x1d\x9e\xf5\xbf"
14362 "\x77\xd5\xb4\x4a\x53\x71\x94\x7a"
14363 "\x88\xa6\x6e\x6\x93\xca\x43\xa5"
14364 "\xc4\xf6\xcd\x53\x4b\x7b\x8e\xfe"
14365 "\xb4\x28\x7c\x42\x29\x32\x5d\x88"
14366 "\xed\xce\x0\x19\xe\x16\x2\x6e"
14367 "\x87\xff\x2c\xac\xe8\xe7\xe9\xbf"
14368 "\x31\x51\xec\x47\xc3\x51\x83\xc1",
14369 .ilen = 160,
14370 .result = "\xb1\x98\xf2\xde\x3f\x4b\xae\xd1"
14371 "\xf0\xf1\x30\x4c\x1\x27\x5a\x8f"
14372 "\x45\xe1\x39\xb7\xae\xff\x1f\x27"
14373 "\xad\x57\x15\xab\x31\x5d\xc\xef"
14374 "\x8c\xc8\x80\xbd\x11\x98\xf3\x7b"
14375 "\xa2\xdd\x14\x20\xf9\xe8\xbb\x82"
14376 "\xf7\x32\xca\x4b\xa8\xf7\xb3\x4d"
14377 "\x27\xd1\xcd\xe6\xb6\x65\x5a\x23"
14378 "\xc2\xf3\x54\x84\x53\xe3\xb9\x20"
14379 "\xa5\x37\x0\xbe\xe7\x7b\x48\xfb"
14380 "\x21\x3d\x9e\x48\x1d\x9e\xf5\xbf"
14381 "\x77\xd5\xb4\x4a\x53\x71\x94\x7a"
14382 "\x88\xa6\x6e\x6\x93\xca\x43\xa5"
14383 "\xc4\xf6\xcd\x53\x4b\x7b\x8e\xfe"
14384 "\xb4\x28\x7c\x42\x29\x32\x5d\x88"
14385 "\xed\xce\x0\x19\xe\x16\x2\x6e"
14386 "\x87\xff\x2c\xac\xe8\xe7\xe9\xbf"
14387 "\x31\x51\xec\x47\xc3\x51\x83\xc1"
14388 "\x59\x52\x98\xc7\xc6\xfd\x27\x1f"
14389 "\x4\x2\xf8\x4\xc3\x3d\x3f\x66",
14390 .rlen = 160
14391 }
14392};
14393
14394static const struct cipher_testvec sm4_dec_tv_template[] = {
14395 { /* SM4 Appendix A: Example Calculations. Example 1. */
14396 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
14397 "\xFE\xDC\xBA\x98\x76\x54\x32\x10",
14398 .klen = 16,
14399 .input = "\x68\x1E\xDF\x34\xD2\x06\x96\x5E"
14400 "\x86\xB3\xE9\x4F\x53\x6E\x42\x46",
14401 .ilen = 16,
14402 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
14403 "\xFE\xDC\xBA\x98\x76\x54\x32\x10",
14404 .rlen = 16,
14405 }, { /*
14406 * SM4 Appendix A: Example Calculations.
14407 * Last 10 iterations of Example 2.
14408 */
14409 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
14410 "\xFE\xDC\xBA\x98\x76\x54\x32\x10",
14411 .klen = 16,
14412 .input = "\xb1\x98\xf2\xde\x3f\x4b\xae\xd1"
14413 "\xf0\xf1\x30\x4c\x1\x27\x5a\x8f"
14414 "\x45\xe1\x39\xb7\xae\xff\x1f\x27"
14415 "\xad\x57\x15\xab\x31\x5d\xc\xef"
14416 "\x8c\xc8\x80\xbd\x11\x98\xf3\x7b"
14417 "\xa2\xdd\x14\x20\xf9\xe8\xbb\x82"
14418 "\xf7\x32\xca\x4b\xa8\xf7\xb3\x4d"
14419 "\x27\xd1\xcd\xe6\xb6\x65\x5a\x23"
14420 "\xc2\xf3\x54\x84\x53\xe3\xb9\x20"
14421 "\xa5\x37\x0\xbe\xe7\x7b\x48\xfb"
14422 "\x21\x3d\x9e\x48\x1d\x9e\xf5\xbf"
14423 "\x77\xd5\xb4\x4a\x53\x71\x94\x7a"
14424 "\x88\xa6\x6e\x6\x93\xca\x43\xa5"
14425 "\xc4\xf6\xcd\x53\x4b\x7b\x8e\xfe"
14426 "\xb4\x28\x7c\x42\x29\x32\x5d\x88"
14427 "\xed\xce\x0\x19\xe\x16\x2\x6e"
14428 "\x87\xff\x2c\xac\xe8\xe7\xe9\xbf"
14429 "\x31\x51\xec\x47\xc3\x51\x83\xc1"
14430 "\x59\x52\x98\xc7\xc6\xfd\x27\x1f"
14431 "\x4\x2\xf8\x4\xc3\x3d\x3f\x66",
14432 .ilen = 160,
14433 .result = "\x99\x4a\xc3\xe7\xc3\x57\x89\x6a"
14434 "\x81\xfc\xa8\xe\x38\x3e\xef\x80"
14435 "\xb1\x98\xf2\xde\x3f\x4b\xae\xd1"
14436 "\xf0\xf1\x30\x4c\x1\x27\x5a\x8f"
14437 "\x45\xe1\x39\xb7\xae\xff\x1f\x27"
14438 "\xad\x57\x15\xab\x31\x5d\xc\xef"
14439 "\x8c\xc8\x80\xbd\x11\x98\xf3\x7b"
14440 "\xa2\xdd\x14\x20\xf9\xe8\xbb\x82"
14441 "\xf7\x32\xca\x4b\xa8\xf7\xb3\x4d"
14442 "\x27\xd1\xcd\xe6\xb6\x65\x5a\x23"
14443 "\xc2\xf3\x54\x84\x53\xe3\xb9\x20"
14444 "\xa5\x37\x0\xbe\xe7\x7b\x48\xfb"
14445 "\x21\x3d\x9e\x48\x1d\x9e\xf5\xbf"
14446 "\x77\xd5\xb4\x4a\x53\x71\x94\x7a"
14447 "\x88\xa6\x6e\x6\x93\xca\x43\xa5"
14448 "\xc4\xf6\xcd\x53\x4b\x7b\x8e\xfe"
14449 "\xb4\x28\x7c\x42\x29\x32\x5d\x88"
14450 "\xed\xce\x0\x19\xe\x16\x2\x6e"
14451 "\x87\xff\x2c\xac\xe8\xe7\xe9\xbf"
14452 "\x31\x51\xec\x47\xc3\x51\x83\xc1",
14453 .rlen = 160
14454 }
14455};
14456
14457/*
14327 * Speck test vectors taken from the original paper: 14458 * Speck test vectors taken from the original paper:
14328 * "The Simon and Speck Families of Lightweight Block Ciphers" 14459 * "The Simon and Speck Families of Lightweight Block Ciphers"
14329 * https://eprint.iacr.org/2013/404.pdf 14460 * https://eprint.iacr.org/2013/404.pdf