From 5f0272d618f486e694c14c51a3ad42e4232ae9eb Mon Sep 17 00:00:00 2001
From: Nicolas Thill <nico@openwrt.org>
Date: Sun, 23 Sep 2007 15:12:12 +0000
Subject: [PATCH] move crypto support to a seperate crypto.mk file, split
 modules into multiple packages and adjust dependencies, sync crypto options
 in kconfigs.

SVN-Revision: 8980
---
 package/hostap-driver/Makefile               |   2 +-
 package/kernel/modules/crypto.mk             | 212 +++++++++++++++++++
 package/kernel/modules/network.mk            |   4 +-
 package/kernel/modules/other.mk              |  35 ---
 package/kernel/modules/wireless.mk           |   2 +-
 package/mac80211/Makefile                    |   2 +-
 package/rt2x00/Makefile                      |   2 +-
 target/linux/adm5120/router_be/config-2.6.22 |   1 -
 target/linux/adm5120/router_le/config-2.6.22 |   1 -
 target/linux/at91/config-2.6.22              |  22 --
 target/linux/brcm47xx/config-2.6.22          |  22 --
 target/linux/brcm63xx/config-2.6.22          |  23 --
 target/linux/generic-2.4/config-default      |  28 +--
 target/linux/generic-2.6/config-2.6.22       |  14 +-
 target/linux/generic-2.6/config-default      |  14 +-
 target/linux/iop32x/config-2.6.21            |  22 --
 target/linux/ixp4xx/config-default           |  22 --
 target/linux/pxa/config-2.6.21               |  24 ---
 target/linux/sibyte/config-2.6.21            |  19 --
 19 files changed, 246 insertions(+), 225 deletions(-)
 create mode 100644 package/kernel/modules/crypto.mk

diff --git a/package/hostap-driver/Makefile b/package/hostap-driver/Makefile
index b784131a1d..2b903f9978 100644
--- a/package/hostap-driver/Makefile
+++ b/package/hostap-driver/Makefile
@@ -42,7 +42,7 @@ endef
 
 define KernelPackage/hostap
 $(call KernelPackage/hostap/Default)
-  DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-ieee80211 +kmod-crypto
+  DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-ieee80211
   TITLE:=Host AP support for Prism2/2.5/3
   KCONFIG:=CONFIG_HOSTAP
 endef
diff --git a/package/kernel/modules/crypto.mk b/package/kernel/modules/crypto.mk
new file mode 100644
index 0000000000..bd819b0841
--- /dev/null
+++ b/package/kernel/modules/crypto.mk
@@ -0,0 +1,212 @@
+#
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# $Id$
+
+CRYPTO_MENU:=Cryptographic API modules
+
+define KernelPackage/crypto-core
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=Core CryptoAPI modules
+  KCONFIG:= \
+	CONFIG_CRYPTO=y \
+	CONFIG_CRYPTO_ALGAPI \
+	CONFIG_CRYPTO_BLKCIPHER \
+	CONFIG_CRYPTO_CBC \
+	CONFIG_CRYPTO_DEFLATE \
+	CONFIG_CRYPTO_ECB \
+	CONFIG_CRYPTO_HASH \
+	CONFIG_CRYPTO_MANAGER
+  FILES:= \
+	$(LINUX_DIR)/crypto/crypto_algapi.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/blkcipher.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/cbc.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/deflate.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/ecb.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/crypto_hash.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/cryptomgr.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,01, \
+	crypto_algapi \
+	cryptomgr \
+	crypto_hash \
+	blkcipher \
+	cbc \
+	ecb \
+	deflate \
+  )
+endef
+
+define KernelPackage/crypto-core/2.4
+  FILES:=$(LINUX_DIR)/crypto/deflate.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,01, deflate)
+endef
+
+$(eval $(call KernelPackage,crypto-core))
+
+
+define KernelPackage/crypto-aes
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=AES cipher CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:= \
+	CONFIG_CRYPTO_AES \
+	CONFIG_CRYPTO_AES_586
+  FILES:=$(LINUX_DIR)/crypto/aes.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,aes)
+endef
+
+define KernelPackage/crypto-aes/x86-2.6
+  KCONFIG:=CONFIG_CRYPTO_AES_586
+  FILES:=$(LINUX_DIR)/arch/i386/crypto/aes-i586.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,aes-i586)
+endef
+
+$(eval $(call KernelPackage,crypto-aes))
+
+
+define KernelPackage/crypto-arc4
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=ARC4 (RC4) cipher CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_ARC4
+  FILES:=$(LINUX_DIR)/crypto/arc4.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,arc4)
+endef
+
+$(eval $(call KernelPackage,crypto-arc4))
+
+
+define KernelPackage/crypto-des
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=DES/3DES cipher CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_AES
+  FILES:=$(LINUX_DIR)/crypto/aes.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,des)
+endef
+
+$(eval $(call KernelPackage,crypto-des))
+
+
+define KernelPackage/crypto-hmac
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=HMAC digest CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_HMAC
+  FILES:=$(LINUX_DIR)/crypto/hmac.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,hmac)
+endef
+
+$(eval $(call KernelPackage,crypto-hmac))
+
+
+define KernelPackage/crypto-md5
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=MD5 digest CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_MD5
+  FILES:=$(LINUX_DIR)/crypto/md5.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,md5)
+endef
+
+$(eval $(call KernelPackage,crypto-md5))
+
+
+define KernelPackage/crypto-michael-mic
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=Michael MIC keyed digest CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_MICHAEL_MIC
+  FILES:=$(LINUX_DIR)/crypto/michael_mic.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,michael_mic)
+endef
+
+$(eval $(call KernelPackage,crypto-michael-mic))
+
+
+define KernelPackage/crypto-sha1
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=SHA1 digest CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_SHA1
+  FILES:=$(LINUX_DIR)/crypto/sha1.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,sha1)
+endef
+
+$(eval $(call KernelPackage,crypto-sha1))
+
+
+define KernelPackage/crypto-misc
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=Other CryptoAPI modules
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:= \
+	CONFIG_CRYPTO_ANUBIS \
+	CONFIG_CRYPTO_BLOWFISH \
+	CONFIG_CRYPTO_CAMELLIA \
+	CONFIG_CRYPTO_CAST5 \
+	CONFIG_CRYPTO_CAST6 \
+	CONFIG_CRYPTO_CRC32C \
+	CONFIG_CRYPTO_FCRYPT \
+	CONFIG_CRYPTO_KHAZAD \
+	CONFIG_CRYPTO_MD4 \
+	CONFIG_CRYPTO_SERPENT \
+	CONFIG_CRYPTO_SHA256 \
+	CONFIG_CRYPTO_SHA512 \
+	CONFIG_CRYPTO_TEA \
+	CONFIG_CRYPTO_TGR192 \
+	CONFIG_CRYPTO_TWOFISH \
+	CONFIG_CRYPTO_TWOFISH_586 \
+	CONFIG_CRYPTO_WP512
+  FILES:= \
+	$(LINUX_DIR)/crypto/anubis.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/blowfish.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/cast5.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/cast6.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/khazad.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/md4.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/serpent.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/sha256.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/sha512.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/tea.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/twofish.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/wp512.$(LINUX_KMOD_SUFFIX)
+endef
+
+define KernelPackage/crypto-misc/2.6
+  FILES+= \
+	$(LINUX_DIR)/crypto/camellia.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/crc32c.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/fcrypt.$(LINUX_KMOD_SUFFIX) \
+	$(LINUX_DIR)/crypto/tgr192.$(LINUX_KMOD_SUFFIX)
+endef
+
+$(eval $(call KernelPackage,crypto-misc))
+
+
+define KernelPackage/crypto-null
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=Null CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_NULL
+  FILES:=$(LINUX_DIR)/crypto/crypto_null.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,crypto_null)
+endef
+
+$(eval $(call KernelPackage,crypto-null))
+
+
+define KernelPackage/crypto-test
+  SUBMENU:=$(CRYPTO_MENU)
+  TITLE:=Test CryptoAPI module
+  DEPENDS:=kmod-crypto-core
+  KCONFIG:=CONFIG_CRYPTO_NULL
+  FILES:=$(LINUX_DIR)/crypto/tcrypt.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,09,tcrypt)
+endef
+
+$(eval $(call KernelPackage,crypto-test))
+
diff --git a/package/kernel/modules/network.mk b/package/kernel/modules/network.mk
index 130d9f56ca..b9a8a34fc9 100644
--- a/package/kernel/modules/network.mk
+++ b/package/kernel/modules/network.mk
@@ -83,7 +83,7 @@ $(eval $(call KernelPackage,capi))
 define KernelPackage/ipsec
   SUBMENU:=$(NETWORK_SUPPORT_MENU)
   TITLE:=IPsec related modules (IPv4 and IPv6)
-  DEPENDS:=@LINUX_2_6 +kmod-crypto
+  DEPENDS:=@LINUX_2_6 +kmod-crypto-des +kmod-crypto-hmac +kmod-crypto-md5 +kmod-crypto-sha1
   KCONFIG:= \
 	CONFIG_NET_KEY \
 	CONFIG_XFRM_USER
@@ -359,7 +359,7 @@ $(eval $(call KernelPackage,ipoa))
 define KernelPackage/mppe
   SUBMENU:=$(NETWORK_SUPPORT_MENU)
   TITLE:=Microsoft PPP compression/encryption
-  DEPENDS:=kmod-ppp +kmod-crypto
+  DEPENDS:=kmod-ppp +kmod-crypto-arc4 +kmod-crypto-sha1
   KCONFIG:= \
 	CONFIG_PPP_MPPE_MPPC \
 	CONFIG_PPP_MPPE
diff --git a/package/kernel/modules/other.mk b/package/kernel/modules/other.mk
index 6d94b77318..0e3368b0b6 100644
--- a/package/kernel/modules/other.mk
+++ b/package/kernel/modules/other.mk
@@ -23,41 +23,6 @@ endef
 $(eval $(call KernelPackage,crc-itu-t))
 
 
-define KernelPackage/crypto
-  SUBMENU:=$(OTHER_MENU)
-  TITLE:=CryptoAPI modules
-  KCONFIG:= \
-	CONFIG_CRYPTO_HMAC=m \
-	CONFIG_CRYPTO_NULL=m \
-	CONFIG_CRYPTO_MD4=m \
-	CONFIG_CRYPTO_MD5=m \
-	CONFIG_CRYPTO_SHA1=m \
-	CONFIG_CRYPTO_SHA256=m \
-	CONFIG_CRYPTO_SHA512=m \
-	CONFIG_CRYPTO_WP512=m \
-	CONFIG_CRYPTO_TGR192=m \
-	CONFIG_CRYPTO_DES=m \
-	CONFIG_CRYPTO_BLOWFISH=m \
-	CONFIG_CRYPTO_TWOFISH=m \
-	CONFIG_CRYPTO_SERPENT=m \
-	CONFIG_CRYPTO_AES=m \
-	CONFIG_CRYPTO_CAST5=m \
-	CONFIG_CRYPTO_CAST6=m \
-	CONFIG_CRYPTO_TEA=m \
-	CONFIG_CRYPTO_ARC4=m \
-	CONFIG_CRYPTO_KHAZAD=m \
-	CONFIG_CRYPTO_ANUBIS=m \
-	CONFIG_CRYPTO_DEFLATE=m \
-	CONFIG_CRYPTO_MICHAEL_MIC=m \
-	CONFIG_CRYPTO_CRC32C=m \
-	CONFIG_CRYPTO_ECB=m \
-	CONFIG_CRYPTO_BLKCIPHER=m
-  FILES:=$(LINUX_DIR)/crypto/*.$(LINUX_KMOD_SUFFIX)
-endef
-
-$(eval $(call KernelPackage,crypto))
-
-
 define KernelPackage/eeprom-93cx6
   SUBMENU:=$(OTHER_MENU)
   TITLE:=EEPROM 93CX6 support
diff --git a/package/kernel/modules/wireless.mk b/package/kernel/modules/wireless.mk
index f8d73f9776..a9ec1f5de8 100644
--- a/package/kernel/modules/wireless.mk
+++ b/package/kernel/modules/wireless.mk
@@ -11,7 +11,7 @@ WIRELESS_MENU:=Wireless Drivers
 define KernelPackage/ieee80211
   SUBMENU:=$(WIRELESS_MENU)
   TITLE:=802.11 Networking stack
-  DEPENDS:=@LINUX_2_6 +kmod-crypto
+  DEPENDS:=@LINUX_2_6 +kmod-crypto-arc4 +kmod-crypto-aes +kmod-crypto-michael-mic
   KCONFIG:= \
 	CONFIG_IEEE80211 \
 	CONFIG_IEEE80211_CRYPT_WEP \
diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile
index bfd4a2cb21..66a530d037 100644
--- a/package/mac80211/Makefile
+++ b/package/mac80211/Makefile
@@ -20,7 +20,7 @@ endif
 define KernelPackage/mac80211
   SUBMENU:=Wireless Drivers
   TITLE:=Linux 802.11 Wireless Networking Stack
-  DEPENDS:=@LINUX_2_6
+  DEPENDS:=@LINUX_2_6 +kmod-crypto-arc4 +kmod-crypto-aes
   KCONFIG:=CONFIG_MAC80211
   FILES:= \
 	$(PKG_BUILD_DIR)/mac80211/mac80211.$(LINUX_KMOD_SUFFIX) \
diff --git a/package/rt2x00/Makefile b/package/rt2x00/Makefile
index 9dd9286933..0d82296058 100644
--- a/package/rt2x00/Makefile
+++ b/package/rt2x00/Makefile
@@ -35,7 +35,7 @@ endef
 
 define KernelPackage/rt2x00-lib
 $(call KernelPackage/rt2x00/Default)
-  DEPENDS+= @PCI_SUPPORT||USB_SUPPORT +kmod-mac80211 +kmod-crypto
+  DEPENDS+= @PCI_SUPPORT||USB_SUPPORT +kmod-mac80211
   TITLE+= (LIB)
   FILES:=$(PKG_BUILD_DIR)/rt2x00lib.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,blkcipher ecb arc4 rt2x00lib)
diff --git a/target/linux/adm5120/router_be/config-2.6.22 b/target/linux/adm5120/router_be/config-2.6.22
index 37139d2e25..daa08e3e8c 100644
--- a/target/linux/adm5120/router_be/config-2.6.22
+++ b/target/linux/adm5120/router_be/config-2.6.22
@@ -46,7 +46,6 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX39XX is not set
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
-CONFIG_CRYPTO_SHA1=y
 # CONFIG_DDB5477 is not set
 CONFIG_DEVPORT=y
 # CONFIG_DM9000 is not set
diff --git a/target/linux/adm5120/router_le/config-2.6.22 b/target/linux/adm5120/router_le/config-2.6.22
index 3a88bed997..1224a0a388 100644
--- a/target/linux/adm5120/router_le/config-2.6.22
+++ b/target/linux/adm5120/router_le/config-2.6.22
@@ -46,7 +46,6 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX39XX is not set
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
-CONFIG_CRYPTO_SHA1=y
 # CONFIG_DDB5477 is not set
 CONFIG_DEVPORT=y
 # CONFIG_DM9000 is not set
diff --git a/target/linux/at91/config-2.6.22 b/target/linux/at91/config-2.6.22
index 5b6af5d5ce..af68f50dd6 100644
--- a/target/linux/at91/config-2.6.22
+++ b/target/linux/at91/config-2.6.22
@@ -85,28 +85,6 @@ CONFIG_CPU_CP15_MMU=y
 # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
 # CONFIG_CPU_ICACHE_DISABLE is not set
 CONFIG_CPU_TLB_V4WBI=y
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_BLKCIPHER=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_CRC32C is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 CONFIG_DAVICOM_PHY=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_USER is not set
diff --git a/target/linux/brcm47xx/config-2.6.22 b/target/linux/brcm47xx/config-2.6.22
index 3399656a97..3613b921c9 100644
--- a/target/linux/brcm47xx/config-2.6.22
+++ b/target/linux/brcm47xx/config-2.6.22
@@ -55,28 +55,6 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX39XX is not set
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_BLKCIPHER=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_CRC32C is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 # CONFIG_DDB5477 is not set
 CONFIG_DEVPORT=y
 # CONFIG_DM9000 is not set
diff --git a/target/linux/brcm63xx/config-2.6.22 b/target/linux/brcm63xx/config-2.6.22
index 95f52f50ae..648b140187 100644
--- a/target/linux/brcm63xx/config-2.6.22
+++ b/target/linux/brcm63xx/config-2.6.22
@@ -52,29 +52,6 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
 CONFIG_CRAMFS=y
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_BLKCIPHER=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_CRC32C is not set
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-CONFIG_CRYPTO_MD4=y
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-CONFIG_CRYPTO_SHA1=y
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 CONFIG_DAVICOM_PHY=m
 # CONFIG_DDB5477 is not set
 CONFIG_DEBUG_FS=y
diff --git a/target/linux/generic-2.4/config-default b/target/linux/generic-2.4/config-default
index 6ae4185908..f2dc0df72e 100644
--- a/target/linux/generic-2.4/config-default
+++ b/target/linux/generic-2.4/config-default
@@ -90,27 +90,27 @@ CONFIG_CPU_MIPS32=y
 CONFIG_CROSSCOMPILE=y
 CONFIG_CRYPTO=y
 CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
 CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=m
 CONFIG_CRYPTO_MICHAEL_MIC=m
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_WP512=m
 # CONFIG_DDB5074 is not set
 # CONFIG_DDB5476 is not set
 # CONFIG_DDB5477 is not set
diff --git a/target/linux/generic-2.6/config-2.6.22 b/target/linux/generic-2.6/config-2.6.22
index ab286f096d..ba4c5e7ca1 100644
--- a/target/linux/generic-2.6/config-2.6.22
+++ b/target/linux/generic-2.6/config-2.6.22
@@ -217,19 +217,19 @@ CONFIG_CRC_ITU_T=m
 CONFIG_CROSSCOMPILE=y
 CONFIG_CRYPTO=y
 CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER=m
 CONFIG_CRYPTO_BLOWFISH=m
-# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CBC=m
 CONFIG_CRYPTO_CRC32C=m
 # CONFIG_CRYPTO_CRYPTD is not set
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_ECB=m
 # CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_GF128MUL is not set
@@ -237,9 +237,9 @@ CONFIG_CRYPTO_HASH=m
 CONFIG_CRYPTO_HMAC=m
 CONFIG_CRYPTO_KHAZAD=m
 # CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER=m
 CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MD5=m
 CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_NULL=m
 # CONFIG_CRYPTO_PCBC is not set
diff --git a/target/linux/generic-2.6/config-default b/target/linux/generic-2.6/config-default
index ae24b3a188..34bc9201b9 100644
--- a/target/linux/generic-2.6/config-default
+++ b/target/linux/generic-2.6/config-default
@@ -211,18 +211,18 @@ CONFIG_CRC_CCITT=m
 CONFIG_CROSSCOMPILE=y
 CONFIG_CRYPTO=y
 CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER=m
 CONFIG_CRYPTO_BLOWFISH=m
-# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CBC=m
 CONFIG_CRYPTO_CRC32C=m
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_ECB=m
 # CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_GF128MUL is not set
@@ -230,9 +230,9 @@ CONFIG_CRYPTO_HASH=m
 CONFIG_CRYPTO_HMAC=m
 CONFIG_CRYPTO_KHAZAD=m
 # CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER=m
 CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MD5=m
 CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_NULL=m
 # CONFIG_CRYPTO_PCBC is not set
diff --git a/target/linux/iop32x/config-2.6.21 b/target/linux/iop32x/config-2.6.21
index 97ea64dd03..361c593f3a 100644
--- a/target/linux/iop32x/config-2.6.21
+++ b/target/linux/iop32x/config-2.6.21
@@ -71,28 +71,6 @@ CONFIG_CPU_TLB_V4WBI=y
 CONFIG_CPU_XSCALE=y
 CONFIG_CRC16=y
 # CONFIG_CRC_CCITT is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_BLKCIPHER=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_CRC32C is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEFAULT_TCP_CONG="westwood"
diff --git a/target/linux/ixp4xx/config-default b/target/linux/ixp4xx/config-default
index a995ad9449..0c2af9ca41 100644
--- a/target/linux/ixp4xx/config-default
+++ b/target/linux/ixp4xx/config-default
@@ -74,28 +74,6 @@ CONFIG_CPU_TLB_V4WBI=y
 CONFIG_CPU_XSCALE=y
 CONFIG_CRC16=y
 CONFIG_CRC_CCITT=m
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_BLKCIPHER=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_CRC32C is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEFAULT_TCP_CONG="westwood"
diff --git a/target/linux/pxa/config-2.6.21 b/target/linux/pxa/config-2.6.21
index 7c1e1b5c07..b6cb18251d 100644
--- a/target/linux/pxa/config-2.6.21
+++ b/target/linux/pxa/config-2.6.21
@@ -72,30 +72,6 @@ CONFIG_CPU_XSCALE=y
 CONFIG_CRAMFS=y
 # CONFIG_CRC16 is not set
 CONFIG_CRC_CCITT=y
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DMABOUNCE=y
diff --git a/target/linux/sibyte/config-2.6.21 b/target/linux/sibyte/config-2.6.21
index 17427f8e8d..1c4f3e1d22 100644
--- a/target/linux/sibyte/config-2.6.21
+++ b/target/linux/sibyte/config-2.6.21
@@ -58,25 +58,6 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX39XX is not set
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_CRC32C is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_WP512 is not set
 # CONFIG_CYCLADES is not set
 # CONFIG_DDB5074 is not set
 # CONFIG_DDB5476 is not set
-- 
GitLab