PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkXml.pb"
IncludeFile "CkPublicKey.pb"
Procedure ChilkatExample()
success.i = 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>
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadPfxFile(cert,"qa_data/pfx/cert_test123.pfx","test123")
If success = 0
Debug CkCert::ckLastErrorText(cert)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::setCkTag(xml, "SignaturePubKeyOrderData")
CkXml::ckAddAttribute(xml,"xmlns","http://www.ebics.org/S001")
CkXml::ckAddAttribute(xml,"xmlns:ds","http://www.w3.org/2000/09/xmldsig#")
CkXml::ckAddAttribute(xml,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
CkXml::ckAddAttribute(xml,"xsi:schemaLocation","http://www.ebics.org/S002")
CkXml::ckUpdateChildContent(xml,"SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509IssuerName",CkCert::ckIssuerDN(cert))
CkXml::ckUpdateChildContent(xml,"SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509SerialNumber",CkCert::ckSerialNumber(cert))
CkXml::ckUpdateChildContent(xml,"SignaturePubKeyInfo|ds:X509Data|ds:X509Certificate",CkCert::ckGetEncoded(cert))
pubkey.i = CkPublicKey::ckCreate()
If pubkey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkCert::ckGetPublicKey(cert,pubkey)
xmlPubKey.i = CkXml::ckCreate()
If xmlPubKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckLoadXml(xmlPubKey,CkPublicKey::ckGetXml(pubkey))
; The public key XML will look like this:
;
; <RSAPublicKey>
; <Modulus>...</Modulus>
; <Exponent>...</Exponent>
; </RSAPublicKey>
CkXml::ckUpdateChildContent(xml,"SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Modulus",CkXml::ckGetChildContent(xmlPubKey,"Modulus"))
CkXml::ckUpdateChildContent(xml,"SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Exponent",CkXml::ckGetChildContent(xmlPubKey,"Exponent"))
CkXml::ckUpdateChildContent(xml,"SignaturePubKeyInfo|SignatureVersion","A005")
CkXml::ckUpdateChildContent(xml,"PartnerID","")
CkXml::ckUpdateChildContent(xml,"UserID","")
Debug CkXml::ckGetXml(xml)
CkCert::ckDispose(cert)
CkXml::ckDispose(xml)
CkPublicKey::ckDispose(pubkey)
CkXml::ckDispose(xmlPubKey)
ProcedureReturn
EndProcedure