se usa POLICY_ID desde archivo local, actualizacion de commit [47fd230ff9]
FossilOrigin-Name: 190ab3228ef9e3fbfb4210ae74a8e332cf0aa9d6a0d476e561164bd76ae772f0
This commit is contained in:
		| @@ -227,7 +227,7 @@ def sign_xml(private_key, passphrase, xmlfile, ssl=True, use_cache_policy=False, | ||||
|     if use_cache_policy: | ||||
|         warnings.warn("xades using cache policy") | ||||
|  | ||||
|     signer = fe.DianXMLExtensionSigner(private_key, passphrase=passphrase, mockpolicy=use_cache_policy) | ||||
|     signer = fe.DianXMLExtensionSigner(private_key, passphrase=passphrase, localpolicy=use_cache_policy) | ||||
|     document = open(xmlfile, 'r').read().encode('utf-8') | ||||
|     with open(output, 'w') as f: | ||||
|         f.write(signer.sign_xml_string(document)) | ||||
| @@ -358,7 +358,7 @@ def sign_verify_xml(private_key, passphrase, xmlfile, ssl=True, use_cache_policy | ||||
|         warnings.warn("xades using cache policy") | ||||
|  | ||||
|     print("THIS ONLY WORKS FOR DOCUMENTS GENERATE WITH FACHO") | ||||
|     signer = fe.DianXMLExtensionSignerVerifier(private_key, passphrase=passphrase, mockpolicy=use_cache_policy) | ||||
|     signer = fe.DianXMLExtensionSignerVerifier(private_key, passphrase=passphrase, localpolicy=use_cache_policy) | ||||
|     document = open(xmlfile, 'r').read().encode('utf-8') | ||||
|  | ||||
|     if signer.verify_string(document): | ||||
|   | ||||
| @@ -26,9 +26,8 @@ SCHEME_AGENCY_ATTRS = { | ||||
| } | ||||
|  | ||||
|  | ||||
| pwd = Path(__file__).parent | ||||
| # RESOLUCION 0001: pagina 516 | ||||
| POLICY_ID = 'file://'+str(pwd)+'/data/dian/politicadefirmav2.pdf' | ||||
| POLICY_ID = 'https://facturaelectronica.dian.gov.co/politicadefirma/v2/politicadefirmav2.pdf' | ||||
| POLICY_NAME = u'Política de firma para facturas electrónicas de la República de Colombia.' | ||||
|  | ||||
|  | ||||
| @@ -62,6 +61,7 @@ def mock_xades_policy(): | ||||
|     with patch('xades.policy.urllib.urlopen') as mock: | ||||
|         class UrllibPolicyMock: | ||||
|             def read(self): | ||||
|                 # Usamos contenido de archivo local | ||||
|                 cur_dir = os.path.dirname(os.path.abspath(__file__)) | ||||
|                 data_dir = os.path.join(cur_dir, 'data', 'dian') | ||||
|                 policy_file = os.path.join(data_dir, 'politicadefirmav2.pdf') | ||||
| @@ -281,20 +281,20 @@ class DianXMLExtensionSoftwareSecurityCode(FachoXMLExtension): | ||||
|  | ||||
| class DianXMLExtensionSigner: | ||||
|  | ||||
|     def __init__(self, pkcs12_path, passphrase=None, mockpolicy=False): | ||||
|     def __init__(self, pkcs12_path, passphrase=None, localpolicy=True): | ||||
|         self._pkcs12_data = open(pkcs12_path, 'rb').read() | ||||
|         self._passphrase = None | ||||
|         self._mockpolicy = mockpolicy | ||||
|         self._localpolicy = localpolicy | ||||
|         if passphrase: | ||||
|             self._passphrase = passphrase.encode('utf-8') | ||||
|  | ||||
|     @classmethod | ||||
|     def from_bytes(cls, data, passphrase=None, mockpolicy=False): | ||||
|     def from_bytes(cls, data, passphrase=None, localpolicy=True): | ||||
|         self = cls.__new__(cls) | ||||
|          | ||||
|         self._pkcs12_data = data | ||||
|         self._passphrase = None | ||||
|         self._mockpolicy = mockpolicy | ||||
|         self._localpolicy = localpolicy | ||||
|         if passphrase: | ||||
|             self._passphrase = passphrase.encode('utf-8') | ||||
|              | ||||
| @@ -360,7 +360,7 @@ class DianXMLExtensionSigner: | ||||
|         ctx.load_pkcs12(OpenSSL.crypto.load_pkcs12(self._pkcs12_data, | ||||
|                                                    self._passphrase)) | ||||
|  | ||||
|         if self._mockpolicy: | ||||
|         if self._localpolicy: | ||||
|             with mock_xades_policy(): | ||||
|                 ctx.sign(signature) | ||||
|                 ctx.verify(signature) | ||||
| @@ -480,10 +480,10 @@ class DianZIP: | ||||
|  | ||||
| class DianXMLExtensionSignerVerifier: | ||||
|  | ||||
|     def __init__(self, pkcs12_path_or_bytes, passphrase=None, mockpolicy=False): | ||||
|     def __init__(self, pkcs12_path_or_bytes, passphrase=None, localpolicy=True): | ||||
|         self._pkcs12_path_or_bytes = pkcs12_path_or_bytes | ||||
|         self._passphrase = None | ||||
|         self._mockpolicy = mockpolicy | ||||
|         self._localpolicy = localpolicy | ||||
|         if passphrase: | ||||
|             self._passphrase = passphrase.encode('utf-8') | ||||
|  | ||||
| @@ -508,7 +508,7 @@ class DianXMLExtensionSignerVerifier: | ||||
|         ctx.load_pkcs12(OpenSSL.crypto.load_pkcs12(pkcs12_data, | ||||
|                                                    self._passphrase)) | ||||
|         try: | ||||
|             if self._mockpolicy: | ||||
|             if self._localpolicy: | ||||
|                 with mock_xades_policy(): | ||||
|                     ctx.verify(signature) | ||||
|             else: | ||||
|   | ||||
| @@ -13,7 +13,7 @@ def DIANWriteSigned(xml, filename, private_key, passphrase, use_cache_policy=Fal | ||||
|     if dian_signer is None: | ||||
|         dian_signer = fe.DianXMLExtensionSigner | ||||
|  | ||||
|     signer = dian_signer(private_key, passphrase=passphrase, mockpolicy=use_cache_policy) | ||||
|     signer = dian_signer(private_key, passphrase=passphrase, localpolicy=use_cache_policy) | ||||
|  | ||||
|     with open(filename, 'w') as f: | ||||
|         f.write(signer.sign_xml_string(document)) | ||||
|   | ||||
| @@ -284,8 +284,8 @@ class InformacionGeneral: | ||||
|  | ||||
| class DianXMLExtensionSigner(fe.DianXMLExtensionSigner): | ||||
|  | ||||
|     def __init__(self, pkcs12_path, passphrase=None, mockpolicy=False): | ||||
|         super().__init__(pkcs12_path, passphrase=passphrase, mockpolicy=mockpolicy) | ||||
|     def __init__(self, pkcs12_path, passphrase=None, localpolicy=True): | ||||
|         super().__init__(pkcs12_path, passphrase=passphrase, localpolicy=localpolicy) | ||||
|  | ||||
|     def _element_extension_content(self, fachoxml): | ||||
|         return fachoxml.builder.xpath(fachoxml.root, './ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user