crypto: testmgr - support test with different ciphertext per encryption
authorTianjia Zhang <tianjia.zhang@linux.alibaba.com>
Sun, 20 Sep 2020 16:20:58 +0000 (00:20 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 25 Sep 2020 07:48:54 +0000 (17:48 +1000)
Some asymmetric algorithms will get different ciphertext after
each encryption, such as SM2, and let testmgr support the testing
of such algorithms.

In struct akcipher_testvec, set c and c_size to be empty, skip
the comparison of the ciphertext, and compare the decrypted
plaintext with m to achieve the test purpose.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Tested-by: Xufeng Zhang <yunbo.xufeng@linux.alibaba.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/testmgr.c

index 66ee3bb..d084de4 100644 (file)
@@ -4026,7 +4026,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
                pr_err("alg: akcipher: %s test failed. err %d\n", op, err);
                goto free_all;
        }
-       if (!vecs->siggen_sigver_test) {
+       if (!vecs->siggen_sigver_test && c) {
                if (req->dst_len != c_size) {
                        pr_err("alg: akcipher: %s test failed. Invalid output len\n",
                               op);
@@ -4057,6 +4057,11 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
                goto free_all;
        }
 
+       if (!vecs->siggen_sigver_test && !c) {
+               c = outbuf_enc;
+               c_size = req->dst_len;
+       }
+
        op = vecs->siggen_sigver_test ? "sign" : "decrypt";
        if (WARN_ON(c_size > PAGE_SIZE))
                goto free_all;