diff options
-rw-r--r-- | crypto/Kconfig | 1 | ||||
-rw-r--r-- | crypto/tcrypt.c | 6 | ||||
-rw-r--r-- | crypto/testmgr.c | 15 | ||||
-rw-r--r-- | crypto/testmgr.h | 137 |
4 files changed, 158 insertions, 1 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig index be5d3128f8a8..74d0e622a515 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig | |||
@@ -92,6 +92,7 @@ config CRYPTO_MANAGER2 | |||
92 | select CRYPTO_AEAD2 | 92 | select CRYPTO_AEAD2 |
93 | select CRYPTO_HASH2 | 93 | select CRYPTO_HASH2 |
94 | select CRYPTO_BLKCIPHER2 | 94 | select CRYPTO_BLKCIPHER2 |
95 | select CRYPTO_PCOMP | ||
95 | 96 | ||
96 | config CRYPTO_GF128MUL | 97 | config CRYPTO_GF128MUL |
97 | tristate "GF(2^128) multiplication functions (EXPERIMENTAL)" | 98 | tristate "GF(2^128) multiplication functions (EXPERIMENTAL)" |
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 28a45a1e6f42..c3c9124209a1 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
@@ -53,7 +53,7 @@ static char *check[] = { | |||
53 | "cast6", "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea", | 53 | "cast6", "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea", |
54 | "khazad", "wp512", "wp384", "wp256", "tnepres", "xeta", "fcrypt", | 54 | "khazad", "wp512", "wp384", "wp256", "tnepres", "xeta", "fcrypt", |
55 | "camellia", "seed", "salsa20", "rmd128", "rmd160", "rmd256", "rmd320", | 55 | "camellia", "seed", "salsa20", "rmd128", "rmd160", "rmd256", "rmd320", |
56 | "lzo", "cts", NULL | 56 | "lzo", "cts", "zlib", NULL |
57 | }; | 57 | }; |
58 | 58 | ||
59 | static int test_cipher_jiffies(struct blkcipher_desc *desc, int enc, | 59 | static int test_cipher_jiffies(struct blkcipher_desc *desc, int enc, |
@@ -661,6 +661,10 @@ static void do_test(int m) | |||
661 | tcrypt_test("ecb(seed)"); | 661 | tcrypt_test("ecb(seed)"); |
662 | break; | 662 | break; |
663 | 663 | ||
664 | case 44: | ||
665 | tcrypt_test("zlib"); | ||
666 | break; | ||
667 | |||
664 | case 100: | 668 | case 100: |
665 | tcrypt_test("hmac(md5)"); | 669 | tcrypt_test("hmac(md5)"); |
666 | break; | 670 | break; |
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index e750357b898f..b50c3c6b17a2 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c | |||
@@ -2018,6 +2018,21 @@ static const struct alg_test_desc alg_test_descs[] = { | |||
2018 | } | 2018 | } |
2019 | } | 2019 | } |
2020 | } | 2020 | } |
2021 | }, { | ||
2022 | .alg = "zlib", | ||
2023 | .test = alg_test_pcomp, | ||
2024 | .suite = { | ||
2025 | .pcomp = { | ||
2026 | .comp = { | ||
2027 | .vecs = zlib_comp_tv_template, | ||
2028 | .count = ZLIB_COMP_TEST_VECTORS | ||
2029 | }, | ||
2030 | .decomp = { | ||
2031 | .vecs = zlib_decomp_tv_template, | ||
2032 | .count = ZLIB_DECOMP_TEST_VECTORS | ||
2033 | } | ||
2034 | } | ||
2035 | } | ||
2021 | } | 2036 | } |
2022 | }; | 2037 | }; |
2023 | 2038 | ||
diff --git a/crypto/testmgr.h b/crypto/testmgr.h index c517e43cfc88..526f00a9c72f 100644 --- a/crypto/testmgr.h +++ b/crypto/testmgr.h | |||
@@ -15,6 +15,9 @@ | |||
15 | #ifndef _CRYPTO_TESTMGR_H | 15 | #ifndef _CRYPTO_TESTMGR_H |
16 | #define _CRYPTO_TESTMGR_H | 16 | #define _CRYPTO_TESTMGR_H |
17 | 17 | ||
18 | #include <linux/netlink.h> | ||
19 | #include <linux/zlib.h> | ||
20 | |||
18 | #include <crypto/compress.h> | 21 | #include <crypto/compress.h> |
19 | 22 | ||
20 | #define MAX_DIGEST_SIZE 64 | 23 | #define MAX_DIGEST_SIZE 64 |
@@ -8361,6 +8364,7 @@ struct pcomp_testvec { | |||
8361 | * Deflate test vectors (null-terminated strings). | 8364 | * Deflate test vectors (null-terminated strings). |
8362 | * Params: winbits=-11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL. | 8365 | * Params: winbits=-11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL. |
8363 | */ | 8366 | */ |
8367 | |||
8364 | #define DEFLATE_COMP_TEST_VECTORS 2 | 8368 | #define DEFLATE_COMP_TEST_VECTORS 2 |
8365 | #define DEFLATE_DECOMP_TEST_VECTORS 2 | 8369 | #define DEFLATE_DECOMP_TEST_VECTORS 2 |
8366 | 8370 | ||
@@ -8436,6 +8440,139 @@ static struct comp_testvec deflate_decomp_tv_template[] = { | |||
8436 | }, | 8440 | }, |
8437 | }; | 8441 | }; |
8438 | 8442 | ||
8443 | #define ZLIB_COMP_TEST_VECTORS 2 | ||
8444 | #define ZLIB_DECOMP_TEST_VECTORS 2 | ||
8445 | |||
8446 | static const struct { | ||
8447 | struct nlattr nla; | ||
8448 | int val; | ||
8449 | } deflate_comp_params[] = { | ||
8450 | { | ||
8451 | .nla = { | ||
8452 | .nla_len = NLA_HDRLEN + sizeof(int), | ||
8453 | .nla_type = ZLIB_COMP_LEVEL, | ||
8454 | }, | ||
8455 | .val = Z_DEFAULT_COMPRESSION, | ||
8456 | }, { | ||
8457 | .nla = { | ||
8458 | .nla_len = NLA_HDRLEN + sizeof(int), | ||
8459 | .nla_type = ZLIB_COMP_METHOD, | ||
8460 | }, | ||
8461 | .val = Z_DEFLATED, | ||
8462 | }, { | ||
8463 | .nla = { | ||
8464 | .nla_len = NLA_HDRLEN + sizeof(int), | ||
8465 | .nla_type = ZLIB_COMP_WINDOWBITS, | ||
8466 | }, | ||
8467 | .val = -11, | ||
8468 | }, { | ||
8469 | .nla = { | ||
8470 | .nla_len = NLA_HDRLEN + sizeof(int), | ||
8471 | .nla_type = ZLIB_COMP_MEMLEVEL, | ||
8472 | }, | ||
8473 | .val = MAX_MEM_LEVEL, | ||
8474 | }, { | ||
8475 | .nla = { | ||
8476 | .nla_len = NLA_HDRLEN + sizeof(int), | ||
8477 | .nla_type = ZLIB_COMP_STRATEGY, | ||
8478 | }, | ||
8479 | .val = Z_DEFAULT_STRATEGY, | ||
8480 | } | ||
8481 | }; | ||
8482 | |||
8483 | static const struct { | ||
8484 | struct nlattr nla; | ||
8485 | int val; | ||
8486 | } deflate_decomp_params[] = { | ||
8487 | { | ||
8488 | .nla = { | ||
8489 | .nla_len = NLA_HDRLEN + sizeof(int), | ||
8490 | .nla_type = ZLIB_DECOMP_WINDOWBITS, | ||
8491 | }, | ||
8492 | .val = -11, | ||
8493 | } | ||
8494 | }; | ||
8495 | |||
8496 | static struct pcomp_testvec zlib_comp_tv_template[] = { | ||
8497 | { | ||
8498 | .params = &deflate_comp_params, | ||
8499 | .paramsize = sizeof(deflate_comp_params), | ||
8500 | .inlen = 70, | ||
8501 | .outlen = 38, | ||
8502 | .input = "Join us now and share the software " | ||
8503 | "Join us now and share the software ", | ||
8504 | .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56" | ||
8505 | "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51" | ||
8506 | "\x28\xce\x48\x2c\x4a\x55\x28\xc9" | ||
8507 | "\x48\x55\x28\xce\x4f\x2b\x29\x07" | ||
8508 | "\x71\xbc\x08\x2b\x01\x00", | ||
8509 | }, { | ||
8510 | .params = &deflate_comp_params, | ||
8511 | .paramsize = sizeof(deflate_comp_params), | ||
8512 | .inlen = 191, | ||
8513 | .outlen = 122, | ||
8514 | .input = "This document describes a compression method based on the DEFLATE" | ||
8515 | "compression algorithm. This document defines the application of " | ||
8516 | "the DEFLATE algorithm to the IP Payload Compression Protocol.", | ||
8517 | .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04" | ||
8518 | "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09" | ||
8519 | "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8" | ||
8520 | "\x24\xdb\x67\xd9\x47\xc1\xef\x49" | ||
8521 | "\x68\x12\x51\xae\x76\x67\xd6\x27" | ||
8522 | "\x19\x88\x1a\xde\x85\xab\x21\xf2" | ||
8523 | "\x08\x5d\x16\x1e\x20\x04\x2d\xad" | ||
8524 | "\xf3\x18\xa2\x15\x85\x2d\x69\xc4" | ||
8525 | "\x42\x83\x23\xb6\x6c\x89\x71\x9b" | ||
8526 | "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f" | ||
8527 | "\xed\x62\xa9\x4c\x80\xff\x13\xaf" | ||
8528 | "\x52\x37\xed\x0e\x52\x6b\x59\x02" | ||
8529 | "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98" | ||
8530 | "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a" | ||
8531 | "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79" | ||
8532 | "\xfa\x02", | ||
8533 | }, | ||
8534 | }; | ||
8535 | |||
8536 | static struct pcomp_testvec zlib_decomp_tv_template[] = { | ||
8537 | { | ||
8538 | .params = &deflate_decomp_params, | ||
8539 | .paramsize = sizeof(deflate_decomp_params), | ||
8540 | .inlen = 122, | ||
8541 | .outlen = 191, | ||
8542 | .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04" | ||
8543 | "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09" | ||
8544 | "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8" | ||
8545 | "\x24\xdb\x67\xd9\x47\xc1\xef\x49" | ||
8546 | "\x68\x12\x51\xae\x76\x67\xd6\x27" | ||
8547 | "\x19\x88\x1a\xde\x85\xab\x21\xf2" | ||
8548 | "\x08\x5d\x16\x1e\x20\x04\x2d\xad" | ||
8549 | "\xf3\x18\xa2\x15\x85\x2d\x69\xc4" | ||
8550 | "\x42\x83\x23\xb6\x6c\x89\x71\x9b" | ||
8551 | "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f" | ||
8552 | "\xed\x62\xa9\x4c\x80\xff\x13\xaf" | ||
8553 | "\x52\x37\xed\x0e\x52\x6b\x59\x02" | ||
8554 | "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98" | ||
8555 | "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a" | ||
8556 | "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79" | ||
8557 | "\xfa\x02", | ||
8558 | .output = "This document describes a compression method based on the DEFLATE" | ||
8559 | "compression algorithm. This document defines the application of " | ||
8560 | "the DEFLATE algorithm to the IP Payload Compression Protocol.", | ||
8561 | }, { | ||
8562 | .params = &deflate_decomp_params, | ||
8563 | .paramsize = sizeof(deflate_decomp_params), | ||
8564 | .inlen = 38, | ||
8565 | .outlen = 70, | ||
8566 | .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56" | ||
8567 | "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51" | ||
8568 | "\x28\xce\x48\x2c\x4a\x55\x28\xc9" | ||
8569 | "\x48\x55\x28\xce\x4f\x2b\x29\x07" | ||
8570 | "\x71\xbc\x08\x2b\x01\x00", | ||
8571 | .output = "Join us now and share the software " | ||
8572 | "Join us now and share the software ", | ||
8573 | }, | ||
8574 | }; | ||
8575 | |||
8439 | /* | 8576 | /* |
8440 | * LZO test vectors (null-terminated strings). | 8577 | * LZO test vectors (null-terminated strings). |
8441 | */ | 8578 | */ |