diff options
| author | Sebastian Siewior <sebastian@breakpoint.cc> | 2008-01-14 01:07:57 -0500 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-01-14 01:07:57 -0500 |
| commit | 15e7b4452b72ae890f2fcb027b4c4fa63a1c9a7a (patch) | |
| tree | 3612a2135d5193642289f1aed33a83fd3ecca9e5 | |
| parent | b966b54654598aebdac9c57f102d769b36d2f68f (diff) | |
[CRYPTO] twofish: Merge common glue code
There is almost no difference between 32 & 64 bit glue code.
Signed-off-by: Sebastian Siewior <sebastian@breakpoint.cc>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
| -rw-r--r-- | arch/x86/crypto/Makefile | 4 | ||||
| -rw-r--r-- | arch/x86/crypto/twofish_64.c | 97 | ||||
| -rw-r--r-- | arch/x86/crypto/twofish_glue.c (renamed from arch/x86/crypto/twofish_32.c) | 8 |
3 files changed, 6 insertions, 103 deletions
diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile index 09200e12f14d..3874c2de5403 100644 --- a/arch/x86/crypto/Makefile +++ b/arch/x86/crypto/Makefile | |||
| @@ -11,9 +11,9 @@ obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o | |||
| 11 | obj-$(CONFIG_CRYPTO_SALSA20_X86_64) += salsa20-x86_64.o | 11 | obj-$(CONFIG_CRYPTO_SALSA20_X86_64) += salsa20-x86_64.o |
| 12 | 12 | ||
| 13 | aes-i586-y := aes-i586-asm_32.o aes_glue.o | 13 | aes-i586-y := aes-i586-asm_32.o aes_glue.o |
| 14 | twofish-i586-y := twofish-i586-asm_32.o twofish_32.o | 14 | twofish-i586-y := twofish-i586-asm_32.o twofish_glue.o |
| 15 | salsa20-i586-y := salsa20-i586-asm_32.o salsa20_glue.o | 15 | salsa20-i586-y := salsa20-i586-asm_32.o salsa20_glue.o |
| 16 | 16 | ||
| 17 | aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o | 17 | aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o |
| 18 | twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_64.o | 18 | twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o |
| 19 | salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o | 19 | salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o |
diff --git a/arch/x86/crypto/twofish_64.c b/arch/x86/crypto/twofish_64.c deleted file mode 100644 index 182d91d5cfb9..000000000000 --- a/arch/x86/crypto/twofish_64.c +++ /dev/null | |||
| @@ -1,97 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Glue Code for optimized x86_64 assembler version of TWOFISH | ||
| 3 | * | ||
| 4 | * Originally Twofish for GPG | ||
| 5 | * By Matthew Skala <mskala@ansuz.sooke.bc.ca>, July 26, 1998 | ||
| 6 | * 256-bit key length added March 20, 1999 | ||
| 7 | * Some modifications to reduce the text size by Werner Koch, April, 1998 | ||
| 8 | * Ported to the kerneli patch by Marc Mutz <Marc@Mutz.com> | ||
| 9 | * Ported to CryptoAPI by Colin Slater <hoho@tacomeat.net> | ||
| 10 | * | ||
| 11 | * The original author has disclaimed all copyright interest in this | ||
| 12 | * code and thus put it in the public domain. The subsequent authors | ||
| 13 | * have put this under the GNU General Public License. | ||
| 14 | * | ||
| 15 | * This program is free software; you can redistribute it and/or modify | ||
| 16 | * it under the terms of the GNU General Public License as published by | ||
| 17 | * the Free Software Foundation; either version 2 of the License, or | ||
| 18 | * (at your option) any later version. | ||
| 19 | * | ||
| 20 | * This program is distributed in the hope that it will be useful, | ||
| 21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 23 | * GNU General Public License for more details. | ||
| 24 | * | ||
| 25 | * You should have received a copy of the GNU General Public License | ||
| 26 | * along with this program; if not, write to the Free Software | ||
| 27 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 | ||
| 28 | * USA | ||
| 29 | * | ||
| 30 | * This code is a "clean room" implementation, written from the paper | ||
| 31 | * _Twofish: A 128-Bit Block Cipher_ by Bruce Schneier, John Kelsey, | ||
| 32 | * Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson, available | ||
| 33 | * through http://www.counterpane.com/twofish.html | ||
| 34 | * | ||
| 35 | * For background information on multiplication in finite fields, used for | ||
| 36 | * the matrix operations in the key schedule, see the book _Contemporary | ||
| 37 | * Abstract Algebra_ by Joseph A. Gallian, especially chapter 22 in the | ||
| 38 | * Third Edition. | ||
| 39 | */ | ||
| 40 | |||
| 41 | #include <crypto/twofish.h> | ||
| 42 | #include <linux/crypto.h> | ||
| 43 | #include <linux/init.h> | ||
| 44 | #include <linux/kernel.h> | ||
| 45 | #include <linux/module.h> | ||
| 46 | #include <linux/types.h> | ||
| 47 | |||
| 48 | asmlinkage void twofish_enc_blk(struct crypto_tfm *tfm, u8 *dst, const u8 *src); | ||
| 49 | asmlinkage void twofish_dec_blk(struct crypto_tfm *tfm, u8 *dst, const u8 *src); | ||
| 50 | |||
| 51 | static void twofish_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) | ||
| 52 | { | ||
| 53 | twofish_enc_blk(tfm, dst, src); | ||
| 54 | } | ||
| 55 | |||
| 56 | static void twofish_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) | ||
| 57 | { | ||
| 58 | twofish_dec_blk(tfm, dst, src); | ||
| 59 | } | ||
| 60 | |||
| 61 | static struct crypto_alg alg = { | ||
| 62 | .cra_name = "twofish", | ||
| 63 | .cra_driver_name = "twofish-x86_64", | ||
| 64 | .cra_priority = 200, | ||
| 65 | .cra_flags = CRYPTO_ALG_TYPE_CIPHER, | ||
| 66 | .cra_blocksize = TF_BLOCK_SIZE, | ||
| 67 | .cra_ctxsize = sizeof(struct twofish_ctx), | ||
| 68 | .cra_alignmask = 3, | ||
| 69 | .cra_module = THIS_MODULE, | ||
| 70 | .cra_list = LIST_HEAD_INIT(alg.cra_list), | ||
| 71 | .cra_u = { | ||
| 72 | .cipher = { | ||
| 73 | .cia_min_keysize = TF_MIN_KEY_SIZE, | ||
| 74 | .cia_max_keysize = TF_MAX_KEY_SIZE, | ||
| 75 | .cia_setkey = twofish_setkey, | ||
| 76 | .cia_encrypt = twofish_encrypt, | ||
| 77 | .cia_decrypt = twofish_decrypt | ||
| 78 | } | ||
| 79 | } | ||
| 80 | }; | ||
| 81 | |||
| 82 | static int __init init(void) | ||
| 83 | { | ||
| 84 | return crypto_register_alg(&alg); | ||
| 85 | } | ||
| 86 | |||
| 87 | static void __exit fini(void) | ||
| 88 | { | ||
| 89 | crypto_unregister_alg(&alg); | ||
| 90 | } | ||
| 91 | |||
| 92 | module_init(init); | ||
| 93 | module_exit(fini); | ||
| 94 | |||
| 95 | MODULE_LICENSE("GPL"); | ||
| 96 | MODULE_DESCRIPTION ("Twofish Cipher Algorithm, x86_64 asm optimized"); | ||
| 97 | MODULE_ALIAS("twofish"); | ||
diff --git a/arch/x86/crypto/twofish_32.c b/arch/x86/crypto/twofish_glue.c index e3004dfe9c7a..cefaf8b9aa18 100644 --- a/arch/x86/crypto/twofish_32.c +++ b/arch/x86/crypto/twofish_glue.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Glue Code for optimized 586 assembler version of TWOFISH | 2 | * Glue Code for assembler optimized version of TWOFISH |
| 3 | * | 3 | * |
| 4 | * Originally Twofish for GPG | 4 | * Originally Twofish for GPG |
| 5 | * By Matthew Skala <mskala@ansuz.sooke.bc.ca>, July 26, 1998 | 5 | * By Matthew Skala <mskala@ansuz.sooke.bc.ca>, July 26, 1998 |
| @@ -44,7 +44,6 @@ | |||
| 44 | #include <linux/module.h> | 44 | #include <linux/module.h> |
| 45 | #include <linux/types.h> | 45 | #include <linux/types.h> |
| 46 | 46 | ||
| 47 | |||
| 48 | asmlinkage void twofish_enc_blk(struct crypto_tfm *tfm, u8 *dst, const u8 *src); | 47 | asmlinkage void twofish_enc_blk(struct crypto_tfm *tfm, u8 *dst, const u8 *src); |
| 49 | asmlinkage void twofish_dec_blk(struct crypto_tfm *tfm, u8 *dst, const u8 *src); | 48 | asmlinkage void twofish_dec_blk(struct crypto_tfm *tfm, u8 *dst, const u8 *src); |
| 50 | 49 | ||
| @@ -60,7 +59,7 @@ static void twofish_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) | |||
| 60 | 59 | ||
| 61 | static struct crypto_alg alg = { | 60 | static struct crypto_alg alg = { |
| 62 | .cra_name = "twofish", | 61 | .cra_name = "twofish", |
| 63 | .cra_driver_name = "twofish-i586", | 62 | .cra_driver_name = "twofish-asm", |
| 64 | .cra_priority = 200, | 63 | .cra_priority = 200, |
| 65 | .cra_flags = CRYPTO_ALG_TYPE_CIPHER, | 64 | .cra_flags = CRYPTO_ALG_TYPE_CIPHER, |
| 66 | .cra_blocksize = TF_BLOCK_SIZE, | 65 | .cra_blocksize = TF_BLOCK_SIZE, |
| @@ -93,5 +92,6 @@ module_init(init); | |||
| 93 | module_exit(fini); | 92 | module_exit(fini); |
| 94 | 93 | ||
| 95 | MODULE_LICENSE("GPL"); | 94 | MODULE_LICENSE("GPL"); |
| 96 | MODULE_DESCRIPTION ("Twofish Cipher Algorithm, i586 asm optimized"); | 95 | MODULE_DESCRIPTION ("Twofish Cipher Algorithm, asm optimized"); |
| 97 | MODULE_ALIAS("twofish"); | 96 | MODULE_ALIAS("twofish"); |
| 97 | MODULE_ALIAS("twofish-asm"); | ||
