Module provider
Provider module for OpenSSL 3.0+ provider API support
This module provides Lua bindings for OpenSSL 3.0+ provider functionality, allowing loading, unloading, and querying of cryptographic providers.
Note: This module is only available with OpenSSL 3.0 or later. LibreSSL does not support the provider API, so it is excluded.
Usage:
local provider = require('openssl').provider
local default_provider = provider.load('default')
Functions
| load (name[, retain]) | Load a provider by name |
| name () | Get the name of a loaded provider |
| available () | Check if a provider is available |
| get_params (params) | Get provider parameters |
| unload () | Unload a provider |
| self_test () | Self test a provider |
| list () | List all available providers |
| get (name) | Get provider by name without loading |
| __gc () | Provider object garbage collection |
| __tostring () | Provider object string representation |
Functions
- load (name[, retain])
-
Load a provider by name
Parameters:
- name string the name of the provider to load (e.g., ‘default’, ‘fips’, ‘legacy’)
- retain boolean if true, the provider will be retained even after all references are released (optional)
Returns:
- openssl.provider loaded provider object or nil on failure
- string error message if failed
Usage:
local default = provider.load('default') local fips = provider.load('fips', true)
- name ()
-
Get the name of a loaded provider
Returns:
-
string
provider name
Usage:
local prov = provider.load('default') print(prov:name()) -- prints "default"
- available ()
-
Check if a provider is available
Returns:
-
boolean
true if provider is available and active
Usage:
local prov = provider.load('default') if prov:available() then print("Provider is active") end
- get_params (params)
-
Get provider parameters
Parameters:
- params table table of parameter names to query
Returns:
-
table
table of parameter values
Usage:
local prov = provider.load('default') local params = prov:get_params({'name', 'version', 'buildinfo'}) for k, v in pairs(params) do print(k, v) end
- unload ()
-
Unload a provider
Returns:
-
boolean
true on success
Usage:
local prov = provider.load('legacy') -- ... use provider prov:unload()
- self_test ()
-
Self test a provider
Returns:
-
boolean
true if self test passes
Usage:
local prov = provider.load('fips') if prov:self_test() then print("FIPS provider self-test passed") end
- list ()
-
List all available providers
Returns:
-
table
array of provider names
Usage:
local providers = provider.list() for i, name in ipairs(providers) do print(name) end
- get (name)
-
Get provider by name without loading
Parameters:
- name string the name of the provider
Returns:
-
openssl.provider
provider object if already loaded, nil otherwise
Usage:
local prov = provider.get('default') if prov then print("Default provider is loaded") end
- __gc ()
-
Provider object garbage collection
Returns:
-
nil
always returns nil
- __tostring ()
-
Provider object string representation
Returns:
-
string
string representation of provider