summaryrefslogtreecommitdiffstats
path: root/crypto/testmgr.c
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2019-02-14 00:03:51 -0800
committerHerbert Xu <herbert@gondor.apana.org.au>2019-02-22 12:47:27 +0800
commit8efd972ef96a3f77ded9a838005d49efa9a96243 (patch)
tree0279da489d21a11db4895e5f630918054243de2d /crypto/testmgr.c
parentc9e1d48a1122ef1d0f753cbbe6e9a309214b5430 (diff)
downloadlinux-stable-8efd972ef96a3f77ded9a838005d49efa9a96243.tar.gz
linux-stable-8efd972ef96a3f77ded9a838005d49efa9a96243.tar.bz2
linux-stable-8efd972ef96a3f77ded9a838005d49efa9a96243.zip
crypto: testmgr - support checking skcipher output IV
Allow skcipher test vectors to declare the value the IV buffer should be updated to at the end of the encryption or decryption operation. (This check actually used to be supported in testmgr, but it was never used and therefore got removed except for the AES-Keywrap special case. But it will be used by CBC and CTR now, so re-add it.) Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r--crypto/testmgr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index d582a2758feb..8386038d67c7 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1542,7 +1542,9 @@ static int test_skcipher_vec_cfg(const char *driver, int enc,
if (ivsize) {
if (WARN_ON(ivsize > MAX_IVLEN))
return -EINVAL;
- if (vec->iv && !(vec->generates_iv && enc))
+ if (vec->generates_iv && !enc)
+ memcpy(iv, vec->iv_out, ivsize);
+ else if (vec->iv)
memcpy(iv, vec->iv, ivsize);
else
memset(iv, 0, ivsize);
@@ -1635,7 +1637,7 @@ static int test_skcipher_vec_cfg(const char *driver, int enc,
}
/* If applicable, check that the algorithm generated the correct IV */
- if (vec->generates_iv && enc && memcmp(iv, vec->iv, ivsize) != 0) {
+ if (vec->iv_out && memcmp(iv, vec->iv_out, ivsize) != 0) {
pr_err("alg: skcipher: %s %s test failed (wrong output IV) on test vector %u, cfg=\"%s\"\n",
driver, op, vec_num, cfg->name);
hexdump(iv, ivsize);