Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 
0003 menuconfig ARM_CRYPTO
0004         bool "ARM Accelerated Cryptographic Algorithms"
0005         depends on ARM
0006         help
0007           Say Y here to choose from a selection of cryptographic algorithms
0008           implemented using ARM specific CPU features or instructions.
0009 
0010 if ARM_CRYPTO
0011 
0012 config CRYPTO_SHA1_ARM
0013         tristate "SHA1 digest algorithm (ARM-asm)"
0014         select CRYPTO_SHA1
0015         select CRYPTO_HASH
0016         help
0017           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0018           using optimized ARM assembler.
0019 
0020 config CRYPTO_SHA1_ARM_NEON
0021         tristate "SHA1 digest algorithm (ARM NEON)"
0022         depends on KERNEL_MODE_NEON
0023         select CRYPTO_SHA1_ARM
0024         select CRYPTO_SHA1
0025         select CRYPTO_HASH
0026         help
0027           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0028           using optimized ARM NEON assembly, when NEON instructions are
0029           available.
0030 
0031 config CRYPTO_SHA1_ARM_CE
0032         tristate "SHA1 digest algorithm (ARM v8 Crypto Extensions)"
0033         depends on KERNEL_MODE_NEON
0034         select CRYPTO_SHA1_ARM
0035         select CRYPTO_HASH
0036         help
0037           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0038           using special ARMv8 Crypto Extensions.
0039 
0040 config CRYPTO_SHA2_ARM_CE
0041         tristate "SHA-224/256 digest algorithm (ARM v8 Crypto Extensions)"
0042         depends on KERNEL_MODE_NEON
0043         select CRYPTO_SHA256_ARM
0044         select CRYPTO_HASH
0045         help
0046           SHA-256 secure hash standard (DFIPS 180-2) implemented
0047           using special ARMv8 Crypto Extensions.
0048 
0049 config CRYPTO_SHA256_ARM
0050         tristate "SHA-224/256 digest algorithm (ARM-asm and NEON)"
0051         select CRYPTO_HASH
0052         depends on !CPU_V7M
0053         help
0054           SHA-256 secure hash standard (DFIPS 180-2) implemented
0055           using optimized ARM assembler and NEON, when available.
0056 
0057 config CRYPTO_SHA512_ARM
0058         tristate "SHA-384/512 digest algorithm (ARM-asm and NEON)"
0059         select CRYPTO_HASH
0060         depends on !CPU_V7M
0061         help
0062           SHA-512 secure hash standard (DFIPS 180-2) implemented
0063           using optimized ARM assembler and NEON, when available.
0064 
0065 config CRYPTO_BLAKE2S_ARM
0066         bool "BLAKE2s digest algorithm (ARM)"
0067         select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
0068         help
0069           BLAKE2s digest algorithm optimized with ARM scalar instructions.  This
0070           is faster than the generic implementations of BLAKE2s and BLAKE2b, but
0071           slower than the NEON implementation of BLAKE2b.  (There is no NEON
0072           implementation of BLAKE2s, since NEON doesn't really help with it.)
0073 
0074 config CRYPTO_BLAKE2B_NEON
0075         tristate "BLAKE2b digest algorithm (ARM NEON)"
0076         depends on KERNEL_MODE_NEON
0077         select CRYPTO_BLAKE2B
0078         help
0079           BLAKE2b digest algorithm optimized with ARM NEON instructions.
0080           On ARM processors that have NEON support but not the ARMv8
0081           Crypto Extensions, typically this BLAKE2b implementation is
0082           much faster than SHA-2 and slightly faster than SHA-1.
0083 
0084 config CRYPTO_AES_ARM
0085         tristate "Scalar AES cipher for ARM"
0086         select CRYPTO_ALGAPI
0087         select CRYPTO_AES
0088         help
0089           Use optimized AES assembler routines for ARM platforms.
0090 
0091           On ARM processors without the Crypto Extensions, this is the
0092           fastest AES implementation for single blocks.  For multiple
0093           blocks, the NEON bit-sliced implementation is usually faster.
0094 
0095           This implementation may be vulnerable to cache timing attacks,
0096           since it uses lookup tables.  However, as countermeasures it
0097           disables IRQs and preloads the tables; it is hoped this makes
0098           such attacks very difficult.
0099 
0100 config CRYPTO_AES_ARM_BS
0101         tristate "Bit sliced AES using NEON instructions"
0102         depends on KERNEL_MODE_NEON
0103         select CRYPTO_SKCIPHER
0104         select CRYPTO_LIB_AES
0105         select CRYPTO_AES
0106         select CRYPTO_CBC
0107         select CRYPTO_SIMD
0108         help
0109           Use a faster and more secure NEON based implementation of AES in CBC,
0110           CTR and XTS modes
0111 
0112           Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
0113           and for XTS mode encryption, CBC and XTS mode decryption speedup is
0114           around 25%. (CBC encryption speed is not affected by this driver.)
0115           This implementation does not rely on any lookup tables so it is
0116           believed to be invulnerable to cache timing attacks.
0117 
0118 config CRYPTO_AES_ARM_CE
0119         tristate "Accelerated AES using ARMv8 Crypto Extensions"
0120         depends on KERNEL_MODE_NEON
0121         select CRYPTO_SKCIPHER
0122         select CRYPTO_LIB_AES
0123         select CRYPTO_SIMD
0124         help
0125           Use an implementation of AES in CBC, CTR and XTS modes that uses
0126           ARMv8 Crypto Extensions
0127 
0128 config CRYPTO_GHASH_ARM_CE
0129         tristate "PMULL-accelerated GHASH using NEON/ARMv8 Crypto Extensions"
0130         depends on KERNEL_MODE_NEON
0131         select CRYPTO_HASH
0132         select CRYPTO_CRYPTD
0133         select CRYPTO_GF128MUL
0134         help
0135           Use an implementation of GHASH (used by the GCM AEAD chaining mode)
0136           that uses the 64x64 to 128 bit polynomial multiplication (vmull.p64)
0137           that is part of the ARMv8 Crypto Extensions, or a slower variant that
0138           uses the vmull.p8 instruction that is part of the basic NEON ISA.
0139 
0140 config CRYPTO_CRCT10DIF_ARM_CE
0141         tristate "CRCT10DIF digest algorithm using PMULL instructions"
0142         depends on KERNEL_MODE_NEON
0143         depends on CRC_T10DIF
0144         select CRYPTO_HASH
0145 
0146 config CRYPTO_CRC32_ARM_CE
0147         tristate "CRC32(C) digest algorithm using CRC and/or PMULL instructions"
0148         depends on KERNEL_MODE_NEON
0149         depends on CRC32
0150         select CRYPTO_HASH
0151 
0152 config CRYPTO_CHACHA20_NEON
0153         tristate "NEON and scalar accelerated ChaCha stream cipher algorithms"
0154         select CRYPTO_SKCIPHER
0155         select CRYPTO_ARCH_HAVE_LIB_CHACHA
0156 
0157 config CRYPTO_POLY1305_ARM
0158         tristate "Accelerated scalar and SIMD Poly1305 hash implementations"
0159         select CRYPTO_HASH
0160         select CRYPTO_ARCH_HAVE_LIB_POLY1305
0161 
0162 config CRYPTO_NHPOLY1305_NEON
0163         tristate "NEON accelerated NHPoly1305 hash function (for Adiantum)"
0164         depends on KERNEL_MODE_NEON
0165         select CRYPTO_NHPOLY1305
0166 
0167 config CRYPTO_CURVE25519_NEON
0168         tristate "NEON accelerated Curve25519 scalar multiplication library"
0169         depends on KERNEL_MODE_NEON
0170         select CRYPTO_LIB_CURVE25519_GENERIC
0171         select CRYPTO_ARCH_HAVE_LIB_CURVE25519
0172 
0173 endif