From: Stefan Berger <stefanb@linux.ibm.com>
To: linux-crypto@vger.kernel.org, herbert@gondor.apana.org.au,
davem@davemloft.net
Cc: linux-kernel@vger.kernel.org,
James.Bottomley@HansenPartnership.com, dhowells@redhat.com,
simo@redhat.com, Stefan Berger <stefanb@linux.ibm.com>
Subject: [PATCH v2 4/4] crypto: Extend testmgr with tests for shake128/256 XOFs
Date: Mon, 30 Jun 2025 10:38:34 -0400 [thread overview]
Message-ID: <20250630143834.2748285-5-stefanb@linux.ibm.com> (raw)
In-Reply-To: <20250630143834.2748285-1-stefanb@linux.ibm.com>
Extend the testmgr to run tests for XOFs where it squeezes a certain number
of bytes in a first step and then a different number in subsequent steps to
test for issues related to alignments and proper copying of bytes and
blocks. The test case parameters have been chosen so that all loops and
break statements within loops of the shake squeeze function are exercised.
Add test case data for shake128 and shake256 XOFs.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
crypto/testmgr.c | 56 +++++++++++++
crypto/testmgr.h | 212 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 268 insertions(+)
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 6bd67ca23bb1..0123be9d8396 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1630,6 +1630,57 @@ static int test_ahash_vec_cfg(const struct hash_testvec *vec,
driver, cfg);
}
+static int test_shash_xof(const struct hash_testvec *vec,
+ struct shash_desc *desc)
+{
+ struct shash_alg *alg = crypto_shash_alg(desc->tfm);
+ struct steps {
+ unsigned int first;
+ unsigned int other;
+ } steps[] = {
+ { .first = 0, .other = alg->base.cra_blocksize + 1, },
+ { .first = alg->base.cra_blocksize - 1, .other = 10, },
+ { .first = alg->base.cra_blocksize - 15, .other = 33, },
+ };
+ unsigned char *output = NULL, *tmp;
+ unsigned int offset, req;
+ int ret = 0;
+ size_t i;
+
+ for (i = 0; i < ARRAY_SIZE(steps); i++) {
+ if (!vec->xof)
+ continue;
+
+ tmp = krealloc(output, vec->xof_size, GFP_KERNEL);
+ if (IS_ERR(tmp))
+ return PTR_ERR(tmp);
+ output = tmp;
+
+ crypto_shash_init(desc);
+ crypto_shash_update(desc, vec->plaintext, vec->psize);
+ crypto_shash_squeeze(desc, output, steps[i].first, false);
+
+ offset = steps[i].first;
+ while (offset < vec->xof_size) {
+ req = steps[i].other;
+ if (offset + req > vec->xof_size)
+ req = vec->xof_size - offset;
+ crypto_shash_squeeze(desc, &output[offset], req, false);
+ offset += req;
+ }
+
+ if (memcmp(output, vec->xof, vec->xof_size) != 0) {
+ pr_err("XOF output of %s is wrong! (steps: %d, %d)\n",
+ alg->base.cra_name, steps[i].first,
+ steps[i].other);
+ ret = -EINVAL;
+ }
+ }
+ kfree(output);
+
+ return ret;
+}
+
static int test_hash_vec_cfg(const struct hash_testvec *vec,
const char *vec_name,
const struct testvec_config *cfg,
@@ -1966,6 +2017,11 @@ static int __alg_test_hash(const struct hash_testvec *vecs,
err = test_hash_vec(&vecs[i], i, req, desc, tsgl, hashstate);
if (err)
goto out;
+ if (desc && crypto_shash_alg(desc->tfm)->squeeze) {
+ err = test_shash_xof(&vecs[i], desc);
+ if (err)
+ return err;
+ }
cond_resched();
}
err = test_hash_vs_generic_impl(generic_driver, maxkeysize, req,
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 31e5918b761c..beee72598019 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -30,8 +30,10 @@
* @key: Pointer to key (NULL if none)
* @plaintext: Pointer to source data
* @digest: Pointer to expected digest
+ * @xof: Pointer to extended output
* @psize: Length of source data in bytes
* @ksize: Length of @key in bytes (0 if no key)
+ * @xof_size: Length of extended output
* @setkey_error: Expected error from setkey()
* @digest_error: Expected error from digest()
* @fips_skip: Skip the test vector in FIPS mode
@@ -40,8 +42,10 @@ struct hash_testvec {
const char *key;
const char *plaintext;
const char *digest;
+ const char *xof;
unsigned int psize;
unsigned short ksize;
+ unsigned short xof_size;
int setkey_error;
int digest_error;
bool fips_skip;
@@ -5919,17 +5923,95 @@ static const struct hash_testvec shake128_tv_template[] = {
.plaintext = "",
.digest = "\x7f\x9c\x2b\xa4\xe8\x8f\x82\x7d"
"\x61\x60\x45\x50\x76\x05\x85\x3e",
+ .xof = "\x7f\x9c\x2b\xa4\xe8\x8f\x82\x7d"
+ "\x61\x60\x45\x50\x76\x05\x85\x3e"
+ "\xd7\x3b\x80\x93\xf6\xef\xbc\x88"
+ "\xeb\x1a\x6e\xac\xfa\x66\xef\x26"
+ "\x3c\xb1\xee\xa9\x88\x00\x4b\x93"
+ "\x10\x3c\xfb\x0a\xee\xfd\x2a\x68"
+ "\x6e\x01\xfa\x4a\x58\xe8\xa3\x63"
+ "\x9c\xa8\xa1\xe3\xf9\xae\x57\xe2"
+ "\x35\xb8\xcc\x87\x3c\x23\xdc\x62"
+ "\xb8\xd2\x60\x16\x9a\xfa\x2f\x75"
+ "\xab\x91\x6a\x58\xd9\x74\x91\x88"
+ "\x35\xd2\x5e\x6a\x43\x50\x85\xb2"
+ "\xba\xdf\xd6\xdf\xaa\xc3\x59\xa5"
+ "\xef\xbb\x7b\xcc\x4b\x59\xd5\x38"
+ "\xdf\x9a\x04\x30\x2e\x10\xc8\xbc"
+ "\x1c\xbf\x1a\x0b\x3a\x51\x20\xea"
+ "\x17\xcd\xa7\xcf\xad\x76\x5f\x56"
+ "\x23\x47\x4d\x36\x8c\xcc\xa8\xaf"
+ "\x00\x07\xcd\x9f\x5e\x4c\x84\x9f"
+ "\x16\x7a\x58\x0b\x14\xaa\xbd\xef"
+ "\xae\xe7\xee\xf4\x7c\xb0\xfc\xa9"
+ "\x76\x7b\xe1\xfd\xa6\x94\x19\xdf"
+ "\xb9\x27\xe9\xdf\x07\x34\x8b\x19"
+ "\x66\x91\xab\xae\xb5\x80\xb3\x2d"
+ "\xef\x58\x53\x8b\x8d\x23\xf8\x77",
+ .xof_size = 200,
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x85\xc8\xde\x88\xd2\x88\x66\xbf"
"\x08\x68\x09\x0b\x39\x61\x16\x2b",
+ .xof = "\x85\xc8\xde\x88\xd2\x88\x66\xbf"
+ "\x08\x68\x09\x0b\x39\x61\x16\x2b"
+ "\xf8\x23\x92\xf6\x90\xd9\xe4\x73"
+ "\x09\x10\xf4\xaf\x7c\x6a\xb3\xee"
+ "\x43\x54\xb4\x9c\xa7\x29\xeb\x35"
+ "\x6e\xe3\xf5\xb0\xfb\xd2\x9b\x66"
+ "\x76\x93\x83\xe5\xe4\x01\xb1\xf8"
+ "\x5e\x04\x4c\x92\xbb\x52\x31\xaa"
+ "\x4d\xee\x17\x99\xaf\x7a\x7c\xee"
+ "\x21\x3a\x23\xad\xcd\x03\xc4\x80"
+ "\x6c\x9a\x8b\x0d\x8a\x2e\xea\xd8"
+ "\xea\x7a\x61\x34\xc1\x3e\x52\x3c"
+ "\xcf\x93\xad\x39\xd2\x27\xd3\xe7"
+ "\xd0\x22\xd9\x65\x4f\x3b\x49\x41"
+ "\x37\x88\x75\x8a\x64\x17\xe4\x2d"
+ "\x41\x95\x7c\xb3\x0c\xf0\x4d\xa3"
+ "\x7f\x26\x89\x7c\x2c\xf2\xf8\x00"
+ "\x55\x84\x62\x93\xfd\xe0\x23\x31"
+ "\xcf\x4a\x26\x9a\xaf\x2d\x47\xeb"
+ "\x27\xab\xa0\xfa\xba\x4a\x67\x8e"
+ "\xc0\x02\xbc\x0d\x30\x64\xea\xd0"
+ "\xa3\xf2\xe0\xd8\xa7\xfa\x40\x4a"
+ "\xf5\x4e\xbf\x4f\x5b\x18\x35\x62"
+ "\xa8\xda\xd7\x3b\x9a\x55\xbf\x1c"
+ "\x06\x6e\x00\x07\xe7\xab\x8a\x89",
+ .xof_size = 200,
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
"jklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x1a\x96\x18\x2b\x50\xfb\x8c\x7e"
"\x74\xe0\xa7\x07\x78\x8f\x55\xe9",
+ .xof = "\x1a\x96\x18\x2b\x50\xfb\x8c\x7e"
+ "\x74\xe0\xa7\x07\x78\x8f\x55\xe9"
+ "\x82\x09\xb8\xd9\x1f\xad\xe8\xf3"
+ "\x2f\x8d\xd5\xcf\xf7\xbf\x21\xf5"
+ "\x4e\xe5\xf1\x95\x50\x82\x5a\x6e"
+ "\x07\x00\x30\x51\x9e\x94\x42\x63"
+ "\xac\x1c\x67\x65\x28\x70\x65\x62"
+ "\x1f\x9f\xcb\x32\x01\x72\x3e\x32"
+ "\x23\xb6\x3a\x46\xc2\x93\x8a\xa9"
+ "\x53\xba\x84\x01\xd0\xea\x77\xb8"
+ "\xd2\x64\x90\x77\x55\x66\x40\x7b"
+ "\x95\x67\x3c\x0f\x4c\xc1\xce\x9f"
+ "\xd9\x66\x14\x8d\x7e\xfd\xff\x26"
+ "\xbb\xf9\xf4\x8a\x21\xc6\xda\x35"
+ "\xbf\xaa\x54\x56\x54\xf7\x0a\xe5"
+ "\x86\xff\x10\x13\x14\x20\x77\x14"
+ "\x83\xec\x92\xed\xab\x40\x8c\x76"
+ "\x7b\xf4\xc5\xb4\xff\xfa\xa8\x0c"
+ "\x8c\xa2\x14\xd8\x4c\x4d\xc7\x00"
+ "\xd0\xc5\x06\x30\xb2\xff\xc3\x79"
+ "\x3e\xa4\xd8\x72\x58\xb4\xc9\x54"
+ "\x8c\x54\x85\xa5\xca\x66\x6e\xf7"
+ "\x3f\xbd\x81\x6d\x41\x8a\xea\x63"
+ "\x95\xb5\x03\xad\xdd\x9b\x15\x0f"
+ "\x9e\x06\x63\x32\x5f\x01\xe5\x51",
+ .xof_size = 200,
}, {
.plaintext = "\x08\x9f\x13\xaa\x41\xd8\x4c\xe3"
"\x7a\x11\x85\x1c\xb3\x27\xbe\x55"
@@ -6062,6 +6144,32 @@ static const struct hash_testvec shake128_tv_template[] = {
.psize = 1023,
.digest = "\x13\x0a\x5b\xcb\x83\x9f\x10\x89"
"\xbb\x62\xda\xe4\xf4\xd3\x21\xf8",
+ .xof = "\x13\x0a\x5b\xcb\x83\x9f\x10\x89"
+ "\xbb\x62\xda\xe4\xf4\xd3\x21\xf8"
+ "\xd1\xa1\x20\xeb\x55\x0a\x93\x04"
+ "\x9b\xe3\x14\x3c\x18\xd1\x7c\xa7"
+ "\xcd\xf3\x11\xe7\xe1\xcf\xaf\xbf"
+ "\x2e\x99\x8b\x4f\x5e\x0a\x13\x81"
+ "\x6e\x12\x36\x9e\x8e\x3a\xf6\x42"
+ "\xa1\x85\x4b\xda\xcf\x5a\x36\x65"
+ "\xe4\xea\x18\x3b\x19\x86\xf0\xd4"
+ "\xeb\x0f\x33\x98\xb5\x2b\xa7\x9b"
+ "\xba\x17\xd1\xd4\xc5\x5f\x0d\x8e"
+ "\x6c\xb0\xba\x4f\x94\x25\x29\x54"
+ "\xf8\x1d\x03\x14\xb7\xe5\x1e\xb2"
+ "\xf0\xe7\x0f\x32\x86\xfa\x13\x9f"
+ "\x60\x8d\x15\x03\x2d\x96\x2a\xa4"
+ "\x76\xf6\x49\x6c\x8a\x75\x7d\x79"
+ "\xa4\xcc\xcb\xe0\xf9\xbb\x7a\x80"
+ "\xc1\x20\x79\x32\x42\xe8\x0e\xd9"
+ "\x0f\x93\x0b\xaf\x56\x6e\x71\xc8"
+ "\x3f\xc3\x52\xe0\x4b\x4b\xbc\xf5"
+ "\x1f\xdf\xed\x88\xb8\x9d\x5a\x75"
+ "\x77\xa1\x59\x9b\x6a\x7c\x43\xe4"
+ "\x5b\x58\xaa\x84\x0a\x18\xb5\x37"
+ "\x3b\xda\xa8\xc9\x35\x76\x1b\x62"
+ "\x4f\x52\xc7\x42\x4e\x00\xb1\x46",
+ .xof_size = 200,
},
};
@@ -6072,6 +6180,32 @@ static const struct hash_testvec shake256_tv_template[] = {
"\x23\x3b\x3f\xeb\x74\x3e\xeb\x24"
"\x3f\xcd\x52\xea\x62\xb8\x1b\x82"
"\xb5\x0c\x27\x64\x6e\xd5\x76\x2f",
+ .xof = "\x46\xb9\xdd\x2b\x0b\xa8\x8d\x13"
+ "\x23\x3b\x3f\xeb\x74\x3e\xeb\x24"
+ "\x3f\xcd\x52\xea\x62\xb8\x1b\x82"
+ "\xb5\x0c\x27\x64\x6e\xd5\x76\x2f"
+ "\xd7\x5d\xc4\xdd\xd8\xc0\xf2\x00"
+ "\xcb\x05\x01\x9d\x67\xb5\x92\xf6"
+ "\xfc\x82\x1c\x49\x47\x9a\xb4\x86"
+ "\x40\x29\x2e\xac\xb3\xb7\xc4\xbe"
+ "\x14\x1e\x96\x61\x6f\xb1\x39\x57"
+ "\x69\x2c\xc7\xed\xd0\xb4\x5a\xe3"
+ "\xdc\x07\x22\x3c\x8e\x92\x93\x7b"
+ "\xef\x84\xbc\x0e\xab\x86\x28\x53"
+ "\x34\x9e\xc7\x55\x46\xf5\x8f\xb7"
+ "\xc2\x77\x5c\x38\x46\x2c\x50\x10"
+ "\xd8\x46\xc1\x85\xc1\x51\x11\xe5"
+ "\x95\x52\x2a\x6b\xcd\x16\xcf\x86"
+ "\xf3\xd1\x22\x10\x9e\x3b\x1f\xdd"
+ "\x94\x3b\x6a\xec\x46\x8a\x2d\x62"
+ "\x1a\x7c\x06\xc6\xa9\x57\xc6\x2b"
+ "\x54\xda\xfc\x3b\xe8\x75\x67\xd6"
+ "\x77\x23\x13\x95\xf6\x14\x72\x93"
+ "\xb6\x8c\xea\xb7\xa9\xe0\xc5\x8d"
+ "\x86\x4e\x8e\xfd\xe4\xe1\xb9\xa4"
+ "\x6c\xbe\x85\x47\x13\x67\x2f\x5c"
+ "\xaa\xae\x31\x4e\xd9\x08\x3d\xab",
+ .xof_size = 200,
}, {
.plaintext = "a",
.psize = 1,
@@ -6079,6 +6213,32 @@ static const struct hash_testvec shake256_tv_template[] = {
"\xbd\x59\x25\x01\xa5\xe8\xfe\x9c"
"\xea\xaf\xca\x50\x25\x56\x26\xca"
"\x73\x6c\x13\x80\x42\x53\x0b\xa4",
+ .xof = "\x86\x7e\x2c\xb0\x4f\x5a\x04\xdc"
+ "\xbd\x59\x25\x01\xa5\xe8\xfe\x9c"
+ "\xea\xaf\xca\x50\x25\x56\x26\xca"
+ "\x73\x6c\x13\x80\x42\x53\x0b\xa4"
+ "\x36\xb7\xb1\xec\x0e\x06\xa2\x79"
+ "\xbc\x79\x07\x33\xbb\x0a\xee\x6f"
+ "\xa8\x02\x68\x3c\x7b\x35\x50\x63"
+ "\xc4\x34\xe9\x11\x89\xb0\xc6\x51"
+ "\xd0\x92\xb0\x1e\x55\xce\x4d\x61"
+ "\x0b\x54\xa5\x46\x6d\x02\xf8\x8f"
+ "\xc3\x78\x09\x6f\xb0\xda\xd0\x25"
+ "\x48\x57\xfe\x1e\x63\x81\xab\xc0"
+ "\x4e\x07\xe3\x3d\x91\x69\x35\x93"
+ "\x56\x36\x00\x48\x96\xc5\xb1\x25"
+ "\x34\x64\xf1\xcb\x5e\xa7\x3b\x00"
+ "\x7b\xc5\x02\x8b\xbb\xea\x13\xeb"
+ "\xc2\x86\x68\xdb\xfc\x26\xb1\x24"
+ "\x0c\xe4\x23\x9f\x8d\x50\x62\x7d"
+ "\xda\xa0\x16\x41\xdf\xea\xa9\xd2"
+ "\xfe\xf0\x3d\xd0\x25\xe0\xb8\x2c"
+ "\xf0\x71\xfb\x9c\xa3\x23\x2c\x74"
+ "\x2d\x83\x6b\x3c\xbc\xc8\xc3\xcb"
+ "\xa5\xb0\x58\xb7\x67\x95\xc1\x77"
+ "\x01\x23\x14\x19\x6d\xc8\x22\x76"
+ "\x89\x91\xc0\xf1\x6f\x8a\x65\x5a",
+ .xof_size = 200,
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkl"
"jklmklmnlmnomnopnopq",
@@ -6087,6 +6247,32 @@ static const struct hash_testvec shake256_tv_template[] = {
"\xee\xfb\xb8\xc3\x6f\x6f\x87\x13"
"\x3a\x79\x11\xe1\x8d\x97\x9e\xe1"
"\xae\x6b\xe5\xd4\xfd\x2e\x33\x29",
+ .xof = "\x4d\x8c\x2d\xd2\x43\x5a\x01\x28"
+ "\xee\xfb\xb8\xc3\x6f\x6f\x87\x13"
+ "\x3a\x79\x11\xe1\x8d\x97\x9e\xe1"
+ "\xae\x6b\xe5\xd4\xfd\x2e\x33\x29"
+ "\x40\xd8\x68\x8a\x4e\x6a\x59\xaa"
+ "\x80\x60\xf1\xf9\xbc\x99\x6c\x05"
+ "\xac\xa3\xc6\x96\xa8\xb6\x62\x79"
+ "\xdc\x67\x2c\x74\x0b\xb2\x24\xec"
+ "\x37\xa9\x2b\x65\xdb\x05\x39\xc0"
+ "\x20\x34\x55\xf5\x1d\x97\xcc\xe4"
+ "\xcf\xc4\x91\x27\xd7\x26\x0a\xfc"
+ "\x67\x3a\xf2\x08\xba\xf1\x9b\xe2"
+ "\x12\x33\xf3\xde\xbe\x78\xd0\x67"
+ "\x60\xcf\xa5\x51\xee\x1e\x07\x91"
+ "\x41\xd4\x9d\xd3\xef\x7e\x18\x2b"
+ "\x15\x24\xdf\x82\xea\x1c\xef\xe1"
+ "\xc6\xc3\x96\x61\x75\xf0\x22\x8d"
+ "\x35\x88\x7c\xd9\xf0\x9b\x05\x45"
+ "\x7f\x6d\x95\x2f\x9b\x3b\x32\x46"
+ "\x4e\x0b\x3c\x54\xdc\xc1\x3e\xfd"
+ "\xb4\xc5\x4e\x29\xcd\xb4\x08\x8f"
+ "\xaf\x48\x2c\xdd\xd0\xa5\xe6\xb8"
+ "\x22\xf5\xa8\x0d\x0c\xc7\x8d\x4c"
+ "\xc9\x01\x31\x90\x6f\xd5\x15\x9e"
+ "\xb5\x14\x2e\x15\x50\x24\xb6\x24",
+ .xof_size = 200,
}, {
.plaintext = "\x08\x9f\x13\xaa\x41\xd8\x4c\xe3"
"\x7a\x11\x85\x1c\xb3\x27\xbe\x55"
@@ -6221,6 +6407,32 @@ static const struct hash_testvec shake256_tv_template[] = {
"\xce\xdc\xc1\x02\x31\x6c\x0f\x19"
"\x0a\xb2\x77\x24\xe7\x68\x71\x3b"
"\x9b\x6d\x5f\xbc\xcf\x60\x28\x4c",
+ .xof = "\x24\xab\xec\xa1\x22\x05\x1c\xf3"
+ "\xce\xdc\xc1\x02\x31\x6c\x0f\x19"
+ "\x0a\xb2\x77\x24\xe7\x68\x71\x3b"
+ "\x9b\x6d\x5f\xbc\xcf\x60\x28\x4c"
+ "\x97\x76\xdc\x50\xda\xa5\x14\x5e"
+ "\xe6\xb9\x1e\xbc\x42\x1e\x8d\xd5"
+ "\xb5\xae\xe2\x77\x48\xde\x80\x1f"
+ "\x7a\x74\x30\x79\x86\xc8\x6f\x2e"
+ "\x90\x76\x07\xb3\xed\x74\xdf\x44"
+ "\xcc\x3b\x00\x64\xb4\xb1\xdc\x11"
+ "\xa8\xcf\xbf\x01\xfc\x21\x00\xac"
+ "\x2c\xa1\xea\xbd\x84\x1c\x84\xa2"
+ "\x6b\x02\x7a\x19\xb9\xbf\xbb\xc0"
+ "\x21\x71\x4b\xb2\xc0\x50\xa4\xe9"
+ "\xe1\x48\xd2\xca\x14\xcc\x3f\x65"
+ "\x87\x38\xc5\xfb\xc0\x03\x23\x64"
+ "\x65\x5d\xb8\xd1\x9d\xd6\xd4\x3a"
+ "\xeb\x57\xe7\x3c\x22\x17\xb6\x5a"
+ "\x8e\x4b\x73\xf4\x36\x4a\x36\x17"
+ "\x8c\xbe\x7d\x2b\x37\xaf\xde\xbc"
+ "\xc7\xe8\x52\x00\x90\x90\x0e\x3b"
+ "\x22\x6f\xa7\xec\x2f\x99\x6d\x32"
+ "\x36\x20\x12\x4d\x14\xa8\x7f\xc4"
+ "\x9e\xb5\x7f\x6b\xc6\xe9\xe2\x8e"
+ "\xd5\xc8\x25\xe6\xf1\x97\xbf\x76",
+ .xof_size = 200,
},
};
--
2.49.0
next prev parent reply other threads:[~2025-06-30 14:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-30 14:38 [PATCH v2 0/4] crypto: Add support " Stefan Berger
2025-06-30 14:38 ` [PATCH v2 1/4] crypto: Add squeeze function to shash_alg for support of XOFs Stefan Berger
2025-06-30 14:38 ` [PATCH v2 2/4] crypto: Add shake128/256 to generic sha3 module Stefan Berger
2025-06-30 14:38 ` [PATCH v2 3/4] crypto: Add tests cases for shake128 & shake256 to testmgr Stefan Berger
2025-06-30 14:38 ` Stefan Berger [this message]
2025-07-18 10:31 ` [PATCH v2 0/4] crypto: Add support for shake128/256 XOFs Herbert Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250630143834.2748285-5-stefanb@linux.ibm.com \
--to=stefanb@linux.ibm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=simo@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®