Open rlebeau opened 7 years ago
Attaching screenshotshowing missing "critical" functions when loading BoringSSL.
Some changes have been made to the IdSSLOpenSSLHeaders unit to account for the missing OpenSSL functions in the BoringSSL library, but this has not been tested or finalized at this time.
According to a QT bug report:
https://bugreports.qt.io/browse/QTBUG-38291
The OpenSSL libraries are preloaded by Android. Attempting to reload the libraries are therefore not possible (in a safe way) and is a limitation/feature in Android that affects all applications.
BoringSSL uses the same library filenames as OpenSSL, but makes big interface changes to OpenSSL's API interface. If BoringSSL is pre-loaded with those filenames, users will likely not be able to bundle Indy-compatible OpenSSL lib files with their Android apps.
In Android 6, Google replaced OpenSSL with BoringSSL, and as such Indy's SSL support no longer works on Android (error "Unable to load SSL").
Considering that BoringSSL is just a fork of OpenSSL to make it "a much lighter-weight version of OpenSSL that strips out many of the application programing interfaces (APIs) and application binary interfaces (ABIs) found in the latter", and for Google to apply their own internal patches to without applying them to OpenSSL, I wonder how much work it would be to make Indy compatible with BoringSSL. As long as the remaining APIs are the same, maybe it is just a matter of having Indy load different library filenames at runtime. I hope it does not mean having to write a completely new IOHandler for BoringSSL, that could be a lot of work.