[Python] Authentication of Signature from xml file and pem file

Discussão em 'Python' iniciado por Stack, Fevereiro 20, 2025.

  1. Stack

    Stack Membro Participativo

    I have a .pem file which contains my certificate and xml file which also has details regarding the signature. Following is the piece of code I am using to verify

    # Parse the XML document
    template = etree.parse("test.xml").getroot()
    print("Template", template.tag)

    # Add ID attributes
    xmlsec.tree.add_ids(template, ["ID"])

    # Print the loaded XML template
    print(etree.tostring(template, pretty_print=True).decode())

    # Find the signature node
    signature_node = xmlsec.tree.find_node(template, xmlsec.constants.NodeSignature)

    # Print the signature node
    if signature_node is not None:
    print(etree.tostring(signature_node, pretty_print=True).decode())
    else:
    print("Signature node not found")
    exit(1)

    # Create a digital signature context (no key manager is needed).
    ctx = xmlsec.SignatureContext()
    print("Digital Signature", ctx)

    # Load the key from file
    try:
    key = xmlsec.Key.from_file(
    "test.pem",
    xmlsec.constants.KeyDataFormatPem,
    )
    print("Key loaded successfully.")
    except Exception as e:
    print(f"Error loading key: {e}")
    exit(1)

    # Set the key on the context.
    ctx.key = key

    # Verify the signature
    try:
    ctx.verify(signature_node)
    print("Validated")
    except xmlsec.VerificationError as e:
    print(f"Not Verified: {e}")
    except Exception as e:
    print(f"Error: {e}")


    Error I am getting is: Error loading key: (1, 'cannot read key')


    It is in line

    key = xmlsec.Key.from_file(
    "test.pem",
    xmlsec.constants.KeyDataFormatPem,
    )


    If someone has already resolved it, please guide.

    Continue reading...

Compartilhe esta Página