Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/openssl/doc/designs/quic-design/quic-api-ssl-funcs.md
34876 views

Behaviour of SSL functions on QUIC SSL objects

This document is a companion to the QUIC API Overview which lists all SSL functions and controls and notes their behaviour with QUIC SSL objects.

The Category column is as follows:

  • Global: These API items do not relate to SSL objects. They may be stateless or may relate only to global state.

    Can also be used for APIs implemented only in terms of other public libssl APIs.

  • Object: Object management APIs. Some of these may require QUIC-specific implementation.

  • HL: Handshake layer API.

    These calls should generally be dispatched to the handshake layer, unless they are not applicable to QUIC. Modifications inside the handshake layer for the QUIC case may or may not be required.

  • CSSM: Connection/Stream State Machine. API related to lifecycle of a connection or stream. Needs QUIC-specific implementation.

  • ADP: App Data Path. Application-side data path API. QUIC-specific implementation.

  • NDP: Net Data Path. Network-side data path control API. Also includes I/O ticking and timeout handling.

  • RL: Record layer related API. If these API items only relate to the TLS record layer, they must be disabled for QUIC; if they are also relevant to the QUIC record layer, they will require QUIC-specific implementation.

  • Async: Relates to the async functionality.

  • 0-RTT: Relates to early data/0-RTT functionality.

  • Special: Other calls which defy classification.

The Semantics column is as follows:

  • 🟩U: Unchanged. The semantics of the API are not changed for QUIC.

  • 🟧C: Changed. The semantics of the API are changed for QUIC.

  • 🟦N: New. The API is new for QUIC.

  • 🟥TBD: Yet to be determined if semantic changes will be required.

The Applicability column is as follows:

  • 🟦U: Unrelated. Not applicable to QUIC — fully unrelated (e.g. functions for other SSL methods).

  • 🟥FC: Not applicable to QUIC (or not currently supported) — fail closed.

  • 🟧NO: Not applicable to QUIC (nor not currently supported) — no-op.

  • 🟩A: Applicable.

The Implementation Requirements column is as follows:

  • 🟩NC: No changes are expected to be needed (where marked *, dispatch to handshake layer).

    Note: Where this value is used with an applicability of FC or NO, this means that the desired behaviour is already an emergent consequence of the existing code.

  • 🟨C: Modifications are expected to be needed (where marked *, dispatch to handshake layer with changes inside the handshake layer).

  • 🟧QSI: QUIC specific implementation.

  • 🟥QSA: QUIC specific API.

The Status column is as follows:

  • 🔴Pending Triage: Have not determined the classification of this API item yet.

  • 🟠Design TBD: It has not yet been determined how this API item will work for QUIC.

  • 🟡TODO: It has been determined how this API item should work for QUIC but it has not yet been implemented.

  • 🟢Done: No further work is anticipated to be needed for this API item.

Notes:

  • †1: Must restrict which ciphers can be used with QUIC; otherwise, no changes.

  • †2: ALPN usage must be mandated; otherwise, no changes.

  • †3: NPN usage should be forced off as it should never be used with QUIC; otherwise, no changes.

  • †4: Controls needing changes are listed separately.

  • †5: TLS compression and renegotiation must not be used with QUIC, but these features are already forbidden in TLS 1.3, which is a requirement for QUIC, thus no changes should be needed.

  • †6: Callback specified is called for handshake layer messages (TLSv1.3).

  • †7: Tickets are issued using NEW_TOKEN frames in QUIC and this will require handshake layer changes. However these APIs as such do not require changes.

  • †8: Use of post-handshake authentication is prohibited by QUIC.

  • †9: QUIC always uses AES-128-GCM initially. We need to determine when and what ciphers we report as being in use.

  • †10: Not supporting async for now.

  • †11: Since these functions only configure cipher suite lists used for TLSv1.2, which is never used for QUIC, they do not require changes, and we can allow applications to configure these lists freely, as they will be ignored.

API ItemCat.Sema.Appl.Impl. Req.Status
⇒ Global Information and Functions
OSSL_default_cipher_listGlobal🟩U🟦U🟩NC🟢Done
OSSL_default_ciphersuitesGlobal🟩U🟦U🟩NC🟢Done
ERR_load_SSL_stringsGlobal🟩U🟦U🟩NC🟢Done
OPENSSL_init_sslGlobal🟩U🟦U🟩NC🟢Done
OPENSSL_cipher_nameGlobal🟩U🟦U🟩NC🟢Done
SSL_alert_desc_stringGlobal🟩U🟦U🟩NC🟢Done
SSL_alert_desc_string_longGlobal🟩U🟦U🟩NC🟢Done
SSL_alert_type_stringGlobal🟩U🟦U🟩NC🟢Done
SSL_alert_type_string_longGlobal🟩U🟦U🟩NC🟢Done
SSL_extension_supportedGlobal🟩U🟦U🟩NC🟢Done
SSL_add_ssl_moduleGlobal🟩U🟦U🟩NC🟢Done
SSL_test_functionsGlobal🟩U🟦U🟩NC🟢Done
SSL_select_next_protoGlobal🟩U🟦U🟩NC🟢Done
⇒ Methods
SSLv3_methodGlobal🟩U🟦U🟩NC🟢Done
SSLv3_client_methodGlobal🟩U🟦U🟩NC🟢Done
SSLv3_server_methodGlobal🟩U🟦U🟩NC🟢Done
TLS_methodGlobal🟩U🟦U🟩NC🟢Done
TLS_client_methodGlobal🟩U🟦U🟩NC🟢Done
TLS_server_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_client_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_server_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_1_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_1_client_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_1_server_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_2_client_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_2_server_methodGlobal🟩U🟦U🟩NC🟢Done
TLSv1_2_methodGlobal🟩U🟦U🟩NC🟢Done
DTLS_methodGlobal🟩U🟦U🟩NC🟢Done
DTLS_client_methodGlobal🟩U🟦U🟩NC🟢Done
DTLS_server_methodGlobal🟩U🟦U🟩NC🟢Done
DTLSv1_client_methodGlobal🟩U🟦U🟩NC🟢Done
DTLSv1_server_methodGlobal🟩U🟦U🟩NC🟢Done
DTLSv1_methodGlobal🟩U🟦U🟩NC🟢Done
DTLSv1_2_methodGlobal🟩U🟦U🟩NC🟢Done
DTLSv1_2_client_methodGlobal🟩U🟦U🟩NC🟢Done
DTLSv1_2_server_methodGlobal🟩U🟦U🟩NC🟢Done
OSSL_QUIC_client_methodGlobal🟩U🟦U🟥QSA🟢Done
OSSL_QUIC_client_thread_methodGlobal🟩U🟦U🟥QSA🟢Done
OSSL_QUIC_server_methodGlobal🟩U🟦U🟥QSA🟠Design TBD
⇒ Instantiation
BIO_f_sslObject🟩U🟩A🟩NC🟢Done
BIO_new_sslObject🟩U🟩A🟩NC🟢Done
SSL_CTX_newObject🟩U🟩A🟩NC🟢Done
SSL_CTX_new_exObject🟩U🟩A🟩NC🟢Done
SSL_CTX_up_refObject🟩U🟩A🟩NC🟢Done
SSL_CTX_freeObject🟩U🟩A🟩NC🟢Done
SSL_newObject🟩U🟩A🟧QSI🟢Done
SSL_dupObject🟩U🟩A🟥FC🟢Done
SSL_up_refObject🟩U🟩A🟩NC🟢Done
SSL_freeObject🟩U🟩A🟧QSI🟢Done
SSL_is_dtlsObject🟩U🟩A🟩NC🟢Done
SSL_CTX_get_ex_dataObject🟩U🟩A🟩NC🟢Done
SSL_CTX_set_ex_dataObject🟩U🟩A🟩NC🟢Done
SSL_get_ex_dataObject🟩U🟩A🟩NC🟢Done
SSL_set_ex_dataObject🟩U🟩A🟩NC🟢Done
SSL_get_SSL_CTXObject🟩U🟩A🟩NC🟢Done
SSL_set_SSL_CTXObject🟩U🟩A🟩NC🟢Done
⇒ Method Manipulation
SSL_CTX_get_ssl_methodObject🟩U🟩A🟩NC🟢Done
SSL_get_ssl_methodObject🟩U🟩A🟩NC🟢Done
SSL_set_ssl_methodObject🟩U🟥FC🟧QSI🟢Done
⇒ SRTP
SSL_get_selected_srtp_profileHL🟩U🟧NO🟨C*🟢Done
SSL_get_srtp_profilesHL🟩U🟧NO🟨C*🟢Done
SSL_CTX_set_tlsext_use_srtpHL🟩U🟥FC🟨C*🟢Done
SSL_set_tlsext_use_srtpHL🟩U🟥FC🟩NC*🟢Done
⇒ Ciphersuite Configuration
SSL_CTX_set_cipher_listHL🟩U🟩A🟩NC* †11🟢Done
SSL_CTX_set_ciphersuitesHL🟩U🟩A🟨C* †1🟢Done
SSL_CTX_get_ciphersHL🟩U🟩A🟩NC*🟢Done
SSL_set_ciphersuitesHL🟩U🟩A🟩NC*🟢Done
SSL_get1_supported_ciphersHL🟩U🟩A🟨C* †1🟢Done
SSL_bytes_to_cipher_listHL🟩U🟩A🟩NC*🟢Done
SSL_get_ciphersHL🟩U🟩A🟩NC*🟢Done
SSL_get_cipher_listHL🟩U🟩A🟩NC* †11🟢Done
SSL_set_cipher_listHL🟩U🟩A🟩NC* †11🟢Done
⇒ Negotiated Ciphersuite Queries
SSL_get_current_cipherHL🟩U🟩A🟩NC* †9🟢Done
SSL_get_pending_cipherHL🟩U🟩A🟩NC* †9🟢Done
SSL_get_shared_ciphersHL🟩U🟩A🟩NC* †9🟢Done
SSL_get_client_ciphersHL🟩U🟩A🟩NC* †9🟢Done
SSL_get_current_compressionHL🟩U🟩A🟩HLNC🟢Done
SSL_get_current_expansionHL🟩U🟩A🟩NC*🟢Done
SSL_get_shared_sigalgsHL🟩U🟩A🟩NC*🟢Done
SSL_get_sigalgsHL🟩U🟩A🟩NC*🟢Done
SSL_get_peer_signature_nidHL🟩U🟩A🟩NC*🟢Done
SSL_get_peer_signature_type_nidHL🟩U🟩A🟩NC*🟢Done
SSL_get_signature_nidHL🟩U🟩A🟩NC*🟢Done
SSL_get_signature_type_nidHL🟩U🟩A🟩NC*🟢Done
⇒ ALPN†2
SSL_SESSION_set1_alpn_selectedHL🟩U🟩A🟨C* †2🟢Done
SSL_SESSION_get0_alpn_selectedHL🟩U🟩A🟨C* †2🟢Done
SSL_CTX_set_alpn_select_cbHL🟩U🟩A🟨C* †2🟢Done
SSL_set_alpn_protosHL🟩U🟩A🟨C* †2🟢Done
SSL_get0_alpn_selectedHL🟩U🟩A🟨C* †2🟢Done
SSL_CTX_set_alpn_protosHL🟩U🟩A🟨C* †2🟢Done
⇒ NPN†3
SSL_CTX_set_next_proto_select_cbHL🟩U🟥FC🟨C* †3🟢Done
SSL_CTX_set_next_protos_advertised_cbHL🟩U🟥FC🟨C* †3🟢Done
SSL_get0_next_proto_negotiatedHL🟩U🟥FC🟩NC* †3🟢Done
⇒ Narrow Waist Interface†4
SSL_CTX_ctrlObject🟩U🟩A🟩NC* †4🟢Done
SSL_ctrlObject🟩U🟩A🟩NC* †4🟢Done
SSL_CTX_callback_ctrlObject🟩U🟩A🟩NC* †4🟢Done
SSL_callback_ctrlObject🟩U🟩A🟩NC* †4🟢Done
⇒ Miscellaneous Accessors
SSL_get_server_randomHL🟩U🟩A🟩NC*🟢Done
SSL_get_client_randomHL🟩U🟩A🟩NC*🟢Done
SSL_get_finishedHL🟩U🟩A🟩NC*🟢Done
SSL_get_peer_finishedHL🟩U🟩A🟩NC*🟢Done
⇒ Ciphersuite Information
SSL_CIPHER_descriptionGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_findGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_auth_nidGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_bitsGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_cipher_nidGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_digest_nidGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_handshake_digestGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_idGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_kx_nidGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_nameGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_protocol_idGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_get_versionGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_is_aeadGlobal🟩U🟩A🟩NC*🟢Done
SSL_CIPHER_standard_nameGlobal🟩U🟩A🟩NC*🟢Done
SSL_group_to_nameGlobal🟩U🟦U🟩NC*🟢Done
⇒ Version Queries
SSL_get_versionHL🟩U🟩A🟩NC*🟢Done
SSL_versionHL🟩U🟩A🟩NC*🟢Done
SSL_client_versionHL🟩U🟩A🟩NC*🟢Done
⇒ Certificate Chain Management
SSL_get_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_use_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_certificate_chain_fileHL🟩U🟩A🟩NC*🟢Done
SSL_use_certificate_chain_fileHL🟩U🟩A🟩NC*🟢Done
SSL_use_certificate_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_load_verify_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_load_verify_dirHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_load_verify_storeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_load_verify_locationsHL🟩U🟩A🟩NC*🟢Done
CertSSL_use_cert_and_keyHL🟩U🟩A🟩NC*🟢Done
SSL_use_certificate_ASN1HL🟩U🟩A🟩NC*🟢Done
SSL_use_PrivateKeyHL🟩U🟩A🟩NC*🟢Done
SSL_use_PrivateKey_ASN1HL🟩U🟩A🟩NC*🟢Done
SSL_use_PrivateKey_fileHL🟩U🟩A🟩NC*🟢Done
SSL_use_RSAPrivateKeyHL🟩U🟩A🟩NC*🟢Done
SSL_use_RSAPrivateKey_ASN1HL🟩U🟩A🟩NC*🟢Done
SSL_use_RSAPrivateKey_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_verify_dirHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_verify_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_verify_pathsHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_verify_storeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_cert_and_keyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_certificate_ASN1HL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_certificate_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_PrivateKeyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_PrivateKey_ASN1HL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_PrivateKey_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_RSAPrivateKeyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_RSAPrivateKey_ASN1HL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_RSAPrivateKey_fileHL🟩U🟩A🟩NC*🟢Done
SSL_check_chainHL🟩U🟩A🟩NC*🟢Done
SSL_check_private_keyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_check_private_keyHL🟩U🟩A🟩NC*🟢Done
SSL_add_client_CAHL🟩U🟩A🟩NC*🟢Done
SSL_add1_to_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_add_dir_cert_subjects_to_stackHL🟩U🟩A🟩NC*🟢Done
SSL_add_file_cert_subjects_to_stackHL🟩U🟩A🟩NC*🟢Done
SSL_add_store_cert_subjects_to_stackHL🟩U🟩A🟩NC*🟢Done
SSL_load_client_CA_fileHL🟩U🟩A🟩NC*🟢Done
SSL_load_client_CA_file_exHL🟩U🟩A🟩NC*🟢Done
SSL_dup_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_set0_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_get0_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_set_client_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_add_client_CAHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_privatekeyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_cert_storeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set1_cert_storeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_client_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_add1_to_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set0_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_client_cert_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_default_passwd_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_default_passwd_cb_userdataHL🟩U🟩A🟩NC*🟢Done
SSL_get_client_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_get_privatekeyHL🟩U🟩A🟩NC*🟢Done
⇒ Certificate Compression
SSL_CTX_set1_cert_comp_preferenceHL🟩U🟩A🟩NC*🟢Done
SSL_set1_cert_comp_preferenceHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_compress_certsHL🟩U🟩A🟩NC*🟢Done
SSL_compress_certsHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set1_compressed_certHL🟩U🟩A🟩NC*🟢Done
SSL_set1_compressed_certHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get1_compressed_certHL🟩U🟩A🟩NC*🟢Done
SSL_get1_compressed_certHL🟩U🟩A🟩NC*🟢Done
⇒ Certificate Verification
SSL_set1_hostHL🟩U🟩A🟩NC*🟢Done
SSL_add1_hostHL🟩U🟩A🟩NC*🟢Done
SSL_set_hostflagsHL🟩U🟩A🟩NC*🟢Done
SSL_set_verifyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_verifyHL🟩U🟩A🟩NC*🟢Done
SSL_set_verify_depthHL🟩U🟩A🟩NC*🟢Done
SSL_set_verify_resultHL🟩U🟩A🟩NC*🟢Done
SSL_get_verify_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_get_verify_depthHL🟩U🟩A🟩NC*🟢Done
SSL_get_verify_modeHL🟩U🟩A🟩NC*🟢Done
SSL_get_verify_resultHL🟩U🟩A🟩NC*🟢Done
SSL_get0_peer_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_get0_peer_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_get0_verified_chainHL🟩U🟩A🟩NC*🟢Done
SSL_get1_peer_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_get_peer_cert_chainHL🟩U🟩A🟩NC*🟢Done
SSL_get_peer_certificateHL🟩U🟩A🟩NC*🟢Done
SSL_certs_clearHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_paramHL🟩U🟩A🟩NC*🟢Done
SSL_get0_paramHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_verify_modeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_verify_depthHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_verify_depthHL🟩U🟩A🟩NC*🟢Done
SSL_get0_peernameHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set1_paramHL🟩U🟩A🟩NC*🟢Done
SSL_set1_paramHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_paramHL🟩U🟩A🟩NC*🟢Done
SSL_get0_paramHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_purposeHL🟩U🟩A🟩NC*🟢Done
SSL_set_purposeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_trustHL🟩U🟩A🟩NC*🟢Done
SSL_set_trustHL🟩U🟩A🟩NC*🟢Done
⇒ PSK
SSL_use_psk_identity_hintHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_psk_identity_hintHL🟩U🟩A🟩NC*🟢Done
SSL_set_psk_client_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_psk_find_session_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_psk_server_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_psk_use_session_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_get_psk_identityHL🟩U🟩A🟩NC*🟢Done
SSL_get_psk_identity_hintHL🟩U🟩A🟩NC*🟢Done
⇒ SRP
SSL_SRP_CTX_initHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_SRP_CTX_initHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_SRP_CTX_freeHL🟩U🟩A🟩NC*🟢Done
SSL_SRP_CTX_freeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_client_pwd_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_passwordHL🟩U🟩A🟩NC*🟢Done
SSL_get_srp_gHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_cb_argHL🟩U🟩A🟩NC*🟢Done
SSL_get_srp_NHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_username_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_get_srp_usernameHL🟩U🟩A🟩NC*🟢Done
SSL_set_srp_server_paramHL🟩U🟩A🟩NC*🟢Done
SSL_get_srp_userinfoHL🟩U🟩A🟩NC*🟢Done
SSL_srp_server_param_with_usernameHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_strengthHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_verify_param_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_srp_server_param_pwHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_srp_usernameHL🟩U🟩A🟩NC*🟢Done
SRP_Calc_A_paramHL🟩U🟩A🟩NC*🟢Done
⇒ DANE
SSL_CTX_dane_enableHL🟩U🟩A🟩NC*🟢Done
SSL_get0_dane_tlsaHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_dane_set_flagsHL🟩U🟩A🟩NC*🟢Done
SSL_dane_set_flagsHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_dane_clear_flagsHL🟩U🟩A🟩NC*🟢Done
SSL_dane_clear_flagsHL🟩U🟩A🟩NC*🟢Done
SSL_get0_daneHL🟩U🟩A🟩NC*🟢Done
SSL_dane_enableHL🟩U🟩A🟩NC*🟢Done
SSL_get0_dane_authorityHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_dane_mtype_setHL🟩U🟩A🟩NC*🟢Done
SSL_dane_tlsa_addHL🟩U🟩A🟩NC*🟢Done
⇒ Certificate Transparency
SSL_CTX_enable_ctHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_ct_is_enabledHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_ctlog_list_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_ctlog_list_fileHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_ct_validation_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set0_ctlog_storeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_ctlog_storeHL🟩U🟩A🟩NC*🟢Done
SSL_enable_ctHL🟩U🟩A🟩NC*🟢Done
SSL_ct_is_enabledHL🟩U🟩A🟩NC*🟢Done
SSL_get0_peer_sctsHL🟩U🟩A🟩NC*🟢Done
SSL_set_ct_validation_callbackHL🟩U🟩A🟩NC*🟢Done
⇒ Compression
SSL_COMP_add_compression_methodHL🟩U🟩A🟩NC* †5🟢Done
SSL_COMP_get0_nameHL🟩U🟩A🟩NC* †5🟢Done
SSL_COMP_get_compression_methodsHL🟩U🟩A🟩NC* †5🟢Done
SSL_COMP_get_idHL🟩U🟩A🟩NC* †5🟢Done
SSL_COMP_get_nameHL🟩U🟩A🟩NC* †5🟢Done
SSL_COMP_set0_compression_methodsHL🟩U🟩A🟩NC* †5🟢Done
⇒ Exporters
SSL_export_keying_materialHL🟩U🟩A🟩NC*🟢Done
SSL_export_keying_material_earlyHL🟩U🟩A🟩NC*🟢Done
⇒ Renegotiation
SSL_renegotiateHL🟩U🟥FC🟩NC* †5🟢Done
SSL_renegotiate_abbreviatedHL🟩U🟥FC🟩NC* †5🟢Done
SSL_renegotiate_pendingHL🟩U🟧NO🟩NC* †5🟢Done
⇒ Options
SSL_CTX_clear_optionsHL🟩U🟩A🟨C*🟢Done
SSL_CTX_set_optionsHL🟩U🟩A🟨C*🟢Done
SSL_CTX_get_optionsHL🟩U🟩A🟩NC*🟢Done
SSL_clear_optionsHL🟩U🟩A🟨C*🟢Done
SSL_set_optionsHL🟩U🟩A🟨C*🟢Done
SSL_get_optionsHL🟩U🟩A🟩NC*🟢Done
⇒ Configuration
SSL_CONF_CTX_newGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_freeGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_set_sslGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_set_ssl_ctxGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_set1_prefixGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_set_flagsGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_clear_flagsGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_CTX_finishGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_cmdGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_cmd_argvGlobal🟩U🟩A🟩NC*🟢Done
SSL_CONF_cmd_value_typeGlobal🟩U🟩A🟩NC*🟢Done
SSL_configHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_configHL🟩U🟩A🟩NC*🟢Done
⇒ Callbacks
SSL_CTX_set_cert_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_cert_storeHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_cert_verify_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_client_CA_listHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_client_cert_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_client_cert_engineHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_client_hello_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_cookie_generate_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_cookie_verify_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_passwd_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_passwd_cb_userdataHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_default_read_buffer_lenHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_info_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_info_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_get_info_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_info_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_msg_callbackHL🟩U🟩A🟩NC* †6🟢Done
SSL_set_cert_cbHL🟩U🟩A🟩NC*🟢Done
SSL_set_default_passwd_cbHL🟩U🟩A🟩NC*🟢Done
SSL_set_default_passwd_cb_userdataHL🟩U🟩A🟩NC*🟢Done
SSL_get_default_passwd_cbHL🟩U🟩A🟩NC*🟢Done
SSL_get_default_passwd_cb_userdataHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_keylog_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_keylog_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_psk_client_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_psk_find_session_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_psk_server_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_psk_use_session_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_verify_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_not_resumable_session_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_not_resumable_session_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_session_secret_cbHL🟩U🟩A🟩NC*🟢Done
⇒ Session Management
d2i_SSL_SESSIONHL🟩U🟩A🟩NC*🟢Done
i2d_SSL_SESSIONHL🟩U🟩A🟩NC*🟢Done
PEM_read_bio_SSL_SESSIONHL🟩U🟩A🟩NC*🟢Done
PEM_read_SSL_SESSIONHL🟩U🟩A🟩NC*🟢Done
PEM_write_bio_SSL_SESSIONHL🟩U🟩A🟩NC*🟢Done
PEM_write_SSL_SESSIONHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_newHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_up_refHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_dupHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_freeHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_printHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_print_fpHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_print_keylogHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_cipherHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set_cipherHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_hostnameHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set1_hostnameHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_id_contextHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set1_id_contextHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_peerHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_ticketHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_ticket_appdataHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set1_ticket_appdataHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_has_ticketHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_protocol_versionHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set_protocol_versionHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_compress_idHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_idHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set1_idHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_timeHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set_timeHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_timeoutHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set_timeoutHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_ex_dataHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set_ex_dataHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get0_hostnameHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_set1_hostnameHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_master_keyHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_master_keyHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_is_resumableHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_max_early_dataHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_max_early_dataHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_max_fragment_lengthHL🟩U🟩A🟩NC*🟢Done
SSL_SESSION_get_ticket_lifetime_hintHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_add_sessionHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_remove_sessionHL🟩U🟩A🟩NC*🟢Done
SSL_get1_sessionHL🟩U🟩A🟩NC*🟢Done
SSL_get_sessionHL🟩U🟩A🟩NC*🟢Done
SSL_set_sessionHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sess_get_get_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sess_set_get_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sess_get_new_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sess_set_new_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sess_get_remove_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sess_set_remove_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_session_id_contextHL🟩U🟩A🟩NC*🟢Done
SSL_set_session_id_contextHL🟩U🟩A🟩NC*🟢Done
SSL_set_generate_session_idHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_generate_session_idHL🟩U🟩A🟩NC*🟢Done
SSL_has_matching_session_idHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_flush_sessionsHL🟩U🟩A🟩NC*🟢Done
SSL_session_reusedHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_timeoutHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_timeoutHL🟩U🟩A🟩NC*🟢Done
SSL_get_default_timeoutHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_sessionsHL🟩U🟩A🟩NC*🟢Done
⇒ Session Ticket Management
SSL_get_num_ticketsHL🟩U🟩A🟩NC* †7🟢Done
SSL_set_num_ticketsHL🟩U🟩A🟩NC* †7🟢Done
SSL_CTX_get_num_ticketsHL🟩U🟩A🟩NC* †7🟢Done
SSL_CTX_set_num_ticketsHL🟩U🟩A🟩NC* †7🟢Done
SSL_new_session_ticketHL🟩U🟩A🟩NC* †7🟢Done
SSL_set_session_ticket_extHL🟩U🟩A🟩NC*🟢Done
SSL_set_session_ticket_ext_cbHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_tlsext_ticket_key_evp_cbHL🟩U🟩A🟩NC*🟢Done
⇒ Security Levels
SSL_CTX_get_security_levelHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_security_levelHL🟩U🟩A🟩NC*🟢Done
SSL_get_security_levelHL🟩U🟩A🟩NC*🟢Done
SSL_set_security_levelHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get_security_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_security_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_get_security_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_security_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_get0_security_ex_dataHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set0_security_ex_dataHL🟩U🟩A🟩NC*🟢Done
SSL_get0_security_ex_dataHL🟩U🟩A🟩NC*🟢Done
SSL_set0_security_ex_dataHL🟩U🟩A🟩NC*🟢Done
⇒ Custom Extensions
SSL_CTX_add_custom_extHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_add_client_custom_extHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_add_server_custom_extHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_has_client_custom_extHL🟩U🟩A🟩NC*🟢Done
⇒ Early ClientHello Processing
SSL_client_hello_get_extension_orderHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get0_ciphersHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get0_compression_methodsHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get0_extHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get0_legacy_versionHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get0_randomHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get0_session_idHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_get1_extensions_presentHL🟩U🟩A🟩NC*🟢Done
SSL_client_hello_isv2HL🟩U🟩A🟩NC*🟢Done
⇒ SNI
SSL_get_servernameHL🟩U🟩A🟩NC*🟢Done
SSL_get_servername_typeHL🟩U🟩A🟩NC*🟢Done
⇒ Server Info
SSL_CTX_use_serverinfoHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_serverinfo_exHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_use_serverinfo_fileHL🟩U🟩A🟩NC*🟢Done
⇒ Post-Handshake Authentication
SSL_verify_client_post_handshakeHL🟩U🟥FC🟨C* †8🟢Done
SSL_CTX_set_post_handshake_authHL🟩U🟥FC🟨C* †8🟢Done
SSL_set_post_handshake_authHL🟩U🟥FC🟨C* †8🟢Done
⇒ DH Parameters
SSL_CTX_set_dh_autoHL🟩U🟩A🟩NC*🟢Done
SSL_set_dh_autoHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set0_tmp_dh_pkeyHL🟩U🟩A🟩NC*🟢Done
SSL_set0_tmp_dh_pkeyHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_tmp_dh_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_set_tmp_dh_callbackHL🟩U🟩A🟩NC*🟢Done
SSL_CTX_set_tmp_dhHL🟩U🟩A🟩NC*🟢Done
SSL_set_tmp_dhHL🟩U🟩A🟩NC*🟢Done
⇒ State Queries
SSL_in_initHL🟩U🟩A🟩NC*🟢Done
SSL_in_beforeHL🟩U🟩A🟩NC*🟢Done
SSL_is_init_finishedHL🟩U🟩A🟩NC*🟢Done
SSL_get_stateHL🟩U🟩A🟩NC*🟢Done
SSL_rstate_stringHL🟩U🟩A🟧QSI🟢Done
SSL_rstate_string_longHL🟩U🟩A🟧QSI🟢Done
SSL_state_stringHL🟩U🟩A🟩NC*🟢Done
SSL_state_string_longHL🟩U🟩A🟩NC*🟢Done
⇒ Data Path and CSSM
SSL_set_connect_stateCSSM🟩U🟩A🟧QSI🟢Done
SSL_set_accept_stateCSSM🟩U🟩A🟧QSI🟢Done
SSL_is_serverCSSM🟩U🟩A🟩NC*🟢Done
SSL_peekADP🟩U🟩A🟧QSI🟢Done
SSL_peek_exADP🟩U🟩A🟧QSI🟢Done
SSL_readADP🟩U🟩A🟧QSI🟢Done
SSL_read_exADP🟩U🟩A🟧QSI🟢Done
SSL_writeADP🟩U🟩A🟧QSI🟢Done
SSL_write_exADP🟩U🟩A🟧QSI🟢Done
SSL_sendfileADP🟩U🟥FC🟩NC*🟢Done
SSL_pendingADP🟩U🟩A🟧QSI🟢Done
SSL_has_pendingADP🟧C🟩A🟧QSI🟢Done
SSL_acceptCSSM🟩U🟩A🟧QSI🟢Done
SSL_connectCSSM🟩U🟩A🟧QSI🟢Done
SSL_do_handshakeCSSM🟩U🟩A🟧QSI🟢Done
SSL_set0_wbioNDP🟩U🟩A🟧QSI🟢Done
SSL_set0_rbioNDP🟧C🟩A🟧QSI🟢Done
SSL_set_bioNDP🟧C🟩A🟧QSI🟢Done
SSL_get_wbioNDP🟧C🟩A🟧QSI🟢Done
SSL_get_rbioNDP🟧C🟩A🟧QSI🟢Done
SSL_get_errorNDP🟩U🟩A🟧QSI🟢Done
SSL_get_rfdNDP🟩U🟩A🟩NC🟢Done
SSL_get_wfdNDP🟩U🟩A🟩NC🟢Done
SSL_get_fdNDP🟩U🟩A🟩NC🟢Done
SSL_set_rfdNDP🟧C🟩A🟧QSI🟢Done
SSL_set_wfdNDP🟧C🟩A🟧QSI🟢Done
SSL_set_fdNDP🟩U🟩A🟧QSI🟢Done
SSL_key_updateRL🟩U🟩A🟧QSI🟢Done
SSL_get_key_update_typeRL🟩U🟩A🟧QSI🟢Done
SSL_clear (connection)CSSM🟩U🟥FC🟧QSI🟢Done
SSL_clear (stream)CSSM🟩U🟥FC🟧QSI🟢Done
SSL_shutdownCSSM🟧C🟩A🟧QSI🟢Done
SSL_wantADP🟧C🟩A🟧QSI🟢Done
BIO_new_ssl_connectGlobal🟩U🟩A🟧QSI🟢Done
BIO_new_buffer_ssl_connectGlobal🟩U🟦U🟧QSI🟢Done
SSL_get_shutdownCSSM🟩U🟩A🟧QSI🟢Done
SSL_set_shutdownCSSM🟩U🟩A🟧QSI🟢Done
⇒ New APIs
SSL_is_tlsCSSM🟦N🟩A🟥QSA🟢Done
SSL_is_quicCSSM🟦N🟩A🟥QSA🟢Done
SSL_handle_eventsCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_event_timeoutCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_blocking_modeCSSM🟦N🟩A🟥QSA🟢Done
SSL_set_blocking_modeCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_rpoll_descriptorCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_wpoll_descriptorCSSM🟦N🟩A🟥QSA🟢Done
SSL_net_read_desiredCSSM🟦N🟩A🟥QSA🟢Done
SSL_net_write_desiredCSSM🟦N🟩A🟥QSA🟢Done
SSL_set1_initial_peer_addrCSSM🟦N🟩A🟥QSA🟢Done
SSL_shutdown_exCSSM🟦N🟩A🟥QSA🟢Done
SSL_stream_concludeCSSM🟦N🟩A🟥QSA🟢Done
SSL_stream_resetCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_stream_read_stateCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_stream_write_stateCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_stream_read_error_codeCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_stream_write_error_codeCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_conn_close_infoCSSM🟦N🟩A🟥QSA🟢Done
SSL_inject_net_dgramNDP🟦N🟩A🟥QSA🟢Done
⇒ New APIs for Multi-Stream
SSL_get0_connectionCSSM🟦N🟩A🟥QSA🟢Done
SSL_is_connectionCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_stream_idCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_stream_typeCSSM🟦N🟩A🟥QSA🟢Done
SSL_is_stream_localCSSM🟦N🟩A🟥QSA🟢Done
SSL_new_streamCSSM🟦N🟩A🟥QSA🟢Done
SSL_accept_streamCSSM🟦N🟩A🟥QSA🟢Done
SSL_get_accept_stream_queue_lenCSSM🟦N🟩A🟥QSA🟢Done
SSL_set_default_stream_modeCSSM🟦N🟩A🟥QSA🟢Done
SSL_set_incoming_stream_policyCSSM🟦N🟩A🟥QSA🟢Done
⇒ Currently Not Supported
SSL_copy_session_idSpecial🟩U🟥FC🟨C*🟢Done
BIO_ssl_copy_session_idSpecial🟩U🟥FC🟨C*🟢Done
SSL_CTX_set_quiet_shutdownCSSM🟩U🟦U🟩NC🟢Done
SSL_CTX_get_quiet_shutdownCSSM🟩U🟦U🟩NC🟢Done
SSL_set_quiet_shutdownCSSM🟩U🟥FC🟨C🟢Done
SSL_get_quiet_shutdownCSSM🟩U🟧NO🟨C🟢Done
SSL_CTX_set_ssl_versionHL🟩U🟥FC🟨C🟢Done
⇒ Async
SSL_CTX_set_async_callbackAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_set_async_callbackAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_CTX_set_async_callback_argAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_set_async_callback_argAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_waiting_for_asyncAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_get_async_statusAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_get_all_async_fdsAsync🟩U🟧NO🟩NC* †10🟢Done
SSL_get_changed_async_fdsAsync🟩U🟧NO🟩NC* †10🟢Done
⇒ Readahead
SSL_CTX_get_default_read_aheadRL🟩U🟧NO🟩NC*🟢Done
SSL_CTX_get_read_aheadRL🟩U🟧NO🟩NC*🟢Done
SSL_CTX_set_read_aheadRL🟩U🟧NO🟨C*🟢Done
SSL_get_read_aheadRL🟩U🟧NO🟨C*🟢Done
SSL_set_read_aheadRL🟩U🟧NO🟨C*🟢Done
SSL_CTX_set_default_read_buffer_lenRL🟩U🟧NO🟩NC*🟢Done
SSL_set_default_read_buffer_lenRL🟩U🟧NO🟨C*🟢Done
⇒ Record Padding and Fragmentation
SSL_CTX_set_record_padding_callbackRL🟩U🟥FC🟩NC*🟢Done
SSL_set_record_padding_callbackRL🟩U🟥FC🟨C*🟢Done
SSL_CTX_get_record_padding_callback_argRL🟩U🟥FC🟩NC*🟢Done
SSL_CTX_set_record_padding_callback_argRL🟩U🟥FC🟩NC*🟢Done
SSL_get_record_padding_callback_argRL🟩U🟥FC🟩NC*🟢Done
SSL_set_record_padding_callback_argRL🟩U🟥FC🟩NC*🟢Done
SSL_CTX_set_block_paddingRL🟩U🟥FC🟩NC*🟢Done
SSL_set_block_paddingRL🟩U🟥FC🟨C*🟢Done
SSL_CTX_set_tlsext_max_fragment_lengthRL🟩U🟥FC🟩NC*🟢Done
SSL_set_tlsext_max_fragment_lengthRL🟩U🟥FC🟨C*🟢Done
⇒ Stateless/HelloRetryRequest
SSL_statelessRL🟩U🟥FC🟨C*🟢Done
SSL_CTX_set_stateless_cookie_generate_cbRL🟩U🟥FC🟩NC*🟢Done
SSL_CTX_set_stateless_cookie_verify_cbRL🟩U🟥FC🟩NC*🟢Done
⇒ Early Data/0-RTT
SSL_CTX_set_allow_early_data_cb0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_set_allow_early_data_cb0-RTT🟩U🟥FC🟨C*🟢Done
SSL_CTX_get_recv_max_early_data0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_CTX_set_recv_max_early_data0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_get_recv_max_early_data0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_set_recv_max_early_data0-RTT🟩U🟥FC🟨C*🟢Done
SSL_CTX_get_max_early_data0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_CTX_set_max_early_data0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_get_max_early_data0-RTT🟩U🟥FC🟩NC*🟢Done
SSL_set_max_early_data0-RTT🟩U🟥FC🟨C*🟢Done
SSL_read_early_data0-RTT🟩U🟥FC🟨C*🟢Done
SSL_write_early_data0-RTT🟩U🟥FC🟨C*🟢Done
SSL_get_early_data_status0-RTT🟩U🟥FC🟩NC*🟢Done
⇒ Miscellaneous
DTLSv1_listenRL🟩U🟦U🟩NC🟢Done
DTLS_set_timer_cbNDP🟩U🟦U🟩NC🟢Done
DTLS_get_data_mtuNDP🟩U🟦U🟩NC🟢Done
SSL_get_ex_data_X509_STORE_CTX_idxGlobal🟩U🟦U🟩NC🟢Done
BIO_ssl_shutdownGlobal🟩U🟩A🟩NC🟢Done
SSL_alloc_buffersHL🟩U🟩A🟨C*🟢Done
SSL_free_buffersHL🟩U🟩A🟨C*🟢Done
SSL_traceHL🟩U🟩A🟩NC*🟢Done
SSL_set_debugHL🟩U🟩A🟩NC*🟢Done
⇒ Controls
SSL_CTRL_MODESpecial🟩U🟩A🟧QSI🟢Done
SSL_CTRL_CLEAR_MODESpecial🟩U🟩A🟧QSI🟢Done
SSL_CTRL_CLEAR_NUM_RENEGOTIATIONSHL🟩U🟧NO🟩NC*🟢Done
SSL_CTRL_GET_NUM_RENEGOTIATIONSHL🟩U🟧NO🟩NC*🟢Done
SSL_CTRL_GET_TOTAL_RENEGOTIATIONSHL🟩U🟧NO🟩NC*🟢Done
SSL_CTRL_GET_RI_SUPPORTHL🟩U🟧NO🟩NC*🟢Done
SSL_CTRL_GET_READ_AHEADHL🟩U🟧NO🟩NC*🟢Done
SSL_CTRL_SET_READ_AHEADHL🟩U🟥FC🟨C*🟢Done
SSL_CTRL_SET_MAX_PIPELINESRL🟩U🟥FC🟨C*🟢Done
SSL_CTRL_SET_MAX_SEND_FRAGMENTRL🟩U🟥FC🟨C*🟢Done
SSL_CTRL_SET_SPLIT_SEND_FRAGMENTRL🟩U🟥FC🟨C*🟢Done
SSL_CTRL_SET_MTURL🟩U🟥FC🟩NC*🟢Done
SSL_CTRL_SET_MAX_PROTO_VERSIONHL🟩U🟩A🟨C*🟢Done
SSL_CTRL_SET_MIN_PROTO_VERSIONHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_MAX_PROTO_VERSIONHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_MIN_PROTO_VERSIONHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_BUILD_CERT_CHAINHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_CERT_FLAGSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_CHAINHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_CHAIN_CERTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_CLEAR_CERT_FLAGSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_EXTRA_CHAIN_CERTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_CHAIN_CERTSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_CHAIN_CERT_STOREHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_CLIENT_CERT_REQUESTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_CLIENT_CERT_TYPESHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_EC_POINT_FORMATSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_EXTMS_SUPPORTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_EXTRA_CHAIN_CERTSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_FLAGSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_GROUPSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_IANA_GROUPSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_MAX_CERT_LISTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_NEGOTIATED_GROUPHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_PEER_SIGNATURE_NIDHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_PEER_TMP_KEYHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_RAW_CIPHERLISTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_SESS_CACHE_MODEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_SESS_CACHE_SIZEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_SHARED_GROUPHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_SIGNATURE_NIDHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_STATUS_REQ_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARGHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESPHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TLSEXT_TICKET_KEYSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_TMP_KEYHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_GET_VERIFY_CERT_STOREHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SELECT_CURRENT_CERTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_ACCEPTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_ACCEPT_GOODHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_ACCEPT_RENEGOTIATEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_CACHE_FULLHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_CB_HITHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_CONNECTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_CONNECT_GOODHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_CONNECT_RENEGOTIATEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_HITHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_MISSESHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_NUMBERHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SESS_TIMEOUTSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_CHAIN_CERT_STOREHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_CLIENT_CERT_TYPESHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_CLIENT_SIGALGSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_CLIENT_SIGALGS_LISTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_CURRENT_CERTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_DH_AUTOHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_GROUPSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_GROUPS_LISTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_MAX_CERT_LISTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_MSG_CALLBACKHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_MSG_CALLBACK_ARGHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_NOT_RESUMABLE_SESS_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_RETRY_VERIFYHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SESS_CACHE_MODEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SESS_CACHE_SIZEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SIGALGSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SIGALGS_LISTHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SRP_ARGHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_SRP_VERIFY_PARAM_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_DEBUG_ARGHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_DEBUG_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_HOSTNAMEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_SERVERNAME_ARGHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_SERVERNAME_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLS_EXT_SRP_PASSWORDHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLS_EXT_SRP_STRENGTHHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLS_EXT_SRP_USERNAMEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_STATUS_REQ_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARGHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESPHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPEHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_TICKET_KEY_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TLSEXT_TICKET_KEYSHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TMP_DHHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TMP_DH_CBHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_TMP_ECDHHL🟩U🟩A🟩NC*🟢Done
SSL_CTRL_SET_VERIFY_CERT_STOREHL🟩U🟩A🟩NC*🟢Done
⇒ SSL Modes
SSL_MODE_ENABLE_PARTIAL_WRITEADP🟩U🟩A🟧QSI🟢Done
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFERADP🟩U🟩A🟧QSI🟢Done
SSL_MODE_RELEASE_BUFFERSADP🟩U🟧NO🟩NC🟢Done
SSL_MODE_ASYNCADP🟩U🟧NO🟩NC🟢Done
SSL_MODE_AUTO_RETRYADP🟩U🟧NO🟩NC🟢Done
SSL_MODE_SEND_FALLBACK_SCSVHL🟩U🟩U🟩NC🟢Done

What should SSL_get_current_cipher, SSL_get_pending_cipher, etc. do?

QUIC always uses AES-128-GCM for Initial packets. At this time the handshake layer has not negotiated a ciphersuite so it has no “current” cipher. We could return AES-128-GCM here, but it seems reasonable to just return NULL as the encryption is mostly for protection against accidental modification and not “real” encryption. From the perspective of the Handshake layer encryption is not active yet. An application using QUIC can always interpret NULL as meaning AES-128-GCM is being used if needed as this is implied by using QUIC.

A. We return NULL here, because it allows applications to detect if a ciphersuite has been negotiated and NULL can be used to infer that Initial encryption is still being used. This also minimises the changes needed to the implementation.

What should SSL_CTX_set_cipher_list do?

Since this function configures the cipher list for TLSv1.2 and below only, there is no need to restrict it as TLSv1.3 is required for QUIC. For the sake of application compatibility, applications can still configure the TLSv1.2 cipher list; it will always be ignored. This function can still be used to set the SECLEVEL; no changes are needed to facilitate this.

What SSL options should be supported?

Options we explicitly want to support:

  • SSL_OP_CIPHER_SERVER_PREFERENCE

  • SSL_OP_DISABLE_TLSEXT_CA_NAMES

  • SSL_OP_NO_TX_CERTIFICATE_COMPRESSION

  • SSL_OP_NO_RX_CERTIFICATE_COMPRESSION

  • SSL_OP_PRIORITIZE_CHACHA

  • SSL_OP_NO_TICKET

  • SSL_OP_CLEANSE_PLAINTEXT

Options we do not yet support but could support in the future, currently no-ops:

  • SSL_OP_NO_QUERY_MTU

  • SSL_OP_NO_ANTI_REPLAY

The following options must be explicitly forbidden:

  • SSL_OP_NO_TLSv1_3 — TLSv1.3 is required for QUIC

  • SSL_OP_ENABLE_MIDDLEBOX_COMPAT — forbidden by QUIC RFCs

  • SSL_OP_ENABLE_KTLS — not currently supported for QUIC

  • SSL_OP_SAFARI_ECDHE_ECDSA_BUG

  • SSL_OP_TLSEXT_PADDING

  • SSL_OP_TLS_ROLLBACK_BUG

  • SSL_OP_IGNORE_UNEXPECTED_EOF

  • SSL_OP_ALLOW_NO_DHE_KEX

The following options are ignored for TLSv1.3 or otherwise not applicable and may therefore be settable but ignored. We take this approach on the grounds that it is harmless and applications might want to see that options have been correctly set for protocols unrelated to QUIC.

  • SSL_OP_CRYPTOPRO_TLSEXT_BUG

  • SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS

  • SSL_OP_ALLOW_CLIENT_RENEGOTIATION

  • SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION

  • SSL_OP_CISCO_ANYCONNECT

  • SSL_OP_COOKIE_EXCHANGE

  • SSL_OP_LEGACY_SERVER_CONNECT

  • SSL_OP_NO_COMPRESSION

  • SSL_OP_NO_ENCRYPT_THEN_MAC

  • SSL_OP_NO_EXTENDED_MASTER_SECRET

  • SSL_OP_NO_RENEGOTIATION

  • SSL_OP_NO_RESSION_RESUMPTION_ON_NEGOTIATION

  • SSL_OP_NO_SSLv3

  • SSL_OP_NO_TLSv1

  • SSL_OP_NO_TLSv1_1

  • SSL_OP_NO_TLSv1_2

  • SSL_OP_NO_DTLSv1

  • SSL_OP_NO_DTLSv1_2

What should SSL_rstate_string and SSL_state_string do?

SSL_state_string is highly handshake layer specific, so it makes sense to just forward to the handshake layer.

SSL_rstate_string is record layer specific. A cursory evaluation of usage via GitHub code search did not appear to identify much usage of this function other than for debug output; i.e., there seems to be little usage of this in a way that depends on the output for the purposes of control flow. Since there is not really any direct correspondence to the QUIC record layer, we conservatively define the output of this function as "unknown".

TODO: forbid NPN TODO: enforce TLSv1.3 TODO: forbid PHA - DONE TODO: forbid middlebox compat mode in a deeper way? TODO: new_session_ticket doesn't need modifying as such, but ticket machinery will

What should SSL_pending and SSL_has_pending do?

SSL_pending traditionally yields the number of bytes buffered inside an SSL object available for immediate reading. For QUIC, we can just make this report the current size of the receive stream buffer.

SSL_has_pending returns a boolean value indicating whether there is processed or unprocessed incoming data pending. There is no direct correspondence to QUIC, so there are various implementation options:

  • SSL_pending() > 0

  • SSL_pending() > 0 || pending URXEs or RXEs exist

The latter can probably be viewed as more of a direct correspondence to the design intent of the API, so we go with this.

What should SSL_alloc_buffers and SSL_free_buffers do?

These do not really correspond to our internal architecture for QUIC. Since internal buffers are always available, SSL_alloc_buffers can simply always return 1. SSL_free_buffers can always return 0, as though the buffers are in use, which they generally will be.

What should SSL_key_update and SSL_get_key_update_type?

SSL_key_update can trigger a TX record layer key update, which will cause the peer to respond with a key update in turn. The update occurs asynchronously at next transmission, not immediately.

SSL_get_key_update_type returns an enumerated value which is only relevant to the TLSv1.3 protocol; for QUIC, it will always return SSL_KEY_UPDATE_NONE.

What should SSL_MODE_AUTO_RETRY do?

The absence of SSL_MODE_AUTO_RETRY causes SSL_read/SSL_write on a normal TLS connection to potentially return due to internal handshake message processing. This does not really make sense for our QUIC implementation, therefore we always act as though SSL_MODE_AUTO_RETRY is on, and this mode is ignored.

What should SSL_MODE_SEND_FALLBACK_SCSV do?

This is not relevant to QUIC because this functionality relates to protocol version downgrade attack protection and QUIC only supports TLSv1.3. Thus, it is ignored.

What should SSL_CTX_set_ssl_version do?

This is a deprecated function, so it needn't be supported for QUIC. Fail closed.

What should SSL_set_ssl_method do?

We do not currently support this for QUIC.

What should SSL_set_shutdown do?

This is not supported and is a no-op for QUIC.

What should SSL_dup and SSL_clear do?

These may be tricky to support. Currently they are blocked.