vtls/openssl: Support async certificate verification by user callback #11499
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Update the OpenSSL connect state machine to handle
SSL_ERROR_WANT_RETRY_VERIFY
. This allows libcurl users to suspend processing while waiting for external I/O during certificate validation.Intended usage
Clients perform asynchronous certificate verification by installing a X.509 certificate verification function with
SSL_CTX_set_cert_verify_callback
from the SSL context callback (seeCURLOPT_SSL_CTX_FUNCTION
).The verification function calls
SSL_set_retry_verify
before returning0
to indicate that the outcome is still pending. Once verification completes, the client callscurl_multi_wakeup
to re-enter theSSL_connect
state machine and return the final verification outcome from the next call to the verification function.This mechanism is useful for applications that use OpenSSL for TLS protocol handling and crypto while delegating certificate verification to the platform's native trust store.