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 Biggersbool 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