Lua Requires Chilkat v9.5.0.79+
Lua
Create CAdES-T Signature using Aruba TSA Server (servizi.arubapec.it)
See more CAdES Examples
Demonstrates how to create a signature with an external timestamp (using the Aruba TSA Server) that certifies the time of signing.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local crypt = chilkat.Crypt2.new()
-- This example will use a certificate + private key from a .pfx/.p12 file.
-- On Windows systems, it is also possible to use certs on smartcards/usb tokens or certs pre-installed in the Windows registry.
local cert = chilkat.Cert.new()
local pfxPath = "qa_data/pfx/myCertAndKey.p12"
local pfxPassword = "test123"
local success = cert:load_pfx_file(pfxPath, pfxPassword)
if not success then
print(cert.last_error_text)
return
end
success = crypt:set_signing_cert(cert)
-- Use SHA-256 rather than the default of SHA-1
crypt.hash_algorithm = "sha256"
-- Create JSON that tells Chilkat what signing attributes to include:
local attrs = chilkat.JsonObject.new()
attrs:update_bool("contentType", true)
attrs:update_bool("signingTime", true)
attrs:update_bool("messageDigest", true)
attrs:update_bool("signingCertificateV2", true)
-- A CAdES-T signature is one that includes a timestampToken created by an online TSA (time stamping authority).
-- We must include the TSA's URL, as well as a few options to indicate what is desired.
-- This example uses the Aruba TSA server, which requires a login/password for the HTTPS request.
attrs:update_bool("timestampToken.enabled", true)
attrs:update_string("timestampToken.tsaUrl", "https://servizi.arubapec.it/tsa/ngrequest.php")
attrs:update_string("timestampToken.tsaUsername", "arubaTsaUsername")
attrs:update_string("timestampToken.tsaPassword", "arubaTsaPassword")
attrs:update_bool("timestampToken.addNonce", false)
attrs:update_bool("timestampToken.requestTsaCert", true)
attrs:update_string("timestampToken.hashAlg", "sha256")
crypt.signing_attributes = attrs:emit()
local inFile = "qa_data/json/sample.json"
local outFile = "qa_output/sample_cades_t.p7m"
-- This creates the CAdES-T signature. During the signature creation, it
-- communicates with the TSA to get a timestampToken.
success = crypt:create_p7_m(inFile, outFile)
if not success then
print(crypt.last_error_text)
return
end
print("Success.")