1652ccae5SArd Biesheuvel 2652ccae5SArd Biesheuvelmenuconfig ARM_CRYPTO 3652ccae5SArd Biesheuvel bool "ARM Accelerated Cryptographic Algorithms" 4652ccae5SArd Biesheuvel depends on ARM 5652ccae5SArd Biesheuvel help 6652ccae5SArd Biesheuvel Say Y here to choose from a selection of cryptographic algorithms 7652ccae5SArd Biesheuvel implemented using ARM specific CPU features or instructions. 8652ccae5SArd Biesheuvel 9652ccae5SArd Biesheuvelif ARM_CRYPTO 10652ccae5SArd Biesheuvel 11652ccae5SArd Biesheuvelconfig CRYPTO_SHA1_ARM 12652ccae5SArd Biesheuvel tristate "SHA1 digest algorithm (ARM-asm)" 13652ccae5SArd Biesheuvel select CRYPTO_SHA1 14652ccae5SArd Biesheuvel select CRYPTO_HASH 15652ccae5SArd Biesheuvel help 16652ccae5SArd Biesheuvel SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 17652ccae5SArd Biesheuvel using optimized ARM assembler. 18652ccae5SArd Biesheuvel 19652ccae5SArd Biesheuvelconfig CRYPTO_SHA1_ARM_NEON 20652ccae5SArd Biesheuvel tristate "SHA1 digest algorithm (ARM NEON)" 21652ccae5SArd Biesheuvel depends on KERNEL_MODE_NEON 22652ccae5SArd Biesheuvel select CRYPTO_SHA1_ARM 23652ccae5SArd Biesheuvel select CRYPTO_SHA1 24652ccae5SArd Biesheuvel select CRYPTO_HASH 25652ccae5SArd Biesheuvel help 26652ccae5SArd Biesheuvel SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 27652ccae5SArd Biesheuvel using optimized ARM NEON assembly, when NEON instructions are 28652ccae5SArd Biesheuvel available. 29652ccae5SArd Biesheuvel 30*864cbeedSArd Biesheuvelconfig CRYPTO_SHA1_ARM_CE 31*864cbeedSArd Biesheuvel tristate "SHA1 digest algorithm (ARM v8 Crypto Extensions)" 32*864cbeedSArd Biesheuvel depends on KERNEL_MODE_NEON 33*864cbeedSArd Biesheuvel select CRYPTO_SHA1_ARM 34*864cbeedSArd Biesheuvel select CRYPTO_SHA1 35*864cbeedSArd Biesheuvel select CRYPTO_HASH 36*864cbeedSArd Biesheuvel help 37*864cbeedSArd Biesheuvel SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 38*864cbeedSArd Biesheuvel using special ARMv8 Crypto Extensions. 39*864cbeedSArd Biesheuvel 40652ccae5SArd Biesheuvelconfig CRYPTO_SHA512_ARM_NEON 41652ccae5SArd Biesheuvel tristate "SHA384 and SHA512 digest algorithm (ARM NEON)" 42652ccae5SArd Biesheuvel depends on KERNEL_MODE_NEON 43652ccae5SArd Biesheuvel select CRYPTO_SHA512 44652ccae5SArd Biesheuvel select CRYPTO_HASH 45652ccae5SArd Biesheuvel help 46652ccae5SArd Biesheuvel SHA-512 secure hash standard (DFIPS 180-2) implemented 47652ccae5SArd Biesheuvel using ARM NEON instructions, when available. 48652ccae5SArd Biesheuvel 49652ccae5SArd Biesheuvel This version of SHA implements a 512 bit hash with 256 bits of 50652ccae5SArd Biesheuvel security against collision attacks. 51652ccae5SArd Biesheuvel 52652ccae5SArd Biesheuvel This code also includes SHA-384, a 384 bit hash with 192 bits 53652ccae5SArd Biesheuvel of security against collision attacks. 54652ccae5SArd Biesheuvel 55652ccae5SArd Biesheuvelconfig CRYPTO_AES_ARM 56652ccae5SArd Biesheuvel tristate "AES cipher algorithms (ARM-asm)" 57652ccae5SArd Biesheuvel depends on ARM 58652ccae5SArd Biesheuvel select CRYPTO_ALGAPI 59652ccae5SArd Biesheuvel select CRYPTO_AES 60652ccae5SArd Biesheuvel help 61652ccae5SArd Biesheuvel Use optimized AES assembler routines for ARM platforms. 62652ccae5SArd Biesheuvel 63652ccae5SArd Biesheuvel AES cipher algorithms (FIPS-197). AES uses the Rijndael 64652ccae5SArd Biesheuvel algorithm. 65652ccae5SArd Biesheuvel 66652ccae5SArd Biesheuvel Rijndael appears to be consistently a very good performer in 67652ccae5SArd Biesheuvel both hardware and software across a wide range of computing 68652ccae5SArd Biesheuvel environments regardless of its use in feedback or non-feedback 69652ccae5SArd Biesheuvel modes. Its key setup time is excellent, and its key agility is 70652ccae5SArd Biesheuvel good. Rijndael's very low memory requirements make it very well 71652ccae5SArd Biesheuvel suited for restricted-space environments, in which it also 72652ccae5SArd Biesheuvel demonstrates excellent performance. Rijndael's operations are 73652ccae5SArd Biesheuvel among the easiest to defend against power and timing attacks. 74652ccae5SArd Biesheuvel 75652ccae5SArd Biesheuvel The AES specifies three key sizes: 128, 192 and 256 bits 76652ccae5SArd Biesheuvel 77652ccae5SArd Biesheuvel See <http://csrc.nist.gov/encryption/aes/> for more information. 78652ccae5SArd Biesheuvel 79652ccae5SArd Biesheuvelconfig CRYPTO_AES_ARM_BS 80652ccae5SArd Biesheuvel tristate "Bit sliced AES using NEON instructions" 81652ccae5SArd Biesheuvel depends on KERNEL_MODE_NEON 82652ccae5SArd Biesheuvel select CRYPTO_ALGAPI 83652ccae5SArd Biesheuvel select CRYPTO_AES_ARM 84652ccae5SArd Biesheuvel select CRYPTO_ABLK_HELPER 85652ccae5SArd Biesheuvel help 86652ccae5SArd Biesheuvel Use a faster and more secure NEON based implementation of AES in CBC, 87652ccae5SArd Biesheuvel CTR and XTS modes 88652ccae5SArd Biesheuvel 89652ccae5SArd Biesheuvel Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode 90652ccae5SArd Biesheuvel and for XTS mode encryption, CBC and XTS mode decryption speedup is 91652ccae5SArd Biesheuvel around 25%. (CBC encryption speed is not affected by this driver.) 92652ccae5SArd Biesheuvel This implementation does not rely on any lookup tables so it is 93652ccae5SArd Biesheuvel believed to be invulnerable to cache timing attacks. 94652ccae5SArd Biesheuvel 95652ccae5SArd Biesheuvelendif 96