Sample code for 30+ languages & platforms
PowerBuilder Requires Chilkat v11.0.0+

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 PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Cert
oleobject loo_Xml
oleobject loo_Pubkey
oleobject loo_XmlPubKey

li_Success = 0

//  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>

loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")
if li_rc < 0 then
    destroy loo_Cert
    MessageBox("Error","Connecting to COM object failed")
    return
end if
li_Success = loo_Cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
if li_Success = 0 then
    Write-Debug loo_Cert.LastErrorText
    destroy loo_Cert
    return
end if

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")

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

loo_Pubkey = create oleobject
li_rc = loo_Pubkey.ConnectToNewObject("Chilkat.PublicKey")

loo_Cert.GetPublicKey(loo_Pubkey)

loo_XmlPubKey = create oleobject
li_rc = loo_XmlPubKey.ConnectToNewObject("Chilkat.Xml")

loo_XmlPubKey.LoadXml(loo_Pubkey.GetXml())

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

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

Write-Debug loo_Xml.GetXml()


destroy loo_Cert
destroy loo_Xml
destroy loo_Pubkey
destroy loo_XmlPubKey