From 5f57f2eac756df213e83a2fdb452057909e2dd21 Mon Sep 17 00:00:00 2001
From: David Adamec <david.adamec@airship.com>
Date: Fri, 15 Sep 2023 17:49:15 -0700
Subject: [PATCH 1/3] Add compatibility for xmlsec 1.3

---
 doc/source/modules/constants.rst | 6 ------
 src/constants.c                  | 2 --
 src/enc.c                        | 7 +++++++
 src/xmlsec/constants.pyi         | 2 --
 4 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/doc/source/modules/constants.rst b/doc/source/modules/constants.rst
index 4a63fcd..8127590 100644
--- a/doc/source/modules/constants.rst
+++ b/doc/source/modules/constants.rst
@@ -166,12 +166,6 @@ Namespaces
 .. data:: xmlsec.constants.XPointerNs
    :annotation: = 'http://www.w3.org/2001/04/xmldsig-more/xptr'
 
-.. data:: xmlsec.constants.Soap11Ns
-   :annotation: = 'http://schemas.xmlsoap.org/soap/envelope/'
-
-.. data:: xmlsec.constants.Soap12Ns
-   :annotation: = 'http://www.w3.org/2002/06/soap-envelope'
-
 .. data:: xmlsec.constants.NsExcC14N
    :annotation: = 'http://www.w3.org/2001/10/xml-exc-c14n#'
 
diff --git a/src/constants.c b/src/constants.c
index 34c81b2..72ae217 100644
--- a/src/constants.c
+++ b/src/constants.c
@@ -316,8 +316,6 @@ int PyXmlSec_ConstantsModule_Init(PyObject* package) {
     PYXMLSEC_ADD_NS_CONSTANT(XPathNs, "XPATH");
     PYXMLSEC_ADD_NS_CONSTANT(XPath2Ns, "XPATH2");
     PYXMLSEC_ADD_NS_CONSTANT(XPointerNs, "XPOINTER");
-    PYXMLSEC_ADD_NS_CONSTANT(Soap11Ns, "SOAP11");
-    PYXMLSEC_ADD_NS_CONSTANT(Soap12Ns, "SOAP12");
     PYXMLSEC_ADD_NS_CONSTANT(NsExcC14N, "EXC_C14N");
     PYXMLSEC_ADD_NS_CONSTANT(NsExcC14NWithComments, "EXC_C14N_WITH_COMMENT");
 
diff --git a/src/enc.c b/src/enc.c
index aaf35ae..475cd2d 100644
--- a/src/enc.c
+++ b/src/enc.c
@@ -50,6 +50,13 @@ static int PyXmlSec_EncryptionContext__init__(PyObject* self, PyObject* args, Py
     }
     ctx->manager = manager;
     PYXMLSEC_DEBUGF("%p: init enc context - ok, manager - %p", self, manager);
+
+    // xmlsec 1.3 changed the key search to strict mode, causing various examples
+    // in the docs to fail. For backwards compatibility, this changes it back to
+    // lax mode for now.
+    ctx->handle->keyInfoReadCtx.flags = XMLSEC_KEYINFO_FLAGS_LAX_KEY_SEARCH;
+    ctx->handle->keyInfoWriteCtx.flags = XMLSEC_KEYINFO_FLAGS_LAX_KEY_SEARCH;
+
     return 0;
 ON_FAIL:
     PYXMLSEC_DEBUGF("%p: init enc context - failed", self);
diff --git a/src/xmlsec/constants.pyi b/src/xmlsec/constants.pyi
index 3430a02..9fd24e5 100644
--- a/src/xmlsec/constants.pyi
+++ b/src/xmlsec/constants.pyi
@@ -85,8 +85,6 @@ NodeX509Data: Final[str]
 Ns: Final[str]
 NsExcC14N: Final[str]
 NsExcC14NWithComments: Final[str]
-Soap11Ns: Final[str]
-Soap12Ns: Final[str]
 TransformAes128Cbc: Final[__Transform]
 TransformAes128Gcm: Final[__Transform]
 TransformAes192Cbc: Final[__Transform]

From 0e7c5e718e8d221331b0a5f851094a5b4181eeae Mon Sep 17 00:00:00 2001
From: David Adamec <david.adamec@airship.com>
Date: Fri, 15 Sep 2023 18:07:07 -0700
Subject: [PATCH 2/3] fix 1.2 compatibility

---
 src/enc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/enc.c b/src/enc.c
index 475cd2d..5453ef9 100644
--- a/src/enc.c
+++ b/src/enc.c
@@ -17,6 +17,11 @@
 #include <xmlsec/xmlenc.h>
 #include <xmlsec/xmltree.h>
 
+// Backwards compatibility with xmlsec 1.2
+#ifndef XMLSEC_KEYINFO_FLAGS_LAX_KEY_SEARCH
+#define XMLSEC_KEYINFO_FLAGS_LAX_KEY_SEARCH 0x00008000
+#endif
+
 typedef struct {
     PyObject_HEAD
     xmlSecEncCtxPtr handle;

From 40c14c45a352f2812e796a071ef7d12f5a70be58 Mon Sep 17 00:00:00 2001
From: David Adamec <david.adamec@airship.com>
Date: Fri, 15 Sep 2023 19:40:04 -0700
Subject: [PATCH 3/3] update isort to fix poetry error in pre-commit

---
 .pre-commit-config.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)