Sample code for 30+ languages & platforms
Lua

Create PEM-encoded PKCS#7 Detached Signature

See more Digital Signatures Examples

Demonstrates how to create a PKCS7 PEM-encoded object containing a detached signature.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local cert = chilkat.Cert.new()

-- Load the cert and private key.
local success = cert:load_pfx_file("qa_data/pfx/myCertAndKey.p12", "password")
if not success then
    print(cert.last_error_text)
    return
end

local crypt = chilkat.Crypt2.new()

success = crypt:set_signing_cert(cert)
if not success then
    print(crypt.last_error_text)
    return
end

-- Use SHA-256
crypt.hash_algorithm = "sha256"

-- Hash the utf-8 byte representation of the string
crypt.charset = "utf-8"

-- Return the result in base64
crypt.encoding_mode = "base64Mime"

-- Sign some text to create a detached signature (i.e. a signature that does not include the signed data)
local textToSign = "This is the text to be hashed and signed."
local sigBase64 = crypt:sign_string_enc(textToSign)
if not crypt.last_method_success then
    print(crypt.last_error_text)
    return
end

print(sigBase64)

-- The result:

-- MIIWbgYJKoZIhvcNAQcCoIIWXzCCFlsCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg
-- ghMXMIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQx
-- ...
-- ...

-- If we want it in PEM format with just LF line-endings:
local sb = chilkat.StringBuilder.new()
-- Just LF line endings, not CRLF.
local crlf = false
sb:append_line("-----BEGIN PKCS7-----", crlf)
sb:append(sigBase64)
sb:append_line("-----END PKCS7-----", crlf)
sb:to_lf()

-- Save to a file.
sb:write_file("c:/temp/qa_output/sig.pem", "utf-8", false)

-- Examine..
print(sb:get_as_string())

-- Result is:

-- -----BEGIN PKCS7-----
-- MIIWbgYJKoZIhvcNAQcCoIIWXzCCFlsCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg
-- ghMXMIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQx
-- DjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUG
-- A1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMw
-- MDkyMjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3Rh
-- bGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBS
-- b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTuf
-- ClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlN
-- AJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45Rnij
-- MCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9
-- ...
-- ...
-- -----END PKCS7-----