Message ID | 20190628042745.28455-6-j-keerthy@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | crypto: k3: Add sa2ul driver | expand |
On Fri, Jun 28, 2019 at 09:57:40AM +0530, Keerthy wrote: > The transform function can be used as is by other crypto > drivers that need to transform the 256 bit key using cpu. > Hence export it. What is this supposed to mean? SHA-256 is an unkeyed hash function. Also, you need to actually explain why this is needed. If your hardware supports SHA-256, why do you need to use the C sha256_transform()? - Eric
On 28/06/19 10:39 AM, Eric Biggers wrote: > On Fri, Jun 28, 2019 at 09:57:40AM +0530, Keerthy wrote: >> The transform function can be used as is by other crypto >> drivers that need to transform the 256 bit key using cpu. >> Hence export it. > > What is this supposed to mean? SHA-256 is an unkeyed hash function. HMAC-SHA256 my bad. > > Also, you need to actually explain why this is needed. If your hardware > supports SHA-256, why do you need to use the C sha256_transform()? Hardware supports only HMAC from pre-computed inner and outer digests is supported, i.e. the host must carry out initial preparation stage to generate intermediate hash state for both inner pad and outer pad. Hence the need to export the transform function. I will add it in the commit message. > > - Eric >
diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c index b7502a96a0d4..583a3c3b93e0 100644 --- a/crypto/sha256_generic.c +++ b/crypto/sha256_generic.c @@ -63,7 +63,7 @@ static inline void BLEND_OP(int I, u32 *W) W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16]; } -static void sha256_transform(u32 *state, const u8 *input) +void sha256_transform(u32 *state, const u8 *input) { u32 a, b, c, d, e, f, g, h, t1, t2; u32 W[64]; @@ -225,6 +225,7 @@ static void sha256_transform(u32 *state, const u8 *input) a = b = c = d = e = f = g = h = t1 = t2 = 0; memzero_explicit(W, 64 * sizeof(u32)); } +EXPORT_SYMBOL(sha256_transform); static void sha256_generic_block_fn(struct sha256_state *sst, u8 const *src, int blocks) diff --git a/include/crypto/sha.h b/include/crypto/sha.h index 8a46202b1857..6e04f412b0c2 100644 --- a/include/crypto/sha.h +++ b/include/crypto/sha.h @@ -95,6 +95,7 @@ struct sha512_state { struct shash_desc; +extern void sha256_transform(u32 *state, const u8 *input); extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data, unsigned int len);
The transform function can be used as is by other crypto drivers that need to transform the 256 bit key using cpu. Hence export it. Signed-off-by: Keerthy <j-keerthy@ti.com> --- crypto/sha256_generic.c | 3 ++- include/crypto/sha.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-)