From 5c795fedea8801a6b0f6ff8e345bb11857831b13 Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Thu, 7 Mar 2024 17:11:46 +0000 Subject: [PATCH 1/6] Correct reference leak in OwnedX509Stack --- rustls-libssl/src/x509.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rustls-libssl/src/x509.rs b/rustls-libssl/src/x509.rs index 7f65d9c..df68a03 100644 --- a/rustls-libssl/src/x509.rs +++ b/rustls-libssl/src/x509.rs @@ -7,6 +7,8 @@ use openssl_sys::{ }; /// Safe, owning wrapper around an OpenSSL `STACK_OF(X509)` object. +/// +/// The items are owned by the stack. pub struct OwnedX509Stack { raw: *mut stack_st_X509, } @@ -40,7 +42,7 @@ impl OwnedX509Stack { impl Drop for OwnedX509Stack { fn drop(&mut self) { unsafe { - OPENSSL_sk_free(self.raw as *mut OPENSSL_STACK); + OPENSSL_sk_pop_free(self.raw as *mut OPENSSL_STACK, Some(X509_free)); } } } @@ -122,6 +124,9 @@ impl Drop for OwnedX509Store { extern "C" { /// XXX: these missing from openssl-sys(?) investigate why that is. - fn OPENSSL_sk_free(st: *mut OPENSSL_STACK); + fn OPENSSL_sk_pop_free( + st: *mut OPENSSL_STACK, + func: Option, + ); fn X509_up_ref(x: *mut X509) -> c_int; } From 1ef23d04bbcdf95b40c85ad1aba159a1f9956150 Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Mon, 18 Mar 2024 14:32:59 +0000 Subject: [PATCH 2/6] Move to rustls 0.23 --- rustls-libssl/Cargo.lock | 288 ++++++++++++++++++++++++++++++++++++++- rustls-libssl/Cargo.toml | 2 +- rustls-libssl/Makefile | 4 +- rustls-libssl/src/lib.rs | 4 +- 4 files changed, 290 insertions(+), 8 deletions(-) diff --git a/rustls-libssl/Cargo.lock b/rustls-libssl/Cargo.lock index 9b7c53c..c818680 100644 --- a/rustls-libssl/Cargo.lock +++ b/rustls-libssl/Cargo.lock @@ -11,24 +11,120 @@ dependencies = [ "memchr", ] +[[package]] +name = "aws-lc-rs" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df33e4a55b03f8780ba55041bc7be91a2a8ec8c03517b0379d2d6c96d2c30d95" +dependencies = [ + "aws-lc-sys", + "mirai-annotations", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ede3d6e360a48436fee127cb81710834407b1ec0c48a001cc29dec9005f73e" +dependencies = [ + "bindgen", + "cmake", + "dunce", + "fs_extra", + "libc", + "paste", +] + [[package]] name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", + "which", +] + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + [[package]] name = "cc" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + [[package]] name = "env_logger" version = "0.10.2" @@ -42,6 +138,22 @@ dependencies = [ "termcolor", ] +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "getrandom" version = "0.2.12" @@ -53,12 +165,27 @@ dependencies = [ "wasi", ] +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "hermit-abi" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys", +] + [[package]] name = "humantime" version = "2.1.0" @@ -76,12 +203,49 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + [[package]] name = "log" version = "0.4.20" @@ -94,6 +258,34 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mirai-annotations" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + [[package]] name = "openssl-sys" version = "0.9.101" @@ -106,12 +298,46 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "pkg-config" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "prettyplease" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + [[package]] name = "regex" version = "1.10.3" @@ -156,14 +382,34 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + [[package]] name = "rustls" -version = "0.22.2" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" +checksum = "5dfbdb5ddfafe3040e01fe9dced711e27b5336ac97d4a9b2089f0066a04b5846" dependencies = [ + "aws-lc-rs", "log", - "ring", + "once_cell", "rustls-pki-types", "rustls-webpki", "subtle", @@ -203,11 +449,18 @@ version = "0.102.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "spin" version = "0.9.8" @@ -220,6 +473,17 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "syn" +version = "2.0.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -229,6 +493,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + [[package]] name = "untrusted" version = "0.9.0" @@ -247,6 +517,18 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/rustls-libssl/Cargo.toml b/rustls-libssl/Cargo.toml index c81317d..3264953 100644 --- a/rustls-libssl/Cargo.toml +++ b/rustls-libssl/Cargo.toml @@ -13,5 +13,5 @@ crate-type = ["cdylib"] env_logger = "0.10" log = "0.4" openssl-sys = "0.9.98" -rustls = "0.22" +rustls = "0.23" rustls-pemfile = "2" diff --git a/rustls-libssl/Makefile b/rustls-libssl/Makefile index 52bcee8..3170ba1 100644 --- a/rustls-libssl/Makefile +++ b/rustls-libssl/Makefile @@ -52,12 +52,12 @@ clean: rm -rf target format: - find . \ + find src tests \ -name '*.[c|h]' | \ xargs clang-format -i format-check: - find . \ + find src tests \ -name '*.[c|h]' | \ xargs clang-format --dry-run -Werror -i diff --git a/rustls-libssl/src/lib.rs b/rustls-libssl/src/lib.rs index 94ead95..4602dd9 100644 --- a/rustls-libssl/src/lib.rs +++ b/rustls-libssl/src/lib.rs @@ -6,7 +6,7 @@ use openssl_sys::{ SSL_ERROR_NONE, SSL_ERROR_SSL, SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE, X509_STORE, X509_V_ERR_UNSPECIFIED, }; -use rustls::crypto::ring as provider; +use rustls::crypto::aws_lc_rs as provider; use rustls::pki_types::{CertificateDer, ServerName}; use rustls::{CipherSuite, ClientConfig, ClientConnection, Connection, RootCertStore}; @@ -109,7 +109,7 @@ impl SslCipher { } pub fn protocol_id(&self) -> u16 { - self.rustls.suite().get_u16() + u16::from(self.rustls.suite()) } pub fn openssl_id(&self) -> u32 { From a9410829b88b03a45c56a66e6630f34c9156e855 Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Tue, 19 Mar 2024 12:21:17 +0000 Subject: [PATCH 3/6] Add a note about how testing works --- rustls-libssl/tests/runner.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/rustls-libssl/tests/runner.rs b/rustls-libssl/tests/runner.rs index 8ec13c6..e920677 100644 --- a/rustls-libssl/tests/runner.rs +++ b/rustls-libssl/tests/runner.rs @@ -10,6 +10,21 @@ use std::{net, thread, time}; * * We set LD_LIBRARY_PATH="" to disable this where we want * to actually use OpenSSL's libssl. + * + * The test programs called below should use streams according to these rules: + * + * - **stdout** should contain the same output whether this program is run against + * bona-fide openssl or rustls-libssl. + * + * - **stderr**: may contain log output for tests that see error conditions. This output + * need not match between openssl and rustls-libssl and such tests should not assert + * equality between stderr. Tests that do not expect errors _should_ assert `stderr` + * equality, to ensure there is no noisy log output or spurious error stack usage. + * + * Note that the content of openssl error stacks is _not_ a stable interface + * (file names, line numbers, function names, messages can all change between versions + * of upstream openssl). However, we try to ensure that interesting errors + * have the same error code (see `ERR_peek_error`). */ #[test] From f7bc699e2e286d2624025be5ed160e5a26c2f272 Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Wed, 3 Apr 2024 15:20:29 +0100 Subject: [PATCH 4/6] Run integration tests in CI --- .github/workflows/libssl.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/libssl.yaml b/.github/workflows/libssl.yaml index 247f4f4..d529b61 100644 --- a/.github/workflows/libssl.yaml +++ b/.github/workflows/libssl.yaml @@ -40,6 +40,7 @@ jobs: toolchain: ${{ matrix.rust }} - run: make PROFILE=release test + - run: make PROFILE=release integration valgrind: name: Valgrind From f0f2381e082abef7448616456d24d8454bb052ea Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Thu, 4 Apr 2024 09:34:44 +0100 Subject: [PATCH 5/6] Add script for checking sorted order of entrypoints The ordering isn't load-bearing. --- .github/workflows/libssl.yaml | 2 ++ rustls-libssl/admin/sort-entrypoints.py | 28 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 rustls-libssl/admin/sort-entrypoints.py diff --git a/.github/workflows/libssl.yaml b/.github/workflows/libssl.yaml index d529b61..50d3229 100644 --- a/.github/workflows/libssl.yaml +++ b/.github/workflows/libssl.yaml @@ -96,6 +96,8 @@ jobs: run: ./admin/format --all -- --check - name: Check C formatting run: make format-check + - name: Check ordering of build.rs entrypoints + run: ./admin/sort-entrypoints.py clippy: name: Clippy diff --git a/rustls-libssl/admin/sort-entrypoints.py b/rustls-libssl/admin/sort-entrypoints.py new file mode 100755 index 0000000..0347c70 --- /dev/null +++ b/rustls-libssl/admin/sort-entrypoints.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +from os import path +import difflib + +entries = [] +in_entries = False + +location = path.join(path.dirname(__file__), '../build.rs') + +for line in open(location): + if in_entries: + if '];' in line: + in_entries = False + continue + + entries.append(line) + + if 'const ENTRYPOINTS:' in line: + in_entries = True + +assert len(entries) != 0 +sorted_entries = list(sorted(entries, key=lambda s: s.lower())) + +if entries != sorted_entries: + print('!!! ENTRYPOINTS is not sorted') + print(''.join(difflib.context_diff(entries, sorted_entries, fromfile='build.rs', tofile='build.rs'))) + exit(1) From ff9e0bf332e0140956c588446fd4fd2142bb9590 Mon Sep 17 00:00:00 2001 From: Joseph Birr-Pixton Date: Wed, 20 Mar 2024 13:33:35 +0000 Subject: [PATCH 6/6] Add compatibility matrix --- .github/workflows/libssl.yaml | 2 + rustls-libssl/MATRIX.md | 544 +++++++++++++++++++++++++++++++++ rustls-libssl/admin/libssl.num | 523 +++++++++++++++++++++++++++++++ rustls-libssl/admin/matrix.py | 240 +++++++++++++++ 4 files changed, 1309 insertions(+) create mode 100644 rustls-libssl/MATRIX.md create mode 100644 rustls-libssl/admin/libssl.num create mode 100755 rustls-libssl/admin/matrix.py diff --git a/.github/workflows/libssl.yaml b/.github/workflows/libssl.yaml index 50d3229..5a533ac 100644 --- a/.github/workflows/libssl.yaml +++ b/.github/workflows/libssl.yaml @@ -98,6 +98,8 @@ jobs: run: make format-check - name: Check ordering of build.rs entrypoints run: ./admin/sort-entrypoints.py + - name: Check MATRIX.md is up-to-date + run: ./admin/matrix.py > MATRIX.md.new && diff -su MATRIX.md MATRIX.md.new clippy: name: Clippy diff --git a/rustls-libssl/MATRIX.md b/rustls-libssl/MATRIX.md new file mode 100644 index 0000000..ebc3e2b --- /dev/null +++ b/rustls-libssl/MATRIX.md @@ -0,0 +1,544 @@ +| Symbol | curl | nginx | implemented? | +|---|---|---|---| +| `BIO_f_ssl` | :white_check_mark: | | :white_check_mark: | +| `BIO_new_buffer_ssl_connect` | | | | +| `BIO_new_ssl` | | | | +| `BIO_new_ssl_connect` | | | | +| `BIO_ssl_copy_session_id` | | | | +| `BIO_ssl_shutdown` | | | | +| `DTLS_client_method` | | | | +| `DTLS_get_data_mtu` | | | | +| `DTLS_method` | | | | +| `DTLS_server_method` | | | | +| `DTLS_set_timer_cb` | | | | +| `DTLSv1_2_client_method` [^deprecatedin_1_1_0] [^dtls1_2_method] | | | | +| `DTLSv1_2_method` [^deprecatedin_1_1_0] [^dtls1_2_method] | | | | +| `DTLSv1_2_server_method` [^deprecatedin_1_1_0] [^dtls1_2_method] | | | | +| `DTLSv1_client_method` [^deprecatedin_1_1_0] [^dtls1_method] | | | | +| `DTLSv1_listen` [^sock] | | | | +| `DTLSv1_method` [^deprecatedin_1_1_0] [^dtls1_method] | | | | +| `DTLSv1_server_method` [^deprecatedin_1_1_0] [^dtls1_method] | | | | +| `ERR_load_SSL_strings` [^deprecatedin_3_0] | | | | +| `OPENSSL_cipher_name` | | | | +| `OPENSSL_init_ssl` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `OSSL_default_cipher_list` | | | | +| `OSSL_default_ciphersuites` | | | | +| `PEM_read_SSL_SESSION` [^stdio] | | | | +| `PEM_read_bio_SSL_SESSION` | | | | +| `PEM_write_SSL_SESSION` [^stdio] | | | | +| `PEM_write_bio_SSL_SESSION` | | | | +| `SRP_Calc_A_param` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CIPHER_description` | | :white_check_mark: | :white_check_mark: | +| `SSL_CIPHER_find` | | :white_check_mark: | :white_check_mark: | +| `SSL_CIPHER_get_auth_nid` | | | | +| `SSL_CIPHER_get_bits` | | | :white_check_mark: | +| `SSL_CIPHER_get_cipher_nid` | | | | +| `SSL_CIPHER_get_digest_nid` | | | | +| `SSL_CIPHER_get_handshake_digest` | | | | +| `SSL_CIPHER_get_id` | | | :white_check_mark: | +| `SSL_CIPHER_get_kx_nid` | | | | +| `SSL_CIPHER_get_name` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CIPHER_get_protocol_id` | | | :white_check_mark: | +| `SSL_CIPHER_get_version` | | | :white_check_mark: | +| `SSL_CIPHER_is_aead` | | | | +| `SSL_CIPHER_standard_name` | | | :white_check_mark: | +| `SSL_COMP_add_compression_method` | | | | +| `SSL_COMP_get0_name` | | | | +| `SSL_COMP_get_compression_methods` | | | | +| `SSL_COMP_get_id` | | | | +| `SSL_COMP_get_name` | | | | +| `SSL_COMP_set0_compression_methods` | | | | +| `SSL_CONF_CTX_clear_flags` | | | | +| `SSL_CONF_CTX_finish` | | | | +| `SSL_CONF_CTX_free` | | | | +| `SSL_CONF_CTX_new` | | | | +| `SSL_CONF_CTX_set1_prefix` | | | | +| `SSL_CONF_CTX_set_flags` | | | | +| `SSL_CONF_CTX_set_ssl` | | | | +| `SSL_CONF_CTX_set_ssl_ctx` | | | | +| `SSL_CONF_cmd` | | | | +| `SSL_CONF_cmd_argv` | | | | +| `SSL_CONF_cmd_value_type` | | | | +| `SSL_CTX_SRP_CTX_free` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_SRP_CTX_init` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_add1_to_CA_list` | | | | +| `SSL_CTX_add_client_CA` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_add_client_custom_ext` | | | | +| `SSL_CTX_add_custom_ext` | | | | +| `SSL_CTX_add_server_custom_ext` | | | | +| `SSL_CTX_add_session` | | | | +| `SSL_CTX_callback_ctrl` | | :white_check_mark: | | +| `SSL_CTX_check_private_key` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_clear_options` | | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_config` | | | | +| `SSL_CTX_ct_is_enabled` [^ct] | | | | +| `SSL_CTX_ctrl` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_dane_clear_flags` | | | | +| `SSL_CTX_dane_enable` | | | | +| `SSL_CTX_dane_mtype_set` | | | | +| `SSL_CTX_dane_set_flags` | | | | +| `SSL_CTX_enable_ct` [^ct] | | | | +| `SSL_CTX_flush_sessions` | | | | +| `SSL_CTX_free` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_get0_CA_list` | | | | +| `SSL_CTX_get0_certificate` | | | | +| `SSL_CTX_get0_ctlog_store` [^ct] | | | | +| `SSL_CTX_get0_param` | | | | +| `SSL_CTX_get0_privatekey` | | | | +| `SSL_CTX_get0_security_ex_data` | | | | +| `SSL_CTX_get_cert_store` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_get_ciphers` | | | | +| `SSL_CTX_get_client_CA_list` | | :white_check_mark: | | +| `SSL_CTX_get_client_cert_cb` | | | | +| `SSL_CTX_get_default_passwd_cb` | | | | +| `SSL_CTX_get_default_passwd_cb_userdata` | | | | +| `SSL_CTX_get_ex_data` | | :white_check_mark: | :exclamation: [^stub] | +| `SSL_CTX_get_info_callback` | | | | +| `SSL_CTX_get_keylog_callback` | | | | +| `SSL_CTX_get_max_early_data` | | :white_check_mark: | | +| `SSL_CTX_get_num_tickets` | | | | +| `SSL_CTX_get_options` | | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_get_quiet_shutdown` | | | | +| `SSL_CTX_get_record_padding_callback_arg` | | | | +| `SSL_CTX_get_recv_max_early_data` | | | | +| `SSL_CTX_get_security_callback` | | | | +| `SSL_CTX_get_security_level` | | | | +| `SSL_CTX_get_ssl_method` | | | | +| `SSL_CTX_get_timeout` | | :white_check_mark: | | +| `SSL_CTX_get_verify_callback` | | :white_check_mark: | | +| `SSL_CTX_get_verify_depth` | | :white_check_mark: | | +| `SSL_CTX_get_verify_mode` | | :white_check_mark: | | +| `SSL_CTX_has_client_custom_ext` | | | | +| `SSL_CTX_load_verify_dir` | :white_check_mark: | | :white_check_mark: | +| `SSL_CTX_load_verify_file` | :white_check_mark: | | :white_check_mark: | +| `SSL_CTX_load_verify_locations` | | :white_check_mark: | | +| `SSL_CTX_load_verify_store` | | | | +| `SSL_CTX_new` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_new_ex` | | | | +| `SSL_CTX_remove_session` | | :white_check_mark: | | +| `SSL_CTX_sess_get_get_cb` | | | | +| `SSL_CTX_sess_get_new_cb` | | | | +| `SSL_CTX_sess_get_remove_cb` | | | | +| `SSL_CTX_sess_set_get_cb` | | :white_check_mark: | | +| `SSL_CTX_sess_set_new_cb` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_CTX_sess_set_remove_cb` | | :white_check_mark: | | +| `SSL_CTX_sessions` | | | | +| `SSL_CTX_set0_CA_list` | | | | +| `SSL_CTX_set0_ctlog_store` [^ct] | | | | +| `SSL_CTX_set0_security_ex_data` | | | | +| `SSL_CTX_set0_tmp_dh_pkey` | | | | +| `SSL_CTX_set1_cert_store` | | | | +| `SSL_CTX_set1_param` | | | | +| `SSL_CTX_set_allow_early_data_cb` | | | | +| `SSL_CTX_set_alpn_protos` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_set_alpn_select_cb` | | :white_check_mark: | | +| `SSL_CTX_set_async_callback` | | | | +| `SSL_CTX_set_async_callback_arg` | | | | +| `SSL_CTX_set_block_padding` | | | | +| `SSL_CTX_set_cert_cb` | | :white_check_mark: | | +| `SSL_CTX_set_cert_store` | | | | +| `SSL_CTX_set_cert_verify_callback` | | | | +| `SSL_CTX_set_cipher_list` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_CTX_set_ciphersuites` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_client_CA_list` | | :white_check_mark: | | +| `SSL_CTX_set_client_cert_cb` | | | | +| `SSL_CTX_set_client_cert_engine` [^engine] | | | | +| `SSL_CTX_set_client_hello_cb` | | | | +| `SSL_CTX_set_cookie_generate_cb` | | | | +| `SSL_CTX_set_cookie_verify_cb` | | | | +| `SSL_CTX_set_ct_validation_callback` [^ct] | | | | +| `SSL_CTX_set_ctlog_list_file` [^ct] | | | | +| `SSL_CTX_set_default_ctlog_list_file` [^ct] | | | | +| `SSL_CTX_set_default_passwd_cb` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_default_passwd_cb_userdata` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_default_read_buffer_len` | | | | +| `SSL_CTX_set_default_verify_dir` | | | | +| `SSL_CTX_set_default_verify_file` | | | | +| `SSL_CTX_set_default_verify_paths` | | | | +| `SSL_CTX_set_default_verify_store` | | | | +| `SSL_CTX_set_ex_data` | | :white_check_mark: | :exclamation: [^stub] | +| `SSL_CTX_set_generate_session_id` | | | | +| `SSL_CTX_set_info_callback` | | :white_check_mark: | | +| `SSL_CTX_set_keylog_callback` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_max_early_data` | | :white_check_mark: | | +| `SSL_CTX_set_msg_callback` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_next_proto_select_cb` [^nextprotoneg] | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_next_protos_advertised_cb` [^nextprotoneg] | | :white_check_mark: | | +| `SSL_CTX_set_not_resumable_session_callback` | | | | +| `SSL_CTX_set_num_tickets` | | | | +| `SSL_CTX_set_options` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_set_post_handshake_auth` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_psk_client_callback` [^psk] | | | | +| `SSL_CTX_set_psk_find_session_callback` | | | | +| `SSL_CTX_set_psk_server_callback` [^psk] | | | | +| `SSL_CTX_set_psk_use_session_callback` | | | | +| `SSL_CTX_set_purpose` | | | | +| `SSL_CTX_set_quiet_shutdown` | | | | +| `SSL_CTX_set_record_padding_callback` | | | | +| `SSL_CTX_set_record_padding_callback_arg` | | | | +| `SSL_CTX_set_recv_max_early_data` | | | | +| `SSL_CTX_set_security_callback` | | | | +| `SSL_CTX_set_security_level` | | | | +| `SSL_CTX_set_session_id_context` | | :white_check_mark: | | +| `SSL_CTX_set_session_ticket_cb` | | | | +| `SSL_CTX_set_srp_cb_arg` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_set_srp_client_pwd_callback` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_set_srp_password` [^deprecatedin_3_0] [^srp] | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_srp_strength` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_set_srp_username` [^deprecatedin_3_0] [^srp] | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_set_srp_username_callback` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_set_srp_verify_param_callback` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_CTX_set_ssl_version` [^deprecatedin_3_0] | | | | +| `SSL_CTX_set_stateless_cookie_generate_cb` | | | | +| `SSL_CTX_set_stateless_cookie_verify_cb` | | | | +| `SSL_CTX_set_timeout` | | :white_check_mark: | | +| `SSL_CTX_set_tlsext_max_fragment_length` | | | | +| `SSL_CTX_set_tlsext_ticket_key_evp_cb` | | | | +| `SSL_CTX_set_tlsext_use_srtp` [^srtp] | | | | +| `SSL_CTX_set_tmp_dh_callback` [^deprecatedin_3_0] [^dh] | | | | +| `SSL_CTX_set_trust` | | | | +| `SSL_CTX_set_verify` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_CTX_set_verify_depth` | | :white_check_mark: | | +| `SSL_CTX_up_ref` | | | :white_check_mark: | +| `SSL_CTX_use_PrivateKey` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_CTX_use_PrivateKey_ASN1` | | | | +| `SSL_CTX_use_PrivateKey_file` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_use_RSAPrivateKey` [^deprecatedin_3_0] | | | | +| `SSL_CTX_use_RSAPrivateKey_ASN1` [^deprecatedin_3_0] | | | | +| `SSL_CTX_use_RSAPrivateKey_file` [^deprecatedin_3_0] | | | | +| `SSL_CTX_use_cert_and_key` | | | | +| `SSL_CTX_use_certificate` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_CTX_use_certificate_ASN1` | | | | +| `SSL_CTX_use_certificate_chain_file` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_use_certificate_file` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_CTX_use_psk_identity_hint` [^psk] | | | | +| `SSL_CTX_use_serverinfo` | | | | +| `SSL_CTX_use_serverinfo_ex` | | | | +| `SSL_CTX_use_serverinfo_file` | | | | +| `SSL_SESSION_dup` | | | | +| `SSL_SESSION_free` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_SESSION_get0_alpn_selected` | | | | +| `SSL_SESSION_get0_cipher` | | | | +| `SSL_SESSION_get0_hostname` | | | | +| `SSL_SESSION_get0_id_context` | | | | +| `SSL_SESSION_get0_peer` | | | | +| `SSL_SESSION_get0_ticket` | | | | +| `SSL_SESSION_get0_ticket_appdata` | | | | +| `SSL_SESSION_get_compress_id` | | | | +| `SSL_SESSION_get_ex_data` | | | | +| `SSL_SESSION_get_id` | | :white_check_mark: | | +| `SSL_SESSION_get_master_key` | | | | +| `SSL_SESSION_get_max_early_data` | | | | +| `SSL_SESSION_get_max_fragment_length` | | | | +| `SSL_SESSION_get_protocol_version` | | | | +| `SSL_SESSION_get_ticket_lifetime_hint` | | | | +| `SSL_SESSION_get_time` | | | | +| `SSL_SESSION_get_timeout` | | | | +| `SSL_SESSION_has_ticket` | | | | +| `SSL_SESSION_is_resumable` | | | | +| `SSL_SESSION_new` | | | | +| `SSL_SESSION_print` | | | | +| `SSL_SESSION_print_fp` [^stdio] | | | | +| `SSL_SESSION_print_keylog` | | | | +| `SSL_SESSION_set1_alpn_selected` | | | | +| `SSL_SESSION_set1_hostname` | | | | +| `SSL_SESSION_set1_id` | | | | +| `SSL_SESSION_set1_id_context` | | | | +| `SSL_SESSION_set1_master_key` | | | | +| `SSL_SESSION_set1_ticket_appdata` | | | | +| `SSL_SESSION_set_cipher` | | | | +| `SSL_SESSION_set_ex_data` | | | | +| `SSL_SESSION_set_max_early_data` | | | | +| `SSL_SESSION_set_protocol_version` | | | | +| `SSL_SESSION_set_time` | | | | +| `SSL_SESSION_set_timeout` | | | | +| `SSL_SESSION_up_ref` | | :white_check_mark: | | +| `SSL_SRP_CTX_free` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_SRP_CTX_init` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_accept` | | | | +| `SSL_add1_host` | | | | +| `SSL_add1_to_CA_list` | | | | +| `SSL_add_client_CA` | | | | +| `SSL_add_dir_cert_subjects_to_stack` | | | | +| `SSL_add_file_cert_subjects_to_stack` | | | | +| `SSL_add_ssl_module` | | | | +| `SSL_add_store_cert_subjects_to_stack` | | | | +| `SSL_alert_desc_string` | | | :white_check_mark: | +| `SSL_alert_desc_string_long` | :white_check_mark: | | :white_check_mark: | +| `SSL_alert_type_string` | | | | +| `SSL_alert_type_string_long` | | | | +| `SSL_alloc_buffers` | | | | +| `SSL_bytes_to_cipher_list` | | | | +| `SSL_callback_ctrl` | | | | +| `SSL_certs_clear` | | | | +| `SSL_check_chain` | | | | +| `SSL_check_private_key` | | | | +| `SSL_clear` | | | | +| `SSL_clear_options` | | :white_check_mark: | :white_check_mark: | +| `SSL_client_hello_get0_ciphers` | | | | +| `SSL_client_hello_get0_compression_methods` | | | | +| `SSL_client_hello_get0_ext` | | | | +| `SSL_client_hello_get0_legacy_version` | | | | +| `SSL_client_hello_get0_random` | | | | +| `SSL_client_hello_get0_session_id` | | | | +| `SSL_client_hello_get1_extensions_present` | | | | +| `SSL_client_hello_isv2` | | | | +| `SSL_client_version` | | | | +| `SSL_config` | | | | +| `SSL_connect` | :white_check_mark: | | :white_check_mark: | +| `SSL_copy_session_id` | | | | +| `SSL_ct_is_enabled` [^ct] | | | | +| `SSL_ctrl` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_dane_clear_flags` | | | | +| `SSL_dane_enable` | | | | +| `SSL_dane_set_flags` | | | | +| `SSL_dane_tlsa_add` | | | | +| `SSL_do_handshake` | | :white_check_mark: | | +| `SSL_dup` | | | | +| `SSL_dup_CA_list` | | | | +| `SSL_enable_ct` [^ct] | | | | +| `SSL_export_keying_material` | | | | +| `SSL_export_keying_material_early` | | | | +| `SSL_extension_supported` | | | | +| `SSL_free` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_free_buffers` | | | | +| `SSL_get0_CA_list` | | | | +| `SSL_get0_alpn_selected` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get0_dane` | | | | +| `SSL_get0_dane_authority` | | | | +| `SSL_get0_dane_tlsa` | | | | +| `SSL_get0_next_proto_negotiated` [^nextprotoneg] | | :white_check_mark: | | +| `SSL_get0_param` | | | | +| `SSL_get0_peer_CA_list` | | | | +| `SSL_get0_peer_certificate` | | | :white_check_mark: | +| `SSL_get0_peer_scts` [^ct] | | | | +| `SSL_get0_peername` | | | | +| `SSL_get0_security_ex_data` | | | | +| `SSL_get0_verified_chain` | | | :white_check_mark: | +| `SSL_get1_peer_certificate` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get1_session` | | :white_check_mark: | | +| `SSL_get1_supported_ciphers` | | | | +| `SSL_get_SSL_CTX` | | | | +| `SSL_get_all_async_fds` | | | | +| `SSL_get_async_status` | | | | +| `SSL_get_certificate` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_get_changed_async_fds` | | | | +| `SSL_get_cipher_list` | | | | +| `SSL_get_ciphers` | | | | +| `SSL_get_client_CA_list` | | | | +| `SSL_get_client_ciphers` | | | | +| `SSL_get_client_random` | | | | +| `SSL_get_current_cipher` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get_current_compression` | | | | +| `SSL_get_current_expansion` | | | | +| `SSL_get_default_passwd_cb` | | | | +| `SSL_get_default_passwd_cb_userdata` | | | | +| `SSL_get_default_timeout` | | | | +| `SSL_get_early_data_status` | | | | +| `SSL_get_error` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get_ex_data` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_get_ex_data_X509_STORE_CTX_idx` | | :white_check_mark: | | +| `SSL_get_fd` | | | | +| `SSL_get_finished` | | | | +| `SSL_get_info_callback` | | | | +| `SSL_get_key_update_type` | | | | +| `SSL_get_max_early_data` | | | | +| `SSL_get_num_tickets` | | | | +| `SSL_get_options` | | :white_check_mark: | :white_check_mark: | +| `SSL_get_peer_cert_chain` | :white_check_mark: | | :white_check_mark: | +| `SSL_get_peer_finished` | | | | +| `SSL_get_peer_signature_type_nid` | | | | +| `SSL_get_pending_cipher` | | | | +| `SSL_get_privatekey` | :white_check_mark: | | :exclamation: [^stub] | +| `SSL_get_psk_identity` [^psk] | | | | +| `SSL_get_psk_identity_hint` [^psk] | | | | +| `SSL_get_quiet_shutdown` | | | | +| `SSL_get_rbio` | | :white_check_mark: | | +| `SSL_get_read_ahead` | | | | +| `SSL_get_record_padding_callback_arg` | | | | +| `SSL_get_recv_max_early_data` | | | | +| `SSL_get_rfd` | | | | +| `SSL_get_security_callback` | | | | +| `SSL_get_security_level` | | | | +| `SSL_get_selected_srtp_profile` [^srtp] | | | | +| `SSL_get_server_random` | | | | +| `SSL_get_servername` | | :white_check_mark: | | +| `SSL_get_servername_type` | | | | +| `SSL_get_session` | | :white_check_mark: | | +| `SSL_get_shared_ciphers` | | | | +| `SSL_get_shared_sigalgs` | | | | +| `SSL_get_shutdown` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get_sigalgs` | | | | +| `SSL_get_signature_type_nid` | | | | +| `SSL_get_srp_N` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_get_srp_g` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_get_srp_userinfo` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_get_srp_username` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_get_srtp_profiles` [^srtp] | | | | +| `SSL_get_ssl_method` | | | | +| `SSL_get_state` | | | | +| `SSL_get_verify_callback` | | | | +| `SSL_get_verify_depth` | | | | +| `SSL_get_verify_mode` | | | | +| `SSL_get_verify_result` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get_version` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_get_wbio` | | :white_check_mark: | | +| `SSL_get_wfd` | | | | +| `SSL_group_to_name` | | | | +| `SSL_has_matching_session_id` | | | | +| `SSL_has_pending` | | | :white_check_mark: | +| `SSL_in_before` | | | | +| `SSL_in_init` | | :white_check_mark: | | +| `SSL_is_dtls` | | | | +| `SSL_is_init_finished` | | :white_check_mark: | | +| `SSL_is_server` | | | :white_check_mark: | +| `SSL_key_update` | | | | +| `SSL_load_client_CA_file` | | :white_check_mark: | | +| `SSL_load_client_CA_file_ex` | | | | +| `SSL_new` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_new_session_ticket` | | | | +| `SSL_peek` | | | | +| `SSL_peek_ex` | | | | +| `SSL_pending` | :white_check_mark: | | :white_check_mark: | +| `SSL_read` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_read_early_data` | | :white_check_mark: | | +| `SSL_read_ex` | | | | +| `SSL_renegotiate` | | | | +| `SSL_renegotiate_abbreviated` | | | | +| `SSL_renegotiate_pending` | | | | +| `SSL_rstate_string` | | | | +| `SSL_rstate_string_long` | | | | +| `SSL_select_next_proto` | | :white_check_mark: | | +| `SSL_sendfile` | | | | +| `SSL_session_reused` | | :white_check_mark: | | +| `SSL_set0_CA_list` | | | | +| `SSL_set0_rbio` | | | :white_check_mark: | +| `SSL_set0_security_ex_data` | | | | +| `SSL_set0_tmp_dh_pkey` | | | | +| `SSL_set0_wbio` | | | :white_check_mark: | +| `SSL_set1_host` | | | :white_check_mark: | +| `SSL_set1_param` | | | | +| `SSL_set_SSL_CTX` | | :white_check_mark: | | +| `SSL_set_accept_state` | | :white_check_mark: | :white_check_mark: | +| `SSL_set_allow_early_data_cb` | | | | +| `SSL_set_alpn_protos` | | | :white_check_mark: | +| `SSL_set_async_callback` | | | | +| `SSL_set_async_callback_arg` | | | | +| `SSL_set_bio` | :white_check_mark: | | :white_check_mark: | +| `SSL_set_block_padding` | | | | +| `SSL_set_cert_cb` | | | | +| `SSL_set_cipher_list` | | | | +| `SSL_set_ciphersuites` | | | | +| `SSL_set_client_CA_list` | | | | +| `SSL_set_connect_state` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_set_ct_validation_callback` [^ct] | | | | +| `SSL_set_debug` [^deprecatedin_1_1_0] | | | | +| `SSL_set_default_passwd_cb` | | | | +| `SSL_set_default_passwd_cb_userdata` | | | | +| `SSL_set_default_read_buffer_len` | | | | +| `SSL_set_ex_data` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_set_fd` [^sock] | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_set_generate_session_id` | | | | +| `SSL_set_hostflags` | | | | +| `SSL_set_info_callback` | | | | +| `SSL_set_max_early_data` | | | | +| `SSL_set_msg_callback` | | | | +| `SSL_set_not_resumable_session_callback` | | | | +| `SSL_set_num_tickets` | | | | +| `SSL_set_options` | | :white_check_mark: | :white_check_mark: | +| `SSL_set_post_handshake_auth` | | | :exclamation: [^stub] | +| `SSL_set_psk_client_callback` [^psk] | | | | +| `SSL_set_psk_find_session_callback` | | | | +| `SSL_set_psk_server_callback` [^psk] | | | | +| `SSL_set_psk_use_session_callback` | | | | +| `SSL_set_purpose` | | | | +| `SSL_set_quiet_shutdown` | | :white_check_mark: | | +| `SSL_set_read_ahead` | | | | +| `SSL_set_record_padding_callback` | | | | +| `SSL_set_record_padding_callback_arg` | | | | +| `SSL_set_recv_max_early_data` | | | | +| `SSL_set_rfd` [^sock] | | | | +| `SSL_set_security_callback` | | | | +| `SSL_set_security_level` | | | | +| `SSL_set_session` | :white_check_mark: | :white_check_mark: | :exclamation: [^stub] | +| `SSL_set_session_id_context` | | | | +| `SSL_set_session_secret_cb` | | | | +| `SSL_set_session_ticket_ext` | | | | +| `SSL_set_session_ticket_ext_cb` | | | | +| `SSL_set_shutdown` | | :white_check_mark: | :white_check_mark: | +| `SSL_set_srp_server_param` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_set_srp_server_param_pw` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_set_ssl_method` | | | | +| `SSL_set_tlsext_max_fragment_length` | | | | +| `SSL_set_tlsext_use_srtp` [^srtp] | | | | +| `SSL_set_tmp_dh_callback` [^deprecatedin_3_0] [^dh] | | | | +| `SSL_set_trust` | | | | +| `SSL_set_verify` | | :white_check_mark: | | +| `SSL_set_verify_depth` | | :white_check_mark: | | +| `SSL_set_verify_result` | | | | +| `SSL_set_wfd` [^sock] | | | | +| `SSL_shutdown` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_srp_server_param_with_username` [^deprecatedin_3_0] [^srp] | | | | +| `SSL_state_string` | | | | +| `SSL_state_string_long` | | | | +| `SSL_stateless` | | | | +| `SSL_test_functions` [^unit_test] | | | | +| `SSL_trace` [^ssl_trace] | | | | +| `SSL_up_ref` | | | :white_check_mark: | +| `SSL_use_PrivateKey` | | :white_check_mark: | | +| `SSL_use_PrivateKey_ASN1` | | | | +| `SSL_use_PrivateKey_file` | | | | +| `SSL_use_RSAPrivateKey` [^deprecatedin_3_0] | | | | +| `SSL_use_RSAPrivateKey_ASN1` [^deprecatedin_3_0] | | | | +| `SSL_use_RSAPrivateKey_file` [^deprecatedin_3_0] | | | | +| `SSL_use_cert_and_key` | | | | +| `SSL_use_certificate` | | :white_check_mark: | | +| `SSL_use_certificate_ASN1` | | | | +| `SSL_use_certificate_chain_file` | | | | +| `SSL_use_certificate_file` | | | | +| `SSL_use_psk_identity_hint` [^psk] | | | | +| `SSL_verify_client_post_handshake` | | | | +| `SSL_version` | | | | +| `SSL_waiting_for_async` | | | | +| `SSL_want` | | | :white_check_mark: | +| `SSL_write` | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `SSL_write_early_data` | | :white_check_mark: | | +| `SSL_write_ex` | | | | +| `SSLv3_client_method` [^deprecatedin_1_1_0] [^ssl3_method] | | | | +| `SSLv3_method` [^deprecatedin_1_1_0] [^ssl3_method] | | | | +| `SSLv3_server_method` [^deprecatedin_1_1_0] [^ssl3_method] | | | | +| `TLS_client_method` | :white_check_mark: | | :white_check_mark: | +| `TLS_method` | | :white_check_mark: | :white_check_mark: | +| `TLS_server_method` | | | :white_check_mark: | +| `TLSv1_1_client_method` [^deprecatedin_1_1_0] [^tls1_1_method] | | | | +| `TLSv1_1_method` [^deprecatedin_1_1_0] [^tls1_1_method] | | | | +| `TLSv1_1_server_method` [^deprecatedin_1_1_0] [^tls1_1_method] | | | | +| `TLSv1_2_client_method` [^deprecatedin_1_1_0] [^tls1_2_method] | | | | +| `TLSv1_2_method` [^deprecatedin_1_1_0] [^tls1_2_method] | | | | +| `TLSv1_2_server_method` [^deprecatedin_1_1_0] [^tls1_2_method] | | | | +| `TLSv1_client_method` [^deprecatedin_1_1_0] [^tls1_method] | | | | +| `TLSv1_method` [^deprecatedin_1_1_0] [^tls1_method] | | | | +| `TLSv1_server_method` [^deprecatedin_1_1_0] [^tls1_method] | | | | +| `d2i_SSL_SESSION` | | :white_check_mark: | | +| `i2d_SSL_SESSION` | | :white_check_mark: | | + +[^stub]: symbol exists, but just returns an error. +[^deprecatedin_1_1_0]: deprecated in openssl 1.1.0 +[^deprecatedin_3_0]: deprecated in openssl 3.0 +[^stdio]: depends on C stdio `FILE*` +[^ct]: certificate transparency-specific (NYI in rustls) +[^nextprotoneg]: next protocol negotiation (NPN) feature -- non-standard precursor to ALPN +[^srp]: SRP-specific +[^srtp]: SRTP-specific +[^psk]: pre-shared-key-specific +[^sock]: specific to platforms with file descriptors +[^unit_test]: access to openssl internals for unit testing +[^ssl_trace]: protocol tracing API +[^dtls1_2_method]: DTLS 1.2-specific +[^dtls1_method]: DTLS 1.0-specific +[^dh]: Diffie-Hellman-specific +[^ssl3_method]: SSL 3.0-specific +[^tls1_method]: TLS 1.0-specific +[^tls1_1_method]: TLS 1.1-specific +[^tls1_2_method]: TLS 1.2-specific +[^engine]: openssl ENGINE-specific diff --git a/rustls-libssl/admin/libssl.num b/rustls-libssl/admin/libssl.num new file mode 100644 index 0000000..748936b --- /dev/null +++ b/rustls-libssl/admin/libssl.num @@ -0,0 +1,523 @@ +# taken from OpenSSL 3.0.0 under Apache-2.0 license +SSL_get_selected_srtp_profile 1 3_0_0 EXIST::FUNCTION:SRTP +SSL_set_read_ahead 2 3_0_0 EXIST::FUNCTION: +SSL_set_accept_state 3 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_cipher_list 4 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_srp_client_pwd_callback 5 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_copy_session_id 6 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_srp_password 7 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_shutdown 8 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_msg_callback 9 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_ticket 11 3_0_0 EXIST::FUNCTION: +SSL_get1_supported_ciphers 12 3_0_0 EXIST::FUNCTION: +SSL_state_string_long 13 3_0_0 EXIST::FUNCTION: +SSL_CTX_get0_certificate 14 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set_ex_data 15 3_0_0 EXIST::FUNCTION: +SSL_get_verify_depth 16 3_0_0 EXIST::FUNCTION: +SSL_get0_dane 17 3_0_0 EXIST::FUNCTION: +SSL_CTX_sess_get_get_cb 18 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_default_passwd_cb_userdata 19 3_0_0 EXIST::FUNCTION: +SSL_set_tmp_dh_callback 20 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DH +SSL_CTX_get_verify_depth 21 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_RSAPrivateKey_file 22 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_use_PrivateKey_file 23 3_0_0 EXIST::FUNCTION: +SSL_set_generate_session_id 24 3_0_0 EXIST::FUNCTION: +SSL_get_ex_data_X509_STORE_CTX_idx 25 3_0_0 EXIST::FUNCTION: +SSL_get_quiet_shutdown 26 3_0_0 EXIST::FUNCTION: +SSL_dane_enable 27 3_0_0 EXIST::FUNCTION: +SSL_COMP_add_compression_method 28 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_RSAPrivateKey 29 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_CTX_sess_get_new_cb 30 3_0_0 EXIST::FUNCTION: +d2i_SSL_SESSION 31 3_0_0 EXIST::FUNCTION: +SSL_use_PrivateKey_ASN1 32 3_0_0 EXIST::FUNCTION: +PEM_write_SSL_SESSION 33 3_0_0 EXIST::FUNCTION:STDIO +SSL_CTX_set_session_id_context 34 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_cipher_nid 35 3_0_0 EXIST::FUNCTION: +SSL_get_srp_g 36 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_want 37 3_0_0 EXIST::FUNCTION: +SSL_get_cipher_list 38 3_0_0 EXIST::FUNCTION: +SSL_get_verify_result 39 3_0_0 EXIST::FUNCTION: +SSL_renegotiate 40 3_0_0 EXIST::FUNCTION: +SSL_get_privatekey 41 3_0_0 EXIST::FUNCTION: +SSL_peek 42 3_0_0 EXIST::FUNCTION: +SRP_Calc_A_param 43 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_SESSION_get_ticket_lifetime_hint 44 3_0_0 EXIST::FUNCTION: +SSL_SRP_CTX_free 45 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_CTX_set_client_CA_list 46 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_next_proto_select_cb 47 3_0_0 EXIST::FUNCTION:NEXTPROTONEG +BIO_ssl_copy_session_id 48 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_security_callback 49 3_0_0 EXIST::FUNCTION: +SSL_CONF_cmd_value_type 50 3_0_0 EXIST::FUNCTION: +SSL_CTX_remove_session 51 3_0_0 EXIST::FUNCTION: +SSL_SESSION_new 52 3_0_0 EXIST::FUNCTION: +TLSv1_2_server_method 53 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD +BIO_new_buffer_ssl_connect 54 3_0_0 EXIST::FUNCTION: +SSL_CTX_set0_security_ex_data 55 3_0_0 EXIST::FUNCTION: +SSL_alert_desc_string 56 3_0_0 EXIST::FUNCTION: +SSL_get0_dane_authority 57 3_0_0 EXIST::FUNCTION: +SSL_set_purpose 58 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_PrivateKey_file 59 3_0_0 EXIST::FUNCTION: +SSL_get_rfd 60 3_0_0 EXIST::FUNCTION: +DTLSv1_listen 61 3_0_0 EXIST::FUNCTION:SOCK +SSL_set_ssl_method 62 3_0_0 EXIST::FUNCTION: +SSL_get0_security_ex_data 63 3_0_0 EXIST::FUNCTION: +SSLv3_client_method 64 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD +SSL_set_security_level 65 3_0_0 EXIST::FUNCTION: +DTLSv1_2_method 66 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD +SSL_get_fd 67 3_0_0 EXIST::FUNCTION: +SSL_get1_session 68 3_0_0 EXIST::FUNCTION: +SSL_use_RSAPrivateKey 69 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_CTX_set_srp_cb_arg 70 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_CTX_add_session 71 3_0_0 EXIST::FUNCTION: +SSL_get_srp_N 72 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_has_matching_session_id 73 3_0_0 EXIST::FUNCTION: +PEM_read_SSL_SESSION 74 3_0_0 EXIST::FUNCTION:STDIO +SSL_get_shared_ciphers 75 3_0_0 EXIST::FUNCTION: +SSL_add1_host 76 3_0_0 EXIST::FUNCTION: +SSL_CONF_cmd_argv 77 3_0_0 EXIST::FUNCTION: +SSL_version 78 3_0_0 EXIST::FUNCTION: +SSL_SESSION_print 79 3_0_0 EXIST::FUNCTION: +SSL_get_client_ciphers 80 3_0_0 EXIST::FUNCTION: +SSL_get_srtp_profiles 81 3_0_0 EXIST::FUNCTION:SRTP +SSL_use_certificate_ASN1 82 3_0_0 EXIST::FUNCTION: +SSL_get_peer_certificate 83 3_0_0 NOEXIST::FUNCTION: +DTLSv1_2_server_method 84 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD +SSL_set_cert_cb 85 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_cookie_verify_cb 86 3_0_0 EXIST::FUNCTION: +SSL_get_shared_sigalgs 87 3_0_0 EXIST::FUNCTION: +SSL_config 88 3_0_0 EXIST::FUNCTION: +TLSv1_1_client_method 89 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD +SSL_CIPHER_standard_name 90 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_verify_mode 91 3_0_0 EXIST::FUNCTION: +SSL_get_all_async_fds 92 3_0_0 EXIST::FUNCTION: +SSL_CTX_check_private_key 93 3_0_0 EXIST::FUNCTION: +SSL_set_wfd 94 3_0_0 EXIST::FUNCTION:SOCK +SSL_get_client_CA_list 95 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_set_flags 96 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_srp_username_callback 97 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_connect 98 3_0_0 EXIST::FUNCTION: +SSL_get_psk_identity 99 3_0_0 EXIST::FUNCTION:PSK +SSL_CTX_use_certificate_file 100 3_0_0 EXIST::FUNCTION: +SSL_set_session_ticket_ext 101 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_psk_server_callback 102 3_0_0 EXIST::FUNCTION:PSK +SSL_get_sigalgs 103 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_next_protos_advertised_cb 104 3_0_0 EXIST::FUNCTION:NEXTPROTONEG +SSL_CTX_set_trust 105 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_verify 106 3_0_0 EXIST::FUNCTION: +SSL_set_rfd 107 3_0_0 EXIST::FUNCTION:SOCK +SSL_SESSION_set_timeout 108 3_0_0 EXIST::FUNCTION: +SSL_set_psk_client_callback 109 3_0_0 EXIST::FUNCTION:PSK +SSL_get_client_random 110 3_0_0 EXIST::FUNCTION: +TLS_method 111 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_clear_flags 112 3_0_0 EXIST::FUNCTION: +TLSv1_client_method 113 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD +SSL_CIPHER_get_bits 114 3_0_0 EXIST::FUNCTION: +SSL_test_functions 115 3_0_0 EXIST::FUNCTION:UNIT_TEST +SSL_get_SSL_CTX 116 3_0_0 EXIST::FUNCTION: +SSL_get_session 117 3_0_0 EXIST::FUNCTION: +SSL_CTX_callback_ctrl 118 3_0_0 EXIST::FUNCTION: +SSL_get_finished 119 3_0_0 EXIST::FUNCTION: +SSL_add_dir_cert_subjects_to_stack 120 3_0_0 EXIST::FUNCTION: +SSL_get_state 121 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_finish 122 3_0_0 EXIST::FUNCTION: +SSL_CTX_add_server_custom_ext 123 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_ex_data 124 3_0_0 EXIST::FUNCTION: +SSL_get_srp_username 125 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_CTX_set_purpose 126 3_0_0 EXIST::FUNCTION: +SSL_clear 127 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_cert_store 128 3_0_0 EXIST::FUNCTION: +TLSv1_2_method 129 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD +SSL_session_reused 130 3_0_0 EXIST::FUNCTION: +SSL_free 131 3_0_0 EXIST::FUNCTION: +BIO_ssl_shutdown 132 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_client_CA_list 133 3_0_0 EXIST::FUNCTION: +SSL_CTX_sessions 134 3_0_0 EXIST::FUNCTION: +SSL_get_options 135 3_0_0 EXIST::FUNCTION: +SSL_set_verify_depth 136 3_0_0 EXIST::FUNCTION: +SSL_get_error 137 3_0_0 EXIST::FUNCTION: +SSL_get_servername 138 3_0_0 EXIST::FUNCTION: +SSL_get_version 139 3_0_0 EXIST::FUNCTION: +SSL_state_string 140 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_timeout 141 3_0_0 EXIST::FUNCTION: +SSL_CTX_sess_get_remove_cb 142 3_0_0 EXIST::FUNCTION: +SSL_get_current_cipher 143 3_0_0 EXIST::FUNCTION: +SSL_up_ref 144 3_0_0 EXIST::FUNCTION: +SSL_export_keying_material 145 3_0_0 EXIST::FUNCTION: +SSL_callback_ctrl 146 3_0_0 EXIST::FUNCTION: +SSL_set_security_callback 147 3_0_0 EXIST::FUNCTION: +SSL_SRP_CTX_init 148 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +ERR_load_SSL_strings 149 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_CTX_SRP_CTX_init 150 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_SESSION_set_time 151 3_0_0 EXIST::FUNCTION: +i2d_SSL_SESSION 152 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_master_key 153 3_0_0 EXIST::FUNCTION: +SSL_COMP_get_compression_methods 154 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_alpn_select_cb 155 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_tmp_dh_callback 156 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DH +SSL_CTX_get_default_passwd_cb 157 3_0_0 EXIST::FUNCTION: +TLSv1_server_method 158 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD +DTLS_server_method 159 3_0_0 EXIST::FUNCTION: +SSL_set0_rbio 160 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_options 161 3_0_0 EXIST::FUNCTION: +SSL_set_msg_callback 162 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_free 163 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_ssl_method 164 3_0_0 EXIST::FUNCTION: +SSL_get_server_random 165 3_0_0 EXIST::FUNCTION: +SSL_set_shutdown 166 3_0_0 EXIST::FUNCTION: +SSL_CTX_add_client_CA 167 3_0_0 EXIST::FUNCTION: +TLSv1_1_server_method 168 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD +PEM_write_bio_SSL_SESSION 169 3_0_0 EXIST::FUNCTION: +SSL_write 170 3_0_0 EXIST::FUNCTION: +SSL_set1_host 171 3_0_0 EXIST::FUNCTION: +SSL_use_RSAPrivateKey_file 172 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_CTX_get_info_callback 173 3_0_0 EXIST::FUNCTION: +SSL_get0_peername 174 3_0_0 EXIST::FUNCTION: +SSL_set_srp_server_param 175 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +TLS_server_method 176 3_0_0 EXIST::FUNCTION: +SSL_get_psk_identity_hint 177 3_0_0 EXIST::FUNCTION:PSK +SSL_set_session 178 3_0_0 EXIST::FUNCTION: +SSL_get0_param 179 3_0_0 EXIST::FUNCTION: +SSL_set_default_passwd_cb 180 3_0_0 EXIST::FUNCTION: +SSL_get_read_ahead 181 3_0_0 EXIST::FUNCTION: +SSL_dup_CA_list 182 3_0_0 EXIST::FUNCTION: +SSL_get_verify_callback 183 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_passwd_cb 184 3_0_0 EXIST::FUNCTION: +SSL_get_servername_type 185 3_0_0 EXIST::FUNCTION: +TLSv1_2_client_method 186 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD +SSL_add_client_CA 187 3_0_0 EXIST::FUNCTION: +SSL_CTX_get0_security_ex_data 188 3_0_0 EXIST::FUNCTION: +SSL_get_ex_data 189 3_0_0 EXIST::FUNCTION: +SSL_CTX_flush_sessions 190 3_0_0 EXIST::FUNCTION: +SSL_use_PrivateKey 191 3_0_0 EXIST::FUNCTION: +DTLSv1_client_method 192 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD +SSL_CTX_dane_mtype_set 193 3_0_0 EXIST::FUNCTION: +SSL_get_wfd 194 3_0_0 EXIST::FUNCTION: +SSL_get_ssl_method 195 3_0_0 EXIST::FUNCTION: +SSL_set_verify_result 196 3_0_0 EXIST::FUNCTION: +SSL_use_RSAPrivateKey_ASN1 197 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_CIPHER_get_name 198 3_0_0 EXIST::FUNCTION: +OPENSSL_init_ssl 199 3_0_0 EXIST::FUNCTION: +SSL_dup 200 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_serverinfo 201 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_serverinfo_file 202 3_0_0 EXIST::FUNCTION: +SSL_set_options 203 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_verify_dir 204 3_0_0 EXIST::FUNCTION: +SSL_do_handshake 205 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_ex_data 206 3_0_0 EXIST::FUNCTION: +SSL_is_init_finished 207 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_verify_file 208 3_0_0 EXIST::FUNCTION: +SSLv3_method 209 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD +SSL_CTX_set_cookie_generate_cb 210 3_0_0 EXIST::FUNCTION: +SSL_certs_clear 211 3_0_0 EXIST::FUNCTION: +SSL_set_connect_state 212 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_ex_data 213 3_0_0 EXIST::FUNCTION: +SSL_rstate_string 214 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_peer 215 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_compress_id 216 3_0_0 EXIST::FUNCTION: +SSL_get_peer_cert_chain 217 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_cert_cb 218 3_0_0 EXIST::FUNCTION: +PEM_read_bio_SSL_SESSION 219 3_0_0 EXIST::FUNCTION: +SSL_set_info_callback 220 3_0_0 EXIST::FUNCTION: +SSL_CTX_sess_set_new_cb 221 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_security_level 222 3_0_0 EXIST::FUNCTION: +SSL_CTX_ctrl 223 3_0_0 EXIST::FUNCTION: +SSL_set_alpn_protos 224 3_0_0 EXIST::FUNCTION: +SSL_set_ex_data 225 3_0_0 EXIST::FUNCTION: +SSL_rstate_string_long 226 3_0_0 EXIST::FUNCTION: +SSL_ctrl 227 3_0_0 EXIST::FUNCTION: +SSL_get_current_compression 228 3_0_0 EXIST::FUNCTION: +SSL_SESSION_has_ticket 229 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_cert_verify_callback 230 3_0_0 EXIST::FUNCTION: +SSL_set_session_secret_cb 231 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_client_cert_engine 232 3_0_0 EXIST::FUNCTION:ENGINE +SSL_CTX_get0_param 233 3_0_0 EXIST::FUNCTION: +SSL_CTX_set1_param 234 3_0_0 EXIST::FUNCTION: +SSL_get_certificate 235 3_0_0 EXIST::FUNCTION: +DTLSv1_server_method 236 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD +SSL_set_fd 237 3_0_0 EXIST::FUNCTION:SOCK +SSL_use_certificate 238 3_0_0 EXIST::FUNCTION: +DTLSv1_method 239 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD +SSL_set0_wbio 240 3_0_0 EXIST::FUNCTION: +SSL_read 241 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_options 242 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_ssl_version 243 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_set_SSL_CTX 244 3_0_0 EXIST::FUNCTION: +SSL_renegotiate_abbreviated 245 3_0_0 EXIST::FUNCTION: +SSL_get_verify_mode 246 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_id 247 3_0_0 EXIST::FUNCTION: +SSL_SESSION_print_keylog 248 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_psk_client_callback 249 3_0_0 EXIST::FUNCTION:PSK +SSL_SESSION_get_time 250 3_0_0 EXIST::FUNCTION: +SSL_set_debug 251 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +SSL_get_security_level 252 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_description 253 3_0_0 EXIST::FUNCTION: +SSL_set_default_passwd_cb_userdata 254 3_0_0 EXIST::FUNCTION: +SSL_get_srp_userinfo 255 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_extension_supported 256 3_0_0 EXIST::FUNCTION: +SSL_dane_tlsa_add 257 3_0_0 EXIST::FUNCTION: +SSL_srp_server_param_with_username 258 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_CIPHER_get_version 259 3_0_0 EXIST::FUNCTION: +SSL_get0_verified_chain 260 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_find 261 3_0_0 EXIST::FUNCTION: +SSL_get_rbio 262 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_set_ssl 263 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_verify_depth 264 3_0_0 EXIST::FUNCTION: +SSL_get_ciphers 265 3_0_0 EXIST::FUNCTION: +SSL_CTX_config 266 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_set_ssl_ctx 267 3_0_0 EXIST::FUNCTION: +SSL_CONF_cmd 268 3_0_0 EXIST::FUNCTION: +SSL_add_ssl_module 269 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_verify_callback 270 3_0_0 EXIST::FUNCTION: +SSL_set1_param 271 3_0_0 EXIST::FUNCTION: +SSL_use_certificate_file 272 3_0_0 EXIST::FUNCTION: +SSL_get_changed_async_fds 273 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_client_cert_cb 274 3_0_0 EXIST::FUNCTION: +DTLS_client_method 275 3_0_0 EXIST::FUNCTION: +SSL_set_trust 276 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_security_callback 277 3_0_0 EXIST::FUNCTION: +SSL_CTX_clear_options 278 3_0_0 EXIST::FUNCTION: +SSL_check_chain 279 3_0_0 EXIST::FUNCTION: +SSL_CTX_sess_set_remove_cb 280 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_info_callback 281 3_0_0 EXIST::FUNCTION: +SSL_pending 282 3_0_0 EXIST::FUNCTION: +SSL_set_bio 283 3_0_0 EXIST::FUNCTION: +BIO_new_ssl_connect 284 3_0_0 EXIST::FUNCTION: +SSL_waiting_for_async 285 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_srp_strength 286 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_CTX_get_quiet_shutdown 287 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_certificate_chain_file 288 3_0_0 EXIST::FUNCTION: +SSL_CTX_dane_enable 289 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_new 290 3_0_0 EXIST::FUNCTION: +SSL_get0_alpn_selected 291 3_0_0 EXIST::FUNCTION: +SSL_get0_next_proto_negotiated 292 3_0_0 EXIST::FUNCTION:NEXTPROTONEG +SSL_set0_security_ex_data 293 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_tlsext_use_srtp 294 3_0_0 EXIST::FUNCTION:SRTP +SSL_COMP_set0_compression_methods 295 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_not_resumable_session_callback 296 3_0_0 EXIST::FUNCTION: +SSL_accept 297 3_0_0 EXIST::FUNCTION: +SSL_use_psk_identity_hint 298 3_0_0 EXIST::FUNCTION:PSK +SSL_trace 299 3_0_0 EXIST::FUNCTION:SSL_TRACE +DTLS_method 300 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_srp_verify_param_callback 301 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_CTX_set_timeout 302 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_security_level 303 3_0_0 EXIST::FUNCTION: +TLS_client_method 304 3_0_0 EXIST::FUNCTION: +SSL_set_quiet_shutdown 305 3_0_0 EXIST::FUNCTION: +SSL_CTX_up_ref 306 3_0_0 EXIST::FUNCTION: +SSL_check_private_key 307 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_quiet_shutdown 308 3_0_0 EXIST::FUNCTION: +SSL_select_next_proto 309 3_0_0 EXIST::FUNCTION: +SSL_load_client_CA_file 310 3_0_0 EXIST::FUNCTION: +SSL_set_srp_server_param_pw 311 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_renegotiate_pending 312 3_0_0 EXIST::FUNCTION: +SSL_CTX_new 313 3_0_0 EXIST::FUNCTION: +SSL_set_session_ticket_ext_cb 314 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_timeout 315 3_0_0 EXIST::FUNCTION: +SSL_use_certificate_chain_file 316 3_0_0 EXIST::FUNCTION: +SSL_set_not_resumable_session_callback 317 3_0_0 EXIST::FUNCTION: +SSL_CTX_SRP_CTX_free 318 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_get_current_expansion 319 3_0_0 EXIST::FUNCTION: +SSL_clear_options 320 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_PrivateKey 321 3_0_0 EXIST::FUNCTION: +SSL_get_info_callback 322 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_psk_identity_hint 323 3_0_0 EXIST::FUNCTION:PSK +SSL_CTX_use_RSAPrivateKey_ASN1 324 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0 +SSL_CTX_use_PrivateKey_ASN1 325 3_0_0 EXIST::FUNCTION: +SSL_CTX_get0_privatekey 326 3_0_0 EXIST::FUNCTION: +BIO_f_ssl 327 3_0_0 EXIST::FUNCTION: +SSLv3_server_method 328 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD +SSL_SESSION_free 329 3_0_0 EXIST::FUNCTION: +SSL_get_shutdown 330 3_0_0 EXIST::FUNCTION: +SSL_get_peer_finished 331 3_0_0 EXIST::FUNCTION: +SSL_set_tlsext_use_srtp 332 3_0_0 EXIST::FUNCTION:SRTP +TLSv1_method 333 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD +SSL_set_psk_server_callback 334 3_0_0 EXIST::FUNCTION:PSK +SSL_CTX_set_alpn_protos 335 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_verify_paths 336 3_0_0 EXIST::FUNCTION: +SSL_CTX_sess_set_get_cb 337 3_0_0 EXIST::FUNCTION: +SSL_add_file_cert_subjects_to_stack 338 3_0_0 EXIST::FUNCTION: +SSL_get_default_passwd_cb_userdata 339 3_0_0 EXIST::FUNCTION: +SSL_get_security_callback 340 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_srp_username 341 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SRP +SSL_COMP_get_name 342 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_passwd_cb_userdata 343 3_0_0 EXIST::FUNCTION: +SSL_set_verify 344 3_0_0 EXIST::FUNCTION: +SSL_in_before 345 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_digest_nid 346 3_0_0 EXIST::FUNCTION: +SSL_CTX_add_client_custom_ext 347 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_certificate 348 3_0_0 EXIST::FUNCTION: +SSL_set_cipher_list 349 3_0_0 EXIST::FUNCTION: +SSL_get_wbio 350 3_0_0 EXIST::FUNCTION: +SSL_set_hostflags 351 3_0_0 EXIST::FUNCTION: +SSL_alert_desc_string_long 352 3_0_0 EXIST::FUNCTION: +SSL_get_default_timeout 353 3_0_0 EXIST::FUNCTION: +SSL_set_session_id_context 354 3_0_0 EXIST::FUNCTION: +SSL_new 355 3_0_0 EXIST::FUNCTION: +TLSv1_1_method 356 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD +SSL_CTX_get_cert_store 357 3_0_0 EXIST::FUNCTION: +SSL_CTX_load_verify_locations 358 3_0_0 EXIST::FUNCTION: +SSL_SESSION_print_fp 359 3_0_0 EXIST::FUNCTION:STDIO +SSL_get0_dane_tlsa 360 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_generate_session_id 361 3_0_0 EXIST::FUNCTION: +SSL_alert_type_string_long 362 3_0_0 EXIST::FUNCTION: +SSL_CONF_CTX_set1_prefix 363 3_0_0 EXIST::FUNCTION: +SSL_in_init 364 3_0_0 EXIST::FUNCTION: +BIO_new_ssl 365 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_client_cert_cb 366 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_certificate_ASN1 367 3_0_0 EXIST::FUNCTION: +SSL_set_client_CA_list 368 3_0_0 EXIST::FUNCTION: +SSL_CTX_free 369 3_0_0 EXIST::FUNCTION: +SSL_get_default_passwd_cb 370 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_id 371 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set1_id_context 372 3_0_0 EXIST::FUNCTION: +SSL_is_server 373 3_0_0 EXIST::FUNCTION: +SSL_alert_type_string 374 3_0_0 EXIST::FUNCTION: +DTLSv1_2_client_method 375 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD +SSL_CTX_set_ctlog_list_file 376 3_0_0 EXIST::FUNCTION:CT +SSL_set_ct_validation_callback 377 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_set_default_ctlog_list_file 378 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_has_client_custom_ext 379 3_0_0 EXIST::FUNCTION: +SSL_ct_is_enabled 380 3_0_0 EXIST::FUNCTION:CT +SSL_get0_peer_scts 381 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_set_ct_validation_callback 382 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_ct_is_enabled 383 3_0_0 EXIST::FUNCTION:CT +SSL_set_default_read_buffer_len 384 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_read_buffer_len 385 3_0_0 EXIST::FUNCTION: +SSL_has_pending 386 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_auth_nid 387 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_kx_nid 388 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_is_aead 389 3_0_0 EXIST::FUNCTION: +SSL_SESSION_up_ref 390 3_0_0 EXIST::FUNCTION: +SSL_CTX_set0_ctlog_store 391 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_get0_ctlog_store 392 3_0_0 EXIST::FUNCTION:CT +SSL_enable_ct 393 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_enable_ct 394 3_0_0 EXIST::FUNCTION:CT +SSL_CTX_get_ciphers 395 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_hostname 396 3_0_0 EXIST::FUNCTION: +SSL_client_version 397 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_protocol_version 398 3_0_0 EXIST::FUNCTION: +SSL_is_dtls 399 3_0_0 EXIST::FUNCTION: +SSL_CTX_dane_set_flags 400 3_0_0 EXIST::FUNCTION: +SSL_dane_set_flags 401 3_0_0 EXIST::FUNCTION: +SSL_CTX_dane_clear_flags 402 3_0_0 EXIST::FUNCTION: +SSL_dane_clear_flags 403 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_cipher 404 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_id_context 405 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set1_id 406 3_0_0 EXIST::FUNCTION: +SSL_CTX_set1_cert_store 407 3_0_0 EXIST::FUNCTION: +DTLS_get_data_mtu 408 3_0_0 EXIST::FUNCTION: +SSL_read_ex 409 3_0_0 EXIST::FUNCTION: +SSL_peek_ex 410 3_0_0 EXIST::FUNCTION: +SSL_write_ex 411 3_0_0 EXIST::FUNCTION: +SSL_COMP_get_id 412 3_0_0 EXIST::FUNCTION: +SSL_COMP_get0_name 413 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_keylog_callback 414 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_keylog_callback 415 3_0_0 EXIST::FUNCTION: +SSL_get_peer_signature_type_nid 416 3_0_0 EXIST::FUNCTION: +SSL_key_update 417 3_0_0 EXIST::FUNCTION: +SSL_get_key_update_type 418 3_0_0 EXIST::FUNCTION: +SSL_bytes_to_cipher_list 419 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get0_compression_methods 420 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get0_ciphers 421 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get0_ext 422 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get0_session_id 423 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get0_random 424 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_client_hello_cb 425 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get0_legacy_version 426 3_0_0 EXIST::FUNCTION: +SSL_client_hello_isv2 427 3_0_0 EXIST::FUNCTION: +SSL_set_max_early_data 428 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_max_early_data 429 3_0_0 EXIST::FUNCTION: +SSL_get_max_early_data 430 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_max_early_data 431 3_0_0 EXIST::FUNCTION: +SSL_write_early_data 432 3_0_0 EXIST::FUNCTION: +SSL_read_early_data 433 3_0_0 EXIST::FUNCTION: +SSL_get_early_data_status 434 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_max_early_data 435 3_0_0 EXIST::FUNCTION: +SSL_add1_to_CA_list 436 3_0_0 EXIST::FUNCTION: +SSL_set0_CA_list 437 3_0_0 EXIST::FUNCTION: +SSL_CTX_set0_CA_list 438 3_0_0 EXIST::FUNCTION: +SSL_get0_CA_list 439 3_0_0 EXIST::FUNCTION: +SSL_get0_peer_CA_list 440 3_0_0 EXIST::FUNCTION: +SSL_CTX_add1_to_CA_list 441 3_0_0 EXIST::FUNCTION: +SSL_CTX_get0_CA_list 442 3_0_0 EXIST::FUNCTION: +SSL_CTX_add_custom_ext 443 3_0_0 EXIST::FUNCTION: +SSL_SESSION_is_resumable 444 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_record_padding_callback 445 3_0_0 EXIST::FUNCTION: +SSL_set_record_padding_callback 446 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_block_padding 447 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_record_padding_callback_arg 448 3_0_0 EXIST::FUNCTION: +SSL_get_record_padding_callback_arg 449 3_0_0 EXIST::FUNCTION: +SSL_set_block_padding 450 3_0_0 EXIST::FUNCTION: +SSL_set_record_padding_callback_arg 451 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_record_padding_callback_arg 452 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_serverinfo_ex 453 3_0_0 EXIST::FUNCTION: +SSL_client_hello_get1_extensions_present 454 3_0_0 EXIST::FUNCTION: +SSL_set_psk_find_session_callback 455 3_0_0 EXIST::FUNCTION: +SSL_set_psk_use_session_callback 456 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_psk_use_session_callback 457 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_psk_find_session_callback 458 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_handshake_digest 459 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set1_master_key 460 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set_cipher 461 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set_protocol_version 462 3_0_0 EXIST::FUNCTION: +OPENSSL_cipher_name 463 3_0_0 EXIST::FUNCTION: +SSL_alloc_buffers 464 3_0_0 EXIST::FUNCTION: +SSL_free_buffers 465 3_0_0 EXIST::FUNCTION: +SSL_SESSION_dup 466 3_0_0 EXIST::FUNCTION: +SSL_get_pending_cipher 467 3_0_0 EXIST::FUNCTION: +SSL_CIPHER_get_protocol_id 468 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set_max_early_data 469 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set1_alpn_selected 470 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set1_hostname 471 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_alpn_selected 472 3_0_0 EXIST::FUNCTION: +DTLS_set_timer_cb 473 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_tlsext_max_fragment_length 474 3_0_0 EXIST::FUNCTION: +SSL_set_tlsext_max_fragment_length 475 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get_max_fragment_length 476 3_0_0 EXIST::FUNCTION: +SSL_stateless 477 3_0_0 EXIST::FUNCTION: +SSL_verify_client_post_handshake 478 3_0_0 EXIST::FUNCTION: +SSL_set_post_handshake_auth 479 3_0_0 EXIST::FUNCTION: +SSL_export_keying_material_early 480 3_0_0 EXIST::FUNCTION: +SSL_CTX_use_cert_and_key 481 3_0_0 EXIST::FUNCTION: +SSL_use_cert_and_key 482 3_0_0 EXIST::FUNCTION: +SSL_SESSION_get0_ticket_appdata 483 3_0_0 EXIST::FUNCTION: +SSL_SESSION_set1_ticket_appdata 484 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_session_ticket_cb 485 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_stateless_cookie_generate_cb 486 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_stateless_cookie_verify_cb 487 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_ciphersuites 488 3_0_0 EXIST::FUNCTION: +SSL_set_ciphersuites 489 3_0_0 EXIST::FUNCTION: +SSL_set_num_tickets 490 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_num_tickets 491 3_0_0 EXIST::FUNCTION: +SSL_get_num_tickets 492 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_num_tickets 493 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_allow_early_data_cb 494 3_0_0 EXIST::FUNCTION: +SSL_set_allow_early_data_cb 495 3_0_0 EXIST::FUNCTION: +SSL_set_recv_max_early_data 496 3_0_0 EXIST::FUNCTION: +SSL_get_recv_max_early_data 497 3_0_0 EXIST::FUNCTION: +SSL_CTX_get_recv_max_early_data 498 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_recv_max_early_data 499 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_post_handshake_auth 500 3_0_0 EXIST::FUNCTION: +SSL_get_signature_type_nid 501 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_async_callback 502 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_async_callback_arg 503 3_0_0 EXIST::FUNCTION: +SSL_set_async_callback 504 3_0_0 EXIST::FUNCTION: +SSL_set_async_callback_arg 505 3_0_0 EXIST::FUNCTION: +SSL_get_async_status 506 3_0_0 EXIST::FUNCTION: +SSL_sendfile 507 3_0_0 EXIST::FUNCTION: +OSSL_default_cipher_list 508 3_0_0 EXIST::FUNCTION: +OSSL_default_ciphersuites 509 3_0_0 EXIST::FUNCTION: +SSL_add_store_cert_subjects_to_stack 510 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_default_verify_store 511 3_0_0 EXIST::FUNCTION: +SSL_CTX_load_verify_file 512 3_0_0 EXIST::FUNCTION: +SSL_CTX_load_verify_dir 513 3_0_0 EXIST::FUNCTION: +SSL_CTX_load_verify_store 514 3_0_0 EXIST::FUNCTION: +SSL_CTX_set_tlsext_ticket_key_evp_cb 515 3_0_0 EXIST::FUNCTION: +SSL_CTX_new_ex 516 3_0_0 EXIST::FUNCTION: +SSL_new_session_ticket 517 3_0_0 EXIST::FUNCTION: +SSL_get0_peer_certificate 518 3_0_0 EXIST::FUNCTION: +SSL_get1_peer_certificate 519 3_0_0 EXIST::FUNCTION: +SSL_load_client_CA_file_ex 520 3_0_0 EXIST::FUNCTION: +SSL_set0_tmp_dh_pkey 521 3_0_0 EXIST::FUNCTION: +SSL_CTX_set0_tmp_dh_pkey 522 3_0_0 EXIST::FUNCTION: +SSL_group_to_name 523 3_0_0 EXIST::FUNCTION: diff --git a/rustls-libssl/admin/matrix.py b/rustls-libssl/admin/matrix.py new file mode 100755 index 0000000..290c502 --- /dev/null +++ b/rustls-libssl/admin/matrix.py @@ -0,0 +1,240 @@ +#!/usr/bin/env python3 + +# from openssl 3.0.0 util/libssl.num +lines = open('admin/libssl.num', 'r').readlines() + +items = {} + +for l in lines: + l = l.strip() + if not l or l[0] == '#': + continue + name, ord, ver, flags = l.split() + exist, _, type, flags = flags.split(':') + flags = set(flags.strip().split(',')) + flags.discard('') + assert type == 'FUNCTION' + if exist == 'EXIST': + items[name] = flags + +def flags(f): + r = ['[^%s]' % x.lower() for x in sorted(f)] + + return ' '.join(r) + +def curl_p(name): + return ':white_check_mark:' if name in CURL else '' + +def nginx_p(name): + return ':white_check_mark:' if name in NGINX else '' + +def impl_p(name): + if name in impls: + return ':white_check_mark:' if impls[name] else ':exclamation: [^stub]' + return '' + +def read_impls(): + next_line = False + stub = False + items = {} + for line in open('src/entry.rs'): + if 'entry! {' in line: + next_line = True + stub = False + continue + if 'entry_stub! {' in line: + next_line = True + stub = True + continue + + if next_line and 'pub fn ' in line: + parts = line.strip().replace('(', ' ').split() + items[parts[2][1:]] = not stub + + return items + +impls = read_impls() + +# from ubuntu curl 7.81.0-1ubuntu1.15 +# extracted by running with LD_DEBUG=all +CURL = set(""" +BIO_f_ssl +OPENSSL_init_ssl +SSL_alert_desc_string_long +SSL_CIPHER_get_name +SSL_connect +SSL_ctrl +SSL_CTX_add_client_CA +SSL_CTX_check_private_key +SSL_CTX_ctrl +SSL_CTX_free +SSL_CTX_get_cert_store +SSL_CTX_load_verify_dir +SSL_CTX_load_verify_file +SSL_CTX_new +SSL_CTX_sess_set_new_cb +SSL_CTX_set_alpn_protos +SSL_CTX_set_cipher_list +SSL_CTX_set_ciphersuites +SSL_CTX_set_default_passwd_cb +SSL_CTX_set_default_passwd_cb_userdata +SSL_CTX_set_keylog_callback +SSL_CTX_set_msg_callback +SSL_CTX_set_next_proto_select_cb +SSL_CTX_set_options +SSL_CTX_set_post_handshake_auth +SSL_CTX_set_srp_password +SSL_CTX_set_srp_username +SSL_CTX_set_verify +SSL_CTX_use_certificate_chain_file +SSL_CTX_use_certificate_file +SSL_CTX_use_certificate +SSL_CTX_use_PrivateKey_file +SSL_CTX_use_PrivateKey +SSL_free +SSL_get0_alpn_selected +SSL_get1_peer_certificate +SSL_get_certificate +SSL_get_current_cipher +SSL_get_error +SSL_get_ex_data +SSL_get_peer_cert_chain +SSL_get_privatekey +SSL_get_shutdown +SSL_get_verify_result +SSL_get_version +SSL_new +SSL_pending +SSL_read +SSL_SESSION_free +SSL_set_bio +SSL_set_connect_state +SSL_set_ex_data +SSL_set_fd +SSL_set_session +SSL_shutdown +SSL_write +TLS_client_method +""".split()) + +# from ubuntu nginx 1.18.0-6ubuntu14.4 +# extracted by running with LD_DEBUG=all +NGINX = set(""" +d2i_SSL_SESSION +i2d_SSL_SESSION +OPENSSL_init_ssl +SSL_CIPHER_description +SSL_CIPHER_find +SSL_CIPHER_get_name +SSL_clear_options +SSL_ctrl +SSL_CTX_callback_ctrl +SSL_CTX_clear_options +SSL_CTX_ctrl +SSL_CTX_free +SSL_CTX_get_cert_store +SSL_CTX_get_client_CA_list +SSL_CTX_get_ex_data +SSL_CTX_get_max_early_data +SSL_CTX_get_options +SSL_CTX_get_timeout +SSL_CTX_get_verify_callback +SSL_CTX_get_verify_depth +SSL_CTX_get_verify_mode +SSL_CTX_load_verify_locations +SSL_CTX_new +SSL_CTX_remove_session +SSL_CTX_sess_set_get_cb +SSL_CTX_sess_set_new_cb +SSL_CTX_sess_set_remove_cb +SSL_CTX_set_alpn_protos +SSL_CTX_set_alpn_select_cb +SSL_CTX_set_cert_cb +SSL_CTX_set_cipher_list +SSL_CTX_set_client_CA_list +SSL_CTX_set_ex_data +SSL_CTX_set_info_callback +SSL_CTX_set_max_early_data +SSL_CTX_set_next_protos_advertised_cb +SSL_CTX_set_options +SSL_CTX_set_session_id_context +SSL_CTX_set_timeout +SSL_CTX_set_verify_depth +SSL_CTX_set_verify +SSL_CTX_use_certificate +SSL_CTX_use_PrivateKey +SSL_do_handshake +SSL_free +SSL_get0_alpn_selected +SSL_get0_next_proto_negotiated +SSL_get1_peer_certificate +SSL_get1_session +SSL_get_certificate +SSL_get_current_cipher +SSL_get_error +SSL_get_ex_data +SSL_get_ex_data_X509_STORE_CTX_idx +SSL_get_options +SSL_get_rbio +SSL_get_servername +SSL_get_session +SSL_get_shutdown +SSL_get_verify_result +SSL_get_version +SSL_get_wbio +SSL_in_init +SSL_is_init_finished +SSL_load_client_CA_file +SSL_new +SSL_read_early_data +SSL_read +SSL_select_next_proto +SSL_SESSION_free +SSL_SESSION_get_id +SSL_session_reused +SSL_SESSION_up_ref +SSL_set_accept_state +SSL_set_connect_state +SSL_set_ex_data +SSL_set_fd +SSL_set_options +SSL_set_quiet_shutdown +SSL_set_session +SSL_set_shutdown +SSL_set_SSL_CTX +SSL_set_verify_depth +SSL_set_verify +SSL_shutdown +SSL_use_certificate +SSL_use_PrivateKey +SSL_write_early_data +SSL_write +TLS_method +""".split()) + +print('| Symbol | curl | nginx | implemented? |') +print('|---|---|---|---|') +for i in sorted(items.keys()): + print('| `' + i + '` ' + flags(items[i]) + ' | ' + curl_p(i) + ' | ' + nginx_p(i) + ' | ' + impl_p(i) + ' |') + +print(""" +[^stub]: symbol exists, but just returns an error. +[^deprecatedin_1_1_0]: deprecated in openssl 1.1.0 +[^deprecatedin_3_0]: deprecated in openssl 3.0 +[^stdio]: depends on C stdio `FILE*` +[^ct]: certificate transparency-specific (NYI in rustls) +[^nextprotoneg]: next protocol negotiation (NPN) feature -- non-standard precursor to ALPN +[^srp]: SRP-specific +[^srtp]: SRTP-specific +[^psk]: pre-shared-key-specific +[^sock]: specific to platforms with file descriptors +[^unit_test]: access to openssl internals for unit testing +[^ssl_trace]: protocol tracing API +[^dtls1_2_method]: DTLS 1.2-specific +[^dtls1_method]: DTLS 1.0-specific +[^dh]: Diffie-Hellman-specific +[^ssl3_method]: SSL 3.0-specific +[^tls1_method]: TLS 1.0-specific +[^tls1_1_method]: TLS 1.1-specific +[^tls1_2_method]: TLS 1.2-specific +[^engine]: openssl ENGINE-specific""")