summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris BREZILLON <boris.brezillon@free-electrons.com>2015-06-16 11:46:46 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2015-10-15 21:05:01 +0800
commit8a826a34a52eef9ea1cb93f49ada358fa7b0bb32 (patch)
tree8b9050ea6aecbadc5010c1be476480223142c097
parentd6ba06b8b9a947a8385769f458611d3c97410226 (diff)
downloadop-kernel-dev-8a826a34a52eef9ea1cb93f49ada358fa7b0bb32.zip
op-kernel-dev-8a826a34a52eef9ea1cb93f49ada358fa7b0bb32.tar.gz
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>
-rw-r--r--crypto/testmgr.c12
-rw-r--r--crypto/testmgr.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 25032b0..2037983 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;
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index e10582d..c6f4798 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -67,6 +67,7 @@ struct hash_testvec {
struct cipher_testvec {
char *key;
char *iv;
+ char *iv_out;
char *input;
char *result;
unsigned short tap[MAX_TAP];
OpenPOWER on IntegriCloud