gnutls: upgraded package to upstream
Upgraded net-libs/gnutls to version 3.7.6 on amd64, arm64
BUG=b/244292308
TEST=sponge2/87c386fb-d814-48cf-8453-de364a3c8352
RELEASE_NOTE=upgrade gnutls to 3.7.6 and fix CVE-2021-4209
Change-Id: Ie1ffa3beb1285747e8d2b1b64857e601cefd8f3e
Reviewed-on: https://cos-review.googlesource.com/c/third_party/overlays/portage-stable/+/36556
Reviewed-by: Meena Shanmugam <meenashanmugam@google.com>
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
diff --git a/net-libs/gnutls/Manifest b/net-libs/gnutls/Manifest
index 94f3fc8..f468c56 100644
--- a/net-libs/gnutls/Manifest
+++ b/net-libs/gnutls/Manifest
@@ -1 +1,4 @@
-DIST gnutls-3.7.1.tar.xz 6038388 BLAKE2B 1d55eb441827c7148d63bcad37bf7bc62d539ee9bc7e14c2fe5ec1d0bdcadd75e2cbc98ba104523b24c8dfd9526b4595475a818d206971cc012fac509cd33a6f SHA512 0fe801f03676c3bd970387f94578c8be7ba6030904989e7d21dffdc726209bab44c8096fbcb6d51fed2de239537bd00df2338ee9c8d984a1c386826b91062a95
+DIST gnutls-3.7.6.tar.xz 6338276 BLAKE2B 9f3cce8dfc0b88f2c42d1d2633417dac649a265407b620b6d15967e5210debb99d287ef31d2b9dc37a527ac1e5b9db4c240b98a63293078fbd2e26ac694bf3d3 SHA512 f872339df80ec31d292821ff00eaafbe50e0bd4cdbb86e21e4f78541cd0a26d843596d5e69c91de4db8ce7d027fc639ae6462b57d89fb116162ae63c5a97486a
+DIST gnutls-3.7.6.tar.xz.sig 685 BLAKE2B eae022d6cb0d772e465257411381afd97f3dfd19d6f794a1c3e0f8c3c1232a8a1b91269ca7252a5662782183b11ca393c31efe3f88171a526884400fd0534528 SHA512 c969da9a938b9d29a70cea3b00cce337f9a4c4304aae7f501ef6263894f81a420395ddbe1b005f35dff2e900d3fac75e288f10bbfde0ebea034f7e257bb16d0e
+DIST gnutls-3.7.7.tar.xz 6351664 BLAKE2B a66037ecc6da660ff12949f50012840263c2e0b174079e41b62a2d884f060cee56f0c64a2815d07321a54b08cce016d2b4c8f0e059636c1ab5f7db9c8d64c7c6 SHA512 ba00b20126379ec7e96c6bfa606cfb7bb0d9a5853318b29b5278a42a85ae40d39d8442778938e1f165debcdb1adaf9c63bcec59a4eb3387dd1ac99b08bcc5c08
+DIST gnutls-3.7.7.tar.xz.sig 685 BLAKE2B 53d76a06ed5a74664d6c193459eb310f06e87dd3db97aca9e9fa78837677df58d8de66f187c182b9375786ee0308c5da55f08414183c959c7acb4527c38cd7c7 SHA512 6463bc4661e20051ff9f31c1a557cece34d06b748f4e24f98e807ddc72a3daa9348aa9f0afa83a0f9cd226421c575210eec1936fbeb9a55849e2c397ace9d03d
diff --git a/net-libs/gnutls/files/gnutls-3.6.15-skip-dtls-seccomp-tests.patch b/net-libs/gnutls/files/gnutls-3.6.15-skip-dtls-seccomp-tests.patch
deleted file mode 100644
index dad6cec..0000000
--- a/net-libs/gnutls/files/gnutls-3.6.15-skip-dtls-seccomp-tests.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-https://bugs.gentoo.org/649396
-https://bugs.gentoo.org/711104
-
---- a/tests/dtls-client-with-seccomp.c
-+++ b/tests/dtls-client-with-seccomp.c
-@@ -27,7 +27,7 @@
- #include <stdio.h>
- #include <stdlib.h>
-
--#if defined(_WIN32) || !defined(HAVE_LIBSECCOMP)
-+#if 1
-
- int main()
- {
---- a/tests/dtls-with-seccomp.c
-+++ b/tests/dtls-with-seccomp.c
-@@ -27,7 +27,7 @@
- #include <stdio.h>
- #include <stdlib.h>
-
--#if defined(_WIN32) || !defined(HAVE_LIBSECCOMP)
-+#if 1
-
- int main()
- {
-
diff --git a/net-libs/gnutls/files/gnutls-3.7.0-ignore-duplicate-certificates.patch b/net-libs/gnutls/files/gnutls-3.7.0-ignore-duplicate-certificates.patch
deleted file mode 100644
index b014381..0000000
--- a/net-libs/gnutls/files/gnutls-3.7.0-ignore-duplicate-certificates.patch
+++ /dev/null
@@ -1,403 +0,0 @@
-From 09b40be6e0e0a59ba4bd764067eb353241043a70 Mon Sep 17 00:00:00 2001
-From: Daiki Ueno <ueno@gnu.org>
-Date: Mon, 28 Dec 2020 12:14:13 +0100
-Subject: [PATCH] gnutls_x509_trust_list_verify_crt2: ignore duplicate
- certificates
-
-The commit ebb19db9165fed30d73c83bab1b1b8740c132dfd caused a
-regression, where duplicate certificates in a certificate chain are no
-longer ignored but treated as a non-contiguous segment and that
-results in calling the issuer callback, or a verification failure.
-
-This adds a mechanism to record certificates already seen in the
-chain, and skip them while still allow the caller to inject missing
-certificates.
-
-Signed-off-by: Daiki Ueno <ueno@gnu.org>
-Co-authored-by: Andreas Metzler <ametzler@debian.org>
----
- lib/x509/common.c | 8 ++
- lib/x509/verify-high.c | 157 +++++++++++++++++++++++++++++++------
- tests/missingissuer.c | 2 +
- tests/test-chains-issuer.h | 101 +++++++++++++++++++++++-
- 4 files changed, 245 insertions(+), 23 deletions(-)
-
-diff --git a/lib/x509/common.c b/lib/x509/common.c
-index 3301aaad0c..10c8db53c0 100644
---- a/lib/x509/common.c
-+++ b/lib/x509/common.c
-@@ -1758,6 +1758,14 @@ unsigned int _gnutls_sort_clist(gnutls_x509_crt_t *clist,
- * increasing DEFAULT_MAX_VERIFY_DEPTH.
- */
- for (i = 0; i < clist_size; i++) {
-+ /* Self-signed certificate found in the chain; skip it
-+ * as it should only appear in the trusted set.
-+ */
-+ if (gnutls_x509_crt_check_issuer(clist[i], clist[i])) {
-+ _gnutls_cert_log("self-signed cert found", clist[i]);
-+ continue;
-+ }
-+
- for (j = 1; j < clist_size; j++) {
- if (i == j)
- continue;
-diff --git a/lib/x509/verify-high.c b/lib/x509/verify-high.c
-index 588e7ee0dc..9a16e6b42a 100644
---- a/lib/x509/verify-high.c
-+++ b/lib/x509/verify-high.c
-@@ -67,6 +67,80 @@ struct gnutls_x509_trust_list_iter {
-
- #define DEFAULT_SIZE 127
-
-+struct cert_set_node_st {
-+ gnutls_x509_crt_t *certs;
-+ unsigned int size;
-+};
-+
-+struct cert_set_st {
-+ struct cert_set_node_st *node;
-+ unsigned int size;
-+};
-+
-+static int
-+cert_set_init(struct cert_set_st *set, unsigned int size)
-+{
-+ memset(set, 0, sizeof(*set));
-+
-+ set->size = size;
-+ set->node = gnutls_calloc(size, sizeof(*set->node));
-+ if (!set->node) {
-+ return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
-+ }
-+
-+ return 0;
-+}
-+
-+static void
-+cert_set_deinit(struct cert_set_st *set)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < set->size; i++) {
-+ gnutls_free(set->node[i].certs);
-+ }
-+
-+ gnutls_free(set->node);
-+}
-+
-+static bool
-+cert_set_contains(struct cert_set_st *set, const gnutls_x509_crt_t cert)
-+{
-+ size_t hash, i;
-+
-+ hash = hash_pjw_bare(cert->raw_dn.data, cert->raw_dn.size);
-+ hash %= set->size;
-+
-+ for (i = 0; i < set->node[hash].size; i++) {
-+ if (unlikely(gnutls_x509_crt_equals(set->node[hash].certs[i], cert))) {
-+ return true;
-+ }
-+ }
-+
-+ return false;
-+}
-+
-+static int
-+cert_set_add(struct cert_set_st *set, const gnutls_x509_crt_t cert)
-+{
-+ size_t hash;
-+
-+ hash = hash_pjw_bare(cert->raw_dn.data, cert->raw_dn.size);
-+ hash %= set->size;
-+
-+ set->node[hash].certs =
-+ gnutls_realloc_fast(set->node[hash].certs,
-+ (set->node[hash].size + 1) *
-+ sizeof(*set->node[hash].certs));
-+ if (!set->node[hash].certs) {
-+ return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
-+ }
-+ set->node[hash].certs[set->node[hash].size] = cert;
-+ set->node[hash].size++;
-+
-+ return 0;
-+}
-+
- /**
- * gnutls_x509_trust_list_init:
- * @list: A pointer to the type to be initialized
-@@ -1328,6 +1402,7 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list,
- unsigned have_set_name = 0;
- unsigned saved_output;
- gnutls_datum_t ip = {NULL, 0};
-+ struct cert_set_st cert_set = { NULL, 0 };
-
- if (cert_list == NULL || cert_list_size < 1)
- return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
-@@ -1376,36 +1451,68 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list,
- memcpy(sorted, cert_list, cert_list_size * sizeof(gnutls_x509_crt_t));
- cert_list = sorted;
-
-+ ret = cert_set_init(&cert_set, DEFAULT_MAX_VERIFY_DEPTH);
-+ if (ret < 0) {
-+ return ret;
-+ }
-+
- for (i = 0; i < cert_list_size &&
-- cert_list_size <= DEFAULT_MAX_VERIFY_DEPTH; i++) {
-- if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN)) {
-- unsigned int sorted_size;
-+ cert_list_size <= DEFAULT_MAX_VERIFY_DEPTH; ) {
-+ unsigned int sorted_size = 1;
-+ unsigned int j;
-+ gnutls_x509_crt_t issuer;
-
-+ if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN)) {
- sorted_size = _gnutls_sort_clist(&cert_list[i],
- cert_list_size - i);
-- i += sorted_size - 1;
- }
-
-- if (i == cert_list_size - 1) {
-- gnutls_x509_crt_t issuer;
--
-- /* If it is the last certificate and its issuer is
-- * known, don't need to run issuer callback. */
-- if (_gnutls_trust_list_get_issuer(list,
-- cert_list[i],
-- &issuer,
-- 0) == 0) {
-+ /* Remove duplicates. Start with index 1, as the first element
-+ * may be re-checked after issuer retrieval. */
-+ for (j = 1; j < sorted_size; j++) {
-+ if (cert_set_contains(&cert_set, cert_list[i + j])) {
-+ if (i + j < cert_list_size - 1) {
-+ memmove(&cert_list[i + j],
-+ &cert_list[i + j + 1],
-+ sizeof(cert_list[i]));
-+ }
-+ cert_list_size--;
- break;
- }
-- } else if (gnutls_x509_crt_check_issuer(cert_list[i],
-- cert_list[i + 1])) {
-- /* There is no gap between this and the next
-- * certificate. */
-+ }
-+ /* Found a duplicate, try again with the same index. */
-+ if (j < sorted_size) {
-+ continue;
-+ }
-+
-+ /* Record the certificates seen. */
-+ for (j = 0; j < sorted_size; j++, i++) {
-+ ret = cert_set_add(&cert_set, cert_list[i]);
-+ if (ret < 0) {
-+ goto cleanup;
-+ }
-+ }
-+
-+ /* If the issuer of the certificate is known, no need
-+ * for further processing. */
-+ if (_gnutls_trust_list_get_issuer(list,
-+ cert_list[i - 1],
-+ &issuer,
-+ 0) == 0) {
-+ cert_list_size = i;
-+ break;
-+ }
-+
-+ /* If there is no gap between this and the next certificate,
-+ * proceed with the next certificate. */
-+ if (i < cert_list_size &&
-+ gnutls_x509_crt_check_issuer(cert_list[i - 1],
-+ cert_list[i])) {
- continue;
- }
-
- ret = retrieve_issuers(list,
-- cert_list[i],
-+ cert_list[i - 1],
- &retrieved[retrieved_size],
- DEFAULT_MAX_VERIFY_DEPTH -
- MAX(retrieved_size,
-@@ -1413,15 +1520,20 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list,
- if (ret < 0) {
- break;
- } else if (ret > 0) {
-- memmove(&cert_list[i + 1 + ret],
-- &cert_list[i + 1],
-- (cert_list_size - i - 1) *
-+ assert((unsigned int)ret <=
-+ DEFAULT_MAX_VERIFY_DEPTH - cert_list_size);
-+ memmove(&cert_list[i + ret],
-+ &cert_list[i],
-+ (cert_list_size - i) *
- sizeof(gnutls_x509_crt_t));
-- memcpy(&cert_list[i + 1],
-+ memcpy(&cert_list[i],
- &retrieved[retrieved_size],
- ret * sizeof(gnutls_x509_crt_t));
- retrieved_size += ret;
- cert_list_size += ret;
-+
-+ /* Start again from the end of the previous segment. */
-+ i--;
- }
- }
-
-@@ -1581,6 +1693,7 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list,
- for (i = 0; i < retrieved_size; i++) {
- gnutls_x509_crt_deinit(retrieved[i]);
- }
-+ cert_set_deinit(&cert_set);
- return ret;
- }
-
-diff --git a/tests/missingissuer.c b/tests/missingissuer.c
-index f21e2b6b0c..226d095929 100644
---- a/tests/missingissuer.c
-+++ b/tests/missingissuer.c
-@@ -145,6 +145,8 @@ void doit(void)
- printf("[%d]: Chain '%s'...\n", (int)i, chains[i].name);
-
- for (j = 0; chains[i].chain[j]; j++) {
-+ assert(j < MAX_CHAIN);
-+
- if (debug > 2)
- printf("\tAdding certificate %d...", (int)j);
-
-diff --git a/tests/test-chains-issuer.h b/tests/test-chains-issuer.h
-index 543e2d71fb..bf1e65c956 100644
---- a/tests/test-chains-issuer.h
-+++ b/tests/test-chains-issuer.h
-@@ -24,7 +24,7 @@
- #ifndef GNUTLS_TESTS_TEST_CHAINS_ISSUER_H
- #define GNUTLS_TESTS_TEST_CHAINS_ISSUER_H
-
--#define MAX_CHAIN 6
-+#define MAX_CHAIN 15
-
- #define SERVER_CERT "-----BEGIN CERTIFICATE-----\n" \
- "MIIDATCCAbmgAwIBAgIUQdvdegP8JFszFHLfV4+lrEdafzAwPQYJKoZIhvcNAQEK\n" \
-@@ -338,11 +338,102 @@ static const char *missing_middle_unrelated_extra_insert[] = {
- NULL,
- };
-
-+static const char *missing_middle_single_duplicate[] = {
-+ SERVER_CERT,
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_5,
-+ CA_CERT_4,
-+ CA_CERT_4,
-+ CA_CERT_2,
-+ CA_CERT_2,
-+ CA_CERT_1,
-+ CA_CERT_1,
-+ NULL,
-+};
-+
-+static const char *missing_middle_multiple_duplicate[] = {
-+ SERVER_CERT,
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_5,
-+ CA_CERT_4,
-+ CA_CERT_4,
-+ CA_CERT_1,
-+ CA_CERT_1,
-+ NULL,
-+};
-+
-+static const char *missing_last_single_duplicate[] = {
-+ SERVER_CERT,
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_5,
-+ CA_CERT_4,
-+ CA_CERT_4,
-+ CA_CERT_3,
-+ CA_CERT_3,
-+ CA_CERT_2,
-+ CA_CERT_2,
-+ NULL,
-+};
-+
-+static const char *missing_last_multiple_duplicate[] = {
-+ SERVER_CERT,
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_5,
-+ CA_CERT_4,
-+ CA_CERT_4,
-+ CA_CERT_3,
-+ CA_CERT_3,
-+ NULL,
-+};
-+
-+static const char *missing_skip_single_duplicate[] = {
-+ SERVER_CERT,
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_5,
-+ CA_CERT_3,
-+ CA_CERT_3,
-+ CA_CERT_1,
-+ CA_CERT_1,
-+ NULL,
-+};
-+
-+static const char *missing_skip_multiple_duplicate[] = {
-+ SERVER_CERT,
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_5,
-+ CA_CERT_3,
-+ CA_CERT_3,
-+ NULL,
-+};
-+
- static const char *missing_ca[] = {
- CA_CERT_0,
- NULL,
- };
-
-+static const char *middle_single_duplicate_ca[] = {
-+ SERVER_CERT,
-+ CA_CERT_5,
-+ CA_CERT_0,
-+ CA_CERT_4,
-+ CA_CERT_0,
-+ CA_CERT_2,
-+ CA_CERT_0,
-+ CA_CERT_1,
-+ NULL,
-+};
-+
-+static const char *missing_middle_single_duplicate_ca_unrelated_insert[] = {
-+ CA_CERT_0,
-+ NULL,
-+};
-+
- static struct chains {
- const char *name;
- const char **chain;
-@@ -377,6 +468,14 @@ static struct chains {
- { "skip multiple unsorted", missing_skip_multiple_unsorted, missing_skip_multiple_insert, missing_ca, 0, 0 },
- { "unrelated", missing_middle_single, missing_middle_unrelated_insert, missing_ca, 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND },
- { "unrelated extra", missing_middle_single, missing_middle_unrelated_extra_insert, missing_ca, 0, 0 },
-+ { "middle single duplicate", missing_middle_single_duplicate, missing_middle_single_insert, missing_ca, 0, 0 },
-+ { "middle multiple duplicate", missing_middle_multiple_duplicate, missing_middle_multiple_insert, missing_ca, 0, 0 },
-+ { "last single duplicate", missing_last_single_duplicate, missing_last_single_insert, missing_ca, 0, 0 },
-+ { "last multiple duplicate", missing_last_multiple_duplicate, missing_last_multiple_insert, missing_ca, 0, 0 },
-+ { "skip single duplicate", missing_skip_single_duplicate, missing_skip_single_insert, missing_ca, 0, 0 },
-+ { "skip multiple duplicate", missing_skip_multiple_duplicate, missing_skip_multiple_insert, missing_ca, 0, 0 },
-+ { "middle single duplicate ca", middle_single_duplicate_ca, missing_middle_single_insert, missing_ca, 0, 0 },
-+ { "middle single duplicate ca - insert unrelated", middle_single_duplicate_ca, missing_middle_single_duplicate_ca_unrelated_insert, missing_ca, 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND },
- { NULL, NULL, NULL, NULL },
- };
-
---
-GitLab
-
diff --git a/net-libs/gnutls/gnutls-3.7.1.ebuild b/net-libs/gnutls/gnutls-3.7.6.ebuild
similarity index 63%
rename from net-libs/gnutls/gnutls-3.7.1.ebuild
rename to net-libs/gnutls/gnutls-3.7.6.ebuild
index e8db6e9..080c6cf 100644
--- a/net-libs/gnutls/gnutls-3.7.1.ebuild
+++ b/net-libs/gnutls/gnutls-3.7.6.ebuild
@@ -1,61 +1,61 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
-inherit libtool multilib-minimal
+VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/gnutls.asc
+inherit libtool multilib-minimal verify-sig
DESCRIPTION="A secure communications library implementing the SSL, TLS and DTLS protocols"
HOMEPAGE="https://www.gnutls.org/"
SRC_URI="mirror://gnupg/gnutls/v$(ver_cut 1-2)/${P}.tar.xz"
+SRC_URI+=" verify-sig? ( mirror://gnupg/gnutls/v$(ver_cut 1-2)/${P}.tar.xz.sig )"
LICENSE="GPL-3 LGPL-2.1+"
-SLOT="0/30" # libgnutls.so number
+SLOT="0/30.30" # <libgnutls.so number>.<libgnutlsxx.so number>
KEYWORDS="*"
-IUSE="+cxx dane doc examples guile +idn nls +openssl pkcs11 seccomp sslv2 sslv3 static-libs test test-full +tls-heartbeat tools valgrind"
+IUSE="brotli +cxx dane doc examples guile +idn nls +openssl pkcs11 seccomp sslv2 sslv3 static-libs test test-full +tls-heartbeat tools valgrind zlib zstd"
-REQUIRED_USE="
- test-full? ( cxx dane doc examples guile idn nls openssl pkcs11 seccomp tls-heartbeat tools )"
+REQUIRED_USE="test-full? ( cxx dane doc examples guile idn nls openssl pkcs11 seccomp tls-heartbeat tools )"
RESTRICT="!test? ( test )"
-# NOTICE: sys-devel/autogen is required at runtime as we
-# use system libopts
RDEPEND=">=dev-libs/libtasn1-4.9:=[${MULTILIB_USEDEP}]
dev-libs/libunistring:=[${MULTILIB_USEDEP}]
>=dev-libs/nettle-3.6:=[gmp,${MULTILIB_USEDEP}]
>=dev-libs/gmp-5.1.3-r1:=[${MULTILIB_USEDEP}]
- tools? ( sys-devel/autogen:= )
+ brotli? ( >=app-arch/brotli-1.0.0:=[${MULTILIB_USEDEP}] )
dane? ( >=net-dns/unbound-1.4.20:=[${MULTILIB_USEDEP}] )
guile? ( >=dev-scheme/guile-2:=[networking] )
nls? ( >=virtual/libintl-0-r1:=[${MULTILIB_USEDEP}] )
- pkcs11? ( >=app-crypt/p11-kit-0.23.1:=[${MULTILIB_USEDEP}] )
- idn? ( >=net-dns/libidn2-0.16-r1:=[${MULTILIB_USEDEP}] )"
+ pkcs11? ( >=app-crypt/p11-kit-0.23.1[${MULTILIB_USEDEP}] )
+ idn? ( >=net-dns/libidn2-0.16-r1:=[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zstd? ( >=app-arch/zstd-1.3.0:=[${MULTILIB_USEDEP}] )"
DEPEND="${RDEPEND}
test? (
seccomp? ( sys-libs/libseccomp )
)"
-BDEPEND=">=virtual/pkgconfig-0-r1
+BDEPEND="
+ dev-util/gtk-doc-am
+ >=virtual/pkgconfig-0-r1
doc? ( dev-util/gtk-doc )
nls? ( sys-devel/gettext )
- tools? ( sys-devel/autogen )
valgrind? ( dev-util/valgrind )
test-full? (
app-crypt/dieharder
>=app-misc/datefudge-1.22
- dev-libs/softhsm:2[-bindist]
+ dev-libs/softhsm:2[-bindist(-)]
net-dialup/ppp
net-misc/socat
- )"
+ )
+ verify-sig? ( >=sec-keys/openpgp-keys-gnutls-20220320 )"
-DOCS=(
- README.md
- doc/certtool.cfg
-)
+DOCS=( README.md doc/certtool.cfg )
HTML_DOCS=()
pkg_setup() {
- # bug#520818
+ # bug #520818
export TZ=UTC
use doc && HTML_DOCS+=(
@@ -66,12 +66,6 @@
src_prepare() {
default
- # force regeneration of autogen-ed files
- local file
- for file in $(grep -l AutoGen-ed src/*.c) ; do
- rm src/$(basename ${file} .c).{c,h} || die
- done
-
# don't try to use system certificate store on macOS, it is
# confusingly ignoring our ca-certificates and more importantly
# fails to compile in certain configurations
@@ -87,9 +81,13 @@
local libconf=()
# TPM needs to be tested before being enabled
- libconf+=( --without-tpm )
+ # Note that this may add a libltdl dep when enabled. Check configure.ac.
+ libconf+=(
+ --without-tpm
+ --without-tpm2
+ )
- # hardware-accell is disabled on OSX because the asm files force
+ # hardware-accel is disabled on OSX because the asm files force
# GNU-stack (as doesn't support that) and when that's removed ld
# complains about duplicate symbols
[[ ${CHOST} == *-darwin* ]] && libconf+=( --disable-hardware-acceleration )
@@ -97,6 +95,11 @@
# Cygwin as does not understand these asm files at all
[[ ${CHOST} == *-cygwin* ]] && libconf+=( --disable-hardware-acceleration )
+ # -fanalyzer substantially slows down the build and isn't useful for
+ # us. It's useful for upstream as it's static analysis, but it's not
+ # useful when just getting something built.
+ export gl_cv_warn_c__fanalyzer=no
+
local myeconfargs=(
$(multilib_native_enable manpages)
$(multilib_native_use_enable doc gtk-doc)
@@ -115,11 +118,14 @@
$(use_enable sslv3 ssl3-support)
$(use_enable static-libs static)
$(use_enable tls-heartbeat heartbeat-support)
+ $(use_with brotli)
$(use_with idn)
$(use_with pkcs11 p11-kit)
+ $(use_with zlib)
+ $(use_with zstd)
--disable-rpath
- --with-default-trust-store-file="${EPREFIX}/etc/ssl/certs/ca-certificates.crt"
- --with-unbound-root-key-file="${EPREFIX}/etc/dnssec/root-anchors.txt"
+ --with-default-trust-store-file="${EPREFIX}"/etc/ssl/certs/ca-certificates.crt
+ --with-unbound-root-key-file="${EPREFIX}"/etc/dnssec/root-anchors.txt
--without-included-libtasn1
$("${S}/configure" --help | grep -o -- '--without-.*-prefix')
)
diff --git a/net-libs/gnutls/metadata.xml b/net-libs/gnutls/metadata.xml
index 34baa89..8a72ba7 100644
--- a/net-libs/gnutls/metadata.xml
+++ b/net-libs/gnutls/metadata.xml
@@ -1,43 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="project">
- <email>base-system@gentoo.org</email>
- </maintainer>
- <use>
- <flag name="dane">
- Build libgnutls-dane, implementing DNS-based Authentication of
- Named Entities. Requires <pkg>net-dns/unbound</pkg>
- </flag>
- <flag name="openssl">
- Build openssl compatibility libraries
- </flag>
- <flag name="pkcs11">
- Add support for PKCS#11 through <pkg>app-crypt/p11-kit</pkg>
- </flag>
- <flag name="tools">
- Build extra tools
- </flag>
- <flag name="tls-heartbeat">
- Enable the Heartbeat Extension in TLS and DTLS
- </flag>
- <flag name="sslv2">
- Support for the old/insecure SSLv2 protocol
- </flag>
- <flag name="sslv3">
- Support for the old/insecure SSLv3 protocol
- </flag>
- <flag name="test-full">
- Enable full test mode
- </flag>
- <flag name="valgrind">
- Enable usage of <pkg>dev-util/valgrind</pkg> in debug
- </flag>
- </use>
- <slots>
- <subslots>Reflect ABI compatibility of libgnutls.so</subslots>
- </slots>
- <upstream>
- <remote-id type="cpe">cpe:/a:gnu:gnutls</remote-id>
- </upstream>
+ <maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="brotli">
+ Enable brotli decompression support via <pkg>app-arch/brotli</pkg>
+ </flag>
+ <flag name="dane">
+ Build libgnutls-dane, implementing DNS-based Authentication of
+ Named Entities. Requires <pkg>net-dns/unbound</pkg>
+ </flag>
+ <flag name="openssl">
+ Build openssl compatibility libraries
+ </flag>
+ <flag name="pkcs11">
+ Add support for PKCS#11 through <pkg>app-crypt/p11-kit</pkg>
+ </flag>
+ <flag name="tools">
+ Build extra tools
+ </flag>
+ <flag name="tls-heartbeat">
+ Enable the Heartbeat Extension in TLS and DTLS
+ </flag>
+ <flag name="sslv2">
+ Support for the old/insecure SSLv2 protocol
+ </flag>
+ <flag name="sslv3">
+ Support for the old/insecure SSLv3 protocol
+ </flag>
+ <flag name="test-full">
+ Enable full test mode
+ </flag>
+ <flag name="valgrind">
+ Enable usage of <pkg>dev-util/valgrind</pkg> in debug
+ </flag>
+ </use>
+ <slots>
+ <subslots>Reflect ABI compatibility of libgnutls.so</subslots>
+ </slots>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:gnu:gnutls</remote-id>
+ <remote-id type="gitlab">gnutls/gnutls</remote-id>
+ </upstream>
</pkgmetadata>