Compatibilidad con Python 3.13
- Actualiza dependencias: cryptography>=41.0.0, pyOpenSSL>=23.2.0, xmlsec>=1.3.12, xmlsig>=0.1.9, zeep>=4.2.1, lxml>=5.2.2 - Anade monkey-patch para xades.load_pkcs12 con pyOpenSSL >= 24 (PKCS12 eliminado de OpenSSL.crypto) - Reemplaza datetime.utcnow() por datetime.now(timezone.utc) - Reemplaza APIs deprecadas de lxml en facho.py y codelist - Migra verificacion PKCS12 de pyOpenSSL a cryptography API en fe.py - Moderniza typing: Union/Optional/List a sintaxis | y list[] - Actualiza requirements_dev.txt con versiones recientes - Actualiza tox.ini y Makefile.dev para Python 3.13
This commit is contained in:
@@ -5,7 +5,6 @@ import uuid
|
||||
import xmlsig
|
||||
import xades
|
||||
from datetime import datetime
|
||||
import OpenSSL
|
||||
import zipfile
|
||||
# import warnings
|
||||
import hashlib
|
||||
@@ -18,6 +17,21 @@ from dateutil import tz
|
||||
|
||||
from cryptography.hazmat.primitives.serialization import pkcs12
|
||||
|
||||
# Monkey-patch xades/xmlsig para compatibilidad con pyOpenSSL >= 24
|
||||
# (PKCS12 fue eliminado de OpenSSL.crypto, pero ambas librerías lo referencian)
|
||||
import OpenSSL
|
||||
import xades.xades_context
|
||||
|
||||
if not hasattr(OpenSSL.crypto, 'PKCS12'):
|
||||
def _patched_load_pkcs12(self, key):
|
||||
if isinstance(key, tuple):
|
||||
self.x509 = key[1]
|
||||
self.public_key = key[1].public_key()
|
||||
self.private_key = key[0]
|
||||
else:
|
||||
raise NotImplementedError("unsupported key type")
|
||||
xades.xades_context.XAdESContext.load_pkcs12 = _patched_load_pkcs12
|
||||
|
||||
AMBIENTE_PRUEBAS = codelist.TipoAmbiente.by_name('Pruebas')['code']
|
||||
AMBIENTE_PRODUCCION = codelist.TipoAmbiente.by_name('Producción')['code']
|
||||
|
||||
@@ -444,9 +458,6 @@ class DianXMLExtensionSigner:
|
||||
self._pkcs12_data,
|
||||
self._passphrase))
|
||||
|
||||
# ctx.load_pkcs12(OpenSSL.crypto.load_pkcs12(
|
||||
# self._pkcs12_data,
|
||||
# self._passphrase))
|
||||
if self._localpolicy:
|
||||
with mock_xades_policy():
|
||||
ctx.sign(signature)
|
||||
@@ -590,8 +601,8 @@ class DianXMLExtensionSignerVerifier:
|
||||
if isinstance(self._pkcs12_path_or_bytes, str):
|
||||
pkcs12_data = open(self._pkcs12_path_or_bytes, 'rb').read()
|
||||
ctx = xades.XAdESContext()
|
||||
ctx.load_pkcs12(OpenSSL.crypto.load_pkcs12(pkcs12_data,
|
||||
self._passphrase))
|
||||
ctx.load_pkcs12(pkcs12.load_key_and_certificates(
|
||||
pkcs12_data, self._passphrase))
|
||||
try:
|
||||
if self._localpolicy:
|
||||
with mock_xades_policy():
|
||||
|
||||
Reference in New Issue
Block a user