xref: /linux/lib/crypto/mips/poly1305-glue.c (revision 13150742b09e720fdf021de14cd2b98b37415a89)
1*7e54e993SEric Biggers // SPDX-License-Identifier: GPL-2.0
2*7e54e993SEric Biggers /*
3*7e54e993SEric Biggers  * OpenSSL/Cryptogams accelerated Poly1305 transform for MIPS
4*7e54e993SEric Biggers  *
5*7e54e993SEric Biggers  * Copyright (C) 2019 Linaro Ltd. <ard.biesheuvel@linaro.org>
6*7e54e993SEric Biggers  */
7*7e54e993SEric Biggers 
8*7e54e993SEric Biggers #include <crypto/internal/poly1305.h>
9*7e54e993SEric Biggers #include <linux/cpufeature.h>
10*7e54e993SEric Biggers #include <linux/kernel.h>
11*7e54e993SEric Biggers #include <linux/module.h>
12*7e54e993SEric Biggers #include <linux/unaligned.h>
13*7e54e993SEric Biggers 
14*7e54e993SEric Biggers asmlinkage void poly1305_block_init_arch(
15*7e54e993SEric Biggers 	struct poly1305_block_state *state,
16*7e54e993SEric Biggers 	const u8 raw_key[POLY1305_BLOCK_SIZE]);
17*7e54e993SEric Biggers EXPORT_SYMBOL_GPL(poly1305_block_init_arch);
18*7e54e993SEric Biggers asmlinkage void poly1305_blocks_arch(struct poly1305_block_state *state,
19*7e54e993SEric Biggers 				     const u8 *src, u32 len, u32 hibit);
20*7e54e993SEric Biggers EXPORT_SYMBOL_GPL(poly1305_blocks_arch);
21*7e54e993SEric Biggers asmlinkage void poly1305_emit_arch(const struct poly1305_state *state,
22*7e54e993SEric Biggers 				   u8 digest[POLY1305_DIGEST_SIZE],
23*7e54e993SEric Biggers 				   const u32 nonce[4]);
24*7e54e993SEric Biggers EXPORT_SYMBOL_GPL(poly1305_emit_arch);
25*7e54e993SEric Biggers 
poly1305_is_arch_optimized(void)26*7e54e993SEric Biggers bool poly1305_is_arch_optimized(void)
27*7e54e993SEric Biggers {
28*7e54e993SEric Biggers 	return true;
29*7e54e993SEric Biggers }
30*7e54e993SEric Biggers EXPORT_SYMBOL(poly1305_is_arch_optimized);
31*7e54e993SEric Biggers 
32*7e54e993SEric Biggers MODULE_DESCRIPTION("Poly1305 transform (MIPS accelerated");
33*7e54e993SEric Biggers MODULE_LICENSE("GPL v2");
34