fix(WIP): Reemplazando OpenSsl.crypto,pkcs12

This commit is contained in:
2024-08-06 16:41:14 -05:00
parent a3d2176068
commit d061077b30
3 changed files with 89 additions and 56 deletions

View File

@@ -8,13 +8,15 @@ import xades
from datetime import datetime
import OpenSSL
import zipfile
import warnings
# import warnings
import hashlib
from contextlib import contextmanager
from .data.dian import codelist
from . import form
from collections import defaultdict
from pathlib import Path
# from pathlib import Path
from cryptography.hazmat.primitives.serialization import pkcs12
AMBIENTE_PRUEBAS = codelist.TipoAmbiente.by_name('Pruebas')['code']
AMBIENTE_PRODUCCION = codelist.TipoAmbiente.by_name('Producción')['code']
@@ -68,11 +70,11 @@ NAMESPACES = {
}
def fe_from_string(document: str) -> FachoXML:
return FeXML.from_string(document)
from contextlib import contextmanager
# from contextlib import contextmanager
@contextmanager
def mock_xades_policy():
from mock import patch
@@ -90,7 +92,7 @@ def mock_xades_policy():
mock.return_value = UrllibPolicyMock()
yield
class FeXML(FachoXML):
def __init__(self, root, namespace):
@@ -118,8 +120,7 @@ class FeXML(FachoXML):
class DianXMLExtensionCUDFE(FachoXMLExtension):
def __init__(self, invoice, tipo_ambiente = AMBIENTE_PRUEBAS):
def __init__(self, invoice, tipo_ambiente=AMBIENTE_PRUEBAS):
self.tipo_ambiente = tipo_ambiente
self.invoice = invoice
@@ -351,7 +352,6 @@ class DianXMLExtensionSoftwareSecurityCode(FachoXMLExtension):
class DianXMLExtensionSigner:
def __init__(self, pkcs12_path, passphrase=None, localpolicy=True):
self._pkcs12_data = open(pkcs12_path, 'rb').read()
self._passphrase = None
@@ -362,7 +362,6 @@ class DianXMLExtensionSigner:
@classmethod
def from_bytes(cls, data, passphrase=None, localpolicy=True):
self = cls.__new__(cls)
self._pkcs12_data = data
self._passphrase = None
self._localpolicy = localpolicy
@@ -394,7 +393,6 @@ class DianXMLExtensionSigner:
)
xml.append(signature)
ref = xmlsig.template.add_reference(
signature, xmlsig.constants.TransformSha256, uri="", name="xmldsig-%s-ref0" % (id_uuid)
)
@@ -428,9 +426,13 @@ class DianXMLExtensionSigner:
POLICY_NAME,
xmlsig.constants.TransformSha256)
ctx = xades.XAdESContext(policy)
ctx.load_pkcs12(OpenSSL.crypto.load_pkcs12(self._pkcs12_data,
self._passphrase))
ctx.load_pkcs12(pkcs12.load_key_and_certificates(
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)
@@ -438,7 +440,7 @@ class DianXMLExtensionSigner:
else:
ctx.sign(signature)
ctx.verify(signature)
#xmlsig take parent root
# xmlsig take parent root
xml.remove(signature)
return signature