mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 07:47:50 +00:00
lib/crypto: arm64/polyval: Migrate optimized code into library
Migrate the arm64 implementation of POLYVAL into lib/crypto/, wiring it up to the POLYVAL library interface. This makes the POLYVAL library be properly optimized on arm64. This drops the arm64 optimizations of polyval in the crypto_shash API. That's fine, since polyval will be removed from crypto_shash entirely since it is unneeded there. But even if it comes back, the crypto_shash API could just be implemented on top of the library API, as usual. Adjust the names and prototypes of the assembly functions to align more closely with the rest of the library code. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20251109234726.638437-5-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
This commit is contained in:
@@ -39,10 +39,18 @@ struct polyval_elem {
|
||||
* This may contain just the raw key H, or it may contain precomputed key
|
||||
* powers, depending on the platform's POLYVAL implementation. Use
|
||||
* polyval_preparekey() to initialize this.
|
||||
*
|
||||
* By H^i we mean H^(i-1) * H * x^-128, with base case H^1 = H. I.e. the
|
||||
* exponentiation repeats the POLYVAL dot operation, with its "extra" x^-128.
|
||||
*/
|
||||
struct polyval_key {
|
||||
#ifdef CONFIG_CRYPTO_LIB_POLYVAL_ARCH
|
||||
#ifdef CONFIG_ARM64
|
||||
/** @h_powers: Powers of the hash key H^8 through H^1 */
|
||||
struct polyval_elem h_powers[8];
|
||||
#else
|
||||
#error "Unhandled arch"
|
||||
#endif
|
||||
#else /* CONFIG_CRYPTO_LIB_POLYVAL_ARCH */
|
||||
/** @h: The hash key H */
|
||||
struct polyval_elem h;
|
||||
|
||||
Reference in New Issue
Block a user