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:

  1. openssl.provider loaded provider object or nil on failure
  2. 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
generated by LDoc 1.5.0 Last updated 2026-02-12 13:58:19