mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 14:12:51 +00:00
2aaba014b5
<linux/cryptohash.h> sounds very generic and important, like it's the header to include if you're doing cryptographic hashing in the kernel. But actually it only includes the library implementation of the SHA-1 compression function (not even the full SHA-1). This should basically never be used anymore; SHA-1 is no longer considered secure, and there are much better ways to do cryptographic hashing in the kernel. Most files that include this header don't actually need it. So in preparation for removing it, remove all these unneeded includes of it. Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
89 lines
2.2 KiB
C
89 lines
2.2 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Cryptographic API.
|
|
* Glue code for the SHA1 Secure Hash Algorithm assembler implementation
|
|
*
|
|
* This file is based on sha1_generic.c and sha1_ssse3_glue.c
|
|
*
|
|
* Copyright (c) Alan Smithee.
|
|
* Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
|
|
* Copyright (c) Jean-Francois Dive <jef@linuxbe.org>
|
|
* Copyright (c) Mathias Krause <minipli@googlemail.com>
|
|
*/
|
|
|
|
#include <crypto/internal/hash.h>
|
|
#include <linux/init.h>
|
|
#include <linux/module.h>
|
|
#include <linux/types.h>
|
|
#include <crypto/sha.h>
|
|
#include <crypto/sha1_base.h>
|
|
#include <asm/byteorder.h>
|
|
|
|
#include "sha1.h"
|
|
|
|
asmlinkage void sha1_block_data_order(u32 *digest,
|
|
const unsigned char *data, unsigned int rounds);
|
|
|
|
int sha1_update_arm(struct shash_desc *desc, const u8 *data,
|
|
unsigned int len)
|
|
{
|
|
/* make sure casting to sha1_block_fn() is safe */
|
|
BUILD_BUG_ON(offsetof(struct sha1_state, state) != 0);
|
|
|
|
return sha1_base_do_update(desc, data, len,
|
|
(sha1_block_fn *)sha1_block_data_order);
|
|
}
|
|
EXPORT_SYMBOL_GPL(sha1_update_arm);
|
|
|
|
static int sha1_final(struct shash_desc *desc, u8 *out)
|
|
{
|
|
sha1_base_do_finalize(desc, (sha1_block_fn *)sha1_block_data_order);
|
|
return sha1_base_finish(desc, out);
|
|
}
|
|
|
|
int sha1_finup_arm(struct shash_desc *desc, const u8 *data,
|
|
unsigned int len, u8 *out)
|
|
{
|
|
sha1_base_do_update(desc, data, len,
|
|
(sha1_block_fn *)sha1_block_data_order);
|
|
return sha1_final(desc, out);
|
|
}
|
|
EXPORT_SYMBOL_GPL(sha1_finup_arm);
|
|
|
|
static struct shash_alg alg = {
|
|
.digestsize = SHA1_DIGEST_SIZE,
|
|
.init = sha1_base_init,
|
|
.update = sha1_update_arm,
|
|
.final = sha1_final,
|
|
.finup = sha1_finup_arm,
|
|
.descsize = sizeof(struct sha1_state),
|
|
.base = {
|
|
.cra_name = "sha1",
|
|
.cra_driver_name= "sha1-asm",
|
|
.cra_priority = 150,
|
|
.cra_blocksize = SHA1_BLOCK_SIZE,
|
|
.cra_module = THIS_MODULE,
|
|
}
|
|
};
|
|
|
|
|
|
static int __init sha1_mod_init(void)
|
|
{
|
|
return crypto_register_shash(&alg);
|
|
}
|
|
|
|
|
|
static void __exit sha1_mod_fini(void)
|
|
{
|
|
crypto_unregister_shash(&alg);
|
|
}
|
|
|
|
|
|
module_init(sha1_mod_init);
|
|
module_exit(sha1_mod_fini);
|
|
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm (ARM)");
|
|
MODULE_ALIAS_CRYPTO("sha1");
|
|
MODULE_AUTHOR("David McCullough <ucdevel@gmail.com>");
|