diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-05 15:12:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-05 15:12:33 -0400 |
| commit | b2c311075db578f1433d9b303698491bfa21279a (patch) | |
| tree | 41d5f1b5ad6f45be7211f524328de81f7e9754be /crypto | |
| parent | 45175476ae2dbebc860d5cf486f2916044343513 (diff) | |
| parent | 02c0241b600e4ab8a732c89749e252165145d60c (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto update from Herbert Xu:
- Do not idle omap device between crypto operations in one session.
- Added sha224/sha384 shims for SSSE3.
- More optimisations for camellia-aesni-avx2.
- Removed defunct blowfish/twofish AVX2 implementations.
- Added unaligned buffer self-tests.
- Added PCLMULQDQ optimisation for CRCT10DIF.
- Added support for Freescale's DCP co-processor
- Misc fixes.
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (44 commits)
crypto: testmgr - test hash implementations with unaligned buffers
crypto: testmgr - test AEADs with unaligned buffers
crypto: testmgr - test skciphers with unaligned buffers
crypto: testmgr - check that entries in alg_test_descs are in correct order
Revert "crypto: twofish - add AVX2/x86_64 assembler implementation of twofish cipher"
Revert "crypto: blowfish - add AVX2/x86_64 implementation of blowfish cipher"
crypto: camellia-aesni-avx2 - tune assembly code for more performance
hwrng: bcm2835 - fix MODULE_LICENSE tag
hwrng: nomadik - use clk_prepare_enable()
crypto: picoxcell - replace strict_strtoul() with kstrtoul()
crypto: dcp - Staticize local symbols
crypto: dcp - Use NULL instead of 0
crypto: dcp - Use devm_* APIs
crypto: dcp - Remove redundant platform_set_drvdata()
hwrng: use platform_{get,set}_drvdata()
crypto: omap-aes - Don't idle/start AES device between Encrypt operations
crypto: crct10dif - Use PTR_RET
crypto: ux500 - Cocci spatch "resource_size.spatch"
crypto: sha256_ssse3 - add sha224 support
crypto: sha512_ssse3 - add sha384 support
...
Diffstat (limited to 'crypto')
| -rw-r--r-- | crypto/Kconfig | 63 | ||||
| -rw-r--r-- | crypto/Makefile | 1 | ||||
| -rw-r--r-- | crypto/crct10dif.c | 178 | ||||
| -rw-r--r-- | crypto/sha512_generic.c | 2 | ||||
| -rw-r--r-- | crypto/tcrypt.c | 8 | ||||
| -rw-r--r-- | crypto/testmgr.c | 176 | ||||
| -rw-r--r-- | crypto/testmgr.h | 33 |
7 files changed, 381 insertions, 80 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig index bf8148e74e73..904ffe838567 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig | |||
| @@ -376,6 +376,25 @@ config CRYPTO_CRC32_PCLMUL | |||
| 376 | which will enable any routine to use the CRC-32-IEEE 802.3 checksum | 376 | which will enable any routine to use the CRC-32-IEEE 802.3 checksum |
| 377 | and gain better performance as compared with the table implementation. | 377 | and gain better performance as compared with the table implementation. |
| 378 | 378 | ||
| 379 | config CRYPTO_CRCT10DIF | ||
| 380 | tristate "CRCT10DIF algorithm" | ||
| 381 | select CRYPTO_HASH | ||
| 382 | help | ||
| 383 | CRC T10 Data Integrity Field computation is being cast as | ||
| 384 | a crypto transform. This allows for faster crc t10 diff | ||
| 385 | transforms to be used if they are available. | ||
| 386 | |||
| 387 | config CRYPTO_CRCT10DIF_PCLMUL | ||
| 388 | tristate "CRCT10DIF PCLMULQDQ hardware acceleration" | ||
| 389 | depends on X86 && 64BIT && CRC_T10DIF | ||
| 390 | select CRYPTO_HASH | ||
| 391 | help | ||
| 392 | For x86_64 processors with SSE4.2 and PCLMULQDQ supported, | ||
| 393 | CRC T10 DIF PCLMULQDQ computation can be hardware | ||
| 394 | accelerated PCLMULQDQ instruction. This option will create | ||
| 395 | 'crct10dif-plcmul' module, which is faster when computing the | ||
| 396 | crct10dif checksum as compared with the generic table implementation. | ||
| 397 | |||
| 379 | config CRYPTO_GHASH | 398 | config CRYPTO_GHASH |
| 380 | tristate "GHASH digest algorithm" | 399 | tristate "GHASH digest algorithm" |
| 381 | select CRYPTO_GF128MUL | 400 | select CRYPTO_GF128MUL |
| @@ -820,25 +839,6 @@ config CRYPTO_BLOWFISH_X86_64 | |||
| 820 | See also: | 839 | See also: |
| 821 | <http://www.schneier.com/blowfish.html> | 840 | <http://www.schneier.com/blowfish.html> |
| 822 | 841 | ||
| 823 | config CRYPTO_BLOWFISH_AVX2_X86_64 | ||
| 824 | tristate "Blowfish cipher algorithm (x86_64/AVX2)" | ||
| 825 | depends on X86 && 64BIT | ||
| 826 | depends on BROKEN | ||
| 827 | select CRYPTO_ALGAPI | ||
| 828 | select CRYPTO_CRYPTD | ||
| 829 | select CRYPTO_ABLK_HELPER_X86 | ||
| 830 | select CRYPTO_BLOWFISH_COMMON | ||
| 831 | select CRYPTO_BLOWFISH_X86_64 | ||
| 832 | help | ||
| 833 | Blowfish cipher algorithm (x86_64/AVX2), by Bruce Schneier. | ||
| 834 | |||
| 835 | This is a variable key length cipher which can use keys from 32 | ||
| 836 | bits to 448 bits in length. It's fast, simple and specifically | ||
| 837 | designed for use on "large microprocessors". | ||
| 838 | |||
| 839 | See also: | ||
| 840 | <http://www.schneier.com/blowfish.html> | ||
| 841 | |||
| 842 | config CRYPTO_CAMELLIA | 842 | config CRYPTO_CAMELLIA |
| 843 | tristate "Camellia cipher algorithms" | 843 | tristate "Camellia cipher algorithms" |
| 844 | depends on CRYPTO | 844 | depends on CRYPTO |
| @@ -1297,31 +1297,6 @@ config CRYPTO_TWOFISH_AVX_X86_64 | |||
| 1297 | See also: | 1297 | See also: |
| 1298 | <http://www.schneier.com/twofish.html> | 1298 | <http://www.schneier.com/twofish.html> |
| 1299 | 1299 | ||
| 1300 | config CRYPTO_TWOFISH_AVX2_X86_64 | ||
| 1301 | tristate "Twofish cipher algorithm (x86_64/AVX2)" | ||
| 1302 | depends on X86 && 64BIT | ||
| 1303 | depends on BROKEN | ||
| 1304 | select CRYPTO_ALGAPI | ||
| 1305 | select CRYPTO_CRYPTD | ||
| 1306 | select CRYPTO_ABLK_HELPER_X86 | ||
| 1307 | select CRYPTO_GLUE_HELPER_X86 | ||
| 1308 | select CRYPTO_TWOFISH_COMMON | ||
| 1309 | select CRYPTO_TWOFISH_X86_64 | ||
| 1310 | select CRYPTO_TWOFISH_X86_64_3WAY | ||
| 1311 | select CRYPTO_TWOFISH_AVX_X86_64 | ||
| 1312 | select CRYPTO_LRW | ||
| 1313 | select CRYPTO_XTS | ||
| 1314 | help | ||
| 1315 | Twofish cipher algorithm (x86_64/AVX2). | ||
| 1316 | |||
| 1317 | Twofish was submitted as an AES (Advanced Encryption Standard) | ||
| 1318 | candidate cipher by researchers at CounterPane Systems. It is a | ||
| 1319 | 16 round block cipher supporting key sizes of 128, 192, and 256 | ||
| 1320 | bits. | ||
| 1321 | |||
| 1322 | See also: | ||
| 1323 | <http://www.schneier.com/twofish.html> | ||
| 1324 | |||
| 1325 | comment "Compression" | 1300 | comment "Compression" |
| 1326 | 1301 | ||
| 1327 | config CRYPTO_DEFLATE | 1302 | config CRYPTO_DEFLATE |
diff --git a/crypto/Makefile b/crypto/Makefile index a8e9b0fefbe9..62af87df8729 100644 --- a/crypto/Makefile +++ b/crypto/Makefile | |||
| @@ -83,6 +83,7 @@ obj-$(CONFIG_CRYPTO_ZLIB) += zlib.o | |||
| 83 | obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o | 83 | obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o |
| 84 | obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o | 84 | obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o |
| 85 | obj-$(CONFIG_CRYPTO_CRC32) += crc32.o | 85 | obj-$(CONFIG_CRYPTO_CRC32) += crc32.o |
| 86 | obj-$(CONFIG_CRYPTO_CRCT10DIF) += crct10dif.o | ||
| 86 | obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o authencesn.o | 87 | obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o authencesn.o |
| 87 | obj-$(CONFIG_CRYPTO_LZO) += lzo.o | 88 | obj-$(CONFIG_CRYPTO_LZO) += lzo.o |
| 88 | obj-$(CONFIG_CRYPTO_842) += 842.o | 89 | obj-$(CONFIG_CRYPTO_842) += 842.o |
diff --git a/crypto/crct10dif.c b/crypto/crct10dif.c new file mode 100644 index 000000000000..92aca96d6b98 --- /dev/null +++ b/crypto/crct10dif.c | |||
| @@ -0,0 +1,178 @@ | |||
| 1 | /* | ||
| 2 | * Cryptographic API. | ||
| 3 | * | ||
| 4 | * T10 Data Integrity Field CRC16 Crypto Transform | ||
| 5 | * | ||
| 6 | * Copyright (c) 2007 Oracle Corporation. All rights reserved. | ||
| 7 | * Written by Martin K. Petersen <martin.petersen@oracle.com> | ||
| 8 | * Copyright (C) 2013 Intel Corporation | ||
| 9 | * Author: Tim Chen <tim.c.chen@linux.intel.com> | ||
| 10 | * | ||
| 11 | * This program is free software; you can redistribute it and/or modify it | ||
| 12 | * under the terms of the GNU General Public License as published by the Free | ||
| 13 | * Software Foundation; either version 2 of the License, or (at your option) | ||
| 14 | * any later version. | ||
| 15 | * | ||
| 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
| 17 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
| 18 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
| 19 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
| 20 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
| 21 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
| 22 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| 23 | * SOFTWARE. | ||
| 24 | * | ||
| 25 | */ | ||
| 26 | |||
| 27 | #include <linux/types.h> | ||
| 28 | #include <linux/module.h> | ||
| 29 | #include <linux/crc-t10dif.h> | ||
| 30 | #include <crypto/internal/hash.h> | ||
| 31 | #include <linux/init.h> | ||
| 32 | #include <linux/string.h> | ||
| 33 | #include <linux/kernel.h> | ||
| 34 | |||
| 35 | struct chksum_desc_ctx { | ||
| 36 | __u16 crc; | ||
| 37 | }; | ||
| 38 | |||
| 39 | /* Table generated using the following polynomium: | ||
| 40 | * x^16 + x^15 + x^11 + x^9 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 | ||
| 41 | * gt: 0x8bb7 | ||
| 42 | */ | ||
| 43 | static const __u16 t10_dif_crc_table[256] = { | ||
| 44 | 0x0000, 0x8BB7, 0x9CD9, 0x176E, 0xB205, 0x39B2, 0x2EDC, 0xA56B, | ||
| 45 | 0xEFBD, 0x640A, 0x7364, 0xF8D3, 0x5DB8, 0xD60F, 0xC161, 0x4AD6, | ||
| 46 | 0x54CD, 0xDF7A, 0xC814, 0x43A3, 0xE6C8, 0x6D7F, 0x7A11, 0xF1A6, | ||
| 47 | 0xBB70, 0x30C7, 0x27A9, 0xAC1E, 0x0975, 0x82C2, 0x95AC, 0x1E1B, | ||
| 48 | 0xA99A, 0x222D, 0x3543, 0xBEF4, 0x1B9F, 0x9028, 0x8746, 0x0CF1, | ||
| 49 | 0x4627, 0xCD90, 0xDAFE, 0x5149, 0xF422, 0x7F95, 0x68FB, 0xE34C, | ||
| 50 | 0xFD57, 0x76E0, 0x618E, 0xEA39, 0x4F52, 0xC4E5, 0xD38B, 0x583C, | ||
| 51 | 0x12EA, 0x995D, 0x8E33, 0x0584, 0xA0EF, 0x2B58, 0x3C36, 0xB781, | ||
| 52 | 0xD883, 0x5334, 0x445A, 0xCFED, 0x6A86, 0xE131, 0xF65F, 0x7DE8, | ||
| 53 | 0x373E, 0xBC89, 0xABE7, 0x2050, 0x853B, 0x0E8C, 0x19E2, 0x9255, | ||
| 54 | 0x8C4E, 0x07F9, 0x1097, 0x9B20, 0x3E4B, 0xB5FC, 0xA292, 0x2925, | ||
| 55 | 0x63F3, 0xE844, 0xFF2A, 0x749D, 0xD1F6, 0x5A41, 0x4D2F, 0xC698, | ||
| 56 | 0x7119, 0xFAAE, 0xEDC0, 0x6677, 0xC31C, 0x48AB, 0x5FC5, 0xD472, | ||
| 57 | 0x9EA4, 0x1513, 0x027D, 0x89CA, 0x2CA1, 0xA716, 0xB078, 0x3BCF, | ||
| 58 | 0x25D4, 0xAE63, 0xB90D, 0x32BA, 0x97D1, 0x1C66, 0x0B08, 0x80BF, | ||
| 59 | 0xCA69, 0x41DE, 0x56B0, 0xDD07, 0x786C, 0xF3DB, 0xE4B5, 0x6F02, | ||
| 60 | 0x3AB1, 0xB106, 0xA668, 0x2DDF, 0x88B4, 0x0303, 0x146D, 0x9FDA, | ||
| 61 | 0xD50C, 0x5EBB, 0x49D5, 0xC262, 0x6709, 0xECBE, 0xFBD0, 0x7067, | ||
| 62 | 0x6E7C, 0xE5CB, 0xF2A5, 0x7912, 0xDC79, 0x57CE, 0x40A0, 0xCB17, | ||
| 63 | 0x81C1, 0x0A76, 0x1D18, 0x96AF, 0x33C4, 0xB873, 0xAF1D, 0x24AA, | ||
| 64 | 0x932B, 0x189C, 0x0FF2, 0x8445, 0x212E, 0xAA99, 0xBDF7, 0x3640, | ||
| 65 | 0x7C96, 0xF721, 0xE04F, 0x6BF8, 0xCE93, 0x4524, 0x524A, 0xD9FD, | ||
| 66 | 0xC7E6, 0x4C51, 0x5B3F, 0xD088, 0x75E3, 0xFE54, 0xE93A, 0x628D, | ||
| 67 | 0x285B, 0xA3EC, 0xB482, 0x3F35, 0x9A5E, 0x11E9, 0x0687, 0x8D30, | ||
| 68 | 0xE232, 0x6985, 0x7EEB, 0xF55C, 0x5037, 0xDB80, 0xCCEE, 0x4759, | ||
| 69 | 0x0D8F, 0x8638, 0x9156, 0x1AE1, 0xBF8A, 0x343D, 0x2353, 0xA8E4, | ||
| 70 | 0xB6FF, 0x3D48, 0x2A26, 0xA191, 0x04FA, 0x8F4D, 0x9823, 0x1394, | ||
| 71 | 0x5942, 0xD2F5, 0xC59B, 0x4E2C, 0xEB47, 0x60F0, 0x779E, 0xFC29, | ||
| 72 | 0x4BA8, 0xC01F, 0xD771, 0x5CC6, 0xF9AD, 0x721A, 0x6574, 0xEEC3, | ||
| 73 | 0xA415, 0x2FA2, 0x38CC, 0xB37B, 0x1610, 0x9DA7, 0x8AC9, 0x017E, | ||
| 74 | 0x1F65, 0x94D2, 0x83BC, 0x080B, 0xAD60, 0x26D7, 0x31B9, 0xBA0E, | ||
| 75 | 0xF0D8, 0x7B6F, 0x6C01, 0xE7B6, 0x42DD, 0xC96A, 0xDE04, 0x55B3 | ||
