aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/crypto
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2025-05-23 17:20:59 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2025-05-23 17:20:59 +0800
commit35de409aa30269a3b106fe957a95f7a2b7e21a60 (patch)
tree4d4b2a319479621efcf7f7358d88d94da30f121e /crypto
parentcrypto: marvell/cesa - Do not chain submitted requests (diff)
downloadwireguard-linux-35de409aa30269a3b106fe957a95f7a2b7e21a60.tar.xz
wireguard-linux-35de409aa30269a3b106fe957a95f7a2b7e21a60.zip
Revert "crypto: testmgr - Add hash export format testing"
This reverts commit 18c438b228558e05ede7dccf947a6547516fc0c7. The s390 hmac and sha3 algorithms are failing the test. Revert the change until they have been fixed. Reported-by: Ingo Franzki <ifranzki@linux.ibm.com> Link: https://lore.kernel.org/all/623a7fcb-b4cb-48e6-9833-57ad2b32a252@linux.ibm.com/ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/testmgr.c95
-rw-r--r--crypto/testmgr.h2
2 files changed, 9 insertions, 88 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 737064b31480..72005074a5c2 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -17,19 +17,10 @@
*/
#include <crypto/aead.h>
-#include <crypto/acompress.h>
-#include <crypto/akcipher.h>
-#include <crypto/drbg.h>
-#include <crypto/internal/cipher.h>
-#include <crypto/internal/hash.h>
-#include <crypto/internal/simd.h>
-#include <crypto/kpp.h>
-#include <crypto/rng.h>
-#include <crypto/sig.h>
+#include <crypto/hash.h>
#include <crypto/skcipher.h>
#include <linux/err.h>
#include <linux/fips.h>
-#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/once.h>
#include <linux/prandom.h>
@@ -37,6 +28,14 @@
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/uio.h>
+#include <crypto/rng.h>
+#include <crypto/drbg.h>
+#include <crypto/akcipher.h>
+#include <crypto/kpp.h>
+#include <crypto/acompress.h>
+#include <crypto/sig.h>
+#include <crypto/internal/cipher.h>
+#include <crypto/internal/simd.h>
#include "internal.h"
@@ -1465,49 +1464,6 @@ static int check_nonfinal_ahash_op(const char *op, int err,
return 0;
}
-static int check_ahash_export(struct ahash_request *req,
- const struct hash_testvec *vec,
- const char *vec_name,
- const struct testvec_config *cfg,
- const char *driver, u8 *hashstate)
-{
- struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
- const unsigned int digestsize = crypto_ahash_digestsize(tfm);
- HASH_FBREQ_ON_STACK(fbreq, req);
- int err;
-
- if (!vec->state)
- return 0;
-
- err = crypto_ahash_export(req, hashstate);
- if (err) {
- pr_err("alg: ahash: %s mixed export() failed with err %d on test vector %s, cfg=\"%s\"\n",
- driver, err, vec_name, cfg->name);
- return err;
- }
- err = crypto_ahash_import(req, vec->state);
- if (err) {
- pr_err("alg: ahash: %s mixed import() failed with err %d on test vector %s, cfg=\"%s\"\n",
- driver, err, vec_name, cfg->name);
- return err;
- }
- err = crypto_ahash_import(fbreq, hashstate);
- if (err) {
- pr_err("alg: ahash: %s fallback import() failed with err %d on test vector %s, cfg=\"%s\"\n",
- crypto_ahash_driver_name(crypto_ahash_reqtfm(fbreq)), err, vec_name, cfg->name);
- return err;
- }
- ahash_request_set_crypt(fbreq, NULL, hashstate, 0);
- testmgr_poison(hashstate, digestsize + TESTMGR_POISON_LEN);
- err = crypto_ahash_final(fbreq);
- if (err) {
- pr_err("alg: ahash: %s fallback final() failed with err %d on test vector %s, cfg=\"%s\"\n",
- crypto_ahash_driver_name(crypto_ahash_reqtfm(fbreq)), err, vec_name, cfg->name);
- return err;
- }
- return check_hash_result("ahash export", hashstate, digestsize, vec, vec_name, driver, cfg);
-}
-
/* Test one hash test vector in one configuration, using the ahash API */
static int test_ahash_vec_cfg(const struct hash_testvec *vec,
const char *vec_name,
@@ -1653,10 +1609,6 @@ static int test_ahash_vec_cfg(const struct hash_testvec *vec,
driver, vec_name, cfg);
if (err)
return err;
- err = check_ahash_export(req, vec, vec_name, cfg,
- driver, hashstate);
- if (err)
- return err;
err = do_ahash_op(crypto_ahash_final, req, &wait, cfg->nosimd);
if (err) {
pr_err("alg: ahash: %s final() failed with err %d on test vector %s, cfg=\"%s\"\n",
@@ -1780,17 +1732,6 @@ static void generate_random_hash_testvec(struct rnd_state *rng,
vec->digest_error = crypto_hash_digest(
crypto_ahash_reqtfm(req), vec->plaintext,
vec->psize, (u8 *)vec->digest);
-
- if (vec->digest_error || !vec->state)
- goto done;
-
- ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP, NULL, NULL);
- ahash_request_set_virt(req, vec->plaintext, (u8 *)vec->digest,
- vec->psize);
- crypto_ahash_init(req);
- crypto_ahash_update(req);
- crypto_ahash_export(req, (u8 *)vec->state);
-
done:
snprintf(name, max_namelen, "\"random: psize=%u ksize=%u\"",
vec->psize, vec->ksize);
@@ -1809,7 +1750,6 @@ static int test_hash_vs_generic_impl(const char *generic_driver,
{
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
const unsigned int digestsize = crypto_ahash_digestsize(tfm);
- const unsigned int statesize = crypto_ahash_statesize(tfm);
const unsigned int blocksize = crypto_ahash_blocksize(tfm);
const unsigned int maxdatasize = (2 * PAGE_SIZE) - TESTMGR_POISON_LEN;
const char *algname = crypto_hash_alg_common(tfm)->base.cra_name;
@@ -1882,22 +1822,6 @@ static int test_hash_vs_generic_impl(const char *generic_driver,
goto out;
}
- if (crypto_hash_no_export_core(tfm) ||
- crypto_hash_no_export_core(generic_tfm))
- ;
- else if (statesize != crypto_ahash_statesize(generic_tfm)) {
- pr_err("alg: hash: statesize for %s (%u) doesn't match generic impl (%u)\n",
- driver, statesize,
- crypto_ahash_statesize(generic_tfm));
- err = -EINVAL;
- goto out;
- } else {
- vec.state = kmalloc(statesize, GFP_KERNEL);
- err = -ENOMEM;
- if (!vec.state)
- goto out;
- }
-
/*
* Now generate test vectors using the generic implementation, and test
* the other implementation against them.
@@ -1930,7 +1854,6 @@ out:
kfree(vec.key);
kfree(vec.plaintext);
kfree(vec.digest);
- kfree(vec.state);
ahash_request_free(generic_req);
crypto_free_ahash(generic_tfm);
return err;
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 5cf455a708b8..32d099ac9e73 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -29,7 +29,6 @@
* hash_testvec: structure to describe a hash (message digest) test
* @key: Pointer to key (NULL if none)
* @plaintext: Pointer to source data
- * @state: Pointer to expected state
* @digest: Pointer to expected digest
* @psize: Length of source data in bytes
* @ksize: Length of @key in bytes (0 if no key)
@@ -40,7 +39,6 @@
struct hash_testvec {
const char *key;
const char *plaintext;
- const char *state;
const char *digest;
unsigned int psize;
unsigned short ksize;