This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-crypto.git


The following commit(s) were added to refs/heads/master by this push:
     new 05dd7ec6 Implement OpenSSL_version_num for JNA
05dd7ec6 is described below

commit 05dd7ec670aad409b80feff1d5bf01dca571c0af
Author: Sebb <s...@apache.org>
AuthorDate: Sat Dec 2 12:52:00 2023 +0000

    Implement OpenSSL_version_num for JNA
---
 src/changes/changes.xml                                    |  1 +
 .../apache/commons/crypto/jna/LibreSsl20XNativeJna.java    |  6 +++++-
 .../org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java | 10 ++++++++++
 .../org/apache/commons/crypto/jna/OpenSsl30XNativeJna.java | 10 ++++++++++
 .../commons/crypto/jna/OpenSslInterfaceNativeJna.java      |  2 ++
 .../java/org/apache/commons/crypto/jna/OpenSslJna.java     | 14 ++------------
 .../org/apache/commons/crypto/jna/OpenSslNativeJna.java    |  4 ++++
 7 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f47b0133..4c7a09c8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -100,6 +100,7 @@
       <action                    type="update" dev="ggregory" 
due-to="Dependabot, Gary Gregory">Bump commons-parent from 56 to 64 
#225.</action>
       <action                    type="update" dev="ggregory" due-to="Gary 
Gregory">Bump com.sun.xml.bind:jaxb-impl from 2.3.7 to 2.3.8.</action>
       <!-- ADD -->
+      <action                    type="add" dev="sebb">Implement 
OpenSSL_version_num for JNA</action>
       <action issue="CRYPTO-177" type="add" dev="sebb">Cipher and Random 
Factory classes don't include JNA</action>
       <action issue="CRYPTO-172" type="add" dev="sebb" due-to="Ludovic 
Henry">Add support for Linux-riscv64 #264</action>
       <action issue="CRYPTO-174" type="add" dev="sebb">Allow override of SSL 
library name for Windows</action>
diff --git 
a/src/main/java/org/apache/commons/crypto/jna/LibreSsl20XNativeJna.java 
b/src/main/java/org/apache/commons/crypto/jna/LibreSsl20XNativeJna.java
index 5deb4c86..d0a3ef16 100644
--- a/src/main/java/org/apache/commons/crypto/jna/LibreSsl20XNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/LibreSsl20XNativeJna.java
@@ -286,7 +286,6 @@ final class LibreSsl20XNativeJna implements 
OpenSslInterfaceNativeJna {
     public static native PointerByReference RAND_SSLeay();
 
     /**
-     * TODO (does not appear to be used yet)
      * @return OPENSSL_VERSION_NUMBER which is a numeric release version 
identifier
      */
     public static native NativeLong SSLeay();
@@ -429,6 +428,11 @@ final class LibreSsl20XNativeJna implements 
OpenSslInterfaceNativeJna {
         return SSLeay_version(i);
     }
 
+    @Override
+    public long _OpenSSL_version_num() {
+        return SSLeay().longValue();
+    }
+
     @Override
     public int _RAND_bytes(final ByteBuffer buf, final int length) {
         return RAND_bytes(buf, length) ;
diff --git 
a/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java 
b/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java
index e70971f5..6a6ef980 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java
@@ -239,6 +239,11 @@ final class OpenSsl11XNativeJna  implements 
OpenSslInterfaceNativeJna {
      */
     public static native String OpenSSL_version(int type);
 
+    /**
+     * @return OPENSSL_VERSION_NUMBER which is a numeric release version 
identifier
+     */
+    public static native NativeLong OpenSSL_version_num();
+
     /**
      * Generates random data
      *
@@ -385,6 +390,11 @@ final class OpenSsl11XNativeJna  implements 
OpenSslInterfaceNativeJna {
         return OpenSSL_version(i);
     }
 
+    @Override
+    public long _OpenSSL_version_num() {
+        return OpenSSL_version_num().longValue();
+    }
+
     @Override
     public int _RAND_bytes(final ByteBuffer buf, final int length) {
         return RAND_bytes(buf, length) ;
diff --git 
a/src/main/java/org/apache/commons/crypto/jna/OpenSsl30XNativeJna.java 
b/src/main/java/org/apache/commons/crypto/jna/OpenSsl30XNativeJna.java
index 5db9d4f4..85aa17b3 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSsl30XNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSsl30XNativeJna.java
@@ -241,6 +241,11 @@ final class OpenSsl30XNativeJna implements 
OpenSslInterfaceNativeJna {
      */
     public static native String OpenSSL_version(int type);
 
+    /**
+     * @return OPENSSL_VERSION_NUMBER which is a numeric release version 
identifier
+     */
+    public static native NativeLong OpenSSL_version_num();
+
     /**
      * Generates random data
      *
@@ -387,6 +392,11 @@ final class OpenSsl30XNativeJna implements 
OpenSslInterfaceNativeJna {
         return OpenSSL_version(i);
     }
 
+    @Override
+    public long _OpenSSL_version_num() {
+        return OpenSSL_version_num().longValue();
+    }
+
     @Override
     public int _RAND_bytes(final ByteBuffer buf, final int length) {
         return RAND_bytes(buf, length) ;
diff --git 
a/src/main/java/org/apache/commons/crypto/jna/OpenSslInterfaceNativeJna.java 
b/src/main/java/org/apache/commons/crypto/jna/OpenSslInterfaceNativeJna.java
index a9c895fc..caf190b8 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslInterfaceNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslInterfaceNativeJna.java
@@ -89,6 +89,8 @@ interface OpenSslInterfaceNativeJna {
 
     String _OpenSSL_version(final int i);
 
+    long _OpenSSL_version_num();
+
     int _RAND_bytes(final ByteBuffer buf, final int length);
 
     PointerByReference _RAND_get_rand_method();
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java 
b/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
index bccfe827..ed8b5f2b 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
@@ -106,25 +106,15 @@ public final class OpenSslJna {
             System.err.flush(); // helpful for stack traces to not mix in 
other output.
             throw initialisationError; // propagate to make error obvious
         }
+        info("OpenSSL library loaded OK, version: 0x%s", 
Long.toHexString(OpenSslNativeJna.OpenSSL_version_num()));
         for (int i = 0; i <= Utils.OPENSSL_VERSION_MAX_INDEX; i++) {
-            String data = OpenSSLVersion(i);
+            String data = OpenSslNativeJna.OpenSSLVersion(i);
             if (!"not available".equals(data)) {
                 info("OpenSSLVersion(%d): %s", i, data);
             }
         }
     }
 
-    /**
-     * Retrieves version/build information about OpenSSL library.
-     *
-     * @param type type can be OPENSSL_VERSION, OPENSSL_CFLAGS, 
OPENSSL_BUILT_ON...
-     * @return A pointer to a constant string describing the version of the
-     * OpenSSL library or giving information about the library build.
-     */
-    static String OpenSSLVersion(final int type) {
-         return OpenSslNativeJna.OpenSSLVersion(type);
-    }
-
     /**
      * Constructs a new instance.
      *
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java 
b/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
index fb8fdacf..3d78aebd 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
@@ -200,6 +200,10 @@ final class OpenSslNativeJna {
         return JnaImplementation._OpenSSL_version(i);
     }
 
+    public static long OpenSSL_version_num() {
+        return JnaImplementation._OpenSSL_version_num();
+    }
+
     public static int RAND_bytes(final ByteBuffer buf, final int length) {
         return JnaImplementation._RAND_bytes(buf, length);
     }

Reply via email to