commit:     d6e1b4f9052d69927fca7a78817b94eec5e492f2
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Thu Jun  8 19:01:37 2023 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Thu Jun  8 19:02:50 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=d6e1b4f9

dev-libs/xmlsec: add 1.3.0-r1

Upstream-PR: https://github.com/lsh123/xmlsec/pull/654
Upstream-Commit: 
https://github.com/lsh123/xmlsec/commit/dfdf981f3522e4059170b504fb6fd40b37c9d70f
Upstream-Issue: https://github.com/lsh123/xmlsec/issues/665
Upstream-PR: https://github.com/lsh123/xmlsec/pull/666
Upstream-Commit: 
https://github.com/lsh123/xmlsec/commit/1ee1754c5ab8f0071adbde92d3a007729df7c5a7
Upstream-PR: https://github.com/lsh123/xmlsec/pull/667
Upstream-Commit: 
https://github.com/lsh123/xmlsec/commit/c9b0dcd01af1ecaed828269b734861cb93edeae3
Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-libs/xmlsec/Manifest                           |   1 +
 dev-libs/xmlsec/files/xmlsec-1.3.0-clang.patch     |  19 +
 dev-libs/xmlsec/files/xmlsec-1.3.0-libressl.patch  | 525 +++++++++++++++++++++
 .../xmlsec/files/xmlsec-1.3.0-optimisation.patch   |  11 +
 .../files/xmlsec-1.3.0-strict-prototypes.patch     |  21 +
 dev-libs/xmlsec/xmlsec-1.3.0-r1.ebuild             |  96 ++++
 6 files changed, 673 insertions(+)

diff --git a/dev-libs/xmlsec/Manifest b/dev-libs/xmlsec/Manifest
index 63c3df8..d0d51ac 100644
--- a/dev-libs/xmlsec/Manifest
+++ b/dev-libs/xmlsec/Manifest
@@ -1,2 +1,3 @@
 DIST xmlsec1-1.2.36.tar.gz 2005656 BLAKE2B 
617f7532f3e0401357261d1294f7f497e81f79538b223616433b007a5d3132e9e4ec7a40f36e909759f996754b95c060386ec9740165fb1b045809142e9fae35
 SHA512 
7545935d33236bc8ec79b9173c8c0967df5c96bb9e2d5c8edacfb5ffb366ff8d087eada0cebb1de81a477f93d40544bf0a12abcdbc60874ecaecb9c8dd33dfe3
 DIST xmlsec1-1.2.37.tar.gz 2009175 BLAKE2B 
19f43ba6bf6eb49428b9c5563baecbab21476f326cceee13785ae16769afa258f100732831c0f3f7d160543bd075cdcfdc5cbf11b7406637ee6c2f0e27c07f30
 SHA512 
99220cb28a346ffac0023f9f177d6a7be3ddcea04bea434b7dc926c1f0aaa5564d75f74f92896ac100179c04d77e001f688ddf46fed4e0a0b4f20b7b87c24900
+DIST xmlsec1-1.3.0.tar.gz 2425729 BLAKE2B 
a83d0117aaf1824a8a8f597f73ab1b76bcd1a9f0bb5d160df6c775f70cd2485f8e09c250f4ddbb4d42ba35549f9617d06f5470a91306757b4d5d54fdc0684f3c
 SHA512 
ac1b1b88336959f54ef7fcfd6b9ff0feb2ba00a966a8e5b4efb97e802a1f9bb7adf5f4524c7f169344a1b7258377b5a7e879a0ab5ce25cfae3b05eac9b54729d

diff --git a/dev-libs/xmlsec/files/xmlsec-1.3.0-clang.patch 
b/dev-libs/xmlsec/files/xmlsec-1.3.0-clang.patch
new file mode 100644
index 0000000..a8e8a9b
--- /dev/null
+++ b/dev-libs/xmlsec/files/xmlsec-1.3.0-clang.patch
@@ -0,0 +1,19 @@
+https://bugs.gentoo.org/904418
+https://github.com/lsh123/xmlsec/commit/0682c1d4be1e1d5d0f3cf5c4d2301dc3da09d677
+
+From 0682c1d4be1e1d5d0f3cf5c4d2301dc3da09d677 Mon Sep 17 00:00:00 2001
+From: lsh123 <[email protected]>
+Date: Thu, 13 Apr 2023 09:49:25 -0400
+Subject: [PATCH] Add newline (#628)
+
+Issue #626
+--- a/src/openssl/symkeys.c
++++ b/src/openssl/symkeys.c
+@@ -618,4 +618,4 @@ xmlSecOpenSSLKeyDataPbkdf2Set(xmlSecKeyDataPtr data, const 
xmlSecByte* buf, xmlS
+ 
+     return(xmlSecBufferSetData(buffer, buf, bufSize));
+ }
+-#endif /* XMLSEC_NO_PBKDF2 */
+\ No newline at end of file
++#endif /* XMLSEC_NO_PBKDF2 */
+

diff --git a/dev-libs/xmlsec/files/xmlsec-1.3.0-libressl.patch 
b/dev-libs/xmlsec/files/xmlsec-1.3.0-libressl.patch
new file mode 100644
index 0000000..a273350
--- /dev/null
+++ b/dev-libs/xmlsec/files/xmlsec-1.3.0-libressl.patch
@@ -0,0 +1,525 @@
+https://github.com/lsh123/xmlsec/pull/654
+https://github.com/lsh123/xmlsec/commit/dfdf981f3522e4059170b504fb6fd40b37c9d70f
+
+From dfdf981f3522e4059170b504fb6fd40b37c9d70f Mon Sep 17 00:00:00 2001
+From: orbea <[email protected]>
+Date: Tue, 30 May 2023 07:36:12 -0700
+Subject: [PATCH] openssl_compat.h: Update LibreSSL UI_null() compat (#654)
+
+LibreSSL added UI_null() in 3.7.1.
+---
+ src/openssl/openssl_compat.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+https://github.com/lsh123/xmlsec/issues/665
+https://github.com/lsh123/xmlsec/pull/666
+https://github.com/lsh123/xmlsec/commit/1ee1754c5ab8f0071adbde92d3a007729df7c5a7
+
+From 1ee1754c5ab8f0071adbde92d3a007729df7c5a7 Mon Sep 17 00:00:00 2001
+From: lsh123 <[email protected]>
+Date: Sat, 3 Jun 2023 13:30:01 -0400
+Subject: [PATCH] Fix Libressl support and bump min version to 3.6 (issue #665)
+  (#666)
+
+---
+ Makefile.am                                   |  5 +-
+ configure.ac                                  |  7 ++-
+ docs/download.html                            |  4 +-
+ include/xmlsec/openssl/crypto.h               |  4 +-
+ src/nss/README.md                             |  2 +-
+ src/openssl/README.md                         |  5 +-
+ src/openssl/app.c                             | 30 +++++++--
+ src/openssl/openssl_compat.h                  | 30 +++++----
+ src/openssl/x509.c                            | 62 +++++++++++++++++++
+ .../enveloping-ripemd160-rsa-ripemd160.xml    | 60 +++++++++++-------
+ tests/testrun.sh                              | 17 ++++-
+ 11 files changed, 172 insertions(+), 54 deletions(-)
+
+https://github.com/lsh123/xmlsec/pull/667
+https://github.com/lsh123/xmlsec/commit/c9b0dcd01af1ecaed828269b734861cb93edeae3
+
+From c9b0dcd01af1ecaed828269b734861cb93edeae3 Mon Sep 17 00:00:00 2001
+From: lsh123 <[email protected]>
+Date: Sat, 3 Jun 2023 15:37:50 -0400
+Subject: [PATCH] Downgrade to LibreSSL 3.5 (#667)
+
+---
+ configure.ac                    | 4 ++--
+ docs/download.html              | 2 +-
+ include/xmlsec/openssl/crypto.h | 2 +-
+ src/openssl/README.md           | 2 +-
+ src/openssl/app.c               | 3 ++-
+ src/openssl/openssl_compat.h    | 5 ++++-
+ src/openssl/x509.c              | 8 ++++----
+ 7 files changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 67f0d9ae..626efef1 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -71,14 +71,18 @@ EXTRA_CLEAN = \
+ ABS_SRCDIR=@abs_srcdir@
+ ABS_BUILDDIR=@abs_builddir@
+ XMLSEC_OPENSSL_TEST_CONFIG=@OPENSSL_TEST_CONFIG@
++XMLSEC_OPENSSL_VERSION=@OPENSSL_VERSION@
++
+ if XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING
+ PRECHECK_COMMANDS = \
+       export XMLSEC_OPENSSL_TEST_CONFIG="$(XMLSEC_OPENSSL_TEST_CONFIG)" && \
++      export XMLSEC_OPENSSL_VERSION="$(XMLSEC_OPENSSL_VERSION)" && \
+       cd $(ABS_SRCDIR) \
+       $(NULL)
+ else
+ PRECHECK_COMMANDS= \
+       export XMLSEC_OPENSSL_TEST_CONFIG="$(XMLSEC_OPENSSL_TEST_CONFIG)" && \
++      export XMLSEC_OPENSSL_VERSION="$(XMLSEC_OPENSSL_VERSION)" && \
+       export LD_LIBRARY_PATH="$(ABS_BUILDDIR)/src/.libs:$$LD_LIBRARY_PATH" && 
\
+       for i in $(XMLSEC_CHECK_CRYPTO_LIST) ; do \
+               export 
LTDL_LIBRARY_PATH="$(ABS_BUILDDIR)/src/$$i/.libs:$$LTDL_LIBRARY_PATH" ; \
+@@ -198,4 +202,3 @@ rpm: cleantar tar-release
+       @(unset CDPATH && rpmbuild -ta $(distdir).tar.gz)
+ 
+ rpm-release: clean cleantar rpm
+-
+diff --git a/configure.ac b/configure.ac
+index 825380eb..e81c13b2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -812,11 +812,11 @@ if test "z$OPENSSL_FOUND" = "zyes" ; then
+     if test "z$OPENSSL_VERSION" = "z" ; then
+         AC_EGREP_CPP(greater-than-minvers, [
+             #include <openssl/opensslv.h>
+-            #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER 
>= 0x20700000L
++            #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER 
>= 0x30500000L
+             greater-than-minvers
+             #endif
+         ],[
+-            OPENSSL_VERSION="1.1.0 (LibreSSL >= 2.7)"
++            OPENSSL_VERSION="LibreSSL >= 3.5"
+         ],[
+             OPENSSL_VERSION=""
+         ])
+@@ -832,7 +832,7 @@ if test "z$OPENSSL_FOUND" = "zyes" ; then
+             #endif
+             #endif
+         ],[
+-            OPENSSL_VERSION="1.1.0 (BoringSSL)"
++            OPENSSL_VERSION="BoringSSL >= 1.1.0"
+             enable_ripemd160=no
+             enable_dsa=no
+         ],[
+@@ -897,6 +897,7 @@ AC_SUBST(OPENSSL_LIBS)
+ AC_SUBST(OPENSSL_CRYPTO_LIB)
+ AC_SUBST(OPENSSL_TEST_CONFIG)
+ AC_SUBST(OPENSSL_MIN_VERSION)
++AC_SUBST(OPENSSL_VERSION)
+ 
+ dnl See if we should build OpenSSL 3+ with engines support
+ 
AC_ARG_ENABLE([openssl3_engines],[AS_HELP_STRING([--enable-openssl3-engines],[enable
 engines support for OpenSSL 3+ (no)])])
+diff --git a/src/openssl/app.c b/src/openssl/app.c
+index 58b6b6f5..4e62de7b 100644
+--- a/src/openssl/app.c
++++ b/src/openssl/app.c
+@@ -44,11 +44,14 @@
+ #include <openssl/pkcs12.h>
+ #include <openssl/conf.h>
+ #include <openssl/engine.h>
+-#include <openssl/store.h>
+ #include <openssl/x509_vfy.h>
+ #include <openssl/x509.h>
+ #include <openssl/ui.h>
+ 
++#ifndef XMLSEC_OPENSSL_NO_STORE
++#include <openssl/store.h>
++#endif /* XMLSEC_OPENSSL_NO_STORE */
++
+ #ifdef XMLSEC_OPENSSL_API_300
+ #include <openssl/provider.h>
+ #endif /* XMLSEC_OPENSSL_API_300 */
+@@ -477,8 +480,10 @@ xmlSecOpenSSLAppEngineKeyLoad(const char *engineName, 
const char *engineKeyId,
+ ) {
+ #if !defined(OPENSSL_NO_ENGINE) && (!defined(XMLSEC_OPENSSL_API_300) || 
defined(XMLSEC_OPENSSL3_ENGINES))
+     UI_METHOD * ui_method  = NULL;
+-    pem_password_cb * pwdCb;
+     void * pwdCbCtx;
++#ifndef XMLSEC_OPENSSL_NO_PWD_CALLBACK
++    pem_password_cb * pwdCb;
++#endif /* XMLSEC_OPENSSL_NO_PWD_CALLBACK */
+     ENGINE* engine = NULL;
+     xmlSecKeyPtr key = NULL;
+     xmlSecKeyDataPtr data = NULL;
+@@ -490,6 +495,7 @@ xmlSecOpenSSLAppEngineKeyLoad(const char *engineName, 
const char *engineKeyId,
+     xmlSecAssert2(engineKeyId != NULL, NULL);
+     xmlSecAssert2(format == xmlSecKeyDataFormatEngine, NULL);
+ 
++#ifndef XMLSEC_OPENSSL_NO_PWD_CALLBACK
+     /* prep pwd callbacks */
+     if(pwd != NULL) {
+         pwdCb = xmlSecOpenSSLDummyPasswordCallback;
+@@ -503,6 +509,18 @@ xmlSecOpenSSLAppEngineKeyLoad(const char *engineName, 
const char *engineKeyId,
+         xmlSecOpenSSLError("UI_UTIL_wrap_read_pem_callback", NULL);
+         goto done;
+     }
++#else   /* XMLSEC_OPENSSL_NO_PWD_CALLBACK */
++    UNREFERENCED_PARAMETER(pwd);
++    UNREFERENCED_PARAMETER(pwdCallback);
++    UNREFERENCED_PARAMETER(pwdCallbackCtx);
++
++    ui_method = UI_OpenSSL();
++    if(ui_method == NULL) {
++        xmlSecOpenSSLError("UI_OpenSSL", NULL);
++        goto done;
++    }
++    pwdCbCtx = NULL;
++#endif /* XMLSEC_OPENSSL_NO_PWD_CALLBACK */
+ 
+     /* load and initialize the engine */
+     engine = ENGINE_by_id(engineName);
+@@ -596,9 +614,10 @@ done:
+         }
+         ENGINE_free(engine);
+     }
+-    if(ui_method != NULL) {
++    if((ui_method != NULL) && (ui_method != UI_OpenSSL())) {
+         UI_destroy_method(ui_method);
+     }
++    /* result */
+     return(key);
+ 
+ #else /* !defined(OPENSSL_NO_ENGINE) && (!defined(XMLSEC_OPENSSL_API_300) || 
defined(XMLSEC_OPENSSL3_ENGINES)) */
+@@ -789,7 +808,7 @@ xmlSecOpenSSLAppFindKeyCert(EVP_PKEY * pKey, 
STACK_OF(X509) * certs) {
+ 
+ static xmlSecKeyPtr
+ xmlSecOpenSSLAppStoreKeyLoad(const char *uri, xmlSecKeyDataType type, const 
char *pwd, void* pwdCallback, void* pwdCallbackCtx) {
+-#ifndef XMLSEC_NO_X509
++#if !defined(XMLSEC_OPENSSL_NO_STORE) && !defined(XMLSEC_NO_X509)
+     UI_METHOD * ui_method = NULL;
+     pem_password_cb * pwdCb;
+     void * pwdCbCtx;
+@@ -964,7 +983,7 @@ done:
+     }
+     return(res);
+ 
+-#else /* XMLSEC_NO_X509 */
++#else /* !defined(XMLSEC_OPENSSL_NO_STORE) && !defined(XMLSEC_NO_X509) */
+ 
+     xmlSecAssert2(uri != NULL, NULL);
+     UNREFERENCED_PARAMETER(type);
+@@ -972,9 +991,9 @@ done:
+     UNREFERENCED_PARAMETER(pwdCallback);
+     UNREFERENCED_PARAMETER(pwdCallbackCtx);
+ 
+-    xmlSecNotImplementedError("X509 support is disabled");
++    xmlSecNotImplementedError("X509 or OpenSSL Stores support is disabled");
+     return(NULL);
+-#endif /* XMLSEC_NO_X509 */
++#endif /* !defined(XMLSEC_OPENSSL_NO_STORE) && !defined(XMLSEC_NO_X509) */
+ }
+ 
+ #ifndef XMLSEC_NO_X509
+diff --git a/src/openssl/openssl_compat.h b/src/openssl/openssl_compat.h
+index 7d705398..958638fb 100644
+--- a/src/openssl/openssl_compat.h
++++ b/src/openssl/openssl_compat.h
+@@ -70,6 +70,9 @@ static inline int xmlSecOpenSSLCompatRand(unsigned char 
*buf, xmlSecSize size) {
+  
*****************************************************************************/
+ #ifdef OPENSSL_IS_BORINGSSL
+ 
++/* Not implemented by LibreSSL (yet?) */
++#define XMLSEC_OPENSSL_NO_ASN1_TIME_TO_TM   1
++
+ #define ENGINE_cleanup(...)                 {}
+ #define CONF_modules_unload(...)            {}
+ #define RAND_write_file(file)               (0)
+@@ -100,20 +103,26 @@ int RSA_padding_check_PKCS1_OAEP_mgf1(uint8_t *out, 
size_t *out_len, size_t max_
+  
*****************************************************************************/
+ #if defined(LIBRESSL_VERSION_NUMBER)
+ 
+-/* Needed for Engine initialization */
+-#define UI_null()                          NULL
++/* Not implemented by LibreSSL (yet?) */
++#define XMLSEC_OPENSSL_NO_ASN1_TIME_TO_TM   1
++#define XMLSEC_OPENSSL_NO_STORE             1
++#define XMLSEC_OPENSSL_NO_PWD_CALLBACK      1
++#define XMLSEC_OPENSSL_NO_DEEP_COPY         1
++#define XMLSEC_NO_DH                        1
+ 
+-#endif /* defined(LIBRESSL_VERSION_NUMBER) */
++/* simply return success */
++#define sk_X509_reserve(crts, num)          (1)
++#define sk_X509_CRL_reserve(crls, num)      (1)
+ 
+-#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 
0x30500000L)
+-/* EVP_CIPHER_CTX stuff */
+-#define EVP_CIPHER_CTX_encrypting(x)       ((x)->encrypt)
++#if (LIBRESSL_VERSION_NUMBER < 0x3080000fL)
++#define XMLSEC_NO_SHA3                      1
++#endif /* (LIBRESSL_VERSION_NUMBER < 0x3080000fL) */
+ 
+-/* X509 stuff */
+-#define X509_STORE_CTX_get_by_subject      X509_STORE_get_by_subject
+-#define X509_OBJECT_new()                  (calloc(1, sizeof(X509_OBJECT)))
+-#define X509_OBJECT_free(x)                { X509_OBJECT_free_contents(x); 
free(x); }
+-#endif /* defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 
0x30500000L) */
++#if (LIBRESSL_VERSION_NUMBER < 0x3070200fL)
++#define UI_null()                           NULL
++#endif /* (LIBRESSL_VERSION_NUMBER < 0x3070200fL) */
++
++#endif /* defined(LIBRESSL_VERSION_NUMBER) */
+ 
+ 
+ 
/******************************************************************************
+diff --git a/src/openssl/x509.c b/src/openssl/x509.c
+index 7173b13a..01c6f467 100644
+--- a/src/openssl/x509.c
++++ b/src/openssl/x509.c
+@@ -552,6 +552,7 @@ xmlSecOpenSSLKeyDataX509Duplicate(xmlSecKeyDataPtr dst, 
xmlSecKeyDataPtr src) {
+ 
+     /* crts */
+     if(ctxSrc->certsList != NULL) {
++#ifndef XMLSEC_OPENSSL_NO_DEEP_COPY
+ #ifndef XMLSEC_OPENSSL_API_300
+         ctxDst->certsList = sk_X509_deep_copy(ctxSrc->certsList, 
(sk_X509_copyfunc)X509_dup, X509_free);
+ #else  /* XMLSEC_OPENSSL_API_300 */
+@@ -561,10 +562,41 @@ xmlSecOpenSSLKeyDataX509Duplicate(xmlSecKeyDataPtr dst, 
xmlSecKeyDataPtr src) {
+             xmlSecOpenSSLError("sk_X509_deep_copy", 
xmlSecKeyDataGetName(dst));
+             return(-1);
+         }
++#else /* XMLSEC_OPENSSL_NO_DEEP_COPY */
++        int size, ii;
++        X509* certSrc;
++        X509* certDst;
++        int ret;
++
++        ctxDst->certsList = sk_X509_new_null();
++        if(ctxDst->certsList == NULL) {
++            xmlSecOpenSSLError("sk_X509_new_null", xmlSecKeyDataGetName(dst));
++            return(-1);
++        }
++        size = sk_X509_num(ctxSrc->certsList);
++        for(ii = 0; ii < size; ++ii) {
++            certSrc = sk_X509_value(ctxSrc->certsList, ii);
++            if(certSrc == NULL) {
++                continue;
++            }
++            certDst = X509_dup(certSrc);
++            if(certDst == NULL) {
++                xmlSecOpenSSLError("X509_dup", xmlSecKeyDataGetName(dst));
++                return(-1);
++            }
++            ret = sk_X509_push(ctxDst->certsList, certDst);
++            if(ret <= 0) {
++                xmlSecOpenSSLError("sk_X509_push", NULL);
++                X509_free(certDst);
++                return(-1);
++            }
++        }
++#endif /* XMLSEC_OPENSSL_NO_DEEP_COPY */
+     }
+ 
+     /* crls */
+     if(ctxSrc->crlsList != NULL) {
++#ifndef XMLSEC_OPENSSL_NO_DEEP_COPY
+ #ifndef XMLSEC_OPENSSL_API_300
+         ctxDst->crlsList = sk_X509_CRL_deep_copy(ctxSrc->crlsList, 
(sk_X509_CRL_copyfunc)X509_CRL_dup, X509_CRL_free);
+ #else  /* XMLSEC_OPENSSL_API_300 */
+@@ -574,6 +606,36 @@ xmlSecOpenSSLKeyDataX509Duplicate(xmlSecKeyDataPtr dst, 
xmlSecKeyDataPtr src) {
+             xmlSecOpenSSLError("sk_X509_CRL_deep_copy", 
xmlSecKeyDataGetName(dst));
+             return(-1);
+         }
++#else /* XMLSEC_OPENSSL_NO_DEEP_COPY */
++        int size, ii;
++        X509_CRL* crlSrc;
++        X509_CRL* crlDst;
++        int ret;
++
++        ctxDst->crlsList = sk_X509_CRL_new_null();
++        if(ctxDst->crlsList == NULL) {
++            xmlSecOpenSSLError("sk_X509_CRL_new_null", 
xmlSecKeyDataGetName(dst));
++            return(-1);
++        }
++        size = sk_X509_CRL_num(ctxSrc->crlsList);
++        for(ii = 0; ii < size; ++ii) {
++            crlSrc = sk_X509_CRL_value(ctxSrc->crlsList, ii);
++            if(crlSrc == NULL) {
++                continue;
++            }
++            crlDst = X509_CRL_dup(crlSrc);
++            if(crlDst == NULL) {
++                xmlSecOpenSSLError("X509_CRL_dup", xmlSecKeyDataGetName(dst));
++                return(-1);
++            }
++            ret = sk_X509_CRL_push(ctxDst->crlsList, crlDst);
++            if(ret <= 0) {
++                xmlSecOpenSSLError("sk_X509_CRL_push", NULL);
++                X509_CRL_free(crlDst);
++                return(-1);
++            }
++        }
++#endif /* XMLSEC_OPENSSL_NO_DEEP_COPY */
+     }
+ 
+     /* keyCert: should be in the same position in certsList after copy */
+@@ -1393,7 +1455,7 @@ my_timegm(struct tm *t) {
+ 
+ #endif /* HAVE_TIMEGM */
+ 
+-#if !defined(OPENSSL_IS_BORINGSSL)
++#ifndef XMLSEC_OPENSSL_NO_ASN1_TIME_TO_TM
+ 
+ time_t
+ xmlSecOpenSSLX509Asn1TimeToTime(const ASN1_TIME * t) {
+@@ -1417,10 +1479,10 @@ xmlSecOpenSSLX509Asn1TimeToTime(const ASN1_TIME * t) {
+     return(timegm(&tm));
+ }
+ 
+-#else  /* !defined(OPENSSL_IS_BORINGSSL) */
++#else  /* XMLSEC_OPENSSL_NO_ASN1_TIME_TO_TM */
+ 
+ time_t
+-xmlSecOpenSSLX509Asn1TimeToTime(ASN1_TIME * t) {
++xmlSecOpenSSLX509Asn1TimeToTime(const ASN1_TIME * t) {
+     struct tm tm;
+     int offset;
+ 
+@@ -1482,7 +1544,7 @@ xmlSecOpenSSLX509Asn1TimeToTime(ASN1_TIME * t) {
+ #undef g2
+     return(timegm(&tm) - offset * 60);
+ }
+-#endif /* !defined(OPENSSL_IS_BORINGSSL) */
++#endif /* XMLSEC_OPENSSL_NO_ASN1_TIME_TO_TM */
+ 
+ /* returns 1 if cert was found and verified and also data was adopted, 0 if 
not, or negative value if an error occurs */
+ static int
+diff --git a/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml 
b/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml
+index cd87ded2..4f1ba7cf 100644
+--- a/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml
++++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml
+@@ -8,10 +8,40 @@
+       <DigestValue>Ofs8NqfoXX+r0Cas3GRY2GbzhPo=</DigestValue>
+     </Reference>
+   </SignedInfo>
+-  
<SignatureValue>un5Fwdn5LTFBPQPv1GSst3mviS7I1X8icM7cYRTSIqKMnkXOIzXgcEKVcfO1oodP
+-9ABdLzQB0wdZJW6CCoHKwA==</SignatureValue>
++  
<SignatureValue>Kncq42zs0n0gnmMQPYi2VuRMJH5hBFXl8Ea7P4ogmF4lW2OY+K7m145i46SlzZAU
++fxjK44tl4UL09VKn25BqskOkwYor0utRnbrrFP4lKyC3mB8f1KGsxUKN4sbsk21c
++8Lc+UZ/UZyIcA8a5qRCw7kJWWqOZB5Bv48+eCnbaZ8W5rPZ2vxxZvUtSlPTkZs3q
++2ZAsI0WlnPn5a1CgExvqkddULw1xBxEq8dy5gmLuYyvTPpwTYU/wlAxOMuyke69s
++2KBuB9XiRoYgHTKVIqvPOYFXctOJVWrLh7JbRDZTTw7IyaT8mH/cD3yixXLciL2I
++I6E6XtkiWyfPpOLmXxucjw==</SignatureValue>
+   <KeyInfo>
++    <KeyName>mykey</KeyName>
+     <X509Data>
++<X509Certificate>MIIEbzCCBBmgAwIBAgIJAK+ii7kzrdq5MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
++VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
++aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
++A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
++ZXkuY29tMCAXDTIyMTIxMjIwMTQ0OFoYDzIxMjIxMTE4MjAxNDQ4WjCBxzELMAkG
++A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
++cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAn
++BgNVBAsTIFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
++Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
++b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbu5Mc7aNSahgJAWeP
++9BoQLQoqGne9rR+PcxsEIie7J4RoVhyK7iwh18HT1TTMdCm4fP6OkgUrosHMELB4
++NImb6GzHq0vJ9SOCT8B4UntNRJ0qJrWw0Gel99CtrhAQxESTggpqB9mtA1Po5AIH
++R+hQ8v2NxqEZkQS3DkjI1LjH4jX3iSyU7q7qM80m/7iCj8rQWJJIvdk53B89jj06
++s+85ZtywghS7EqjesRiW/YQoN39rg4Xh24fiVWdH7YsAL8GuiE9oimWnEWYDyyYV
++NoxAoEVe5OyV1D9RYjzp/qPypIBsQJ8EN0xBN8dn9jFxlPDGRfUxRm3MscTm0ziY
++XGNnAgMBAAGjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
++cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUmYhmm8qirSHN
++YCIr/2whHEivOwowgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
++gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
++VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
++bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
++bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
++rTANBgkqhkiG9w0BAQUFAANBADSQ02d8qKGQdQj9D6/ZqA524hpGmyusPTI9BvCh
++8R1QO1w3ong7/my1/heps+dH6zw42uOnF6UK7TQIAtNafHM=
++</X509Certificate>
+ 
<X509Certificate>MIID9zCCA2CgAwIBAgIJAK+ii7kzrdqsMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+ VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+ aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
+@@ -33,7 +63,8 @@ 
BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJAK+ii7kzrdqsMAwGA1Ud
+ EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEARpb86RP/ck55X+NunXeIX81i763b
+ j7Z1VJwFbA/QfupzxnqJ2IP/lxC8YxJ3Bp2IJMI7rC9r0poa41ZxI5rGHip97Dpg
+ sxPF9lkRUmKBBQjkICOq1w/4d2DRInBoqXttD+0WsqDfNDVK+7kSE07ytn3RzHCj
+-j0gv0PdxmuCsR/E=</X509Certificate>
++j0gv0PdxmuCsR/E=
++</X509Certificate>
+ 
<X509Certificate>MIIDzzCCAzigAwIBAgIJAK+ii7kzrdqtMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+ VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+ aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
+@@ -54,27 +85,8 @@ 
VQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3Nl
+ eS5jb22CCQCvoou5M63arDANBgkqhkiG9w0BAQUFAAOBgQBuTAW63AgWqqUDPGi8
+ BiXbdKHhFP4J8qgkdv5WMa6SpSWVgNgOYXkK/BSg1aSmQtGv8/8UvBRPoJnO4y0N
+ jWUFf1ubOgUNmedYNLq7YbTp8yTGWeogCyM2xdWELMP8BMgQL0sP+MDAFMKO3itY
+-mEWnCEsP15HKSTms54RNj7oJ+A==</X509Certificate>
+-<X509Certificate>MIIDpzCCA1GgAwIBAgIJAK+ii7kzrdqvMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+-VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+-aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
+-A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
+-ZXkuY29tMCAXDTE0MDUyMzE3NTUzNFoYDzIxMTQwNDI5MTc1NTM0WjCBxzELMAkG
+-A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
+-cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAn
+-BgNVBAsTIFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+-Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+-b20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7Ljqdn
+-sYmW0tbDVxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQAB
+-o4IBRTCCAUEwDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH
+-ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTM
+-QygZMIHjBgNVHSMEgdswgdiAFP7k7FMk8JWVxxC14US1XTllWuN+oYG0pIGxMIGu
+-MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1M
+-IFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2Vj
+-KTEQMA4GA1UECxMHUm9vdCBDQTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8G
+-CSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkAr6KLuTOt2q0wDQYJKoZI
+-hvcNAQEFBQADQQAOXBj0yICp1RmHXqnUlsppryLCW3pKBD1dkb4HWarO7RjA1yJJ
+-fBjXssrERn05kpBcrRfzou4r3DCgQFPhjxga</X509Certificate>
++mEWnCEsP15HKSTms54RNj7oJ+A==
++</X509Certificate>
+ </X509Data>
+   </KeyInfo>
+   <Object Id="object">some text</Object>
+diff --git a/tests/testrun.sh b/tests/testrun.sh
+index 0a5cbda0..6532e27e 100755
+--- a/tests/testrun.sh
++++ b/tests/testrun.sh
+@@ -87,6 +87,19 @@ else
+ fi
+ xmlsec_params="$xmlsec_params --crypto-config $crypto_config"
+ 
++# What flavour of OpenSSL do we have?
++case $XMLSEC_OPENSSL_VERSION in
++*LibreSSL*)
++    xmlsec_openssl_flavor="libressl"
++    ;;
++*BoringSSL*)
++    xmlsec_openssl_flavor="boringssl"
++    ;;
++*)
++    xmlsec_openssl_flavor="openssl"
++    ;;
++esac
++
+ #
+ # Setup extra vars
+ #
+@@ -333,7 +346,7 @@ execKeysTest() {
+         fi
+ 
+         # only openssl supports --privkey-openssl-store
+-        if [ "z$crypto" = "zopenssl" ] ; then
++        if [ "z$crypto" = "zopenssl" -a "z$xmlsec_openssl_flavor" != 
"zlibressl" ] ; then
+             printf "    Reading private key from pkcs12 file using ossl-store 
"
+             rm -f $tmpfile
+             params="--lax-key-search --privkey-openssl-store 
$privkey_file.p12 $pkcs12_key_extra_options $key_test_options --output $tmpfile 
$asym_key_test.tmpl"
+@@ -402,7 +415,7 @@ execKeysTest() {
+     # test reading public keys
+     if [ -n "$pubkey_file" -a -n "$asym_key_test" ]; then
+         # only openssl supports --pubkey-openssl-store
+-        if [ "z$crypto" = "zopenssl" ] ; then
++        if [ "z$crypto" = "zopenssl" -a "z$xmlsec_openssl_flavor" != 
"zlibressl" ] ; then
+             printf "    Reading public key from pem file using ossl-store     
"
+             rm -f $tmpfile
+             params="--lax-key-search --pubkey-openssl-store $pubkey_file.pem 
$key_test_options $asym_key_test.xml"
+-- 
+2.39.3
+

diff --git a/dev-libs/xmlsec/files/xmlsec-1.3.0-optimisation.patch 
b/dev-libs/xmlsec/files/xmlsec-1.3.0-optimisation.patch
new file mode 100644
index 0000000..2cd0401
--- /dev/null
+++ b/dev-libs/xmlsec/files/xmlsec-1.3.0-optimisation.patch
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -2482,7 +2482,7 @@ AC_ARG_ENABLE([pedantic], 
[AS_HELP_STRING([--enable-pedantic],[enable pedantic c
+ if test "z$enable_pedantic" = "zno" ; then
+     AC_MSG_RESULT([disabled])
+ else
+-    CFLAGS="$CFLAGS -O -std=c99 -pedantic -pedantic-errors -W -Wall -Wextra"
++    CFLAGS="$CFLAGS -std=c99 -pedantic -W -Wall -Wextra"
+     CFLAGS="$CFLAGS -fno-inline -Wnull-dereference -Wdouble-promotion"
+     CFLAGS="$CFLAGS -Wformat=2 -Wformat-security -Wformat-nonliteral"
+     CFLAGS="$CFLAGS -Wconversion -Wunused -Wshadow -Wpointer-arith 
-Wcast-align"

diff --git a/dev-libs/xmlsec/files/xmlsec-1.3.0-strict-prototypes.patch 
b/dev-libs/xmlsec/files/xmlsec-1.3.0-strict-prototypes.patch
new file mode 100644
index 0000000..be8377e
--- /dev/null
+++ b/dev-libs/xmlsec/files/xmlsec-1.3.0-strict-prototypes.patch
@@ -0,0 +1,21 @@
+https://github.com/lsh123/xmlsec/issues/627
+https://github.com/lsh123/xmlsec/commit/a2c8cad6215d89ce4454adcde5e84ffb12901a7a
+
+From a2c8cad6215d89ce4454adcde5e84ffb12901a7a Mon Sep 17 00:00:00 2001
+From: lsh123 <[email protected]>
+Date: Thu, 13 Apr 2023 10:30:13 -0400
+Subject: [PATCH] Fix prototype (#629)
+
+Issue #627
+--- a/src/nss/crypto.c
++++ b/src/nss/crypto.c
+@@ -412,7 +412,7 @@ xmlSecNssKeysMngrInit(xmlSecKeysMngrPtr mngr) {
+  * Returns: internal key slot and initializes it if needed.
+  */
+ PK11SlotInfo *
+-xmlSecNssGetInternalKeySlot()
++xmlSecNssGetInternalKeySlot(void)
+ {
+     PK11SlotInfo *slot = NULL;
+     SECStatus rv;
+

diff --git a/dev-libs/xmlsec/xmlsec-1.3.0-r1.ebuild 
b/dev-libs/xmlsec/xmlsec-1.3.0-r1.ebuild
new file mode 100644
index 0000000..cc3b777
--- /dev/null
+++ b/dev-libs/xmlsec/xmlsec-1.3.0-r1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Command line tool for signing, verifying, encrypting and 
decrypting XML"
+HOMEPAGE="https://www.aleksey.com/xmlsec";
+SRC_URI="https://www.aleksey.com/xmlsec/download/${PN}1-${PV}.tar.gz";
+S="${WORKDIR}/${PN}1-${PV}"
+
+LICENSE="MIT"
+# Upstream consider major version bumps to be changes in either X or Y in X.Y.Z
+SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="doc gcrypt gnutls http nss +openssl static-libs test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="
+       || ( gnutls nss openssl )
+"
+
+RDEPEND="
+       >=dev-libs/libxml2-2.7.4
+       >=dev-libs/libxslt-1.0.20
+       dev-libs/libltdl
+       gcrypt? ( >=dev-libs/libgcrypt-1.4.0:= )
+       gnutls? ( >=net-libs/gnutls-3.6.13:= )
+       nss? (
+               >=dev-libs/nspr-4.4.1
+               >=dev-libs/nss-3.9
+       )
+       openssl? ( dev-libs/openssl:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       virtual/pkgconfig
+       test? (
+               nss? (
+                       >=dev-libs/nss-3.9[utils]
+               )
+       )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-strict-prototypes.patch
+       "${FILESDIR}"/${P}-clang.patch
+       "${FILESDIR}"/${P}-optimisation.patch
+       "${FILESDIR}"/${P}-libressl.patch #903001
+)
+
+src_prepare() {
+       default
+
+       eautoreconf
+}
+
+src_configure() {
+       local myeconfargs=(
+               $(use_enable doc docs)
+               $(use_enable static-libs static)
+               $(use_with gcrypt)
+               $(use_with gnutls)
+               $(use_with nss nspr)
+               $(use_with nss)
+               $(use_with openssl)
+
+               --disable-werror
+               --enable-mans
+               --enable-pkgconfig
+
+               --enable-concatkdf
+               --enable-pbkdf2
+               --enable-ec
+               --enable-dh
+               --enable-sha3
+
+               --enable-files
+               $(use_enable http)
+               --disable-ftp
+       )
+
+       # Bash because of bug #721128
+       CONFIG_SHELL="${BROOT}"/bin/bash econf "${myeconfargs[@]}"
+}
+
+src_test() {
+       # See https://github.com/lsh123/xmlsec/issues/280 for TZ=UTC
+       TZ=UTC SHELL="${BROOT}"/bin/bash emake TMPFOLDER="${T}" check
+}
+
+src_install() {
+       default
+
+       find "${ED}" -name '*.la' -delete || die
+}

Reply via email to