Lua Requires Chilkat v9.5.0.75+
Lua
Create CAdES-BES .p7m for FatturaPA XML Invoice
See more Digital Signatures Examples
Demonstrates how to create a CAdES BES invoice.xml.p7m for the Italian FatturaPA exchange system.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local crypt = chilkat.Crypt2.new()
-- Use a digital certificate and private key from a PFX file (.pfx or .p12).
local pfxPath = "qa_data/pfx/cert_test123.pfx"
local pfxPassword = "test123"
local cert = chilkat.Cert.new()
local success = cert:load_pfx_file(pfxPath, pfxPassword)
if not success then
print(cert.last_error_text)
return
end
-- Provide the signing cert (with associated private key).
success = crypt:set_signing_cert(cert)
if not success then
print(crypt.last_error_text)
return
end
-- Indicate that SHA-256 should be used.
crypt.hash_algorithm = "sha256"
-- Specify the signed attributes to be included.
-- (This is what makes it CAdES-BES compliant.)
local jsonSignedAttrs = chilkat.JsonObject.new()
jsonSignedAttrs:update_int("contentType", 1)
jsonSignedAttrs:update_int("signingTime", 1)
jsonSignedAttrs:update_int("messageDigest", 1)
jsonSignedAttrs:update_int("signingCertificateV2", 1)
crypt.signing_attributes = jsonSignedAttrs:emit()
local inFile = "qa_data/xml/IT01234567890_11002.xml"
local sigFile = "qa_output/IT01234567890_11002.xml.p7m"
-- Create the CAdES-BES signature, which contains the original data.
success = crypt:create_p7_m(inFile, sigFile)
if not success then
print(crypt.last_error_text)
return
end
print("Success.")