Я использую библиотеку XMLSEC, чтобы подписать файл, который будет отправлен в правительственное агентство. В этом процессе мне нужно использовать конкретные алгоритмы, перечисленные ниже, и включить идентификационный номер счета в эталонном URI. Однако, когда параметр URI заполняется, документ не подписан, но если я оставлю его пустым, подпись успешно генерируется. Я уже проверил идентификатор, и все кажется правильно. Я ценю любую помощь. < /P>
Пример идентификатора: #nfcom43253123827184000163620017659731731076965182 < /p>
Проблема? ref = xmlsec.template.add_reference (
signature, xmlsec.constants.transformsha1, uri = f "#{id_nfcom}"
) < /p>
def assinar_xml (xml_tree, SERTICADO_PEM):
root = xml_tree.getroot () < /p>
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
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-with-uri
Ссылка на XMLSEC с URI ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я сталкиваюсь с ошибкой xmlsec.internalerror: (-1, 'lxml & xmlsec libxml2.
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-