summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2006-07-14 10:42:27 +1000
committerHerbert Xu <herbert@gondor.apana.org.au>2006-09-21 11:41:03 +1000
commitdf89820ebd5bbf4f3c6b5f8ee7d9e983107f6a91 (patch)
treea782e2662cbdb6c7ad7591f2697d06008048f966
parentc907ee76d8456fe1d98f40b5febfc7802a73b784 (diff)
downloadlinux-df89820ebd5bbf4f3c6b5f8ee7d9e983107f6a91.tar.bz2
[CRYPTO] cipher: Removed special IV checks for ECB
This patch makes IV operations on ECB fail through nocrypt_iv rather than calling BUG(). This is needed to generalise CBC/ECB using the template mechanism. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--crypto/cipher.c2
-rw-r--r--include/linux/crypto.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/crypto/cipher.c b/crypto/cipher.c
index 56406a4a88d4..aebc4a2adc80 100644
--- a/crypto/cipher.c
+++ b/crypto/cipher.c
@@ -399,6 +399,8 @@ int crypto_init_cipher_ops(struct crypto_tfm *tfm)
case CRYPTO_TFM_MODE_ECB:
ops->cit_encrypt = ecb_encrypt;
ops->cit_decrypt = ecb_decrypt;
+ ops->cit_encrypt_iv = nocrypt_iv;
+ ops->cit_decrypt_iv = nocrypt_iv;
break;
case CRYPTO_TFM_MODE_CBC:
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index 053bfab43e8d..dbdfc7c79367 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -422,7 +422,6 @@ static inline int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm,
unsigned int nbytes, u8 *iv)
{
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
- BUG_ON(tfm->crt_cipher.cit_mode == CRYPTO_TFM_MODE_ECB);
return tfm->crt_cipher.cit_encrypt_iv(tfm, dst, src, nbytes, iv);
}
@@ -441,7 +440,6 @@ static inline int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm,
unsigned int nbytes, u8 *iv)
{
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
- BUG_ON(tfm->crt_cipher.cit_mode == CRYPTO_TFM_MODE_ECB);
return tfm->crt_cipher.cit_decrypt_iv(tfm, dst, src, nbytes, iv);
}