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

Reply via email to