Lua Requires Chilkat v11.0.0+
Lua
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 Lua Downloads
local chilkat = require("chilkat")
-- 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>
local cert = chilkat.Cert.new()
local success = cert:load_pfx_file("qa_data/pfx/cert_test123.pfx", "test123")
if not success then
print(cert.last_error_text)
return
end
local xml = chilkat.Xml.new()
xml.tag = "SignaturePubKeyOrderData"
xml:add_attribute("xmlns", "http://www.ebics.org/S001")
xml:add_attribute("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#")
xml:add_attribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
xml:add_attribute("xsi:schemaLocation", "http://www.ebics.org/S002")
xml:update_child_content("SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509IssuerName", cert.issuer_dn)
xml:update_child_content("SignaturePubKeyInfo|ds:X509Data|X509IssuerSerial|ds:X509SerialNumber", cert.serial_number)
xml:update_child_content("SignaturePubKeyInfo|ds:X509Data|ds:X509Certificate", cert:get_encoded())
local pubkey = chilkat.PublicKey.new()
cert:get_public_key(pubkey)
local xmlPubKey = chilkat.Xml.new()
xmlPubKey:load_xml(pubkey:get_xml())
-- The public key XML will look like this:
--
-- <RSAPublicKey>
-- <Modulus>...</Modulus>
-- <Exponent>...</Exponent>
-- </RSAPublicKey>
xml:update_child_content("SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Modulus", xmlPubKey:get_child_content("Modulus"))
xml:update_child_content("SignaturePubKeyInfo|PubKeyValue|ds:RSAPublicKey|ds:Exponent", xmlPubKey:get_child_content("Exponent"))
xml:update_child_content("SignaturePubKeyInfo|SignatureVersion", "A005")
xml:update_child_content("PartnerID", "")
xml:update_child_content("UserID", "")
print(xml:get_xml())