Sample code for 30+ languages & platforms
Objective-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 Objective-C Downloads

Objective-C
#import <CkoCert.h>
#import <CkoXml.h>
#import <CkoPublicKey.h>

BOOL success = NO;

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

CkoCert *cert = [[CkoCert alloc] init];
success = [cert LoadPfxFile: @"qa_data/pfx/cert_test123.pfx" password: @"test123"];
if (success == NO) {
    NSLog(@"%@",cert.LastErrorText);
    return;
}

CkoXml *xml = [[CkoXml alloc] init];
xml.Tag = @"SignaturePubKeyOrderData";
[xml AddAttribute: @"xmlns" value: @"http://www.ebics.org/S001"];
[xml AddAttribute: @"xmlns:ds" value: @"http://www.w3.org/2000/09/xmldsig#"];
[xml AddAttribute: @"xmlns:xsi" value: @"http://www.w3.org/2001/XMLSchema-instance"];
[xml AddAttribute: @"xsi:schemaLocation" value: @"http://www.ebics.org/S002"];
[xml UpdateChildContent: @"SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509IssuerName" value: cert.IssuerDN];
[xml UpdateChildContent: @"SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509SerialNumber" value: cert.SerialNumber];
[xml UpdateChildContent: @"SignaturePubKeyInfo|ds:X509Data|ds:X509Certificate" value: [cert GetEncoded]];

CkoPublicKey *pubkey = [[CkoPublicKey alloc] init];
[cert GetPublicKey: pubkey];

CkoXml *xmlPubKey = [[CkoXml alloc] init];
[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" value: [xmlPubKey GetChildContent: @"Modulus"]];
[xml UpdateChildContent: @"SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Exponent" value: [xmlPubKey GetChildContent: @"Exponent"]];
[xml UpdateChildContent: @"SignaturePubKeyInfo|SignatureVersion" value: @"A005"];
[xml UpdateChildContent: @"PartnerID" value: @""];
[xml UpdateChildContent: @"UserID" value: @""];

NSLog(@"%@",[xml GetXml]);