It looks like macOS 10.5+ and Windows (latest) use LibreSSL by default rather than OpenSSL.
The LibreSSL API does not have the same functions as either 1.0.2 or 1.1.1, so needs its own JNA class. In particular it looks like ENGINE_load_rdrand is not present, nor is OpenSSL_version_num; 1.0.2 has the former only, and 1.1.1 has the latter only. This makes it hard to support JNA with the current design. It would require another OpenSsl<version>NativeJna class, and the parent class OpenSslNativeJna would need to use yet another condition in each of its methods. This is quite tedious and error-prone. Seems to me it would be better to use something like a set of singleton classes that implement the required methods. The appropriate one can then be initialised and used by OpenSslNativeJna to field the actual methods. i.e. replace the conditional logic with a static reference to the correct API interface instance. This should only affect non-public classes. Any other suggestions? Sebb --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org