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: Jarod Wilson <jarod@redhat.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
2f8174187f
commit
e44a1b44c3
2 changed files with 29 additions and 0 deletions
|
@ -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,
|
||||||
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,
|
||||||
|
|
||||||
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,
|
||||||
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 {
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue