Commit | Line | Data |
---|---|---|
66d7fb94 JD |
1 | // SPDX-License-Identifier: GPL-2.0 OR MIT |
2 | /* | |
3 | * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. | |
4 | * | |
5 | * This is an implementation of the BLAKE2s hash and PRF functions. | |
6 | * | |
7 | * Information: https://blake2.net/ | |
8 | * | |
9 | */ | |
10 | ||
11 | #include <crypto/internal/blake2s.h> | |
12 | #include <linux/types.h> | |
13 | #include <linux/string.h> | |
14 | #include <linux/kernel.h> | |
15 | #include <linux/module.h> | |
16 | #include <linux/init.h> | |
17 | #include <linux/bug.h> | |
057edc9c | 18 | |
66d7fb94 JD |
19 | void blake2s_update(struct blake2s_state *state, const u8 *in, size_t inlen) |
20 | { | |
d2a02e3c | 21 | __blake2s_update(state, in, inlen, false); |
66d7fb94 JD |
22 | } |
23 | EXPORT_SYMBOL(blake2s_update); | |
24 | ||
25 | void blake2s_final(struct blake2s_state *state, u8 *out) | |
26 | { | |
27 | WARN_ON(IS_ENABLED(DEBUG) && !out); | |
d2a02e3c | 28 | __blake2s_final(state, out, false); |
66d7fb94 JD |
29 | memzero_explicit(state, sizeof(*state)); |
30 | } | |
31 | EXPORT_SYMBOL(blake2s_final); | |
32 | ||
f03a3cab | 33 | static int __init blake2s_mod_init(void) |
66d7fb94 JD |
34 | { |
35 | if (!IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS) && | |
36 | WARN_ON(!blake2s_selftest())) | |
37 | return -ENODEV; | |
38 | return 0; | |
39 | } | |
40 | ||
f03a3cab | 41 | static void __exit blake2s_mod_exit(void) |
66d7fb94 JD |
42 | { |
43 | } | |
44 | ||
f03a3cab RD |
45 | module_init(blake2s_mod_init); |
46 | module_exit(blake2s_mod_exit); | |
66d7fb94 JD |
47 | MODULE_LICENSE("GPL v2"); |
48 | MODULE_DESCRIPTION("BLAKE2s hash function"); | |
49 | MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>"); |