diff options
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r-- | crypto/testmgr.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index e9e9d84293b9..6d5b746637be 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c | |||
@@ -190,10 +190,6 @@ static int test_hash(struct crypto_ahash *tfm, struct hash_testvec *template, | |||
190 | 190 | ||
191 | hash_buff = xbuf[0]; | 191 | hash_buff = xbuf[0]; |
192 | 192 | ||
193 | ret = -EINVAL; | ||
194 | if (WARN_ON(template[i].psize > PAGE_SIZE)) | ||
195 | goto out; | ||
196 | |||
197 | memcpy(hash_buff, template[i].plaintext, template[i].psize); | 193 | memcpy(hash_buff, template[i].plaintext, template[i].psize); |
198 | sg_init_one(&sg[0], hash_buff, template[i].psize); | 194 | sg_init_one(&sg[0], hash_buff, template[i].psize); |
199 | 195 | ||
@@ -2252,6 +2248,15 @@ static const struct alg_test_desc alg_test_descs[] = { | |||
2252 | } | 2248 | } |
2253 | } | 2249 | } |
2254 | }, { | 2250 | }, { |
2251 | .alg = "vmac(aes)", | ||
2252 | .test = alg_test_hash, | ||
2253 | .suite = { | ||
2254 | .hash = { | ||
2255 | .vecs = aes_vmac128_tv_template, | ||
2256 | .count = VMAC_AES_TEST_VECTORS | ||
2257 | } | ||
2258 | } | ||
2259 | }, { | ||
2255 | .alg = "wp256", | 2260 | .alg = "wp256", |
2256 | .test = alg_test_hash, | 2261 | .test = alg_test_hash, |
2257 | .suite = { | 2262 | .suite = { |
@@ -2348,6 +2353,7 @@ static int alg_find_test(const char *alg) | |||
2348 | int alg_test(const char *driver, const char *alg, u32 type, u32 mask) | 2353 | int alg_test(const char *driver, const char *alg, u32 type, u32 mask) |
2349 | { | 2354 | { |
2350 | int i; | 2355 | int i; |
2356 | int j; | ||
2351 | int rc; | 2357 | int rc; |
2352 | 2358 | ||
2353 | if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) { | 2359 | if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) { |
@@ -2369,14 +2375,22 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask) | |||
2369 | } | 2375 | } |
2370 | 2376 | ||
2371 | i = alg_find_test(alg); | 2377 | i = alg_find_test(alg); |
2372 | if (i < 0) | 2378 | j = alg_find_test(driver); |
2379 | if (i < 0 && j < 0) | ||
2373 | goto notest; | 2380 | goto notest; |
2374 | 2381 | ||
2375 | if (fips_enabled && !alg_test_descs[i].fips_allowed) | 2382 | if (fips_enabled && ((i >= 0 && !alg_test_descs[i].fips_allowed) || |
2383 | (j >= 0 && !alg_test_descs[j].fips_allowed))) | ||
2376 | goto non_fips_alg; | 2384 | goto non_fips_alg; |
2377 | 2385 | ||
2378 | rc = alg_test_descs[i].test(alg_test_descs + i, driver, | 2386 | rc = 0; |
2379 | type, mask); | 2387 | if (i >= 0) |
2388 | rc |= alg_test_descs[i].test(alg_test_descs + i, driver, | ||
2389 | type, mask); | ||
2390 | if (j >= 0) | ||
2391 | rc |= alg_test_descs[j].test(alg_test_descs + j, driver, | ||
2392 | type, mask); | ||
2393 | |||
2380 | test_done: | 2394 | test_done: |
2381 | if (fips_enabled && rc) | 2395 | if (fips_enabled && rc) |
2382 | panic("%s: %s alg self test failed in fips mode!\n", driver, alg); | 2396 | panic("%s: %s alg self test failed in fips mode!\n", driver, alg); |