Commit e44a1b44 authored by Jarod Wilson's avatar Jarod Wilson Committed by Herbert Xu

crypto: testmgr - Handle AEAD test vectors expected to fail verification

Add infrastructure to tcrypt/testmgr to support handling ccm decryption
test vectors that are expected to fail verification.
Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 2f817418
...@@ -363,6 +363,16 @@ static int test_aead(struct crypto_aead *tfm, int enc, ...@@ -363,6 +363,16 @@ static int test_aead(struct crypto_aead *tfm, int enc,
switch (ret) { switch (ret) {
case 0: case 0:
if (template[i].novrfy) {
/* verification was supposed to fail */
printk(KERN_ERR "alg: aead: %s failed "
"on test %d for %s: ret was 0, "
"expected -EBADMSG\n",
e, j, algo);
/* so really, we got a bad message */
ret = -EBADMSG;
goto out;
}
break; break;
case -EINPROGRESS: case -EINPROGRESS:
case -EBUSY: case -EBUSY:
...@@ -372,6 +382,10 @@ static int test_aead(struct crypto_aead *tfm, int enc, ...@@ -372,6 +382,10 @@ static int test_aead(struct crypto_aead *tfm, int enc,
INIT_COMPLETION(result.completion); INIT_COMPLETION(result.completion);
break; break;
} }
case -EBADMSG:
if (template[i].novrfy)
/* verification failure was expected */
continue;
/* fall through */ /* fall through */
default: default:
printk(KERN_ERR "alg: aead: %s failed on test " printk(KERN_ERR "alg: aead: %s failed on test "
...@@ -481,6 +495,16 @@ static int test_aead(struct crypto_aead *tfm, int enc, ...@@ -481,6 +495,16 @@ static int test_aead(struct crypto_aead *tfm, int enc,
switch (ret) { switch (ret) {
case 0: case 0:
if (template[i].novrfy) {
/* verification was supposed to fail */
printk(KERN_ERR "alg: aead: %s failed "
"on chunk test %d for %s: ret "
"was 0, expected -EBADMSG\n",
e, j, algo);
/* so really, we got a bad message */
ret = -EBADMSG;
goto out;
}
break; break;
case -EINPROGRESS: case -EINPROGRESS:
case -EBUSY: case -EBUSY:
...@@ -490,6 +514,10 @@ static int test_aead(struct crypto_aead *tfm, int enc, ...@@ -490,6 +514,10 @@ static int test_aead(struct crypto_aead *tfm, int enc,
INIT_COMPLETION(result.completion); INIT_COMPLETION(result.completion);
break; break;
} }
case -EBADMSG:
if (template[i].novrfy)
/* verification failure was expected */
continue;
/* fall through */ /* fall through */
default: default:
printk(KERN_ERR "alg: aead: %s failed on " printk(KERN_ERR "alg: aead: %s failed on "
......
...@@ -62,6 +62,7 @@ struct aead_testvec { ...@@ -62,6 +62,7 @@ struct aead_testvec {
int np; int np;
int anp; int anp;
unsigned char fail; unsigned char fail;
unsigned char novrfy; /* ccm dec verification failure expected */
unsigned char wk; /* weak key flag */ unsigned char wk; /* weak key flag */
unsigned char klen; unsigned char klen;
unsigned short ilen; unsigned short ilen;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment