Unicode C
Unicode C
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 Unicode C Downloads
#include <C_CkCertW.h>
#include <C_CkXmlW.h>
#include <C_CkPublicKeyW.h>
void ChilkatSample(void)
{
BOOL success;
HCkCertW cert;
HCkXmlW xml;
HCkPublicKeyW pubkey;
HCkXmlW xmlPubKey;
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 = CkCertW_Create();
success = CkCertW_LoadPfxFile(cert,L"qa_data/pfx/cert_test123.pfx",L"test123");
if (success == FALSE) {
wprintf(L"%s\n",CkCertW_lastErrorText(cert));
CkCertW_Dispose(cert);
return;
}
xml = CkXmlW_Create();
CkXmlW_putTag(xml,L"SignaturePubKeyOrderData");
CkXmlW_AddAttribute(xml,L"xmlns",L"http://www.ebics.org/S001");
CkXmlW_AddAttribute(xml,L"xmlns:ds",L"http://www.w3.org/2000/09/xmldsig#");
CkXmlW_AddAttribute(xml,L"xmlns:xsi",L"http://www.w3.org/2001/XMLSchema-instance");
CkXmlW_AddAttribute(xml,L"xsi:schemaLocation",L"http://www.ebics.org/S002");
CkXmlW_UpdateChildContent(xml,L"SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509IssuerName",CkCertW_issuerDN(cert));
CkXmlW_UpdateChildContent(xml,L"SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509SerialNumber",CkCertW_serialNumber(cert));
CkXmlW_UpdateChildContent(xml,L"SignaturePubKeyInfo|ds:X509Data|ds:X509Certificate",CkCertW_getEncoded(cert));
pubkey = CkPublicKeyW_Create();
CkCertW_GetPublicKey(cert,pubkey);
xmlPubKey = CkXmlW_Create();
CkXmlW_LoadXml(xmlPubKey,CkPublicKeyW_getXml(pubkey));
// The public key XML will look like this:
//
// <RSAPublicKey>
// <Modulus>...</Modulus>
// <Exponent>...</Exponent>
// </RSAPublicKey>
CkXmlW_UpdateChildContent(xml,L"SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Modulus",CkXmlW_getChildContent(xmlPubKey,L"Modulus"));
CkXmlW_UpdateChildContent(xml,L"SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Exponent",CkXmlW_getChildContent(xmlPubKey,L"Exponent"));
CkXmlW_UpdateChildContent(xml,L"SignaturePubKeyInfo|SignatureVersion",L"A005");
CkXmlW_UpdateChildContent(xml,L"PartnerID",L"");
CkXmlW_UpdateChildContent(xml,L"UserID",L"");
wprintf(L"%s\n",CkXmlW_getXml(xml));
CkCertW_Dispose(cert);
CkXmlW_Dispose(xml);
CkPublicKeyW_Dispose(pubkey);
CkXmlW_Dispose(xmlPubKey);
}