=encoding utf-8

E<lt>a name="unreleased"E<gt></aE<gt>

=head2 [Unreleased]


E<lt>a name="1.7.1"E<gt></aE<gt>

=head2 [1.7.1] - 2026-01-13


=head3 features


=over


=item *

fix table.unpack nil handling issue specific to LuaJIT bytecode compilation L<5de40a8|https://github.com/fffonion/lua-resty-openssl/commit/5de40a8675a9c3013c848be5a5897c16f7e0b12b>


=back

E<lt>a name="1.7.0"E<gt></aE<gt>

=head2 [1.7.0] - 2025-10-28


=head3 features


=over


=item *

B<crypto:> add crypto.memcmp bindings L<c66d7f2|https://github.com/fffonion/lua-resty-openssl/commit/c66d7f2cb8a0329b3af4087f76aa95e69ccc022e>


=back

E<lt>a name="1.6.4"E<gt></aE<gt>

=head2 [1.6.4] - 2025-09-08


=head3 bug fixes


=over


=item *

B<jwk:> fix EC key x and y padding L<42cac34|https://github.com/fffonion/lua-resty-openssl/commit/42cac34d5749c8b629002f66e8bbc8ce7ff54303>


=back

E<lt>a name="1.6.3"E<gt></aE<gt>

=head2 [1.6.3] - 2025-09-04


=head3 bug fixes


=over


=item *

B<jwk:> allow to load an ECX public key from private JWK L<fb800c1|https://github.com/fffonion/lua-resty-openssl/commit/fb800c15951d42edb2c5cd462800f6c0ef5dbc06>


=back

E<lt>a name="1.6.2"E<gt></aE<gt>

=head2 [1.6.2] - 2025-09-02


=head3 bug fixes


=over


=item *

B<ci:> bump luarocks L<e2f97c2|https://github.com/fffonion/lua-resty-openssl/commit/e2f97c223e465fee38c97d3c1fd5ddc2e17f8341>

=item *

B<jwk:> fix endianess when loading JWK ECX keys L<5a2aad1|https://github.com/fffonion/lua-resty-openssl/commit/5a2aad134262bd38b036e0e1494c4b7e0fb85df0>


=back

E<lt>a name="1.6.1"E<gt></aE<gt>

=head2 [1.6.1] - 2025-04-16


=head3 bug fixes


=over


=item *

B<kdf:> fix derive API may not work if options_count is set to 1 L<ae9d2ae|https://github.com/fffonion/lua-resty-openssl/commit/ae9d2aef9dd762a2af55addb83a2349abca994f4>


=back

E<lt>a name="1.6.0"E<gt></aE<gt>

=head2 [1.6.0] - 2025-04-14


=head3 bug fixes


=over


=item *

B<pkey:> use EVP_PKEY_fromdata to load JWK L<ff0d02c|https://github.com/fffonion/lua-resty-openssl/commit/ff0d02c4d149efd9c816a65750b4c662613a6e2b>

=item *

B<pkey:> iv should be optional in cipher.init() (L<#204|https://github.com/fffonion/lua-resty-openssl/issues/204>) L<76a1b0e|https://github.com/fffonion/lua-resty-openssl/commit/76a1b0e602b6d1d13f11968ed78a81f857891ebf>


=back


=head3 features


=over


=item *

B<pkey:> add pkey:get_size and allow only return NID of key type L<b671676|https://github.com/fffonion/lua-resty-openssl/commit/b6716769141cef4d31b7b668a0b9d6b62f8f20e2>


=back

E<lt>a name="1.5.2"E<gt></aE<gt>

=head2 [1.5.2] - 2025-02-05


=head3 bug fixes


=over


=item *

pkey.new() failed, if compile pkey.lua to LuaJIT bytecode (L<#193|https://github.com/fffonion/lua-resty-openssl/issues/193>) L<085f329|https://github.com/fffonion/lua-resty-openssl/commit/085f3298720cbe07d02a21daec6eebdf52e35a54>

=item *

B<pkey:> fix compose of ecx key not effective L<1dd84ae|https://github.com/fffonion/lua-resty-openssl/commit/1dd84ae5f7c5f5421be7ce5fb155d249238fed58>


=back


=head3 features


=over


=item *

B<compat:> add dev support for nginx 1.27.1 (L<#200|https://github.com/fffonion/lua-resty-openssl/issues/200>) L<b75248c|https://github.com/fffonion/lua-resty-openssl/commit/b75248cfb8729b2ea953eb159060b248a4f89ea1>


=back

E<lt>a name="1.5.1"E<gt></aE<gt>

=head2 [1.5.1] - 2024-07-25


E<lt>a name="1.5.0"E<gt></aE<gt>

=head2 [1.5.0] - 2024-07-23


=head3 bug fixes


=over


=item *

B<asn1:> correct time_t to be 64 bits type (L<#171|https://github.com/fffonion/lua-resty-openssl/issues/171>) L<7d6d8b5|https://github.com/fffonion/lua-resty-openssl/commit/7d6d8b5d241374427da2231612e1e4552ff4cf1d>

=item *

B<bn:> fix potential use-after-free in bn.new (L<#177|https://github.com/fffonion/lua-resty-openssl/issues/177>) L<224fae6|https://github.com/fffonion/lua-resty-openssl/commit/224fae68ca8716fbd97a2a94d194237aaa2eaa58>

=item *

B<objects:> fix a buffer overflow issue in find_sigid_algs. (L<#175|https://github.com/fffonion/lua-resty-openssl/issues/175>) L<d94064c|https://github.com/fffonion/lua-resty-openssl/commit/d94064cc7754c744b325fcd2908bfce26915b76e>

=item *

B<param:> fix issue when gettable schema may be overwritten by settable schema L<7669555|https://github.com/fffonion/lua-resty-openssl/commit/766955521cee5c7ed6a7e64a1439e3ca38c2f958>

=item *

B<param:> save converted value to prevent potential use-after-free L<8c366c2|https://github.com/fffonion/lua-resty-openssl/commit/8c366c22c796b0b44bc49d4953084a09bcba4e6c>

=item *

B<pkey:> fix potential use-after-free in pkey.paramgen (L<#176|https://github.com/fffonion/lua-resty-openssl/issues/176>) L<e924ee0|https://github.com/fffonion/lua-resty-openssl/commit/e924ee0454e1d95b63f62b660d6c0090bfeabb26>

=item *

B<x509.\I<:> fix potential use-after-free when get or set subject_alt_name, info_access and dist_points L<407d31e|https://github.com/fffonion/lua-resty-openssl/commit/407d31ec31f2fe8cb968b1d7d140f717ef620290>

=item *

B<x509.csr:> fix potential use-after-free in set_extension and add_extension L<a0711de|https://github.com/fffonion/lua-resty-openssl/commit/a0711de99cf57e6d8fa62f03abba46e02360063d>

=item *

B<x509.store:> fix potential use-after-free in store:verify and store:check_revocation L<b16f759|https://github.com/fffonion/lua-resty-openssl/commit/b16f759c28ed9929d53516af34804d39f49661bf>

=item *

B<x509.store:> fix the string is not NUL terminated in set_purpose (L<#174|https://github.com/fffonion/lua-resty-openssl/issues/174>) L<a88f1ba|https://github.com/fffonion/lua-resty-openssl/commit/a88f1ba30761e91cc1c2ec1dda3a82f8f4898422>


=back

E<lt>a name="1.4.0"E<gt></aE<gt>

=head2 [1.4.0] - 2024-05-27


=head3 bug fixes


=over


=item *

B<ec:> add missing cdef for EC_POINT_free L<2093e88|https://github.com/fffonion/lua-resty-openssl/commit/2093e8814ccfbe830ba594a71f05870cac208e9c>


=back


=head3 features


=over


=item *

B<pkey:> allow pkey.new to compose from parameters L<91a30f6|https://github.com/fffonion/lua-resty-openssl/commit/91a30f6988e3fc696363ce1445b49a3f6ee8f35e>

=item *

B<pkey:> add pkey:verify_raw L<0016308|https://github.com/fffonion/lua-resty-openssl/commit/0016308c9e3a2ccfdfe674ede64e462060f7b13b>


=back

E<lt>a name="1.3.1"E<gt></aE<gt>

=head2 [1.3.1] - 2024-04-22


=head3 bug fixes


=over


=item *

B<aux/jwk:> remove ecx.d if exporting as public key L<9d34ff8|https://github.com/fffonion/lua-resty-openssl/commit/9d34ff8fd79debbcf155f74af0b161083b6a8385>

=item *

B<aux/nginx:> fix the typo of get_socket_ssl in the stream module L<ad18b3c|https://github.com/fffonion/lua-resty-openssl/commit/ad18b3c18c7ec3db175aabfbf6928141c3b53b17>

=item *

B<aux/nginx:> remove extra sanity test that prevent usage of lua-kong-nginx-module L<2323526|https://github.com/fffonion/lua-resty-openssl/commit/2323526766b131bde94052449c41a331e93288bd>


=back

E<lt>a name="1.3.0"E<gt></aE<gt>

=head2 [1.3.0] - 2024-04-15


=head3 features


=over


=item *

B<aux/nginx:> use lua-kong-nginx-module's get_socket_ssl when available (L<#3|https://github.com/fffonion/lua-resty-openssl/issues/3>) L<48c5107|https://github.com/fffonion/lua-resty-openssl/commit/48c51077444e375b2cdd5155693b49d92a82d4a1>


=back

E<lt>a name="1.2.1"E<gt></aE<gt>

=head2 [1.2.1] - 2024-02-27


=head3 bug fixes


=over


=item *

B<aux/nginx:> support openresty 1.25.3 in FFI path L<90b0a47|https://github.com/fffonion/lua-resty-openssl/commit/90b0a47df499b1def08a07a5183ebf6bad8c6095>


=back

E<lt>a name="1.2.0"E<gt></aE<gt>

=head2 [1.2.0] - 2023-12-28


=head3 bug fixes


=over


=item *

B<compat:> works better with plain luajit L<d23b34a|https://github.com/fffonion/lua-resty-openssl/commit/d23b34ae8b3349342d5f82d90dbfe76696dd2ca4>


=back


=head3 features


=over


=item *

B<bn:> add from_mpi, to_mpi and set API L<073c943|https://github.com/fffonion/lua-resty-openssl/commit/073c943bf74cce7bd6ce90ee97dfc9b753af3cf2>

=item *

B<cipher:> add set_buffer_size API L<3d0a51c|https://github.com/fffonion/lua-resty-openssl/commit/3d0a51ccab0c2dd46f9eb8088fa2f767eff02a61>

=item *

B<mac:> add reset API L<40fdbbb|https://github.com/fffonion/lua-resty-openssl/commit/40fdbbbddc078c01ea40b8ec8b21257d0e3fefa6>

=item *

B<openssl:> list functions can now optionally drop provider name L<b36ccba|https://github.com/fffonion/lua-resty-openssl/commit/b36ccba3fce9a1b51a0bc8c23d5e9843e99a2052>


=back


=head3 performance improvements


=over


=item *

B<cipher:> improve performance on cipher L<ba5de3e|https://github.com/fffonion/lua-resty-openssl/commit/ba5de3e53e1b83de5b8f75d64c83eb3e507f386a>

=item *

B<kdf:> use table.nkeys for params L<dac54bf|https://github.com/fffonion/lua-resty-openssl/commit/dac54bf7685d907518e80ab96a594753cdf0c0e1>


=back

E<lt>a name="1.1.0"E<gt></aE<gt>

=head2 [1.1.0] - 2023-12-15


=head3 features


=over


=item *

B<err:> standardize error format and add new API to get reason and library name L<d155657|https://github.com/fffonion/lua-resty-openssl/commit/d155657e60cdfdb0634d0c3147b184e8543b972e>

=item *

B<pkey:> support pass in ctrl str options L<2e401b3|https://github.com/fffonion/lua-resty-openssl/commit/2e401b335bce759fe8a7a48d5b23cb33a46cc9ba>


=back

E<lt>a name="1.0.2"E<gt></aE<gt>

=head2 [1.0.2] - 2023-11-21


=head3 bug fixes


=over


=item *

B<jwk:> fix EC key dump parameters (L<#131|https://github.com/fffonion/lua-resty-openssl/issues/131>) L<c659347|https://github.com/fffonion/lua-resty-openssl/commit/c659347b356acfcb808ce659ae3094ba7fb2b9f1>


=back

E<lt>a name="1.0.1"E<gt></aE<gt>

=head2 [1.0.1] - 2023-11-07


=head3 bug fixes


=over


=item *

B<jwk:> return error if exporting private key from public key (L<#128|https://github.com/fffonion/lua-resty-openssl/issues/128>) L<3a1bc27|https://github.com/fffonion/lua-resty-openssl/commit/3a1bc273e2a3f41faa7eb68f2939fd1fc25cdecb>


=back

E<lt>a name="1.0.0"E<gt></aE<gt>

=head2 [1.0.0] - 2023-11-03


=head3 code refactoring


=over


=item *

B<\I<:> remove unused cdefs L<84abc0a|https://github.com/fffonion/lua-resty-openssl/commit/84abc0ab99b3d649c7fe4575cf13867cf96a94ef>

=item *

B<\I<:> BREAKING: drop OpenSSL 1.0.2, 1.1.0 and BoringSSL support L<99b493e|https://github.com/fffonion/lua-resty-openssl/commit/99b493e671886e68c07b1b9c9472075c22ce38e9>


=back


=head3 features


=over


=item *

B<fips:> add get_fips_version_text L<935227b|https://github.com/fffonion/lua-resty-openssl/commit/935227b348ba4416f2f4d671dd94f7910cbf9e61>


=back

E<lt>a name="0.8.26"E<gt></aE<gt>

=head2 [0.8.26] - 2023-10-30


=head3 bug fixes


=over


=item *

B<version:> add support for all 3.x versions L<1516b4d|https://github.com/fffonion/lua-resty-openssl/commit/1516b4d94ac4621a1b243c14b5133ded81515d28>

=item *

B<x509.csr:> remove extension before adding it L<d6ed964|https://github.com/fffonion/lua-resty-openssl/commit/d6ed9648e39f46f7519413489baf021092ccbc49>


=back

E<lt>a name="0.8.25"E<gt></aE<gt>

=head2 [0.8.25] - 2023-09-05


=head3 bug fixes


=over


=item *

B<pkey:> clear error stack when verification fails (L<#121|https://github.com/fffonion/lua-resty-openssl/issues/121>) L<6e58b28|https://github.com/fffonion/lua-resty-openssl/commit/6e58b28c3d42560631e0c8351befa1434b6fc542>


=back

E<lt>a name="0.8.24"E<gt></aE<gt>

=head2 [0.8.24] - 2023-08-07


=head3 bug fixes


=over


=item *

B<ssl:> support ngx_lua 10025 L<abaa66e|https://github.com/fffonion/lua-resty-openssl/commit/abaa66ee07ce734580fd29ec6032157c998f6346>


=back

E<lt>a name="0.8.23"E<gt></aE<gt>

=head2 [0.8.23] - 2023-06-20


=head3 bug fixes


=over


=item *

B<\I<:> fix typos and add error check for new_of/dup_of (L<#2|https://github.com/fffonion/lua-resty-openssl/issues/2>) L<aa6ad47|https://github.com/fffonion/lua-resty-openssl/commit/aa6ad4707845cca9c46282a1550bb9fee7d48698>


=back


=head3 features


=over


=item *

B<tests:> add performance test (L<#112|https://github.com/fffonion/lua-resty-openssl/issues/112>) L<100b4e4|https://github.com/fffonion/lua-resty-openssl/commit/100b4e43843a597327be6e5356c64b5ce621fa56>

=item *

B<x509.store:> add store:check_revocation and add flag to skip check CRL for store:add (L<#1|https://github.com/fffonion/lua-resty-openssl/issues/1>) L<1a5a4c8|https://github.com/fffonion/lua-resty-openssl/commit/1a5a4c881128ffb65d6eaf47bb3961417ef23f0b>


=back

E<lt>a name="0.8.22"E<gt></aE<gt>

=head2 [0.8.22] - 2023-04-26


=head3 bug fixes


=over


=item *

B<crypto:> use OPENSSL_free in BoringSSL (L<#107|https://github.com/fffonion/lua-resty-openssl/issues/107>) L<7830212|https://github.com/fffonion/lua-resty-openssl/commit/78302123ac744f2d0b6de1156e459e9ea72b7edb>


=back

E<lt>a name="0.8.21"E<gt></aE<gt>

=head2 [0.8.21] - 2023-03-24


=head3 features


=over


=item *

B<x509.store:> extend verify to support setting flags (L<#104|https://github.com/fffonion/lua-resty-openssl/issues/104>) L<fa45b6c|https://github.com/fffonion/lua-resty-openssl/commit/fa45b6ce197dee7e2a55601bd4833f415c6cbaa2>


=back

E<lt>a name="0.8.20"E<gt></aE<gt>

=head2 [0.8.20] - 2023-03-10


=head3 bug fixes


=over


=item *

B<pkey:> use group bits instead of ECDSA_sig to get parameter size in ECDSA signature (L<#102|https://github.com/fffonion/lua-resty-openssl/issues/102>) L<f12cbfc|https://github.com/fffonion/lua-resty-openssl/commit/f12cbfc123490c666e2cbd7bec90948910a02336>


=back

E<lt>a name="0.8.19"E<gt></aE<gt>

=head2 [0.8.19] - 2023-03-10


=head3 bug fixes


=over


=item *

B<pkey:> fix signature length for secp521r1 ecdsa signature length (L<#100|https://github.com/fffonion/lua-resty-openssl/issues/100>) L<b7303d4|https://github.com/fffonion/lua-resty-openssl/commit/b7303d49cf738fe134f3e5efbf6157c96ff85237>


=back

E<lt>a name="0.8.18"E<gt></aE<gt>

=head2 [0.8.18] - 2023-03-04


=head3 features


=over


=item *

B<bn:> to_binary supports left padding of zeros L<d59cac9|https://github.com/fffonion/lua-resty-openssl/commit/d59cac9d7e019e1bcdeaa6714f61294c354cf141>

=item *

B<pkey:> allow to convert to and from binary format of ecdsa signature L<9a20323|https://github.com/fffonion/lua-resty-openssl/commit/9a203233a23dd08d8f7eeaaff0599921d752a2e2>


=back

E<lt>a name="0.8.17"E<gt></aE<gt>

=head2 [0.8.17] - 2023-01-20


=head3 bug fixes


=over


=item *

B<\I<:> support OpenSSL 3.1 L<dc932f3|https://github.com/fffonion/lua-resty-openssl/commit/dc932f394e5c2b94129b406480897535ec561355>

=item *

B<pkey:> allow one shot sign/verify in BoringSSL L<32e5df3|https://github.com/fffonion/lua-resty-openssl/commit/32e5df37ac1aaa060c2c1f9b599bd194247d5ecb>


=back

E<lt>a name="0.8.16"E<gt></aE<gt>

=head2 [0.8.16] - 2022-12-20


=head3 features


=over


=item *

B<pkey:> load PKCSL<#1|https://github.com/fffonion/lua-resty-openssl/issues/1> PEM encoded RSAPublicKey and RSAPrivateKey L<3246ec0|https://github.com/fffonion/lua-resty-openssl/commit/3246ec0e51252bfa2812d49f9c6385dcaf0af10b>


=back

E<lt>a name="0.8.15"E<gt></aE<gt>

=head2 [0.8.15] - 2022-10-28


=head3 bug fixes


=over


=item *

B<pkey:> check private key existence before doing sign (L<#83|https://github.com/fffonion/lua-resty-openssl/issues/83>) L<eefcd2a|https://github.com/fffonion/lua-resty-openssl/commit/eefcd2a80b240f44be0bdadd1c2ccc28612004c0>


=back

E<lt>a name="0.8.14"E<gt></aE<gt>

=head2 [0.8.14] - 2022-10-21


=head3 bug fixes


=over


=item *

B<x509.crl:> fix metamethods when revoked is empty (L<#79|https://github.com/fffonion/lua-resty-openssl/issues/79>) L<e65adc7|https://github.com/fffonion/lua-resty-openssl/commit/e65adc7f132628c97e4db69cb5c4b13ff9cf0abf>


=back

E<lt>a name="0.8.13"E<gt></aE<gt>

=head2 [0.8.13] - 2022-10-14


=head3 bug fixes


=over


=item *

B<x509.\I<:> fix set_extension will fail when a extension with same NID is not exist yet (L<#75|https://github.com/fffonion/lua-resty-openssl/issues/75>) L<b2f57b8|https://github.com/fffonion/lua-resty-openssl/commit/b2f57b860509a371ab1df71bbbc9e176e5a4d004>


=back


=head3 features


=over


=item *

B<x509.altname:> support set and get IP addresses (L<#74|https://github.com/fffonion/lua-resty-openssl/issues/74>) L<363c80d|https://github.com/fffonion/lua-resty-openssl/commit/363c80d1f2c7ba29dce268e213a9a16c9eae2953>

=item *

B<x509.store:> add set_flags (L<#77|https://github.com/fffonion/lua-resty-openssl/issues/77>) L<8f3f16a|https://github.com/fffonion/lua-resty-openssl/commit/8f3f16a2b6d6c0f680c781f20a9e84a631da9aa5>


=back

E<lt>a name="0.8.11"E<gt></aE<gt>

=head2 [0.8.11] - 2022-10-12


=head3 performance improvements


=over


=item *

B<\I<:> reuse cdata to improve performance L<fc9cecd|https://github.com/fffonion/lua-resty-openssl/commit/fc9cecd785fc0193290cc3398d1ebbe7ae66fe15>


=back

E<lt>a name="0.8.10"E<gt></aE<gt>

=head2 [0.8.10] - 2022-06-24


=head3 features


=over


=item *

B<x509:> add get_signature_digest_name L<d54b5d6|https://github.com/fffonion/lua-resty-openssl/commit/d54b5d61bc14813121f4a6bda2e1d7eab215094a>


=back

E<lt>a name="0.8.9"E<gt></aE<gt>

=head2 [0.8.9] - 2022-06-23


=head3 bug fixes


=over


=item *

B<aux/nginx:> add nginx 1.21.4 and ngx_lua 0.10.21 to support matrix L<028da56|https://github.com/fffonion/lua-resty-openssl/commit/028da56d7de606d4b4b323fb3686ad4d93f69c7d>


=back

E<lt>a name="0.8.8"E<gt></aE<gt>

=head2 [0.8.8] - 2022-04-14


=head3 bug fixes


=over


=item *

B<ctx:> use global ctx where request is unavailable L<e3590cf|https://github.com/fffonion/lua-resty-openssl/commit/e3590cfcbeb6f0d5f110c3c4e1b6cdc63b88e001>

=item *

B<x509.extension:> correct X509V3_CTX size for OpenSSL 3.0 L<0946c59|https://github.com/fffonion/lua-resty-openssl/commit/0946c5937fa9fa4bb41a70267a67fcc87307b6a6>


=back


=head3 features


=over


=item *

B<x509.extension:> add X509V3_set_issuer_pkey in OpenSSL 3.0 L<dbd3f74|https://github.com/fffonion/lua-resty-openssl/commit/dbd3f7418a665ae797e6ffc71ba1d7f0660c95f0>

=item *

B<x509.store:> add set_purpose and verify_method parameter L<b7500fe|https://github.com/fffonion/lua-resty-openssl/commit/b7500fe7212c26070363afeab4a8acfe44c3cfc8>


=back

E<lt>a name="0.8.7"E<gt></aE<gt>

=head2 [0.8.7] - 2022-03-18


=head3 features


=over


=item *

B<x509.crl:> add functions to find and inspect revoked list in CRL L<37c1661|https://github.com/fffonion/lua-resty-openssl/commit/37c1661fbebebad3b804f602f631e4ba65b80e07>


=back

E<lt>a name="0.8.6"E<gt></aE<gt>

=head2 [0.8.6] - 2022-03-16


=head3 bug fixes


=over


=item *

B<obj:> clean up stale error occured from OBJ_txt2* L<219a2f0|https://github.com/fffonion/lua-resty-openssl/commit/219a2f0cace8480800394d6e88b188138f2650a1>

=item *

B<pkey:> clear_error in passphrase type mismatch L<8577422|https://github.com/fffonion/lua-resty-openssl/commit/857742273629d4e801a2d862644213fe5fdbf02a>

=item *

B<x509.\I<:> move clear_error to last when loading L<369eea1|https://github.com/fffonion/lua-resty-openssl/commit/369eea1e4a1a185055296e07f272a3e470442916>


=back


=head3 features


=over


=item *

B<openssl:> add function to list SSL ciphers L<9861af1|https://github.com/fffonion/lua-resty-openssl/commit/9861af1a074f74f529e341049ada29cbf7d57a48>

=item *

B<ssl:> refine various handshake controlling functions L<30bf41e|https://github.com/fffonion/lua-resty-openssl/commit/30bf41e958775f60afff1976fe731978c816dd25>


=back

E<lt>a name="0.8.5"E<gt></aE<gt>

=head2 [0.8.5] - 2022-02-02


=head3 bug fixes


=over


=item *

B<\I<:> correct size type in cipher, hmac and rand in BoringSSL L<54ce5f0|https://github.com/fffonion/lua-resty-openssl/commit/54ce5f0dd1861f2af15eacea154c805a237c03d8>

=item *

B<bn:> use BN_check_prime in OpenSSL 3.0 L<8c107e3|https://github.com/fffonion/lua-resty-openssl/commit/8c107e3dcf2006d6c453234278ab0a45109042d6>

=item *

B<kdf:> correct FFI definition for BoringSSL L<30ba7cf|https://github.com/fffonion/lua-resty-openssl/commit/30ba7cf9d90d8bc611cbccdca83e69c308739b60>

=item *

B<stack:> correct indices to use size_t in BoringSSL L<526ecb8|https://github.com/fffonion/lua-resty-openssl/commit/526ecb89c81b0e477b749a2424231329e468ce02>


=back


=head3 features


=over


=item *

B<\I<:> add more modules for OSSL_LIB_CTX support L<35f4bcb|https://github.com/fffonion/lua-resty-openssl/commit/35f4bcb796bc2fbe4ab066b8f78047bf30118986>


=back

E<lt>a name="0.8.4"E<gt></aE<gt>

=head2 [0.8.4] - 2021-12-20


=head3 bug fixes


=over


=item *

B<x509.\I<:> use SHA256 as default sign digest in BoringSSL L<355681a|https://github.com/fffonion/lua-resty-openssl/commit/355681a33d88d85de0faae3e8eb6685e0e3b9f34>


=back


=head3 features


=over


=item *

B<pkey:> add pkey:get_default_digest_type L<0572e57|https://github.com/fffonion/lua-resty-openssl/commit/0572e57e0ab418f2dd749dbc5042b0c680e346a7>


=back

E<lt>a name="0.8.3"E<gt></aE<gt>

=head2 [0.8.3] - 2021-12-16


=head3 bug fixes


=over


=item *

B<hmac:> include evp.md headers L<125ea05|https://github.com/fffonion/lua-resty-openssl/commit/125ea059da6b1effef7a187c434ebd6022dc3b82>


=back

E<lt>a name="0.8.2"E<gt></aE<gt>

=head2 [0.8.2] - 2021-11-22


=head3 bug fixes


=over


=item *

B<jwk:> fix typo of secp521r1 L<81d2a64|https://github.com/fffonion/lua-resty-openssl/commit/81d2a646bde7a66ab87e127eace0d40aa714be58>


=back

E<lt>a name="0.8.1"E<gt></aE<gt>

=head2 [0.8.1] - 2021-11-05


=head3 bug fixes


=over


=item *

B<ssl_ctx:> fix typo when getting SSL_CTX from request L<7b9e90f|https://github.com/fffonion/lua-resty-openssl/commit/7b9e90faef8337c759c281172be8c1f599be704d>


=back


=head3 features


=over


=item *

B<ctx:> add ctx module to provide OSSL_LIB_CTX context L<65750bf|https://github.com/fffonion/lua-resty-openssl/commit/65750bfd800b2eebeb9bf653a03518f3ad235fba>


=back

E<lt>a name="0.8.0"E<gt></aE<gt>

=head2 [0.8.0] - 2021-10-29


=head3 bug fixes


=over


=item *

B<\I<:> move EVP_> definition into seperate files L<e0c3d61|https://github.com/fffonion/lua-resty-openssl/commit/e0c3d6178e8b0baab5c53d331dedf8ffb1b1b0c7>

=item *

B<auxiliary/nginx:> set off_t to 64bit per nginx config (L<#32|https://github.com/fffonion/lua-resty-openssl/issues/32>) L<8c209fa|https://github.com/fffonion/lua-resty-openssl/commit/8c209fabbd4ba2f1d6f3a267059c758b4697a433>

=item *

B<pkey:> allow sign/verify without md_alg for EdDSA on BoringSSL L<ab83fd4|https://github.com/fffonion/lua-resty-openssl/commit/ab83fd4fc053f496699d5dcc77dbb551e2389e77>

=item *

B<x509:> compatibility for BoringSSL 1.1.0 (fips-20190808) L<84244af|https://github.com/fffonion/lua-resty-openssl/commit/84244af7d91e3421dfccdf1940beb70adbd66adb>


=back


=head3 features


=over


=item *

B<evp:> add geneirc function to get and set params L<c724e1d|https://github.com/fffonion/lua-resty-openssl/commit/c724e1d41010fab7fb112ca3674eef1aab0b06be>

=item *

B<kdf:> add new API with EVP_KDF interfaces L<2336ae3|https://github.com/fffonion/lua-resty-openssl/commit/2336ae3b9a7a05473e251a10523a7357afb6f2f2>

=item *

B<mac:> add EVP_MAC L<0625be9|https://github.com/fffonion/lua-resty-openssl/commit/0625be92e0eaf6a9ee61b3499690d6079aaf933d>

=item *

B<openssl:> add function list mac and kdf algorithms and set properties for EVP algorithm fetches L<0ed8316|https://github.com/fffonion/lua-resty-openssl/commit/0ed83167dbb1b7d8171bcb59cb749187220572e2>

=item *

B<openssl:> support FIPS in OpenSSL 3.0 L<beb3ad3|https://github.com/fffonion/lua-resty-openssl/commit/beb3ad3ec8f162aeb11d3f89ea8211c2f3e38c1e>

=item *

B<param:> add new function to use OSSL_PARAM L<5ffbbcc|https://github.com/fffonion/lua-resty-openssl/commit/5ffbbcce386d98127c84b7f24bb019cff76c05e3>

=item *

B<provider:> cipher, digest, kdf, pkey and x509 can now fetch by provider and has new get_provider_name function L<52938ca|https://github.com/fffonion/lua-resty-openssl/commit/52938ca5b66f48186815975d685227836bd92cef>


=back

E<lt>a name="0.7.5"E<gt></aE<gt>

=head2 [0.7.5] - 2021-09-18


=head3 bug fixes


=over


=item *

B<\I<:> rename some EVP_ API to use get in openssl3.0 L<8fbdb39|https://github.com/fffonion/lua-resty-openssl/commit/8fbdb396d0a4988a24ff2e0404c1866a416d9cff>

=item *

B<aux/nginx:> add 1.19.9 L<eb73691|https://github.com/fffonion/lua-resty-openssl/commit/eb73691c058c9d55a1b57405f889f5bc3ecd0420>


=back

E<lt>a name="0.7.4"E<gt></aE<gt>

=head2 [0.7.4] - 2021-08-02


=head3 bug fixes


=over


=item *

B<extension:> fallback to ASN1_STRING_print in extension:text where X509V3_EXT_print is not available L<f0268f5|https://github.com/fffonion/lua-resty-openssl/commit/f0268f55b124eb4ff65b472899e241af850f9d35>


=back

E<lt>a name="0.7.3"E<gt></aE<gt>

=head2 [0.7.3] - 2021-06-29


=head3 bug fixes


=over


=item *

B<pkey:> only pass in passphrase/passphrase_cb to PEM_* functions L<6a56494|https://github.com/fffonion/lua-resty-openssl/commit/6a564949e08a6dbe87a44d82e694d862b77c8b68>

=item *

B<pkey:> avoid callbacks overflow when setting passphrase_cb L<e8aec4e|https://github.com/fffonion/lua-resty-openssl/commit/e8aec4e3ceb4419e373938f9ad4b592efa43acfc>


=back


=head3 features


=over


=item *

B<pkey:> allow to specify digest type and padding scheme in sign/verify L<ff982ba|https://github.com/fffonion/lua-resty-openssl/commit/ff982ba374ab543c440ccab597d71cdbf4560cdb>


=back

E<lt>a name="0.7.2"E<gt></aE<gt>

=head2 [0.7.2] - 2021-03-25


=head3 bug fixes


=over


=item *

B<\I<:> redefine callback functions to a style FFI will not overflow L<f91202c|https://github.com/fffonion/lua-resty-openssl/commit/f91202c57b826d935d831ec452d2b90fc33277fa>


=back

E<lt>a name="0.7.1"E<gt></aE<gt>

=head2 [0.7.1] - 2021-03-18


=head3 bug fixes


=over


=item *

B<altname:> return unsupported as value in not implemented types L<ef5e1ed|https://github.com/fffonion/lua-resty-openssl/commit/ef5e1eda9eaea1fd4c8d7d65e438275fed10cdc6>

=item *

B<auxiliary/nginx:> typo in error message L<4bd22d8|https://github.com/fffonion/lua-resty-openssl/commit/4bd22d81419ed160af1dcea16f42fd284f8f2ad5>


=back

E<lt>a name="0.7.0"E<gt></aE<gt>

=head2 [0.7.0] - 2021-02-19


=head3 bug fixes


=over


=item *

B<csr:> count extension count in openssl 3.0 L<5af0f4b|https://github.com/fffonion/lua-resty-openssl/commit/5af0f4b02edd0fb8c461a1e08b04eb4eb781f744>

=item *

B<csr:> BREAKING: remove csr:set_subject_alt function L<513fd8a|https://github.com/fffonion/lua-resty-openssl/commit/513fd8ac61b6f7775465eabc5a3d6a454ccebc54>

=item *

B<openssl:> include crypto header in openssl.lua L<ef54bf7|https://github.com/fffonion/lua-resty-openssl/commit/ef54bf72710f2613ac6d6e5e8ebb712fa7135939>

=item *

B<openssl:> BREAKING: not load sub modules by default L<a402f05|https://github.com/fffonion/lua-resty-openssl/commit/a402f05f3ea4b85589c1de6b4347cdfc4c397ea7>


=back


=head3 features


=over


=item *

B<\I<:> support BoringSSL L<9c4e5dc|https://github.com/fffonion/lua-resty-openssl/commit/9c4e5dccefb7fa2e08c489e2922ea05e043e28f2>

=item *

B<bn:> add generate_prime L<2cc77a4|https://github.com/fffonion/lua-resty-openssl/commit/2cc77a4513dad2f4d684535d1230484e8e91bfbd>

=item *

B<openssl:> add function to list supported cipher and digest algorithms L<5bdc2a4|https://github.com/fffonion/lua-resty-openssl/commit/5bdc2a406c974f471331636de670915df9386f82>

=item *

B<openssl:> add function to get and set fips mode L<f6de183|https://github.com/fffonion/lua-resty-openssl/commit/f6de183b19e57616ded39e73518acd198c730056>


=back

E<lt>a name="0.6.11"E<gt></aE<gt>

=head2 [0.6.11] - 2021-01-21


=head3 bug fixes


=over


=item *

B<aux/nginx:> only show warning message when function is being called L<9964a6d|https://github.com/fffonion/lua-resty-openssl/commit/9964a6d29aded1c0d06c1a8700ee313e08506c2f>

=item *

B<openssl:> not load ssl modules by default L<390ad79|https://github.com/fffonion/lua-resty-openssl/commit/390ad79c413ec779ff7a1ad2b86ff0fe389c085d>

=item *

B<ssl:> add function to free the verify callback function L<62dc81a|https://github.com/fffonion/lua-resty-openssl/commit/62dc81a4c7be1c745e7e3ab728f3e060c981f446>


=back

E<lt>a name="0.6.10"E<gt></aE<gt>

=head2 [0.6.10] - 2021-01-12


=head3 bug fixes


=over


=item *

B<ecx:> return nil, err in set_parameters L<98acaee|https://github.com/fffonion/lua-resty-openssl/commit/98acaeeeaa60dffd93a934f4fbf7ddfd8e9e9652>

=item *

B<pkey:> use named_curve encoding for EC group L<1e65d9d|https://github.com/fffonion/lua-resty-openssl/commit/1e65d9d4b71c0e9c5f4d404e640a96e03902fd30>


=back


=head3 features


=over


=item *

B<pkcs12:> allow to define algorithm to encrypt key and cert L<b9678ce|https://github.com/fffonion/lua-resty-openssl/commit/b9678ce4ee4a233fb0bd8ed61d41c6d45a6fbb9d>

=item *

B<pkcs12:> check on cert and key mismatch L<5953cc2|https://github.com/fffonion/lua-resty-openssl/commit/5953cc281cff06027f3b2bba23402e2915fd3ae1>

=item *

B<pkcs12:> encode and decode for pkcs12 L<1467579|https://github.com/fffonion/lua-resty-openssl/commit/1467579fbe253996570dd188f580b98b8eb1db98>

=item *

B<pkey:> add is_private function to check if it's a private key L<eb6cc1c|https://github.com/fffonion/lua-resty-openssl/commit/eb6cc1c2d5f7698c2641950d745a78da7baa6225>

=item *

B<ssl:> add the ssl and ssl_ctx module L<40f3999|https://github.com/fffonion/lua-resty-openssl/commit/40f39994446a4cb954fc516f7047194cbf1141f8>


=back

E<lt>a name="0.6.9"E<gt></aE<gt>

=head2 [0.6.9] - 2020-11-09


=head3 bug fixes


=over


=item *

B<\I<:> not mutating tables when doing pairs to avoid missing of iterration L<836d5c9|https://github.com/fffonion/lua-resty-openssl/commit/836d5c915b27c0e63782c47effae16515ba71fed>

=item *

B<pkey:> fix typo in paramgen error message L<d341246|https://github.com/fffonion/lua-resty-openssl/commit/d341246b5db5f912a3bcb06b7be1d08ffee093b3>

=item *

B<tests:> openssl3.0 alpha7 L<5caa0e6|https://github.com/fffonion/lua-resty-openssl/commit/5caa0e60193ea535d0c0f1fe8491bc6779c9e720>

=item *

B<x509.altname:> organize GC handling better L<f5a138c|https://github.com/fffonion/lua-resty-openssl/commit/f5a138c8b10dd285d9cacb6f2b3877b7831d0fba>


=back


=head3 features


=over


=item *

B<provider:> add the provider module L<dff92af|https://github.com/fffonion/lua-resty-openssl/commit/dff92af37102b094f1187914a0c76b6635130626>

=item *

B<x509.\I<:> add get_signature_nid and get_signature_name L<a35ae0a|https://github.com/fffonion/lua-resty-openssl/commit/a35ae0af6ad98251d4226e0daceab07c2832fc17>


=back

E<lt>a name="0.6.8"E<gt></aE<gt>

=head2 [0.6.8] - 2020-10-15


=head3 bug fixes


=over


=item *

B<pkey:> correctly free parameter after new parameters are set for RSA and DH keys on OpenSSL 1.0.2 L<32d8c12|https://github.com/fffonion/lua-resty-openssl/commit/32d8c127f29e4ee0f13a8191f05f85ec74c2d8d4>

=item *

B<tests:> sort json in tests L<aeeb7c3|https://github.com/fffonion/lua-resty-openssl/commit/aeeb7c3c2c7899b1b9c36b620476cca81b8eefdc>


=back


=head3 features


=over


=item *

B<pkey:> allow to pass params for EC and DH keygen L<e9aa7c7|https://github.com/fffonion/lua-resty-openssl/commit/e9aa7c751458134d03dfcda1318186cf3a691c1d>

=item *

B<pkey:> get and set DH parameters L<ebaad8d|https://github.com/fffonion/lua-resty-openssl/commit/ebaad8d1e6533c9ad4980f557ead986104b947d0>

=item *

B<pkey:> support DH key and paramgen L<f4661c6|https://github.com/fffonion/lua-resty-openssl/commit/f4661c6eb1d57d36daa93e8c86105b77ba8fe0cb>

=item *

B<pkey:> support one shot signing for all key types L<79ca0d4|https://github.com/fffonion/lua-resty-openssl/commit/79ca0d43feda10894bfe5f0e72c4460dd4778c66>


=back

E<lt>a name="0.6.7"E<gt></aE<gt>

=head2 [0.6.7] - 2020-10-08


=head3 features


=over


=item *

B<pkey:> sign_raw and verify_recover L<90ed1b6|https://github.com/fffonion/lua-resty-openssl/commit/90ed1b637729bfde33a94c6467327419186bdd38>


=back

E<lt>a name="0.6.6"E<gt></aE<gt>

=head2 [0.6.6] - 2020-09-29


=head3 bug fixes


=over


=item *

B<\I<:> export tostring for x509.name and x509.altname L<6143659|https://github.com/fffonion/lua-resty-openssl/commit/6143659706ea5b8c42a418b7fac1eae4179a6280>

=item *

B<kdf:> fix HKDF potential buffer overflow L<da6f420|https://github.com/fffonion/lua-resty-openssl/commit/da6f42025c657f610f1ebee95f0489afd3628d9f>

=item *

B<x509.name:> potential memory leak in x509.name:find() L<ac51fb1|https://github.com/fffonion/lua-resty-openssl/commit/ac51fb10581ec31e639c1298c080a899466fd57d>

=item *

B<x509.store:> return all error on load_file or add failure L<a4ee237|https://github.com/fffonion/lua-resty-openssl/commit/a4ee2379802e41f5b5566ac11e59598d1f338ca5>


=back


=head3 features


=over


=item *

B<x509.extension:> support create by ASN.1 octet string and nconf L<7d8e81f|https://github.com/fffonion/lua-resty-openssl/commit/7d8e81f6789abd951f6e6b3aeb96607f8682c1d5>


=back

E<lt>a name="0.6.5"E<gt></aE<gt>

=head2 [0.6.5] - 2020-09-16


=head3 bug fixes


=over


=item *

B<\I<:> x509.> set should return true on success L<2a09575|https://github.com/fffonion/lua-resty-openssl/commit/2a09575425133e92c990513c7ea7445cf2ca47f4>


=back

E<lt>a name="0.6.4"E<gt></aE<gt>

=head2 [0.6.4] - 2020-08-27


=head3 features


=over


=item *

B<x509.csr:> finish {set,add}_extension functions L<d34b702|https://github.com/fffonion/lua-resty-openssl/commit/d34b702a17b4f491e2a97e971da1d6125d482066>

=item *

B<x509.extension:> add ability to convert to other data type L<15a5c7f|https://github.com/fffonion/lua-resty-openssl/commit/15a5c7ff38452a7bd04919b4a7e9c9dc1dfa931d>


=back

E<lt>a name="0.6.3"E<gt></aE<gt>

=head2 [0.6.3] - 2020-08-10


=head3 bug fixes


=over


=item *

B<\I<:> cleanup and centralize ffi.typeof L<5cbc247|https://github.com/fffonion/lua-resty-openssl/commit/5cbc2475bc5926fb0e4aa1b3e5b592144518d013>

=item *

B<\I<:> remove hack for openssl 3.0 around broken EVP_PKEY_base_id L<33181c3|https://github.com/fffonion/lua-resty-openssl/commit/33181c34210fb16c4190e88e1892fb19952420b2>

=item *

B<cipher:> use CipherFinal_ex and make test more robust L<61fa022|https://github.com/fffonion/lua-resty-openssl/commit/61fa0224fc8dca8a13f9c3ae6904e6cb71c00c6b>

=item *

B<openssl:> correctly check error for getting version num (L<#6|https://github.com/fffonion/lua-resty-openssl/issues/6>) L<6a4b9e6|https://github.com/fffonion/lua-resty-openssl/commit/6a4b9e636714e81d405b934868ef347b3c803674>

=item *

B<tests:> pin lua-nginx-module and lua-resty-core L<010b37e|https://github.com/fffonion/lua-resty-openssl/commit/010b37eb273da7b96ef39f95a6990357ecf49e49>

=item *

B<tests:> make pkey parameter test less flaky L<d023edc|https://github.com/fffonion/lua-resty-openssl/commit/d023edcba56e5832b04e2ee0d84195c69a6258d4>

=item *

B<x509.\I<:> pass correct digest parameter to sign L<982ad48|https://github.com/fffonion/lua-resty-openssl/commit/982ad48594444994d5c5b98ba9ca3d139ce96f8c>


=back


=head3 features


=over


=item *

B<\I<:> support reset for hmac and digest L<37ba4b0|https://github.com/fffonion/lua-resty-openssl/commit/37ba4b0f63c60898ee25cfeeeab8b5651c62296e>

=item *

B<\I<:> initial support for OpenSSL 3.0 L<be5dc10|https://github.com/fffonion/lua-resty-openssl/commit/be5dc10c24aabb6697ecb9fe2bd75c8a11e2b2d7>

=item *

B<x509.csr:> add get_extension and get_extensions function L<638ca46|https://github.com/fffonion/lua-resty-openssl/commit/638ca46ecf1a4fdacac6e24abaea7d19db93c98b>

=item *

B<x509.extensions:> finish the stack implementation L<f4cf725|https://github.com/fffonion/lua-resty-openssl/commit/f4cf7256e9cce0a280fab46d356ca5fcf3a48b4f>

=item *

B<x509.revoked:> add the x509.revoked module L<58f0ce1|https://github.com/fffonion/lua-resty-openssl/commit/58f0ce11f2a39cdaabf1c9ba38ea7587adf8f25a>


=back

E<lt>a name="0.6.2"E<gt></aE<gt>

=head2 [0.6.2] - 2020-05-13


=head3 bug fixes


=over


=item *

B<\I<:> add prefix to all error messages L<8f52c25|https://github.com/fffonion/lua-resty-openssl/commit/8f52c2583b87ae0e66e9546f5db03d8fe667cbd4>


=back


=head3 features


=over


=item *

B<cipher:> AEAD modes with authentication L<fd7471e|https://github.com/fffonion/lua-resty-openssl/commit/fd7471e3a011519df0250681ee1bf82d61b1f154>

=item *

B<pkey:> support one shot sign/verify for Ed25519 and Ed448 keys L<2565e85|https://github.com/fffonion/lua-resty-openssl/commit/2565e85337325f9cee7d601220120b185a22c430>

=item *

B<pkey:> support key derivation for EC, X25519 and X448 keys L<0c0d941|https://github.com/fffonion/lua-resty-openssl/commit/0c0d9417711f4c9b513ae02382ea6f9f68f750fd>

=item *

B<pkey:> output pkey to DER and JWK format L<8da24a5|https://github.com/fffonion/lua-resty-openssl/commit/8da24a5cd9241c09f51c610164dee5daffdd9129>

=item *

B<pkey:> load EC key from JWK format L<df0c06f|https://github.com/fffonion/lua-resty-openssl/commit/df0c06f1e07be3c6e46d9d2a86005361ad386f83>

=item *

B<pkey:> set/get_parameters for EC key L<67d54c8|https://github.com/fffonion/lua-resty-openssl/commit/67d54c8dc8555870bbf3fb216b3c636f3d9b220d>

=item *

B<pkey:> load RSA key from JWK format L<dc118b3|https://github.com/fffonion/lua-resty-openssl/commit/dc118b3aec2a9ff26fc3f615a1569525cbc13dd4>

=item *

B<pkey:> add function to set rsa parameter L<867fa10|https://github.com/fffonion/lua-resty-openssl/commit/867fa109863a2fd770f26a44b15cbea9d422b5cb>


=back

E<lt>a name="0.6.1"E<gt></aE<gt>

=head2 [0.6.1] - 2020-05-08


=head3 bug fixes


=over


=item *

B<x509:> fail soft when CRL is not set L<2f2eb5e|https://github.com/fffonion/lua-resty-openssl/commit/2f2eb5edc78e3aa892eb36bd1b091c42ddc64480>


=back

E<lt>a name="0.6.0"E<gt></aE<gt>

=head2 [0.6.0] - 2020-03-11


=head3 features


=over


=item *

B<bn:> mathematics, bit shift and comparasion operations L<87bf557|https://github.com/fffonion/lua-resty-openssl/commit/87bf5575a3643e11814b9c7be68ec78ce05011fe>

=item *

B<kdf:> use give id as type parameter L<0e767d0|https://github.com/fffonion/lua-resty-openssl/commit/0e767d006f4561788d826eef82b753093f06ef9e>

=item *

B<kdf:> kdf.derive in luaossl compat mode L<45788b6|https://github.com/fffonion/lua-resty-openssl/commit/45788b6ea742755b31d6b361950f3ea5d5d24bdf>


=back

E<lt>a name="0.6.0-rc.0"E<gt></aE<gt>

=head2 [0.6.0-rc.0] - 2020-03-02


=head3 features


=over


=item *

B<altname:> RFC822 alias to email L<37467fc|https://github.com/fffonion/lua-resty-openssl/commit/37467fcf83093d0c99251f43a4cc916d5c934eda>

=item *

B<kdf:> add key derivation functions support L<d78835e|https://github.com/fffonion/lua-resty-openssl/commit/d78835e861df4b7f79bb0fe5e17a2f19be1e0d3f>


=back

E<lt>a name="0.5.4"E<gt></aE<gt>

=head2 [0.5.4] - 2020-02-27


=head3 bug fixes


=over


=item *

B<store:> set X509_V_FLAG_CRL_CHECK flag if a crl is added L<88574d5|https://github.com/fffonion/lua-resty-openssl/commit/88574d5ecef0f75a293cd7d23b764d629905e3df>

=item *

B<x509.\I<:> returns soft error if extension is not found L<a0a75aa|https://github.com/fffonion/lua-resty-openssl/commit/a0a75aa2644203e22461aa1dd09ef8672e2ba576>


=back

E<lt>a name="0.5.3"E<gt></aE<gt>

=head2 [0.5.3] - 2020-02-22


=head3 features


=over


=item *

B<openssl:> lua-resty-hmac compat L<fad844f|https://github.com/fffonion/lua-resty-openssl/commit/fad844f804abe8d73b7d4b7655d562fdb3d84ebf>


=back

E<lt>a name="0.5.2"E<gt></aE<gt>

=head2 [0.5.2] - 2020-02-09


=head3 bug fixes


=over


=item *

B<pkey:> decrease copy by 1 when generating key L<bcc38e9|https://github.com/fffonion/lua-resty-openssl/commit/bcc38e9fc5e733a8f3f9d09e5eef1e2eb3c15d4d>


=back


=head3 features


=over


=item *

B<x509.extension:> allow to create an extension by NID L<6d66a2d|https://github.com/fffonion/lua-resty-openssl/commit/6d66a2d9fa7cc36cc2e6c85a78ad2236e525f3b0>


=back

E<lt>a name="0.5.1"E<gt></aE<gt>

=head2 [0.5.1] - 2020-02-04


=head3 bug fixes


=over


=item *

B<x509.crl:> fix creating empty crl instance L<046ca36|https://github.com/fffonion/lua-resty-openssl/commit/046ca36228f639c191c81a7b84dfedfc523d0340>


=back


=head3 features


=over


=item *

B<pkey:> load encrypted PEM key L<7fa7a29|https://github.com/fffonion/lua-resty-openssl/commit/7fa7a29882bbcef294f83cd1f66b9960344a0e07>

=item *

B<x509.extension:> add tostring() as synonym to text() L<87c162d|https://github.com/fffonion/lua-resty-openssl/commit/87c162de9fa7bb3e3930bd760ff7dfece30f1b49>


=back

E<lt>a name="0.5.0"E<gt></aE<gt>

=head2 [0.5.0] - 2020-02-03


=head3 bug fixes


=over


=item *

B<\I<:> add missing crl.dup function, organize store:add gc handler L<6815e5d|https://github.com/fffonion/lua-resty-openssl/commit/6815e5df04fdb77c83b0345f166664759a573962>

=item *

B<asn1:> support GENERALIZEDTIME string format L<8c7e2d6|https://github.com/fffonion/lua-resty-openssl/commit/8c7e2d67857cb6875cf52fadf43cadf05d8c5c40>

=item *

B<error:> return latest error string not earliest in some cases L<0b5955d|https://github.com/fffonion/lua-resty-openssl/commit/0b5955d4cb73f3c7d3321ed7384ae862640a6a7f>

=item *

B<stack:> protective over first argument L<bf455ff|https://github.com/fffonion/lua-resty-openssl/commit/bf455ff310b94b26a3bed513ffc9f308f65691ed>

=item *

B<x509:> guard around oscp stack index L<1b59b85|https://github.com/fffonion/lua-resty-openssl/commit/1b59b8565b5dee4cb1dd14d22bc24ec04dfbf3d6>

=item *

B<x509.store:> correctly save x509 instance references L<d8d755f|https://github.com/fffonion/lua-resty-openssl/commit/d8d755f7a281ad09d896a1d78ad9e53f6c028bdc>


=back


=head3 features


=over


=item *

B<\I<:> add iterater and helpers for stack-like objects L<46bb723|https://github.com/fffonion/lua-resty-openssl/commit/46bb7237028a16e67878d8310c25e908ceece009>

=item *

B<autogen:> generate tests for x509, csr and crl L<1392428|https://github.com/fffonion/lua-resty-openssl/commit/1392428352164d2a1a6e0c03075ff65b55aecdee>

=item *

B<objects:> add helper function for ASN1_OBJECT L<d037706|https://github.com/fffonion/lua-resty-openssl/commit/d037706c11d716afe3616bdaf4658afc1763081d>

=item *

B<pkey:> asymmetric encryption and decryption L<6d60451|https://github.com/fffonion/lua-resty-openssl/commit/6d60451157edbf9cefb634f888dfa3e6d9be302f>

=item *

B<x509:> add get_ocsp_url and get_crl_url L<6141b6f|https://github.com/fffonion/lua-resty-openssl/commit/6141b6f5aed38706b477a71d8c4383bf55da7eee>

=item *

B<x509:> getter/setters for extensions L<243f40d|https://github.com/fffonion/lua-resty-openssl/commit/243f40d35562a516f404188a5c7eb8f5134d9b30>

=item *

B<x509.altname:> support iterate and decode over the stack L<083a201|https://github.com/fffonion/lua-resty-openssl/commit/083a201746e02d51f6c5c640ad9bf8c6730ebe0b>

=item *

B<x509.crl:> add crl module L<242f8cb|https://github.com/fffonion/lua-resty-openssl/commit/242f8cb45d6c2df5918f26540c92a430d42feb5d>

=item *

B<x509.csr:> autogen some csr functions as well L<9800e36|https://github.com/fffonion/lua-resty-openssl/commit/9800e36c2ff8a299b88f24091cc722940a8652bb>

=item *

B<x509.extension:> decode object, set/get critical flag and get text representation L<8cb585f|https://github.com/fffonion/lua-resty-openssl/commit/8cb585fc51de04065cd7eeeea06e6240e7251614>

=item *

B<x509.extension:> add x509.extension.dist_points and x509.extension.info_access L<63d3992|https://github.com/fffonion/lua-resty-openssl/commit/63d3992163144ed75474a8046398d605570c30b7>


=back

E<lt>a name="0.4.4"E<gt></aE<gt>

=head2 [0.4.4] - 2020-02-27


=head3 bug fixes


=over


=item *

B<pkey:> clean up errors when trying loading key types L<7b3d351|https://github.com/fffonion/lua-resty-openssl/commit/7b3d3513cfb7a8800f49dbdd3ca521b4dadefbad>


=back

E<lt>a name="0.4.3"E<gt></aE<gt>

=head2 [0.4.3] - 2020-01-15


=head3 bug fixes


=over


=item *

B<asn1:> support GENERALIZEDTIME string format L<cc6326f|https://github.com/fffonion/lua-resty-openssl/commit/cc6326fed1bc53e64042d4742208ed68d7bb42ac>


=back

E<lt>a name="0.4.2"E<gt></aE<gt>

=head2 [0.4.2] - 2020-01-06


=head3 bug fixes


=over


=item *

B<bn:> memory leak in bn:to_hex L<6718e9e|https://github.com/fffonion/lua-resty-openssl/commit/6718e9e76a8410c78b32e5abf6d06a628fe8dc8b>

=item *

B<compat:> refine luaossl compat mode L<0d86eb5|https://github.com/fffonion/lua-resty-openssl/commit/0d86eb58848e970408bec7ee9d77102c241c3a5c>

=item *

B<openssl:> typo in luaossl_compat L<#1|https://github.com/fffonion/lua-resty-openssl/issues/1> L<1c3ea60|https://github.com/fffonion/lua-resty-openssl/commit/1c3ea60877d1532eaaddc13ab3be1550c4c5a7f1>

=item *

B<x509:> memory leak in x509:set_not_(before|after) L<b4a32f8|https://github.com/fffonion/lua-resty-openssl/commit/b4a32f82c33107d2db729caa06aee141b7f9a016>

=item *

B<x509:> and missing x509.get_serial_number code L<e7d0fb6|https://github.com/fffonion/lua-resty-openssl/commit/e7d0fb6eace77d357d19043b88bb765ec29a5193>

=item *

B<x509.csr:> correctly gc extension L<ece5be3|https://github.com/fffonion/lua-resty-openssl/commit/ece5be3f517b69563150973e7da6063d5826a9ad>

=item *

B<x509.store:> memory leak in store:add L<57815dd|https://github.com/fffonion/lua-resty-openssl/commit/57815dd38bbb2e260e8cdf3e8ddac48d6254b8fc>


=back

E<lt>a name="0.4.1"E<gt></aE<gt>

=head2 [0.4.1] - 2019-12-24


=head3 bug fixes


=over


=item *

B<x509:> correct X509_add1_ext_i2d include path L<b08b312|https://github.com/fffonion/lua-resty-openssl/commit/b08b3123a0fb2770296f04c830414bd38588e8eb>


=back


=head3 features


=over


=item *

B<x509:> getters for basic constraints and basic constraints critical L<82f5725|https://github.com/fffonion/lua-resty-openssl/commit/82f5725d4738b3bf83fcbf3154fe5979fe8d1af4>


=back

E<lt>a name="0.4.0"E<gt></aE<gt>

=head2 [0.4.0] - 2019-12-20


=head3 bug fixes


=over


=item *

B<\I<:> always return ok, err if there's no explict return value L<3e68167|https://github.com/fffonion/lua-resty-openssl/commit/3e681676f85e26c8c7af6f72a2c4afcb98952cd6>

=item *

B<evp:> correct ptr naming L<72f8765|https://github.com/fffonion/lua-resty-openssl/commit/72f8765250861d6504a767da81afe19c2d2896a4>


=back


=head3 features


=over


=item *

B<\I<:> add x509.digest and bn.to_hex L<11ea9ae|https://github.com/fffonion/lua-resty-openssl/commit/11ea9aebca6bb5c354ad94525bd2e264debfebbd>

=item *

B<version:> add function to print human readable version L<7687573|https://github.com/fffonion/lua-resty-openssl/commit/76875731011e5641eef9881ace2becf1bf057cfd>

=item *

B<x509:> add x509 stack (chain) support L<72154fc|https://github.com/fffonion/lua-resty-openssl/commit/72154fcb7686ce5a754d4fe4f121f07507a1513e>

=item *

B<x509.chain:> allow to duplicate a stack L<3fa19b7|https://github.com/fffonion/lua-resty-openssl/commit/3fa19b79509c73cf5dce6e3445cbf90a9466d656>

=item *

B<x509.name:> allow to iterate over objects and find objects L<714a1e5|https://github.com/fffonion/lua-resty-openssl/commit/714a1e541e0ce3ffb33d257d9af50ae628094fb2>

=item *

B<x509.store:> support certificate verification L<c9dd4bf|https://github.com/fffonion/lua-resty-openssl/commit/c9dd4bf8065a51a97fcf940c33ba046b73ac2049>


=back

E<lt>a name="0.3.0"E<gt></aE<gt>

=head2 [0.3.0] - 2019-12-12


=head3 bug fixes


=over


=item *

B<\I<:> move cdef and macros to seperate file L<28c3390|https://github.com/fffonion/lua-resty-openssl/commit/28c339085383bfbcb72e192701b96e08fb4344f0>

=item *

B<\I<:> normalize error handling L<ff18d54|https://github.com/fffonion/lua-resty-openssl/commit/ff18d54d2b4402de3bc02731f99c32a9953f8784>


=back


=head3 features


=over


=item *

B<cipher:> add symmetric cryptography support L<9b89e8d|https://github.com/fffonion/lua-resty-openssl/commit/9b89e8dcc1489832c893373150bfeef6a838da34>

=item *

B<hmac:> add hmac support L<5cc2a15|https://github.com/fffonion/lua-resty-openssl/commit/5cc2a15ce43a9c1c73dccf1a15232ee2a9108460>


=back

E<lt>a name="0.2.1"E<gt></aE<gt>

=head2 [0.2.1] - 2019-10-22


=head3 bug fixes


=over


=item *

B<x509:> decrease by set_version by 1 per standard L<b6ea5b9|https://github.com/fffonion/lua-resty-openssl/commit/b6ea5b933aadfb8284f7486eb33d8a4c21b7a6de>


=back

E<lt>a name="0.2.0"E<gt></aE<gt>

=head2 0.2.0 - 2019-10-18


=head3 bug fixes


=over


=item *

B<\I<:> fix working and name test L<f6db7ef|https://github.com/fffonion/lua-resty-openssl/commit/f6db7ef3c1ce5f9a75f01dc24f904fd8942c7897>

=item *

B<\I<:> normalize naming, explictly control cdef for different openssl versions L<c626b53|https://github.com/fffonion/lua-resty-openssl/commit/c626b538c2dc33272b130503ddd21f21bd9d995f>

=item *

B<\I<:> cleanup cdef L<3c02d02|https://github.com/fffonion/lua-resty-openssl/commit/3c02d020822a30fdf7dae0aa7c6aa47c4660aea8>

=item *

B<\I<:> test cdata type before passing in ffi L<de99069|https://github.com/fffonion/lua-resty-openssl/commit/de99069e40c075844a15b91720e2d5c9c9a68dd7>


=back


=head3 features


=over


=item *

B<\I<:> add more x509 API, and rand bytes generator L<6630fde|https://github.com/fffonion/lua-resty-openssl/commit/6630fde2e5e9f367e4652dc390678d4eeb57ad5d>

=item *

B<error:> add ability to pull error description L<d19ece9|https://github.com/fffonion/lua-resty-openssl/commit/d19ece993ac797fdf6708400cf83e3f4ed0bb9f4>

=item *

B<x509:> generate certificate L<9b4f59b|https://github.com/fffonion/lua-resty-openssl/commit/9b4f59bf94647aab37da6b8076ee99e155ba8023>

=item *

B<x509:> export pubkey L<ede4f81|https://github.com/fffonion/lua-resty-openssl/commit/ede4f817cb0fe092ad6f9ab5d6ecdcde864a9fd8>


=back

[Unreleased]: https://github.com/fffonion/lua-resty-openssl/compare/1.7.1...HEAD
[1.7.1]: https://github.com/fffonion/lua-resty-openssl/compare/1.7.0...1.7.1
[1.7.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.6.4...1.7.0
[1.6.4]: https://github.com/fffonion/lua-resty-openssl/compare/1.6.3...1.6.4
[1.6.3]: https://github.com/fffonion/lua-resty-openssl/compare/1.6.2...1.6.3
[1.6.2]: https://github.com/fffonion/lua-resty-openssl/compare/1.6.1...1.6.2
[1.6.1]: https://github.com/fffonion/lua-resty-openssl/compare/1.6.0...1.6.1
[1.6.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.5.2...1.6.0
[1.5.2]: https://github.com/fffonion/lua-resty-openssl/compare/1.5.1...1.5.2
[1.5.1]: https://github.com/fffonion/lua-resty-openssl/compare/1.5.0...1.5.1
[1.5.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.4.0...1.5.0
[1.4.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.3.1...1.4.0
[1.3.1]: https://github.com/fffonion/lua-resty-openssl/compare/1.3.0...1.3.1
[1.3.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.2.1...1.3.0
[1.2.1]: https://github.com/fffonion/lua-resty-openssl/compare/1.2.0...1.2.1
[1.2.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.1.0...1.2.0
[1.1.0]: https://github.com/fffonion/lua-resty-openssl/compare/1.0.2...1.1.0
[1.0.2]: https://github.com/fffonion/lua-resty-openssl/compare/1.0.1...1.0.2
[1.0.1]: https://github.com/fffonion/lua-resty-openssl/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.26...1.0.0
[0.8.26]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.25...0.8.26
[0.8.25]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.24...0.8.25
[0.8.24]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.23...0.8.24
[0.8.23]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.22...0.8.23
[0.8.22]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.21...0.8.22
[0.8.21]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.20...0.8.21
[0.8.20]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.19...0.8.20
[0.8.19]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.18...0.8.19
[0.8.18]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.17...0.8.18
[0.8.17]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.16...0.8.17
[0.8.16]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.15...0.8.16
[0.8.15]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.14...0.8.15
[0.8.14]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.13...0.8.14
[0.8.13]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.11...0.8.13
[0.8.11]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.10...0.8.11
[0.8.10]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.9...0.8.10
[0.8.9]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.8...0.8.9
[0.8.8]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.7...0.8.8
[0.8.7]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.6...0.8.7
[0.8.6]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.5...0.8.6
[0.8.5]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.4...0.8.5
[0.8.4]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.3...0.8.4
[0.8.3]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.2...0.8.3
[0.8.2]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.1...0.8.2
[0.8.1]: https://github.com/fffonion/lua-resty-openssl/compare/0.8.0...0.8.1
[0.8.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.7.5...0.8.0
[0.7.5]: https://github.com/fffonion/lua-resty-openssl/compare/0.7.4...0.7.5
[0.7.4]: https://github.com/fffonion/lua-resty-openssl/compare/0.7.3...0.7.4
[0.7.3]: https://github.com/fffonion/lua-resty-openssl/compare/0.7.2...0.7.3
[0.7.2]: https://github.com/fffonion/lua-resty-openssl/compare/0.7.1...0.7.2
[0.7.1]: https://github.com/fffonion/lua-resty-openssl/compare/0.7.0...0.7.1
[0.7.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.11...0.7.0
[0.6.11]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.10...0.6.11
[0.6.10]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.9...0.6.10
[0.6.9]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.8...0.6.9
[0.6.8]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.7...0.6.8
[0.6.7]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.6...0.6.7
[0.6.6]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.5...0.6.6
[0.6.5]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.4...0.6.5
[0.6.4]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.3...0.6.4
[0.6.3]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.2...0.6.3
[0.6.2]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.1...0.6.2
[0.6.1]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.0...0.6.1
[0.6.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.6.0-rc.0...0.6.0
[0.6.0-rc.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.5.4...0.6.0-rc.0
[0.5.4]: https://github.com/fffonion/lua-resty-openssl/compare/0.5.3...0.5.4
[0.5.3]: https://github.com/fffonion/lua-resty-openssl/compare/0.5.2...0.5.3
[0.5.2]: https://github.com/fffonion/lua-resty-openssl/compare/0.5.1...0.5.2
[0.5.1]: https://github.com/fffonion/lua-resty-openssl/compare/0.5.0...0.5.1
[0.5.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.4.4...0.5.0
[0.4.4]: https://github.com/fffonion/lua-resty-openssl/compare/0.4.3...0.4.4
[0.4.3]: https://github.com/fffonion/lua-resty-openssl/compare/0.4.2...0.4.3
[0.4.2]: https://github.com/fffonion/lua-resty-openssl/compare/0.4.1...0.4.2
[0.4.1]: https://github.com/fffonion/lua-resty-openssl/compare/0.4.0...0.4.1
[0.4.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.3.0...0.4.0
[0.3.0]: https://github.com/fffonion/lua-resty-openssl/compare/0.2.1...0.3.0
[0.2.1]: https://github.com/fffonion/lua-resty-openssl/compare/0.2.0...0.2.1
