48d9137d31
During certificate verification, OpenSSL (starting from version 1.0.1n and 1.0.2b) will attempt to find an alternative certificate chain if the first attempt to build such a chain fails. An error in the implementation of this logic can mean that an attacker could cause certain checks on untrusted certificates to be bypassed, such as the CA flag, enabling them to use a valid leaf certificate to act as a CA and "issue" an invalid certificate. This issue will impact any application that verifies certificates including SSL/TLS/DTLS clients and SSL/TLS/DTLS servers using client authentication. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 46285
216 lines
5.9 KiB
Makefile
216 lines
5.9 KiB
Makefile
#
|
|
# Copyright (C) 2006-2015 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=openssl
|
|
PKG_VERSION:=1.0.2d
|
|
PKG_RELEASE:=1
|
|
PKG_USE_MIPS16:=0
|
|
|
|
PKG_BUILD_PARALLEL:=0
|
|
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
PKG_SOURCE_URL:=http://www.openssl.org/source/ \
|
|
ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.openssl.org/source \
|
|
ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/
|
|
PKG_MD5SUM:=38dd619b2e77cbac69b99f52a053d25a
|
|
|
|
PKG_LICENSE:=OpenSSL
|
|
PKG_LICENSE_FILES:=LICENSE
|
|
PKG_BUILD_DEPENDS:=ocf-crypto-headers
|
|
PKG_CONFIG_DEPENDS:= \
|
|
CONFIG_OPENSSL_ENGINE_CRYPTO \
|
|
CONFIG_OPENSSL_ENGINE_DIGEST \
|
|
CONFIG_OPENSSL_WITH_EC \
|
|
CONFIG_OPENSSL_WITH_EC2M \
|
|
CONFIG_OPENSSL_WITH_SSL3
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
ifneq ($(CONFIG_CCACHE),)
|
|
HOSTCC=$(HOSTCC_NOCACHE)
|
|
HOSTCXX=$(HOSTCXX_NOCACHE)
|
|
endif
|
|
|
|
define Package/openssl/Default
|
|
TITLE:=Open source SSL toolkit
|
|
URL:=http://www.openssl.org/
|
|
endef
|
|
|
|
define Package/libopenssl/config
|
|
source "$(SOURCE)/Config.in"
|
|
endef
|
|
|
|
define Package/openssl/Default/description
|
|
The OpenSSL Project is a collaborative effort to develop a robust,
|
|
commercial-grade, full-featured, and Open Source toolkit implementing the Secure
|
|
Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well
|
|
as a full-strength general purpose cryptography library.
|
|
endef
|
|
|
|
define Package/libopenssl
|
|
$(call Package/openssl/Default)
|
|
SECTION:=libs
|
|
SUBMENU:=SSL
|
|
CATEGORY:=Libraries
|
|
DEPENDS:=+zlib
|
|
TITLE+= (libraries)
|
|
ABI_VERSION:=$(PKG_VERSION)
|
|
MENU:=1
|
|
endef
|
|
|
|
define Package/libopenssl/description
|
|
$(call Package/openssl/Default/description)
|
|
This package contains the OpenSSL shared libraries, needed by other programs.
|
|
endef
|
|
|
|
define Package/openssl-util
|
|
$(call Package/openssl/Default)
|
|
SECTION:=utils
|
|
CATEGORY:=Utilities
|
|
DEPENDS:=+libopenssl
|
|
TITLE+= (utility)
|
|
endef
|
|
|
|
define Package/openssl-util/conffiles
|
|
/etc/ssl/openssl.cnf
|
|
endef
|
|
|
|
define Package/openssl-util/description
|
|
$(call Package/openssl/Default/description)
|
|
This package contains the OpenSSL command-line utility.
|
|
endef
|
|
|
|
|
|
OPENSSL_NO_CIPHERS:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-camellia no-krb5
|
|
OPENSSL_OPTIONS:= shared no-err no-hw zlib-dynamic no-sse2 no-ssl2
|
|
|
|
ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
|
|
OPENSSL_OPTIONS += -DHAVE_CRYPTODEV
|
|
ifdef CONFIG_OPENSSL_ENGINE_DIGEST
|
|
OPENSSL_OPTIONS += -DUSE_CRYPTODEV_DIGESTS
|
|
endif
|
|
else
|
|
OPENSSL_OPTIONS += no-engines
|
|
endif
|
|
|
|
ifndef CONFIG_OPENSSL_WITH_EC
|
|
OPENSSL_OPTIONS += no-ec
|
|
endif
|
|
|
|
ifndef CONFIG_OPENSSL_WITH_EC2M
|
|
OPENSSL_OPTIONS += no-ec2m
|
|
endif
|
|
|
|
ifndef CONFIG_OPENSSL_WITH_SSL3
|
|
OPENSSL_OPTIONS += no-ssl3
|
|
endif
|
|
|
|
ifeq ($(CONFIG_x86_64),y)
|
|
OPENSSL_TARGET:=linux-x86_64-openwrt
|
|
OPENSSL_MAKEFLAGS += LIBDIR=lib
|
|
else
|
|
OPENSSL_OPTIONS+=no-sse2
|
|
ifeq ($(CONFIG_mips)$(CONFIG_mipsel),y)
|
|
OPENSSL_TARGET:=linux-mips-openwrt
|
|
# else ifeq ($(CONFIG_arm)$(CONFIG_armeb),y)
|
|
# OPENSSL_TARGET:=linux-armv4-openwrt
|
|
else
|
|
OPENSSL_TARGET:=linux-generic-openwrt
|
|
OPENSSL_OPTIONS+=no-perlasm
|
|
endif
|
|
endif
|
|
|
|
STAMP_CONFIGURED := $(STAMP_CONFIGURED)_$(subst $(space),_,$(OPENSSL_OPTIONS))
|
|
|
|
define Build/Configure
|
|
[ -f $(STAMP_CONFIGURED) ] || { \
|
|
rm -f $(PKG_BUILD_DIR)/*.so.* $(PKG_BUILD_DIR)/*.a; \
|
|
find $(PKG_BUILD_DIR) -name \*.o | xargs rm -f; \
|
|
}
|
|
(cd $(PKG_BUILD_DIR); \
|
|
./Configure $(OPENSSL_TARGET) \
|
|
--prefix=/usr \
|
|
--openssldir=/etc/ssl \
|
|
$(TARGET_CPPFLAGS) \
|
|
$(TARGET_LDFLAGS) -ldl \
|
|
-DOPENSSL_SMALL_FOOTPRINT \
|
|
$(OPENSSL_NO_CIPHERS) \
|
|
$(OPENSSL_OPTIONS) \
|
|
)
|
|
# XXX: OpenSSL "make depend" will look for installed headers before its own,
|
|
# so remove installed stuff first
|
|
-$(SUBMAKE) -j1 clean-staging
|
|
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
|
MAKEDEPPROG="$(TARGET_CROSS)gcc" \
|
|
OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
|
|
$(OPENSSL_MAKEFLAGS) \
|
|
depend
|
|
endef
|
|
|
|
TARGET_CFLAGS += $(FPIC)
|
|
|
|
define Build/Compile
|
|
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
|
CC="$(TARGET_CC)" \
|
|
ASFLAGS="$(TARGET_ASFLAGS) -I$(PKG_BUILD_DIR)/crypto -c" \
|
|
AR="$(TARGET_CROSS)ar r" \
|
|
RANLIB="$(TARGET_CROSS)ranlib" \
|
|
OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
|
|
$(OPENSSL_MAKEFLAGS) \
|
|
all
|
|
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
|
CC="$(TARGET_CC)" \
|
|
ASFLAGS="$(TARGET_ASFLAGS) -I$(PKG_BUILD_DIR)/crypto -c" \
|
|
AR="$(TARGET_CROSS)ar r" \
|
|
RANLIB="$(TARGET_CROSS)ranlib" \
|
|
OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
|
|
$(OPENSSL_MAKEFLAGS) \
|
|
build-shared
|
|
# Work around openssl build bug to link libssl.so with libcrypto.so.
|
|
-rm $(PKG_BUILD_DIR)/libssl.so.*.*.*
|
|
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
|
CC="$(TARGET_CC)" \
|
|
OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
|
|
$(OPENSSL_MAKEFLAGS) \
|
|
do_linux-shared
|
|
$(MAKE) -C $(PKG_BUILD_DIR) \
|
|
CC="$(TARGET_CC)" \
|
|
INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
|
|
$(OPENSSL_MAKEFLAGS) \
|
|
install
|
|
endef
|
|
|
|
define Build/InstallDev
|
|
$(INSTALL_DIR) $(1)/usr/include
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/include/openssl $(1)/usr/include/
|
|
$(INSTALL_DIR) $(1)/usr/lib/
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{crypto,ssl}.{a,so*} $(1)/usr/lib/
|
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc $(1)/usr/lib/pkgconfig/
|
|
[ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc || true
|
|
endef
|
|
|
|
define Package/libopenssl/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libcrypto.so.* $(1)/usr/lib/
|
|
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libssl.so.* $(1)/usr/lib/
|
|
endef
|
|
|
|
define Package/openssl-util/install
|
|
$(INSTALL_DIR) $(1)/etc/ssl
|
|
$(CP) $(PKG_INSTALL_DIR)/etc/ssl/openssl.cnf $(1)/etc/ssl/
|
|
$(INSTALL_DIR) $(1)/etc/ssl/certs
|
|
$(INSTALL_DIR) $(1)/etc/ssl/private
|
|
chmod 0700 $(1)/etc/ssl/private
|
|
$(INSTALL_DIR) $(1)/usr/bin
|
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/openssl $(1)/usr/bin/
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,libopenssl))
|
|
$(eval $(call BuildPackage,openssl-util))
|