XMLSEC -Referenz mit URIPython

Python-Programme
Anonymous
 XMLSEC -Referenz mit URI

Post by Anonymous »

Ich verwende die XMLSEC -Bibliothek, um eine Datei zu unterschreiben. Ich muss die unten aufgeführten spezifischen Algorithmen verwenden und die Rechnungsidentifikationsnummer in den Referenz -URI einbeziehen. Wenn der URI -Parameter jedoch gefüllt ist, wird das Dokument nicht unterzeichnet, aber wenn ich es leer lasse, wird die Signatur erfolgreich erzeugt. Ich habe die ID bereits überprüft und alles scheint korrekt zu sein.

Code: Select all

ref = xmlsec.template.add_reference(
signature, xmlsec.constants.TransformSha1, uri=f"#{id_nfcom}"
)

def assinar_xml(xml_tree, certificado_pem):
root = xml_tree.getroot()

inf_nfcom = root.find(".//{http://www.portalfiscal.inf.br/NFCom}infNFCom")
if inf_nfcom is None:
raise ValueError("Elemento  não encontrado no XML.")

id_nfcom = inf_nfcom.get("Id")
if not id_nfcom:
raise ValueError("Atributo 'Id' não encontrado no elemento .")

signature = xmlsec.template.create(
root, xmlsec.Transform.C14N, xmlsec.Transform.RSA_SHA1
)

**ref = xmlsec.template.add_reference(
signature, xmlsec.constants.TransformSha1, uri=f"#{id_nfcom}"
)**

xmlsec.template.add_transform(ref, xmlsec.Transform.ENVELOPED)
xmlsec.template.add_transform(ref, xmlsec.Transform.C14N)

key_info = xmlsec.template.ensure_key_info(signature)
x509_data = xmlsec.template.add_x509_data(key_info)
xmlsec.template.x509_data_add_certificate(x509_data)

root.append(signature)

ctx = xmlsec.SignatureContext()

key = None
try:
key = xmlsec.Key.from_file(certificado_pem, xmlsec.constants.KeyDataFormatPem)
print("Chave carregada com sucesso!")
except Exception as e:
print(f"Erro ao carregar a chave: {e}")

if key is None:
raise ValueError("A chave não foi carregada corretamente.")

ctx.key = key

ctx.sign(signature)

return xml_tree

# xml BEFORE SIGNATURE #




43
2
62
1
765973173
7696518
2
2025-01-31T11:56:18-03:00
1
0
3205309
0
0
1.00


23827184005463
9071339235
321
1
TELECOM LTDA ME
Telecom

AV.  PRESIDENTE KENNEDY
845
Centro
4117909
Palotina
85950000
PR



Cliente de Telecomunicações Ltda
98765432000187
1

1

Rua das Comunicações
123
Centro
3205309
Vitória
85950000
ES



01
1
4



001
Serviço de Internet Banda Larga
0400401
5303
2
100.00
100.00
100.00



00
10.00
18.00
1.80




100.00

10.00
1.80
1.00
1.00

1.00
1.00
1.00
1.00

1.00
1.00
1.00
1.00

0.00
1.00
100.00



http://dfe-portal.svrs.rs.gov.br/NFCom/QRCode?chNFCom=43120201234567890123456789012345678901234567&tpAmb=2



Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post