summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Seifert <soap@gentoo.org>2016-08-13 14:28:04 +0200
committerDavid Seifert <soap@gentoo.org>2016-08-14 01:13:31 +0200
commita8e82823012ab43dd4e9da0b0aa88282e7c959dc (patch)
tree92e37216ca2095fade88048e56132af4f2aef515 /net-libs/mbedtls
parentsys-libs/libudev-compat: Add ~x86 keyword (diff)
downloadgentoo-a8e82823012ab43dd4e9da0b0aa88282e7c959dc.tar.gz
gentoo-a8e82823012ab43dd4e9da0b0aa88282e7c959dc.tar.bz2
gentoo-a8e82823012ab43dd4e9da0b0aa88282e7c959dc.zip
net-libs/mbedtls: Integrate upstream patches for bug 588818
Gentoo-bug: 588818 * EAPI=6 Package-Manager: portage-2.3.0 Closes: https://github.com/gentoo/gentoo/pull/2080 Signed-off-by: David Seifert <soap@gentoo.org>
Diffstat (limited to 'net-libs/mbedtls')
-rw-r--r--net-libs/mbedtls/files/mbedtls-2.3.0-include-guards.patch34
-rw-r--r--net-libs/mbedtls/files/mbedtls-2.3.0-move-to-header.patch333
-rw-r--r--net-libs/mbedtls/files/mbedtls-2.3.0-tests.patch23
-rw-r--r--net-libs/mbedtls/mbedtls-2.3.0-r1.ebuild101
4 files changed, 491 insertions, 0 deletions
diff --git a/net-libs/mbedtls/files/mbedtls-2.3.0-include-guards.patch b/net-libs/mbedtls/files/mbedtls-2.3.0-include-guards.patch
new file mode 100644
index 000000000000..af12d4b1f4a8
--- /dev/null
+++ b/net-libs/mbedtls/files/mbedtls-2.3.0-include-guards.patch
@@ -0,0 +1,34 @@
+From 23e9778684ba734dbfba1445e145b04dd6b59e76 Mon Sep 17 00:00:00 2001
+From: Simon Butcher <simon.butcher@arm.com>
+Date: Wed, 13 Jul 2016 13:31:08 +0100
+Subject: [PATCH] Adds missing conditions for platform time
+
+In platform.c, made the time functions dependent on the configuration
+MBEDTLS_HAVE_TIME to fix a build break where the functions could be
+built but the mbedtls_time_t was not defined.
+---
+ library/platform.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/library/platform.c b/library/platform.c
+index 68ca45d..2591c45 100644
+--- a/library/platform.c
++++ b/library/platform.c
+@@ -190,6 +190,8 @@ int mbedtls_platform_set_exit( void (*exit_func)( int status ) )
+ }
+ #endif /* MBEDTLS_PLATFORM_EXIT_ALT */
+
++#if defined(MBEDTLS_HAVE_TIME)
++
+ #if defined(MBEDTLS_PLATFORM_TIME_ALT)
+ #if !defined(MBEDTLS_PLATFORM_STD_TIME)
+ /*
+@@ -213,6 +215,8 @@ int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time
+ }
+ #endif /* MBEDTLS_PLATFORM_TIME_ALT */
+
++#endif /* MBEDTLS_HAVE_TIME */
++
+ #if defined(MBEDTLS_ENTROPY_NV_SEED)
+ #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
+ /* Default implementations for the platform independent seed functions use
diff --git a/net-libs/mbedtls/files/mbedtls-2.3.0-move-to-header.patch b/net-libs/mbedtls/files/mbedtls-2.3.0-move-to-header.patch
new file mode 100644
index 000000000000..2c858bb7f827
--- /dev/null
+++ b/net-libs/mbedtls/files/mbedtls-2.3.0-move-to-header.patch
@@ -0,0 +1,333 @@
+From b5b6af2663fdb7f57c30494607bade90810f6844 Mon Sep 17 00:00:00 2001
+From: Simon Butcher <simon.butcher@arm.com>
+Date: Wed, 13 Jul 2016 14:46:18 +0100
+Subject: [PATCH] Puts platform time abstraction into its own header
+
+Separates platform time abstraction into it's own header from the
+general platform abstraction as both depend on different build options.
+(MBEDTLS_PLATFORM_C vs MBEDTLS_HAVE_TIME)
+---
+ include/mbedtls/platform.h | 37 ++-----------------
+ include/mbedtls/platform_time.h | 81 +++++++++++++++++++++++++++++++++++++++++
+ include/mbedtls/ssl.h | 2 +-
+ library/net.c | 1 -
+ library/ssl_cache.c | 2 -
+ library/ssl_ciphersuites.c | 1 -
+ library/ssl_cli.c | 4 +-
+ library/ssl_cookie.c | 2 -
+ library/ssl_srv.c | 4 +-
+ library/ssl_ticket.c | 2 -
+ library/ssl_tls.c | 1 -
+ library/x509.c | 7 +++-
+ programs/ssl/dtls_client.c | 1 -
+ 13 files changed, 93 insertions(+), 52 deletions(-)
+ create mode 100644 include/mbedtls/platform_time.h
+
+diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h
+index caf8f25..b1b019e 100644
+--- a/include/mbedtls/platform.h
++++ b/include/mbedtls/platform.h
+@@ -29,6 +29,10 @@
+ #include MBEDTLS_CONFIG_FILE
+ #endif
+
++#if defined(MBEDTLS_HAVE_TIME)
++#include "mbedtls/platform_time.h"
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -244,39 +248,6 @@ int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
+ #endif
+
+ /*
+- * The time_t datatype
+- */
+-#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO)
+-typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t;
+-#else
+-/* For time_t */
+-#include <time.h>
+-typedef time_t mbedtls_time_t;
+-#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */
+-
+-/*
+- * The function pointers for time
+- */
+-#if defined(MBEDTLS_PLATFORM_TIME_ALT)
+-extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time );
+-
+-/**
+- * \brief Set your own time function pointer
+- *
+- * \param time_func the time function implementation
+- *
+- * \return 0
+- */
+-int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) );
+-#else
+-#if defined(MBEDTLS_PLATFORM_TIME_MACRO)
+-#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO
+-#else
+-#define mbedtls_time time
+-#endif /* MBEDTLS_PLATFORM_TIME_MACRO */
+-#endif /* MBEDTLS_PLATFORM_TIME_ALT */
+-
+-/*
+ * The function pointers for reading from and writing a seed file to
+ * Non-Volatile storage (NV) in a platform-independent way
+ *
+diff --git a/include/mbedtls/platform_time.h b/include/mbedtls/platform_time.h
+new file mode 100644
+index 0000000..abb3431
+--- /dev/null
++++ b/include/mbedtls/platform_time.h
+@@ -0,0 +1,81 @@
++/**
++ * \file platform_time.h
++ *
++ * \brief mbed TLS Platform time abstraction
++ *
++ * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved
++ * SPDX-License-Identifier: Apache-2.0
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License"); you may
++ * not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
++ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ *
++ * This file is part of mbed TLS (https://tls.mbed.org)
++ */
++#ifndef MBEDTLS_PLATFORM_TIME_H
++#define MBEDTLS_PLATFORM_TIME_H
++
++#if !defined(MBEDTLS_CONFIG_FILE)
++#include "config.h"
++#else
++#include MBEDTLS_CONFIG_FILE
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/**
++ * \name SECTION: Module settings
++ *
++ * The configuration options you can set for this module are in this section.
++ * Either change them in config.h or define them on the compiler command line.
++ * \{
++ */
++
++/*
++ * The time_t datatype
++ */
++#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO)
++typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t;
++#else
++/* For time_t */
++#include <time.h>
++typedef time_t mbedtls_time_t;
++#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */
++
++/*
++ * The function pointers for time
++ */
++#if defined(MBEDTLS_PLATFORM_TIME_ALT)
++extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time );
++
++/**
++ * \brief Set your own time function pointer
++ *
++ * \param time_func the time function implementation
++ *
++ * \return 0
++ */
++int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) );
++#else
++#if defined(MBEDTLS_PLATFORM_TIME_MACRO)
++#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO
++#else
++#define mbedtls_time time
++#endif /* MBEDTLS_PLATFORM_TIME_MACRO */
++#endif /* MBEDTLS_PLATFORM_TIME_ALT */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* platform_time.h */
+diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h
+index bc62336..c0bfd3e 100644
+--- a/include/mbedtls/ssl.h
++++ b/include/mbedtls/ssl.h
+@@ -52,7 +52,7 @@
+ #endif
+
+ #if defined(MBEDTLS_HAVE_TIME)
+-#include <time.h>
++#include "mbedtls/platform_time.h"
+ #endif
+
+ /*
+diff --git a/library/net.c b/library/net.c
+index 4142bc0..8b96321 100644
+--- a/library/net.c
++++ b/library/net.c
+@@ -36,7 +36,6 @@
+ #include "mbedtls/platform.h"
+ #else
+ #include <stdlib.h>
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/net.h"
+diff --git a/library/ssl_cache.c b/library/ssl_cache.c
+index 01c66ae..9b62de2 100644
+--- a/library/ssl_cache.c
++++ b/library/ssl_cache.c
+@@ -37,8 +37,6 @@
+ #include <stdlib.h>
+ #define mbedtls_calloc calloc
+ #define mbedtls_free free
+-#define mbedtls_time time
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/ssl_cache.h"
+diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c
+index 3546331..a762bf7 100644
+--- a/library/ssl_ciphersuites.c
++++ b/library/ssl_ciphersuites.c
+@@ -33,7 +33,6 @@
+ #include "mbedtls/platform.h"
+ #else
+ #include <stdlib.h>
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/ssl_ciphersuites.h"
+diff --git a/library/ssl_cli.c b/library/ssl_cli.c
+index cd39db0..358dc46 100644
+--- a/library/ssl_cli.c
++++ b/library/ssl_cli.c
+@@ -33,8 +33,6 @@
+ #include <stdlib.h>
+ #define mbedtls_calloc calloc
+ #define mbedtls_free free
+-#define mbedtls_time time
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/debug.h"
+@@ -46,7 +44,7 @@
+ #include <stdint.h>
+
+ #if defined(MBEDTLS_HAVE_TIME)
+-#include <time.h>
++#include "mbedtls/platform_time.h"
+ #endif
+
+ #if defined(MBEDTLS_SSL_SESSION_TICKETS)
+diff --git a/library/ssl_cookie.c b/library/ssl_cookie.c
+index f241c86..9fb32de 100644
+--- a/library/ssl_cookie.c
++++ b/library/ssl_cookie.c
+@@ -36,8 +36,6 @@
+ #else
+ #define mbedtls_calloc calloc
+ #define mbedtls_free free
+-#define mbedtls_time time
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/ssl_cookie.h"
+diff --git a/library/ssl_srv.c b/library/ssl_srv.c
+index 7271045..ec59cc1 100644
+--- a/library/ssl_srv.c
++++ b/library/ssl_srv.c
+@@ -33,8 +33,6 @@
+ #include <stdlib.h>
+ #define mbedtls_calloc calloc
+ #define mbedtls_free free
+-#define mbedtls_time time
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/debug.h"
+@@ -48,7 +46,7 @@
+ #endif
+
+ #if defined(MBEDTLS_HAVE_TIME)
+-#include <time.h>
++#include "mbedtls/platform_time.h"
+ #endif
+
+ #if defined(MBEDTLS_SSL_SESSION_TICKETS)
+diff --git a/library/ssl_ticket.c b/library/ssl_ticket.c
+index 5d77403..4d9116d 100644
+--- a/library/ssl_ticket.c
++++ b/library/ssl_ticket.c
+@@ -33,8 +33,6 @@
+ #include <stdlib.h>
+ #define mbedtls_calloc calloc
+ #define mbedtls_free free
+-#define mbedtls_time time
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/ssl_ticket.h"
+diff --git a/library/ssl_tls.c b/library/ssl_tls.c
+index 80a908d..505bb6c 100644
+--- a/library/ssl_tls.c
++++ b/library/ssl_tls.c
+@@ -41,7 +41,6 @@
+ #include <stdlib.h>
+ #define mbedtls_calloc calloc
+ #define mbedtls_free free
+-#define mbedtls_time_t time_t
+ #endif
+
+ #include "mbedtls/debug.h"
+diff --git a/library/x509.c b/library/x509.c
+index a0df817..bc3bfe0 100644
+--- a/library/x509.c
++++ b/library/x509.c
+@@ -55,12 +55,15 @@
+ #include <stdlib.h>
+ #define mbedtls_free free
+ #define mbedtls_calloc calloc
+-#define mbedtls_time time
+-#define mbedtls_time_t time_t
+ #define mbedtls_printf printf
+ #define mbedtls_snprintf snprintf
+ #endif
+
++
++#if defined(MBEDTLS_HAVE_TIME)
++#include "mbedtls/platform_time.h"
++#endif
++
+ #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
+ #include <windows.h>
+ #else
+diff --git a/programs/ssl/dtls_client.c b/programs/ssl/dtls_client.c
+index 14fb612..b37eb83 100644
+--- a/programs/ssl/dtls_client.c
++++ b/programs/ssl/dtls_client.c
+@@ -31,7 +31,6 @@
+ #include <stdio.h>
+ #define mbedtls_printf printf
+ #define mbedtls_fprintf fprintf
+-#define mbedtls_time_t time_t
+ #endif
+
+ #if !defined(MBEDTLS_SSL_CLI_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) || \
diff --git a/net-libs/mbedtls/files/mbedtls-2.3.0-tests.patch b/net-libs/mbedtls/files/mbedtls-2.3.0-tests.patch
new file mode 100644
index 000000000000..69375b598e77
--- /dev/null
+++ b/net-libs/mbedtls/files/mbedtls-2.3.0-tests.patch
@@ -0,0 +1,23 @@
+From b92834324f29768a5bf39c58c674c5f3c09b6763 Mon Sep 17 00:00:00 2001
+From: Simon Butcher <simon.butcher@arm.com>
+Date: Wed, 13 Jul 2016 11:02:41 +0100
+Subject: [PATCH] Fixes all.sh for full config
+
+MBEDTLS_PLATFORM_TIME_ALT was accidentally left in the full config test
+leading to linker problems.
+---
+ tests/scripts/all.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh
+index 5262397..a2b0995 100755
+--- a/tests/scripts/all.sh
++++ b/tests/scripts/all.sh
+@@ -231,6 +231,7 @@ scripts/config.pl unset MBEDTLS_PLATFORM_MEMORY
+ scripts/config.pl unset MBEDTLS_PLATFORM_PRINTF_ALT
+ scripts/config.pl unset MBEDTLS_PLATFORM_FPRINTF_ALT
+ scripts/config.pl unset MBEDTLS_PLATFORM_SNPRINTF_ALT
++scripts/config.pl unset MBEDTLS_PLATFORM_TIME_ALT
+ scripts/config.pl unset MBEDTLS_PLATFORM_EXIT_ALT
+ scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED
+ scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
diff --git a/net-libs/mbedtls/mbedtls-2.3.0-r1.ebuild b/net-libs/mbedtls/mbedtls-2.3.0-r1.ebuild
new file mode 100644
index 000000000000..ef0675316fde
--- /dev/null
+++ b/net-libs/mbedtls/mbedtls-2.3.0-r1.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit cmake-utils multilib-minimal
+
+DESCRIPTION="Cryptographic library for embedded systems"
+HOMEPAGE="https://tls.mbed.org/"
+SRC_URI="https://github.com/ARMmbed/mbedtls/archive/mbedtls-${PV}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0/10" # slot for libmbedtls.so
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="cpu_flags_x86_sse2 doc havege libressl programs test threads zlib"
+
+RDEPEND="
+ programs? (
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl:0= )
+ )
+ zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen media-gfx/graphviz )
+ test? ( dev-lang/perl )"
+
+S=${WORKDIR}/${PN}-${P}
+
+PATCHES=(
+ "${FILESDIR}/${P}-include-guards.patch"
+ "${FILESDIR}/${P}-move-to-header.patch"
+ "${FILESDIR}/${P}-tests.patch"
+)
+
+enable_mbedtls_option() {
+ local myopt="$@"
+ # check that config.h syntax is the same at version bump
+ sed -i \
+ -e "s://#define ${myopt}:#define ${myopt}:" \
+ include/mbedtls/config.h || die
+}
+
+src_prepare() {
+ use cpu_flags_x86_sse2 && enable_mbedtls_option MBEDTLS_HAVE_SSE2
+ use zlib && enable_mbedtls_option MBEDTLS_ZLIB_SUPPORT
+ use havege && enable_mbedtls_option MBEDTLS_HAVEGE_C
+ use threads && enable_mbedtls_option MBEDTLS_THREADING_C
+ use threads && enable_mbedtls_option MBEDTLS_THREADING_PTHREAD
+
+ cmake-utils_src_prepare
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DENABLE_PROGRAMS=$(multilib_native_usex programs)
+ -DENABLE_ZLIB_SUPPORT=$(usex zlib)
+ -DUSE_STATIC_MBEDTLS_LIBRARY=OFF
+ -DENABLE_TESTING=$(usex test)
+ -DUSE_SHARED_MBEDTLS_LIBRARY=ON
+ -DINSTALL_MBEDTLS_HEADERS=ON
+ -DLIB_INSTALL_DIR="/usr/$(get_libdir)"
+ )
+
+ cmake-utils_src_configure
+}
+
+multilib_src_compile() {
+ cmake-utils_src_compile
+ use doc && multilib_is_native_abi && emake apidoc
+}
+
+multilib_src_test() {
+ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${BUILD_DIR}/library" \
+ cmake-utils_src_test
+}
+
+multilib_src_install() {
+ cmake-utils_src_install
+}
+
+multilib_src_install_all() {
+ use doc && HTML_DOCS=( apidoc )
+
+ einstalldocs
+
+ if use programs ; then
+ # avoid file collisions with sys-apps/coreutils
+ local p e
+ for p in "${ED%/}"/usr/bin/* ; do
+ if [[ -x "${p}" && ! -d "${p}" ]] ; then
+ mv "${p}" "${ED%/}"/usr/bin/mbedtls_${p##*/} || die
+ fi
+ done
+ for e in aes hash pkey ssl test ; do
+ docinto "${e}"
+ dodoc programs/"${e}"/*.c
+ dodoc programs/"${e}"/*.txt
+ done
+ fi
+}