summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/crypto/api-intro.txt7
-rw-r--r--crypto/Kconfig6
-rw-r--r--crypto/Makefile1
-rw-r--r--crypto/api.c4
-rw-r--r--crypto/compress.c12
-rw-r--r--include/linux/crypto.h10
6 files changed, 29 insertions, 11 deletions
diff --git a/Documentation/crypto/api-intro.txt b/Documentation/crypto/api-intro.txt
index b8cc036cac32..f2e42883bdb5 100644
--- a/Documentation/crypto/api-intro.txt
+++ b/Documentation/crypto/api-intro.txt
@@ -73,6 +73,13 @@ add the following line to /etc/modules.conf:
alias des3_ede des
+The Null algorithms reside in the crypto_null module, so these lines
+should also be added:
+
+ alias cipher_null crypto_null
+ alias digest_null crypto_null
+ alias compress_null crypto_null
+
DEVELOPER NOTES
diff --git a/crypto/Kconfig b/crypto/Kconfig
index f09c10bcfe6b..b87a265717d6 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -16,6 +16,12 @@ config CRYPTO_HMAC
HMAC: Keyed-Hashing for Message Authentication (RFC2104).
This is required for IPSec.
+config CRYPTO_NULL
+ tristate "Null algorithms"
+ depends on CRYPTO
+ help
+ These are 'Null' algorithms, used by IPsec, which do nothing.
+
config CRYPTO_MD4
tristate "MD4 digest algorithm"
depends on CRYPTO
diff --git a/crypto/Makefile b/crypto/Makefile
index bd8973bdd84d..d94a470b3a9d 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -9,6 +9,7 @@ autoload-crypto-$(CONFIG_KMOD) = autoload.o
obj-$(CONFIG_CRYPTO) += api.o cipher.o digest.o compress.o $(autoload-crypto-y)
obj-$(CONFIG_CRYPTO_HMAC) += hmac.o
+obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o
obj-$(CONFIG_CRYPTO_MD4) += md4.o
obj-$(CONFIG_CRYPTO_MD5) += md5.o
obj-$(CONFIG_CRYPTO_SHA1) += sha1.o
diff --git a/crypto/api.c b/crypto/api.c
index 7657bd59eefa..0649c6ebb781 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -63,7 +63,7 @@ static int crypto_init_flags(struct crypto_tfm *tfm, u32 flags)
case CRYPTO_ALG_TYPE_DIGEST:
return crypto_init_digest_flags(tfm, flags);
- case CRYPTO_ALG_TYPE_COMP:
+ case CRYPTO_ALG_TYPE_COMPRESS:
return crypto_init_compress_flags(tfm, flags);
default:
@@ -83,7 +83,7 @@ static int crypto_init_ops(struct crypto_tfm *tfm)
case CRYPTO_ALG_TYPE_DIGEST:
return crypto_init_digest_ops(tfm);
- case CRYPTO_ALG_TYPE_COMP:
+ case CRYPTO_ALG_TYPE_COMPRESS:
return crypto_init_compress_ops(tfm);
default:
diff --git a/crypto/compress.c b/crypto/compress.c
index 773fc5764050..7baaae047941 100644
--- a/crypto/compress.c
+++ b/crypto/compress.c
@@ -18,15 +18,15 @@
#include <linux/string.h>
#include "internal.h"
-/*
- * This code currently implements blazingly fast and
- * lossless Quadruple ROT13 compression.
- */
static void crypto_compress(struct crypto_tfm *tfm)
-{ }
+{
+ tfm->__crt_alg->cra_compress.coa_compress();
+}
static void crypto_decompress(struct crypto_tfm *tfm)
-{ }
+{
+ tfm->__crt_alg->cra_compress.coa_decompress();
+}
int crypto_init_compress_flags(struct crypto_tfm *tfm, u32 flags)
{
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index b3448683d02d..960e54133e29 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -29,7 +29,7 @@
#define CRYPTO_ALG_TYPE_MASK 0x000000ff
#define CRYPTO_ALG_TYPE_CIPHER 0x00000001
#define CRYPTO_ALG_TYPE_DIGEST 0x00000002
-#define CRYPTO_ALG_TYPE_COMP 0x00000004
+#define CRYPTO_ALG_TYPE_COMPRESS 0x00000004
/*
@@ -209,16 +209,19 @@ static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm)
static inline unsigned int crypto_tfm_alg_min_keysize(struct crypto_tfm *tfm)
{
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
return tfm->__crt_alg->cra_cipher.cia_min_keysize;
}
static inline unsigned int crypto_tfm_alg_max_keysize(struct crypto_tfm *tfm)
{
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
return tfm->__crt_alg->cra_cipher.cia_max_keysize;
}
static inline unsigned int crypto_tfm_alg_ivsize(struct crypto_tfm *tfm)
{
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
return tfm->__crt_alg->cra_cipher.cia_ivsize;
}
@@ -229,6 +232,7 @@ static inline unsigned int crypto_tfm_alg_blocksize(struct crypto_tfm *tfm)
static inline unsigned int crypto_tfm_alg_digestsize(struct crypto_tfm *tfm)
{
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_DIGEST);
return tfm->__crt_alg->cra_digest.dia_digestsize;
}
@@ -302,13 +306,13 @@ static inline void crypto_cipher_get_iv(struct crypto_tfm *tfm,
static inline void crypto_comp_compress(struct crypto_tfm *tfm)
{
- BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_COMP);
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_COMPRESS);
tfm->crt_compress.cot_compress(tfm);
}
static inline void crypto_comp_decompress(struct crypto_tfm *tfm)
{
- BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_COMP);
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_COMPRESS);
tfm->crt_compress.cot_decompress(tfm);
}