Module cipher
cipher module do encrypt or decrypt base on OpenSSL EVP API.
Usage:
cipher = require('openssl').cipher
Functions
| returns... () | |
| list ([alias]) | list all support cipher algs |
| get (alg) | get EVP_CIPHER cipher algorithm object
This function retrieves a cipher algorithm object by name, NID, or ASN1 object. |
| fetch (alg[, options]) | fetch evp_cipher object with provider support (OpenSSL 3.0+) |
| get_provider_name () | get provider name for a cipher (OpenSSL 3.0+) |
| __gc () | free a fetched evp_cipher object (OpenSSL 3.0+) |
| encrypt (alg, input, key[, iv[, pad[, engine]]]) | quick encrypt |
| decrypt (alg, input, key[, iv[, pad[, engine]]]) | quick decrypt |
| cipher (alg, encrypt, input, key[, iv[, pad[, engine]]]) | quick encrypt or decrypt |
| new (alg, encrypt[, key[, iv[, pad=true[, engine]]]]) | create EVP_CIPHER_CTX cipher context for encryption or decryption
This function creates a new cipher context for the specified algorithm. |
| encrypt_new (alg, key[, iv[, engine[, pad=true]]]) | get evp_cipher_ctx object for encrypt |
| decrypt_new (alg, key[, iv[, engine[, pad=true]]]) | get evp_cipher_ctx object for decrypt |
Class evp_cipher
| evp_cipher:info () | get infomation of evp_cipher object |
| evp_cipher:BytesToKey (data, string, md) | derive key |
| evp_cipher:new (encrypt, key[, iv[, pad[, engine]]]) | get evp_cipher_ctx to encrypt or decrypt |
| evp_cipher:encrypt_new (key[, iv[, pad[, engine]]]) | get evp_cipher_ctx to encrypt |
| evp_cipher:decrypt_new (key[, iv[, pad[, engine]]]) | get evp_cipher_ctx to decrypt |
| evp_cipher:cipher (encrypt, input, key[, iv[, pad[, engine]]]) | do encrypt or decrypt |
| evp_cipher:encrypt (input, key[, iv[, pad[, engine]]]) | do encrypt |
| evp_cipher:decrypt (input, key[, iv[, pad[, engine]]]) | do decrypt |
Class evp_cipher_ctx
| evp_cipher_ctx:init (key[, iv]) | init encrypt/decrypt cipher ctx |
| evp_cipher_ctx:update (data[, isAAD=false]) | feed data or set AAD to do cipher |
| evp_cipher_ctx:final () | get result of cipher |
| evp_cipher_ctx:info () | get infomation of evp_cipher_ctx object |
| evp_cipher_ctx:padding (pad) | set padding mode for cipher context |
| evp_cipher_ctx:ctrl (type, arg) | control cipher context with various parameters |
| evp_cipher_ctx:__gc () | release cipher context resources |
Functions
- returns... ()
-
Returns:
-
various
return value
- list ([alias])
-
list all support cipher algs
Parameters:
- alias boolean include alias names for cipher alg, default true (optional)
Returns:
-
all
cipher methods
- get (alg)
-
get EVP_CIPHER cipher algorithm object
This function retrieves a cipher algorithm object by name, NID, or ASN1 object. The returned object can be used with cipher.new() to create a cipher context.
Parameters:
- alg string, integer or openssl.asn1_object algorithm name, NID, or ASN1 object
Returns:
-
openssl.evp_cipher
cipher algorithm object
Or
- nil if algorithm not found
- string error message
See also:
Usage:
local cipher = require('openssl').cipher -- Get cipher by name local aes_256_cbc = cipher.get('AES-256-CBC') -- Get cipher by NID local aes_256_cbc_nid = cipher.get(423) -- NID for AES-256-CBC -- Use with cipher.new() local ctx = cipher.new(aes_256_cbc, 'key', 'iv', true) -- true for encryption local encrypted = ctx:update('data') encrypted = encrypted .. ctx:final()
- fetch (alg[, options])
-
fetch evp_cipher object with provider support (OpenSSL 3.0+)
Parameters:
- alg string algorithm name (e.g., ‘AES-256-CBC’, ‘ChaCha20-Poly1305’)
- options table optional table with ‘provider’ and ‘properties’ fields (optional)
Returns:
- openssl.evp_cipher cipher object mapping EVP_CIPHER in openssl or nil on failure
- string error message if failed
See also:
Usage:
-- Fetch with default provider local aes = cipher.fetch('AES-256-CBC') -- Fetch from specific provider local fips_aes = cipher.fetch('AES-256-CBC', {provider = 'fips', properties = 'fips=yes'})
- get_provider_name ()
-
get provider name for a cipher (OpenSSL 3.0+)
Returns:
-
string
provider name
Or
-
nil
if cipher has no provider or provider has no name
- __gc ()
-
free a fetched evp_cipher object (OpenSSL 3.0+)
Returns:
-
nil
always returns nil
- encrypt (alg, input, key[, iv[, pad[, engine]]])
-
quick encrypt
Parameters:
- alg string, integer or asn1_object alg name, nid or object identity
- input string data to encrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
string
result encrypt data
- decrypt (alg, input, key[, iv[, pad[, engine]]])
-
quick decrypt
Parameters:
- alg string, integer or asn1_object name, nid or object identity
- input string data to decrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
string
result decrypt data
- cipher (alg, encrypt, input, key[, iv[, pad[, engine]]])
-
quick encrypt or decrypt
Parameters:
- alg string, integer or asn1_object alg name, nid or object identity
- encrypt boolean true for encrypt,false for decrypt
- input string data to encrypt or decrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
string
result
- new (alg, encrypt[, key[, iv[, pad=true[, engine]]]])
-
create EVP_CIPHER_CTX cipher context for encryption or decryption
This function creates a new cipher context for the specified algorithm. The context can be used for encryption or decryption operations.
Parameters:
- alg string, integer, openssl.asn1_object or openssl.evp_cipher algorithm name, NID, ASN1 object, or cipher object
- encrypt boolean true for encryption, false for decryption
- key string secret key (required for most ciphers) (optional)
- iv string initialization vector (required for CBC mode) (optional)
- pad boolean true for PKCS#7 padding (default true)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
openssl.evp_cipher_ctx
cipher context object
Or
- nil on error
- string error message
See also:
Usage:
local cipher = require('openssl').cipher -- Create AES-256-CBC encryption context local ctx = cipher.new('AES-256-CBC', true, '32_byte_key_here', '16_byte_iv_here') -- Create context from cipher object local aes = cipher.get('AES-256-CBC') local ctx2 = cipher.new(aes, false, 'key', 'iv') -- decryption context -- Use without padding local ctx3 = cipher.new('AES-256-ECB', true, 'key', nil, false) -- no padding
- encrypt_new (alg, key[, iv[, engine[, pad=true]]])
-
get evp_cipher_ctx object for encrypt
Parameters:
- alg string, integer or asn1_object alg name, nid or object identity
- key string secret key
- iv string (optional)
- engine openssl.engine custom crypto engine (optional)
- pad boolean true for padding (default true)
Returns:
-
evp_cipher_ctx
cipher object mapping EVP_CIPHER_CTX in openssl
See also:
- decrypt_new (alg, key[, iv[, engine[, pad=true]]])
-
get evp_cipher_ctx object for decrypt
Parameters:
- alg string, integer or asn1_object alg name, nid or object identity
- key string secret key
- iv string (optional)
- engine openssl.engine custom crypto engine (optional)
- pad boolean true for padding (default true)
Returns:
-
evp_cipher_ctx
cipher object mapping EVP_CIPHER_CTX in openssl
See also:
Class evp_cipher
openssl.evp_cipher object
- evp_cipher:info ()
-
get infomation of evp_cipher object
Returns:
-
table
info keys include name,block_size,key_length,iv_length,flags,mode
- evp_cipher:BytesToKey (data, string, md)
-
derive key
Parameters:
- data string derive data
- string string[opt] salt salt will get strong security
- md ev_digest or string digest method used to diver key, default with ‘sha1’
Returns:
- evp_cipher:new (encrypt, key[, iv[, pad[, engine]]])
-
get evp_cipher_ctx to encrypt or decrypt
Parameters:
- encrypt boolean true for encrypt,false for decrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
evp_cipher_ctx
evp_cipher_ctx object
See also:
- evp_cipher:encrypt_new (key[, iv[, pad[, engine]]])
-
get evp_cipher_ctx to encrypt
Parameters:
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
evp_cipher_ctx
evp_cipher_ctx object
See also:
- evp_cipher:decrypt_new (key[, iv[, pad[, engine]]])
-
get evp_cipher_ctx to decrypt
Parameters:
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
evp_cipher_ctx
evp_cipher_ctx object
See also:
- evp_cipher:cipher (encrypt, input, key[, iv[, pad[, engine]]])
-
do encrypt or decrypt
Parameters:
- encrypt boolean true for encrypt,false for decrypt
- input string data to encrypt or decrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
string
result
- evp_cipher:encrypt (input, key[, iv[, pad[, engine]]])
-
do encrypt
Parameters:
- input string data to encrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
string
result
- evp_cipher:decrypt (input, key[, iv[, pad[, engine]]])
-
do decrypt
Parameters:
- input string data to decrypt
- key string secret key
- iv string (optional)
- pad boolean true for padding default (optional)
- engine openssl.engine custom crypto engine (optional)
Returns:
-
string
result
Class evp_cipher_ctx
openssl.evp_cipher_ctx object
- evp_cipher_ctx:init (key[, iv])
-
init encrypt/decrypt cipher ctx
Parameters:
Returns:
-
boolean
result and followd by error reason
- evp_cipher_ctx:update (data[, isAAD=false])
-
feed data or set AAD to do cipher
Parameters:
- data string message or AAD
- isAAD boolean indicate to set AAD (default false)
Returns:
-
string
partial results, and “” when set AAD
- evp_cipher_ctx:final ()
-
get result of cipher
Returns:
-
string
result last result
- evp_cipher_ctx:info ()
-
get infomation of evp_cipher_ctx object
Returns:
-
table
info keys include block_size,key_length,iv_length,flags,mode,nid,type, evp_cipher
- evp_cipher_ctx:padding (pad)
-
set padding mode for cipher context
Parameters:
- pad boolean true to enable padding, false to disable
Returns:
-
nil
no return value
- evp_cipher_ctx:ctrl (type, arg)
-
control cipher context with various parameters
Parameters:
- type number control command type
- arg number or string control argument
Returns:
-
boolean or string
result depends on control type
- evp_cipher_ctx:__gc ()
-
release cipher context resources
Returns:
-
number
0