Sample code for 30+ languages & platforms
Android™

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 Android™ Downloads

Android™
// Important: Don't forget to include the call to System.loadLibrary
// as shown at the bottom of this code sample.
package com.test;

import android.app.Activity;
import com.chilkatsoft.*;

import android.widget.TextView;
import android.os.Bundle;

public class SimpleActivity extends Activity {

  private static final String TAG = "Chilkat";

  // Called when the activity is first created.
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

    CkCert cert = new CkCert();
    success = cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123");
    if (success == false) {
        Log.i(TAG, cert.lastErrorText());
        return;
        }

    CkXml xml = new CkXml();
    xml.put_Tag("SignaturePubKeyOrderData");
    xml.AddAttribute("xmlns","http://www.ebics.org/S001");
    xml.AddAttribute("xmlns:ds","http://www.w3.org/2000/09/xmldsig#");
    xml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
    xml.AddAttribute("xsi:schemaLocation","http://www.ebics.org/S002");
    xml.UpdateChildContent("SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509IssuerName",cert.issuerDN());
    xml.UpdateChildContent("SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509SerialNumber",cert.serialNumber());
    xml.UpdateChildContent("SignaturePubKeyInfo|ds:X509Data|ds:X509Certificate",cert.getEncoded());

    CkPublicKey pubkey = new CkPublicKey();
    cert.GetPublicKey(pubkey);

    CkXml xmlPubKey = new CkXml();
    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",xmlPubKey.getChildContent("Modulus"));
    xml.UpdateChildContent("SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Exponent",xmlPubKey.getChildContent("Exponent"));
    xml.UpdateChildContent("SignaturePubKeyInfo|SignatureVersion","A005");
    xml.UpdateChildContent("PartnerID","");
    xml.UpdateChildContent("UserID","");

    Log.i(TAG, xml.getXml());

  }

  static {
      System.loadLibrary("chilkat");

      // Note: If the incorrect library name is passed to System.loadLibrary,
      // then you will see the following error message at application startup:
      //"The application <your-application-name> has stopped unexpectedly. Please try again."
  }
}