Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f176e632 authored by Herbert Xu's avatar Herbert Xu
Browse files

crypto: tcrypt - Fix AEAD chunk testing



My changeset 4b22f0dd

	crypto: tcrpyt - Remove unnecessary kmap/kunmap calls

introduced a typo that broke AEAD chunk testing.  In particular,
axbuf should really be xbuf.

There is also an issue with testing the last segment when encrypting.
The additional part produced by AEAD wasn't tested.  Similarly, on
decryption the additional part of the AEAD input is mistaken for
corruption.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent f3c85bc1
Loading
Loading
Loading
Loading
+19 −9
Original line number Diff line number Diff line
@@ -481,21 +481,31 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,

			for (k = 0, temp = 0; k < template[i].np; k++) {
				printk(KERN_INFO "page %u\n", k);
				q = &axbuf[IDX[k]];
				hexdump(q, template[i].tap[k]);
				q = &xbuf[IDX[k]];

				n = template[i].tap[k];
				if (k == template[i].np - 1)
					n += enc ? authsize : -authsize;
				hexdump(q, n);
				printk(KERN_INFO "%s\n",
				       memcmp(q, template[i].result + temp,
					      template[i].tap[k] -
					      (k < template[i].np - 1 || enc ?
					       0 : authsize)) ?
				       memcmp(q, template[i].result + temp, n) ?
				       "fail" : "pass");

				for (n = 0; q[template[i].tap[k] + n]; n++)
				q += n;
				if (k == template[i].np - 1 && !enc) {
					if (memcmp(q, template[i].input +
						      temp + n, authsize))
						n = authsize;
					else
						n = 0;
				} else {
					for (n = 0; q[n]; n++)
						;
				}
				if (n) {
					printk("Result buffer corruption %u "
					       "bytes:\n", n);
					hexdump(&q[template[i].tap[k]], n);
					hexdump(q, n);
				}

				temp += template[i].tap[k];