Sample code for 30+ languages & platforms
Chilkat2-Python

Create EBICS SignaturePubKeyOrderData XML

See more EBICS Examples

Demonstrates how to create the EBICS SignaturePubKeyOrderData XML. (EBICS is the Electronic Banking Internet Communication Standard)

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# The goal of this example is to create the XML shown below from the certificate to be used for signing.

# <?xml version="1.0" encoding="UTF-8"?>
# <SignaturePubKeyOrderData xmlns="http://www.ebics.org/S001" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ebics.org/S002">
#   <SignaturePubKeyInfo>
#     <ds:X509Data>
#       <X509IssuerSerial>
#         <ds:X509IssuerName>C=FR, O=Example, OU=1234, CN=Example eID User, OrganizationID=SI:FR-1234</ds:X509IssuerName>
#         <ds:X509SerialNumber>73FFFFB881F1629982F787DF161EFFFF</ds:X509SerialNumber>
#       </X509IssuerSerial>
#       <ds:X509Certificate>
#         MIIJT...kE=
#       </ds:X509Certificate>
#     </ds:X509Data>
#     <PubKeyValue>
#       <ds:RSAPublicKey>
#        <ds:Modulus>wedQ...22Kw==</ds:Modulus>
#         <ds:Exponent>AQAB</ds:Exponent>
#       </ds:RSAPublicKey>
#     </PubKeyValue>
#     <SignatureVersion>A005</SignatureVersion>
#   </SignaturePubKeyInfo>
#   <PartnerID/>
#   <UserID/>
# </SignaturePubKeyOrderData>

cert = chilkat2.Cert()
success = cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
if (success == False):
    print(cert.LastErrorText)
    sys.exit()

xml = chilkat2.Xml()
xml.Tag = "SignaturePubKeyOrderData"
xml.AddAttribute("xmlns","http://www.ebics.org/S001")
xml.AddAttribute("xmlns:ds","http://www.w3.org/2000/09/xmldsig#")
xml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
xml.AddAttribute("xsi:schemaLocation","http://www.ebics.org/S002")
xml.UpdateChildContent("SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509IssuerName",cert.IssuerDN)
xml.UpdateChildContent("SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509SerialNumber",cert.SerialNumber)
xml.UpdateChildContent("SignaturePubKeyInfo|ds:X509Data|ds:X509Certificate",cert.GetEncoded())

pubkey = chilkat2.PublicKey()
cert.GetPublicKey(pubkey)

xmlPubKey = chilkat2.Xml()
xmlPubKey.LoadXml(pubkey.GetXml())

# The public key XML will look like this:
# 
# <RSAPublicKey>
#   <Modulus>...</Modulus>
#   <Exponent>...</Exponent>
# </RSAPublicKey>

xml.UpdateChildContent("SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Modulus",xmlPubKey.GetChildContent("Modulus"))
xml.UpdateChildContent("SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Exponent",xmlPubKey.GetChildContent("Exponent"))
xml.UpdateChildContent("SignaturePubKeyInfo|SignatureVersion","A005")
xml.UpdateChildContent("PartnerID","")
xml.UpdateChildContent("UserID","")

print(xml.GetXml())