Sample code for 30+ languages & platforms
Lua Requires Chilkat v11.0.0+

Install PFX Certificates and Private Keys to Windows

See more PFX/P12 Examples

Demonstrates how to install the certificates and private keys contained in a PFX to the Windows certificate stores.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

local pfx = chilkat.Pfx.new()

local success = pfx:load_pfx_file("qa_data/pfx/test_secret.pfx", "secret")
if not success then
    print(pfx.last_error_text)
    return
end

-- See the online reference documentation for more information about the ImportToWindows method.

-- Mark imported privae keys as exportable.
local exportable = true

-- If userProtected is true, the user is to be notified through a dialog box or other method when certain attempts to use this key are made.
local userProtected = false

-- If machineKeyset is true, the private keys are stored under the local computer and not under the current user.
local machineKeyset = false

-- If allowOverwriteKey is true, allow overwrite of the existing key.
local allowOverwriteKey = false

-- If allowExport is true, then the imported key can later be exported back to a PFX.
-- (It also allows for applications to directly access the private key material.)
local allowExport = true

-- Indicate where to import types of certs.
local leafStore = "My"
local intermediateStore = "CertificationAuthority"
local rootStore = "AuthRoot"

success = pfx:import_to_windows(exportable, userProtected, machineKeyset, allowOverwriteKey, allowExport, leafStore, intermediateStore, rootStore, "")
if not success then
    print(pfx.last_error_text)
    return
end

-- Show information about the certificates imported
local json = chilkat.JsonObject.new()
pfx:get_last_json_data(json)

json.emit_compact = false
print(json:emit())

-- Sample output:

-- {
--   "exportable": true,
--   "userProtected": false,
--   "machineKeyset": false,
--   "allowOverwriteKey": false,
--   "allowExport": true,
--   "key": [
--     {
--       "name": "{F09B755A-1E90-444D-9851-02B86CA14961}",
--       "storageProvider": "Microsoft Software Key Storage Provider"
--     }
--   ],
--   "cert": [
--     {
--       "DN": "...",
--       "type": "intermediate",
--       "storeName": "CertificationAuthority",
--       "imported": true
--     },
--     {
--       "DN": "...",
--       "type": "root",
--       "storeName": "AuthRoot",
--       "imported": true
--     },
--     {
--       "DN": "....",
--       "type": "leaf",
--       "storeName": "My",
--       "keyContainer": "{345D4EAD-B8DD-4150-9A1F-4BC6437E77A2}",
--       "machineKeyset": true,
--       "imported": true
--     }
--   ]
-- }

print("Success.")