Sample code for 30+ languages & platforms
PowerBuilder

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