21 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
25 #include <linux/module.h>
28 #include <linux/types.h>
29 #include <crypto/sha.h>
30 #include <asm/byteorder.h>
48 struct sha1_state *sctx = shash_desc_ctx(desc);
58 unsigned int len,
unsigned int partial)
60 struct sha1_state *sctx = shash_desc_ctx(desc);
61 unsigned int done = 0;
74 sha1_transform_asm(sctx->
state, data + done, rounds);
83 static int sha1_ssse3_update(
struct shash_desc *desc,
const u8 *data,
86 struct sha1_state *sctx = shash_desc_ctx(desc);
102 res = __sha1_ssse3_update(desc, data, len, partial);
113 struct sha1_state *sctx = shash_desc_ctx(desc);
114 unsigned int i,
index, padlen;
131 sctx->
count += padlen;
134 __sha1_ssse3_update(desc, padding, padlen, index);
136 __sha1_ssse3_update(desc, (
const u8 *)&bits,
sizeof(bits), 56);
141 for (i = 0; i < 5; i++)
145 memset(sctx, 0,
sizeof(*sctx));
150 static int sha1_ssse3_export(
struct shash_desc *desc,
void *out)
152 struct sha1_state *sctx = shash_desc_ctx(desc);
154 memcpy(out, sctx,
sizeof(*sctx));
159 static int sha1_ssse3_import(
struct shash_desc *desc,
const void *
in)
161 struct sha1_state *sctx = shash_desc_ctx(desc);
163 memcpy(sctx, in,
sizeof(*sctx));
170 .init = sha1_ssse3_init,
171 .update = sha1_ssse3_update,
172 .final = sha1_ssse3_final,
173 .export = sha1_ssse3_export,
174 .import = sha1_ssse3_import,
179 .cra_driver_name=
"sha1-ssse3",
188 static bool __init avx_usable(
void)
192 if (!cpu_has_avx || !cpu_has_osxsave)
197 pr_info(
"AVX detected but unusable.\n");
206 static int __init sha1_ssse3_mod_init(
void)
215 sha1_transform_asm = sha1_transform_avx;
218 if (sha1_transform_asm) {
219 pr_info(
"Using %s optimized SHA-1 implementation\n",
224 pr_info(
"Neither AVX nor SSSE3 is available/usable.\n");
229 static void __exit sha1_ssse3_mod_fini(
void)