diff options
author | Boris BREZILLON <boris.brezillon@free-electrons.com> | 2015-06-16 11:46:46 +0200 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2015-10-15 15:05:01 +0200 |
commit | 8a826a34a52eef9ea1cb93f49ada358fa7b0bb32 (patch) | |
tree | 8b9050ea6aecbadc5010c1be476480223142c097 /crypto/testmgr.c | |
parent | hwrng: stm32 - Fix build with CONFIG_PM (diff) | |
download | linux-8a826a34a52eef9ea1cb93f49ada358fa7b0bb32.tar.xz linux-8a826a34a52eef9ea1cb93f49ada358fa7b0bb32.zip |
crypto: testmgr - test IV value after a cipher operation
The crypto drivers are supposed to update the IV passed to the crypto
request before calling the completion callback.
Test for the IV value before considering the test as successful.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r-- | crypto/testmgr.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index 25032b0fd9ed..2037983c6405 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -1034,12 +1034,22 @@ static int __test_skcipher(struct crypto_skcipher *tfm, int enc, q = data; if (memcmp(q, template[i].result, template[i].rlen)) { - pr_err("alg: skcipher%s: Test %d failed on %s for %s\n", + pr_err("alg: skcipher%s: Test %d failed (invalid result) on %s for %s\n", d, j, e, algo); hexdump(q, template[i].rlen); ret = -EINVAL; goto out; } + + if (template[i].iv_out && + memcmp(iv, template[i].iv_out, + crypto_skcipher_ivsize(tfm))) { + pr_err("alg: skcipher%s: Test %d failed (invalid output IV) on %s for %s\n", + d, j, e, algo); + hexdump(iv, crypto_skcipher_ivsize(tfm)); + ret = -EINVAL; + goto out; + } } j = 0; |