diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-11 12:38:37 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-11 12:38:37 -0400 |
| commit | 332a3392188e0ad966543c87b8da2b9d246f301d (patch) | |
| tree | ac0d570590bffdd1924426adc5b255857d2f3297 /arch | |
| parent | a9c86d42599519f3d83b5f46bdab25046fe47b84 (diff) | |
| parent | 81bd5f6c966cf2f137c2759dfc78abdffcff055e (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (102 commits)
crypto: sha-s390 - Fix warnings in import function
crypto: vmac - New hash algorithm for intel_txt support
crypto: api - Do not displace newly registered algorithms
crypto: ansi_cprng - Fix module initialization
crypto: xcbc - Fix alignment calculation of xcbc_tfm_ctx
crypto: fips - Depend on ansi_cprng
crypto: blkcipher - Do not use eseqiv on stream ciphers
crypto: ctr - Use chainiv on raw counter mode
Revert crypto: fips - Select CPRNG
crypto: rng - Fix typo
crypto: talitos - add support for 36 bit addressing
crypto: talitos - align locks on cache lines
crypto: talitos - simplify hmac data size calculation
crypto: mv_cesa - Add support for Orion5X crypto engine
crypto: cryptd - Add support to access underlaying shash
crypto: gcm - Use GHASH digest algorithm
crypto: ghash - Add GHASH digest algorithm for GCM
crypto: authenc - Convert to ahash
crypto: api - Fix aligned ctx helper
crypto: hmac - Prehash ipad/opad
...
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/s390/crypto/des_s390.c | 11 | ||||
| -rw-r--r-- | arch/s390/crypto/sha1_s390.c | 26 | ||||
| -rw-r--r-- | arch/s390/crypto/sha256_s390.c | 26 | ||||
| -rw-r--r-- | arch/s390/crypto/sha512_s390.c | 36 | ||||
| -rw-r--r-- | arch/x86/crypto/aesni-intel_glue.c | 2 |
5 files changed, 95 insertions, 6 deletions
diff --git a/arch/s390/crypto/des_s390.c b/arch/s390/crypto/des_s390.c index 4aba83b31596..2bc479ab3a66 100644 --- a/arch/s390/crypto/des_s390.c +++ b/arch/s390/crypto/des_s390.c | |||
| @@ -250,8 +250,9 @@ static int des3_128_setkey(struct crypto_tfm *tfm, const u8 *key, | |||
| 250 | const u8 *temp_key = key; | 250 | const u8 *temp_key = key; |
| 251 | u32 *flags = &tfm->crt_flags; | 251 | u32 *flags = &tfm->crt_flags; |
| 252 | 252 | ||
| 253 | if (!(memcmp(key, &key[DES_KEY_SIZE], DES_KEY_SIZE))) { | 253 | if (!(memcmp(key, &key[DES_KEY_SIZE], DES_KEY_SIZE)) && |
| 254 | *flags |= CRYPTO_TFM_RES_BAD_KEY_SCHED; | 254 | (*flags & CRYPTO_TFM_REQ_WEAK_KEY)) { |
| 255 | *flags |= CRYPTO_TFM_RES_WEAK_KEY; | ||
| 255 | return -EINVAL; | 256 | return -EINVAL; |
| 256 | } | 257 | } |
| 257 | for (i = 0; i < 2; i++, temp_key += DES_KEY_SIZE) { | 258 | for (i = 0; i < 2; i++, temp_key += DES_KEY_SIZE) { |
| @@ -411,9 +412,9 @@ static int des3_192_setkey(struct crypto_tfm *tfm, const u8 *key, | |||
| 411 | 412 | ||
| 412 | if (!(memcmp(key, &key[DES_KEY_SIZE], DES_KEY_SIZE) && | 413 | if (!(memcmp(key, &key[DES_KEY_SIZE], DES_KEY_SIZE) && |
| 413 | memcmp(&key[DES_KEY_SIZE], &key[DES_KEY_SIZE * 2], | 414 | memcmp(&key[DES_KEY_SIZE], &key[DES_KEY_SIZE * 2], |
| 414 | DES_KEY_SIZE))) { | 415 | DES_KEY_SIZE)) && |
| 415 | 416 | (*flags & CRYPTO_TFM_REQ_WEAK_KEY)) { | |
| 416 | *flags |= CRYPTO_TFM_RES_BAD_KEY_SCHED; | 417 | *flags |= CRYPTO_TFM_RES_WEAK_KEY; |
| 417 | return -EINVAL; | 418 | return -EINVAL; |
| 418 | } | 419 | } |
| 419 | for (i = 0; i < 3; i++, temp_key += DES_KEY_SIZE) { | 420 | for (i = 0; i < 3; i++, temp_key += DES_KEY_SIZE) { |
diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c index e85ba348722a..f6de7826c979 100644 --- a/arch/s390/crypto/sha1_s390.c +++ b/arch/s390/crypto/sha1_s390.c | |||
| @@ -46,12 +46,38 @@ static int sha1_init(struct shash_desc *desc) | |||
| 46 | return 0; | 46 | return 0; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | static int sha1_export(struct shash_desc *desc, void *out) | ||
| 50 | { | ||
| 51 | struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | ||
| 52 | struct sha1_state *octx = out; | ||
| 53 | |||
| 54 | octx->count = sctx->count; | ||
| 55 | memcpy(octx->state, sctx->state, sizeof(octx->state)); | ||
| 56 | memcpy(octx->buffer, sctx->buf, sizeof(octx->buffer)); | ||
| 57 | return 0; | ||
| 58 | } | ||
| 59 | |||
| 60 | static int sha1_import(struct shash_desc *desc, const void *in) | ||
| 61 | { | ||
| 62 | struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | ||
| 63 | const struct sha1_state *ictx = in; | ||
| 64 | |||
| 65 | sctx->count = ictx->count; | ||
| 66 | memcpy(sctx->state, ictx->state, sizeof(ictx->state)); | ||
| 67 | memcpy(sctx->buf, ictx->buffer, sizeof(ictx->buffer)); | ||
| 68 | sctx->func = KIMD_SHA_1; | ||
| 69 | return 0; | ||
| 70 | } | ||
| 71 | |||
| 49 | static struct shash_alg alg = { | 72 | static struct shash_alg alg = { |
| 50 | .digestsize = SHA1_DIGEST_SIZE, | 73 | .digestsize = SHA1_DIGEST_SIZE, |
| 51 | .init = sha1_init, | 74 | .init = sha1_init, |
| 52 | .update = s390_sha_update, | 75 | .update = s390_sha_update, |
| 53 | .final = s390_sha_final, | 76 | .final = s390_sha_final, |
| 77 | .export = sha1_export, | ||
| 78 | .import = sha1_import, | ||
| 54 | .descsize = sizeof(struct s390_sha_ctx), | 79 | .descsize = sizeof(struct s390_sha_ctx), |
| 80 | .statesize = sizeof(struct sha1_state), | ||
| 55 | .base = { | 81 | .base = { |
| 56 | .cra_name = "sha1", | 82 | .cra_name = "sha1", |
| 57 | .cra_driver_name= "sha1-s390", | 83 | .cra_driver_name= "sha1-s390", |
diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c index f9fefc569632..61a7db372121 100644 --- a/arch/s390/crypto/sha256_s390.c +++ b/arch/s390/crypto/sha256_s390.c | |||
| @@ -42,12 +42,38 @@ static int sha256_init(struct shash_desc *desc) | |||
| 42 | return 0; | 42 | return 0; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | static int sha256_export(struct shash_desc *desc, void *out) | ||
| 46 | { | ||
| 47 | struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | ||
| 48 | struct sha256_state *octx = out; | ||
| 49 | |||
| 50 | octx->count = sctx->count; | ||
| 51 | memcpy(octx->state, sctx->state, sizeof(octx->state)); | ||
| 52 | memcpy(octx->buf, sctx->buf, sizeof(octx->buf)); | ||
| 53 | return 0; | ||
| 54 | } | ||
| 55 | |||
| 56 | static int sha256_import(struct shash_desc *desc, const void *in) | ||
| 57 | { | ||
| 58 | struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | ||
| 59 | const struct sha256_state *ictx = in; | ||
| 60 | |||
| 61 | sctx->count = ictx->count; | ||
| 62 | memcpy(sctx->state, ictx->state, sizeof(ictx->state)); | ||
| 63 | memcpy(sctx->buf, ictx->buf, sizeof(ictx->buf)); | ||
| 64 | sctx->func = KIMD_SHA_256; | ||
| 65 | return 0; | ||
| 66 | } | ||
| 67 | |||
| 45 | static struct shash_alg alg = { | 68 | static struct shash_alg alg = { |
| 46 | .digestsize = SHA256_DIGEST_SIZE, | 69 | .digestsize = SHA256_DIGEST_SIZE, |
| 47 | .init = sha256_init, | 70 | .init = sha256_init, |
| 48 | .update = s390_sha_update, | 71 | .update = s390_sha_update, |
| 49 | .final = s390_sha_final, | 72 | .final = s390_sha_final, |
| 73 | .export = sha256_export, | ||
| 74 | .import = sha256_import, | ||
| 50 | .descsize = sizeof(struct s390_sha_ctx), | 75 | .descsize = sizeof(struct s390_sha_ctx), |
| 76 | .statesize = sizeof(struct sha256_state), | ||
| 51 | .base = { | 77 | .base = { |
| 52 | .cra_name = "sha256", | 78 | .cra_name = "sha256", |
| 53 | .cra_driver_name= "sha256-s390", | 79 | .cra_driver_name= "sha256-s390", |
diff --git a/arch/s390/crypto/sha512_s390.c b/arch/s390/crypto/sha512_s390.c index 83192bfc8048..4bf73d0dc525 100644 --- a/arch/s390/crypto/sha512_s390.c +++ b/arch/s390/crypto/sha512_s390.c | |||
| @@ -13,7 +13,10 @@ | |||
| 13 | * | 13 | * |
| 14 | */ | 14 | */ |
| 15 | #include <crypto/internal/hash.h> | 15 | #include <crypto/internal/hash.h> |
| 16 | #include <crypto/sha.h> | ||
| 17 | #include <linux/errno.h> | ||
| 16 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 19 | #include <linux/kernel.h> | ||
| 17 | #include <linux/module.h> | 20 | #include <linux/module.h> |
| 18 | 21 | ||
| 19 | #include "sha.h" | 22 | #include "sha.h" |
| @@ -37,12 +40,42 @@ static int sha512_init(struct shash_desc *desc) | |||
| 37 | return 0; | 40 | return 0; |
| 38 | } | 41 | } |
| 39 | 42 | ||
| 43 | static int sha512_export(struct shash_desc *desc, void *out) | ||
| 44 | { | ||
| 45 | struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | ||
| 46 | struct sha512_state *octx = out; | ||
| 47 | |||
| 48 | octx->count[0] = sctx->count; | ||
| 49 | octx->count[1] = 0; | ||
| 50 | memcpy(octx->state, sctx->state, sizeof(octx->state)); | ||
| 51 | memcpy(octx->buf, sctx->buf, sizeof(octx->buf)); | ||
| 52 | return 0; | ||
| 53 | } | ||
| 54 | |||
| 55 | static int sha512_import(struct shash_desc *desc, const void *in) | ||
| 56 | { | ||
| 57 | struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | ||
| 58 | const struct sha512_state *ictx = in; | ||
| 59 | |||
| 60 | if (unlikely(ictx->count[1])) | ||
| 61 | return -ERANGE; | ||
| 62 | sctx->count = ictx->count[0]; | ||
| 63 | |||
| 64 | memcpy(sctx->state, ictx->state, sizeof(ictx->state)); | ||
| 65 | memcpy(sctx->buf, ictx->buf, sizeof(ictx->buf)); | ||
| 66 | sctx->func = KIMD_SHA_512; | ||
| 67 | return 0; | ||
| 68 | } | ||
| 69 | |||
| 40 | static struct shash_alg sha512_alg = { | 70 | static struct shash_alg sha512_alg = { |
| 41 | .digestsize = SHA512_DIGEST_SIZE, | 71 | .digestsize = SHA512_DIGEST_SIZE, |
| 42 | .init = sha512_init, | 72 | .init = sha512_init, |
| 43 | .update = s390_sha_update, | 73 | .update = s390_sha_update, |
| 44 | .final = s390_sha_final, | 74 | .final = s390_sha_final, |
| 75 | .export = sha512_export, | ||
| 76 | .import = sha512_import, | ||
| 45 | .descsize = sizeof(struct s390_sha_ctx), | 77 | .descsize = sizeof(struct s390_sha_ctx), |
| 78 | .statesize = sizeof(struct sha512_state), | ||
| 46 | .base = { | 79 | .base = { |
| 47 | .cra_name = "sha512", | 80 | .cra_name = "sha512", |
| 48 | .cra_driver_name= "sha512-s390", | 81 | .cra_driver_name= "sha512-s390", |
| @@ -78,7 +111,10 @@ static struct shash_alg sha384_alg = { | |||
| 78 | .init = sha384_init, | 111 | .init = sha384_init, |
| 79 | .update = s390_sha_update, | 112 | .update = s390_sha_update, |
| 80 | .final = s390_sha_final, | 113 | .final = s390_sha_final, |
| 114 | .export = sha512_export, | ||
| 115 | .import = sha512_import, | ||
| 81 | .descsize = sizeof(struct s390_sha_ctx), | 116 | .descsize = sizeof(struct s390_sha_ctx), |
| 117 | .statesize = sizeof(struct sha512_state), | ||
| 82 | .base = { | 118 | .base = { |
| 83 | .cra_name = "sha384", | 119 | .cra_name = "sha384", |
| 84 | .cra_driver_name= "sha384-s390", | 120 | .cra_driver_name= "sha384-s390", |
diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c index c580c5ec1cad..d3ec8d588d4b 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c | |||
| @@ -636,7 +636,7 @@ static int __init aesni_init(void) | |||
| 636 | int err; | 636 | int err; |
| 637 | 637 | ||
| 638 | if (!cpu_has_aes) { | 638 | if (!cpu_has_aes) { |
| 639 | printk(KERN_ERR "Intel AES-NI instructions are not detected.\n"); | 639 | printk(KERN_INFO "Intel AES-NI instructions are not detected.\n"); |
| 640 | return -ENODEV; | 640 | return -ENODEV; |
| 641 | } | 641 | } |
| 642 | if ((err = crypto_register_alg(&aesni_alg))) | 642 | if ((err = crypto_register_alg(&aesni_alg))) |
