Alex, All:

Thank you for your review Alex. I agree that LibreSSL could be out of scope
here. But, FTR, here is what I found:

LibreSSL 2.8.3 does not seem to implement ENGINE_load_rdrand.

https://www.libressl.org/ points to
https://github.com/libressl-portable/openbsd and looking
for ENGINE_load_rdrand:

git log -S ENGINE_load_rdrand --oneline

reveals:

7a713945c A few months back there was a big community fuss regarding
direct-use of the intel RDRAND instruction.  Consensus was RDRAND should
probably only be used as an additional source of entropy in a mixer.
947b08e07 used for windows dll builds only
adc55c5b9 resolve conflicts
e728adc5e import OpenSSL-1.0.1c
c15741c9f import OpenSSL-1.0.1c
bbd40b4de import OpenSSL-1.0.1c

Then:

git diff 947b08e07 | grep "ENGINE_load_rdrand"

Shows ENGINE_load_rdrand going away:

- ENGINE_load_rdrand();
-void ENGINE_load_rdrand (void)
-void ENGINE_load_rdrand (void) {}
-void ENGINE_load_rdrand(void);
- ENGINE_load_rdrand();
-void ENGINE_load_rdrand (void)
-void ENGINE_load_rdrand (void) {}
-void ENGINE_load_rdrand(void);

in this commit:

commit 947b08e07e10d9c522c7dd7e1db04096f9ab8f98
Author: miod <>
Date:   Mon Apr 14 18:31:08 2014 +0000

    used for windows dll builds only

Which according to https://www.libressl.org/releases.html might match up to
a version in or after "LibreSSL 2.0.0 (Jul 11, 2014) - First LibreSSL
release, based on OpenBSD 5.6 development snapshot."

So that function might never have been in a released LibreSSL since there
is no history on the page pre-2.0.0.

Gary


On Wed, Aug 26, 2020 at 9:39 PM Alex Remily <alex.rem...@gmail.com> wrote:

> Gary,
>
> I tested the most recent jar against Mac x86_64 and Linux x86_64
> OpenSSL version 1.1.1.  The unit tests passed and the main function
> ran to completion with expected output.  I'll try to get to the
> Windows x86_64 test tomorrow and the OpenSSL 1.0 tests on the same
> three architectures by the end of the weekend.
>
> I'd like to get to the bottom of this UnsatisfiedLinkError in the main
> function.  I hope it's not a code issue.  It may be an issue of the
> JNI libraries loading the libcrypto library associated with LibreSSL.
> I don't use LibreSSL and about half the Mac tests skip when run
> against it.  From my perspective it is out of scope.  The JNI
> libraries look for the OpenSSL_version function (API 1.1) or the
> SSLeay_version function (API 1.0) only after a call to
> OpenSSL_version_num() or SSLeay() to determine the underlying OpenSSL
> API (1.0 or 1.1).  If the initial calls both return null (no function
> found) then an error is supposed to be thrown.  It may be that the
> LibreSSL uses a different specification to identify the library
> version than OpenSSL, and it's causing the JNI to look for a function
> that doesn't exist in the underlying OpenSSL libcrypto, i.e., it's
> looking for a 1.1 function in a 1.0 library.  Can you test with the
> libcrypto that shipped with OpenSSL?
>
> I'm not sure why Bruno is getting the same error if he doesn't have
> OpenSSL or LibreSSL installed.  The JNI libraries should error out
> before getting to that point.  I'm hoping to learn more about his
> configuration.
>
> Alex
>
> On Mon, Aug 24, 2020 at 3:18 PM Gary Gregory <garydgreg...@gmail.com>
> wrote:
> >
> > On Mon, Aug 24, 2020 at 12:10 PM Geoffrey Blake <
> geoffrey.w.bl...@gmail.com>
> > wrote:
> >
> > > Hi Gary,
> > >
> > > Which snapshots have Linux binaries in them?   As far as I can tell,
> the
> > > recent ones uploaded are Mac only, and the one from 8/18 had that weird
> > > /native/native directory issue.  For what it's worth, Mac binaries are
> > > working on my laptop, though I'm using LibreSSL which is what comes
> > > installed by default.
> > >
> >
> > Whops, please try again, I deployed a fresh snapshot containing:
> >
> >     22456  01-22-2020 15:10
> > org/apache/commons/crypto/native/Linux/aarch64/libcommons-crypto.so
> >     21880  01-22-2020 15:10
> > org/apache/commons/crypto/native/Linux/arm/libcommons-crypto.so
> >     17800  01-22-2020 15:10
> > org/apache/commons/crypto/native/Linux/armhf/libcommons-crypto.so
> >     21856  01-22-2020 15:10
> > org/apache/commons/crypto/native/Linux/x86/libcommons-crypto.so
> >     22552  01-22-2020 15:10
> > org/apache/commons/crypto/native/Linux/x86_64/libcommons-crypto.so
> >     23116  01-22-2020 15:10
> > org/apache/commons/crypto/native/Mac/x86_64/libcommons-crypto.jnilib
> >     25088  01-22-2020 15:10
> > org/apache/commons/crypto/native/Windows/x86/commons-crypto.dll
> >     28160  01-22-2020 15:10
> > org/apache/commons/crypto/native/Windows/x86_64/commons-crypto.dll
> >
> > I just removed OpenSSL 1.1.1g from my PATH, I now have LibreSSL 2.8.3.
> >
> > I am testing from the my local repo folder with:
> >
> > java -cp target/classes -Dcommons.crypto.lib.tempdir=target
> > -Dcommons.crypto.debug=true org.apache.commons.crypto.Crypto
> > Apache Commons Crypto 1.1.0-SNAPSHOT
> > Extracting
> > '/org/apache/commons/crypto/native/Mac/x86_64/libcommons-crypto.jnilib'
> to
> >
> '/Users/garydgregory/git/commons-crypto/target/commons-crypto-c7da6852-0a52-465b-be2b-ec39b240e7f0-libcommons-crypto.jnilib'...
> > Extracted
> > '/org/apache/commons/crypto/native/Mac/x86_64/libcommons-crypto.jnilib'
> to
> >
> '/Users/garydgregory/git/commons-crypto/target/commons-crypto-c7da6852-0a52-465b-be2b-ec39b240e7f0-libcommons-crypto.jnilib':
> > 23,116 bytes.
> > Validating
> >
> '/Users/garydgregory/git/commons-crypto/target/commons-crypto-c7da6852-0a52-465b-be2b-ec39b240e7f0-libcommons-crypto.jnilib'...
> > Native code loaded OK: 1.1.0-SNAPSHOT
> > Native name: Apache Commons Crypto
> > Native built: Aug 23 2020
> > Exception in thread "main" java.lang.UnsatisfiedLinkError:
> OpenSSL_version
> >   at org.apache.commons.crypto.OpenSslInfoNative.OpenSSL(Native Method)
> >   at org.apache.commons.crypto.Crypto.main(Crypto.java:144)
> >
> > Same issue with using -cp target/commons-crypto-1.1.0-SNAPSHOT.jar
> instead
> > of target/class which is not a surprise.
> >
> > Which version of LibreSSL do you use?
> >
> > Gary
> >
> >
> > > -Geoff
> > >
> > > On Sun, Aug 23, 2020 at 9:08 PM Alex Remily <alex.rem...@gmail.com>
> wrote:
> > >
> > > > FWIW I have the same basic setup.  The original LibreSSL is still
> > > > installed and I used homebrew to install the various versions of
> > > > OpenSSL, which I put first on my PATH.  I don't routinely call the
> > > > main function when I test, I usually just run the unit tests, so it's
> > > > quite possible this is an error that's been overlooked.  If it is a
> > > > config issue with the Mac, I expect it will be one common to all Mac
> > > > users that we'll need to document.
> > > >
> > > > On Sun, Aug 23, 2020 at 9:50 PM Gary Gregory <garydgreg...@gmail.com
> >
> > > > wrote:
> > > > >
> > > > > I do have LibreSSL but I used homebrew to install OpenSSL 1.1.1g
> which
> > > I
> > > > > put first on the PATH. Maybe something is off in my setup...
> > > > >
> > > > > Gary
> > > > >
> > > > > On Sun, Aug 23, 2020, 21:46 Alex Remily <alex.rem...@gmail.com>
> wrote:
> > > > >
> > > > > > Gary,
> > > > > >
> > > > > > I'll have a look.  I did the 1.1 support stuff and I'm familiar
> with
> > > > > > that class and that error, although I don't recall seeing that
> > > > > > specific error in that class.  The JNI libraries check the
> OpenSSL
> > > > > > version at runtime, but maybe a compile time dependency got
> through.
> > > > > >
> > > > > > Out of curiosity, I assume you also have LibreSSL installed?  I
> have
> > > > > > run into issues on my Mac with which librypto gets loaded by the
> JNI
> > > > > > libraries during the dlsym.  I wonder if the runtime is
> referring to
> > > > > > one version and the JNI library is loading another.
> > > > > >
> > > > > > Anyway, I'll poke around and see what I can figure out.  I'll
> try to
> > > > > > get to it with the rest of the testing this week.
> > > > > >
> > > > > > Alex
> > > > > >
> > > > > > On Sun, Aug 23, 2020 at 11:18 AM Gary Gregory <
> > > garydgreg...@gmail.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > I wondering if anyone can confirm the following issue and/or
> help
> > > > explain
> > > > > > > it, on MacOS 10.15.6 with OpenSSL 1.1.1g, running:
> > > > > > >
> > > > > > > mvn package
> > > > > > >
> > > > > > > then:
> > > > > > >
> > > > > > > java -Xdiag -Xcheck:jni -cp target/classes
> > > > > > > -Dcommons.crypto.lib.tempdir=target/
> > > org.apache.commons.crypto.Crypto
> > > > > > > WARNING in native method: JNI call made without checking
> exceptions
> > > > when
> > > > > > > required to from CallStaticObjectMethod
> > > > > > > WARNING in native method: JNI call made without checking
> exceptions
> > > > when
> > > > > > > required to from CallObjectMethod
> > > > > > > Apache Commons Crypto 1.1.0-SNAPSHOT
> > > > > > > Native code loaded OK: 1.1.0-SNAPSHOT
> > > > > > > Native name: Apache Commons Crypto
> > > > > > > Native built: Aug 22 2020
> > > > > > > Exception in thread "main" java.lang.UnsatisfiedLinkError:
> > > > > > OpenSSL_version
> > > > > > >   at org.apache.commons.crypto.OpenSslInfoNative.OpenSSL(Native
> > > > Method)
> > > > > > >   at org.apache.commons.crypto.Crypto.main(Crypto.java:144)
> > > > > > >
> > > > > > > I wonder if we have issues on 1.1.x vs 1.0.x.
> > > > > > >
> > > > > > > My versions:
> > > > > > >
> > > > > > > openssl version
> > > > > > > OpenSSL 1.1.1g  21 Apr 2020
> > > > > > >
> > > > > > > mvn -version
> > > > > > > Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
> > > > > > > Maven home: /opt/apache-maven-3.6.3
> > > > > > > Java version: 1.8.0_265, vendor: AdoptOpenJDK, runtime:
> > > > > > >
> > > >
> /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre
> > > > > > > Default locale: en_US, platform encoding: UTF-8
> > > > > > > OS name: "mac os x", version: "10.15.6", arch: "x86_64",
> family:
> > > > "mac"
> > > > > > >
> > > > > > > Thank you,
> > > > > > > Gary
> > > > > > >
> > > > > > >
> > > > > > > On Sat, Aug 22, 2020 at 7:48 PM Gary Gregory <
> > > garydgreg...@gmail.com
> > > > >
> > > > > > wrote:
> > > > > > >
> > > > > > > > Hi all,
> > > > > > > >
> > > > > > > > I intent on creating a release candidate for Commons Crypto
> soon.
> > > > > > > >
> > > > > > > > I pushed a snapshot today which contains native binaries for
> > > > Windows 32
> > > > > > > > and 64, Linux 32 and 64, Mac 64, and ARM and ARM HF.
> > > > > > > >
> > > > > > > > Please help testing these on whatever platforms you may have
> > > > access to.
> > > > > > > >
> > > > > > > > Gary
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > >
> > > > > >
> ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > > > > For additional commands, e-mail: dev-h...@commons.apache.org
> > > > > >
> > > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > > For additional commands, e-mail: dev-h...@commons.apache.org
> > > >
> > > >
> > >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to