Re: [CRYPTO] Basic SSL 3.x support added

2023-11-24 Thread sebb
On Thu, 23 Nov 2023 at 11:57, sebb  wrote:
>
> The test suite now runs on ubuntu-latest, windows-latest and
> macos-latest with Java 8,11,17,21
>
> On macOS, the OpenSSL library path has to be provided, otherwise the
> test can crash with
>
> '"...bin/java is loading libcrypto in an unsafe way"
>
> AFAICT, this is where libcrypto.dylib does not resolve to a filename
> that contains a version number.
> (Normally libcrypto.dylib is a link pointing to libcrypto.1.1.dylib or
> similar in the same directory)
>
> I have not yet found this lone library, so I am beginning to wonder if
> it is in the dylib cache?

On further investigation, it appears that the default crypto library
is a dummy that does not have an in-built version.
It does not matter if the file name includes a version or not. That
was a red herring.

> If so, then macOS will always require the library path to be provided.

The user will either have to provide jn[ai].library.path or ensure
that there is a suitable library in the current working directory.
(This can be a soft link)

> I don't think it's possible to trap the error, so it cannot be
> automatically recovered.
> It might perhaps be possible to use dlopen_preflight() to check if a
> file exists; will need to run further checks.
>

AFAICT, dlopen_preflight() returns true if (and only if) the library
load will succeed, so could be used to avoid a crash.
It has to do the same checks as dlopen(), so should only be used if necessary.

I think it would make sense to only do the check if the user has not
provided a library path.
This could be added to the JNI loads quite easily.

However so far I have been unable to get the method working in the JNA case.
It would need to be done in an independent class that is only loaded on macOS.

> On Sat, 18 Nov 2023 at 03:26, Alex Remily  wrote:
> >
> > Just pulled master and successfully ran tests against OpenSSL 3.1.3 on Mac
> > OS 11 BigSur.  Nice work sebb!
> >
> > Apache Commons Crypto 1.2.1-SNAPSHOT
> >
> > Native code loaded OK: 1.2.1-SNAPSHOT
> >
> > Native name: Apache Commons Crypto
> >
> > Native built: Nov 17 2023
> >
> > OpenSSL library loaded OK, version: 0x30100030
> >
> > OpenSSL library info: OpenSSL 3.1.3 19 Sep 2023
> >
> > DLL name: libcrypto.dylib
> >
> > DLL path: /usr/local/Cellar/openssl@3/3.1.3/lib/libcrypto.3.dylib
> >
> > Additional OpenSSL_version(n) details:
> >
> > OpenSSLVersion(1): compiler: clang -fPIC -arch x86_64 -O3 -Wall -DL_ENDIAN
> > -DOPENSSL_PIC -D_REENTRANT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
> >
> > OpenSSLVersion(2): built on: Tue Sep 19 13:01:49 2023 UTC
> >
> > OpenSSLVersion(3): platform: darwin64-x86_64-cc
> >
> > OpenSSLVersion(4): OPENSSLDIR: "/usr/local/etc/openssl@3"
> >
> > OpenSSLVersion(5): ENGINESDIR: "/usr/local/Cellar/openssl@3
> > /3.1.3/lib/engines-3"
> >
> > OpenSSLVersion(6): 3.1.3
> >
> > OpenSSLVersion(7): 3.1.3
> >
> > OpenSSLVersion(8): MODULESDIR: "/usr/local/Cellar/openssl@3
> > /3.1.3/lib/ossl-modules"
> >
> > OpenSSLVersion(9): CPUINFO: OPENSSL_ia32cap=0x7ffaf3eb:0x27ab
> >
> > Random instance created OK:
> > org.apache.commons.crypto.random.OpenSslCryptoRandom@30c4e352
> >
> > Cipher AES/CTR/NoPadding instance created OK:
> > org.apache.commons.crypto.cipher.OpenSslCipher@673c4f6e
> >
> > On Tue, Nov 14, 2023 at 8:27 AM sebb  wrote:
> >
> > > On Tue, 14 Nov 2023 at 13:17, Alex Remily  wrote:
> > > >
> > > > That's fantastic.  I read that there were big API changes with the move
> > > to
> > > > OpenSSL 3, but maybe those changes were not in the functionality that
> > > > commons crypto exposes.  Have you merged into master yet?  I look 
> > > > forward
> > > > to playing around with it.
> > >
> > > Yes, it is in master.
> > >
> > > > Alex
> > > >
> > > > On Wed, Nov 8, 2023 at 7:12 PM sebb  wrote:
> > > >
> > > > > Crypto now builds and tests OK on
> > > > > macOS-latest - OpenSSL 3.1.4 24 Oct 2023
> > > > > and
> > > > > Ubuntu-latest - OpenSSL 3.0.2 15 Mar 2022
> > > > > Tested with Java 8 and 21
> > > > >
> > > > > I only had to allow for two changed names:
> > > > >
> > > > > EVP_CIPHER_CTX_block_size => EVP_CIPHER_CTX_get_block_size
> > > > > EVP_CIPHER_flags => EVP_CIPHER_get_flags
> > > > >
> > > > > This seems too easy, so I suspect there may be some missing tests.
> > > > >
> > > > > Sebb
> > > > >
> > > > > -
> > > > > 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



[VOTE] Release Apache Commons IO 2.15.1 based on RC1

2023-11-24 Thread Gary Gregory
We have fixed quite one important bug and added some enhancements
since Apache Commons IO 2.15.0 was released, so I would like to
release Apache Commons IO 2.15.1.

Apache Commons IO 2.15.1 RC1 is available for review here:
https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1 (svn
revision 65522)

The Git tag commons-io-2.15.1-RC1 commit for this RC is
dc51644d5adbb0c461efb58380ec51fbca10005d which you can browse here:

https://gitbox.apache.org/repos/asf?p=commons-io.git;a=commit;h=dc51644d5adbb0c461efb58380ec51fbca10005d
You may checkout this tag using:
git clone https://gitbox.apache.org/repos/asf/commons-io.git
--branch commons-io-2.15.1-RC1 commons-io-2.15.1-RC1

Maven artifacts are here:

https://repository.apache.org/content/repositories/orgapachecommons-1675/commons-io/commons-io/2.15.1/

These are the artifacts and their hashes:

#Release SHA-512s
#Fri Nov 24 11:28:20 EST 2023
commons-io-2.15.1-bin.tar.gz=c00b9cbd8e213311137e10e3425cf19af60c737103b3ed968c33fdc5f803892f364f4e754a7d3a222a579ee6a58a1e8731ef51835d516d2a6aab8fd2f0845e35
commons-io-2.15.1-bin.zip=944d0e2e750895d8371c7ecbed5e0593bceec404b7a0c6c9f1c2e77986ccabb2280b84485dcf34ae4339256ae164b8e04d4b95101bbfaf28de24aea711fed4bd
commons-io-2.15.1-bom.json=7186ba77d019082653b32b08f91ed64d9de7ed567d9978a7888acc87ee9c8af1b0b4344a4ffd7f01b2cb5393b5fb74c368e2769527a5242372c124ba2625db19
commons-io-2.15.1-bom.xml=afc61569e85d1a4d4c6c49a91caae3479cd79c6ba9623d2f662a22ee0129111e42d668414560b16fce9606f602a2cca2127f9de57e524332316ba871ffe90e31
commons-io-2.15.1-javadoc.jar=f275a97668465fe467bd3a690d60da4d842957b94fe22247bbeff43afa4ad008d7fed4e194f8f42ac55b3979a4015dc907f02259e2fe679288f63e469e31366c
commons-io-2.15.1-sources.jar=3ee4e22de8a3e04ff8651873b596a23bd517152f3ede3d14af1e5b6b52eb878f360a2ac672453cf67efb948fea4e969019f9023dd7d1d1b064fb164cc17154a2
commons-io-2.15.1-src.tar.gz=809c7aa66354f2e35fd23f295c4e2f325596ee7f842b7f63f6acc3bd9377c17d4dd276ce62c477fff8d51d0d660e9addbc068270a876097cbecfe3e64f57f385
commons-io-2.15.1-src.zip=f98e754fe68827390960f5ca08d8b3ae4eed54243e164c9e347f6f8f40519d096f6bfff4e2696d79870576be36a7140a6cea600381c3c8739361e72a6b392375
commons-io-2.15.1-test-sources.jar=6a1a70ef392183ad0217e8f517ddcce0fb840c1b6076f9a3407a240e3738da94ce24639422fcda232cd96526360a85284765bef60c127b2dd2be8e47ee6fe96c
commons-io-2.15.1-tests.jar=2bfeac593dfa23cc0da62e4a2c3470ef63ee54ca6987ac2176cb437d0c3ca867f0d92b62d166244da94d9154362cf58486904ef35c3c95645dcd8074bb4d6674
commons-io_commons-io-2.15.1.spdx.json=eada6a6c341abad84bad3d3fd6e9a00326bf7646110bcc46c6db997bc9d28eed372daa622371abbaad5abf58f47bd4870c7af9f0662d5769e6cb71565987be15

I have tested this with

mvn -V -Prelease -Ptest-deploy -P jacoco -P japicmp clean package site deploy

using:

Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /usr/local/Cellar/maven/3.9.5/libexec
Java version: 21.0.1, vendor: Homebrew, runtime:
/usr/local/Cellar/openjdk/21.0.1/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "14.1.1", arch: "x86_64", family: "mac"

Darwin  23.1.0 Darwin Kernel Version 23.1.0: Mon Oct  9 21:27:27
PDT 2023; root:xnu-10002.41.9~6/RELEASE_X86_64 x86_64

Details of changes since 2.15.0 are in the release notes:

https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1/RELEASE-NOTES.txt

https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1/site/changes-report.html

Site:
https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1/site/index.html
(note some *relative* links are broken and the 2.15.1 directories
are not yet created - these will be OK once the site is deployed.)

JApiCmp Report (compared to 2.15.0):

https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1/site/japicmp.html

RAT Report:

https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1/site/rat-report.html

KEYS:
  https://downloads.apache.org/commons/KEYS

Please review the release candidate and vote.
This vote will close no sooner than 72 hours from now.

  [ ] +1 Release these artifacts
  [ ] +0 OK, but...
  [ ] -0 OK, but really should fix...
  [ ] -1 I oppose this release because...

Thank you,

Gary Gregory,
Release Manager (using key 86fdc7e2a11262cb)

For following is intended as a helper and refresher for reviewers.

Validating a release candidate
==

These guidelines are NOT complete.

Requirements: Git, Java, Maven.

You can validate a release from a release candidate (RC) tag as follows.

1a) Clone and checkout the RC tag

git clone https://gitbox.apache.org/repos/asf/commons-io.git --branch
commons-io-2.15.1-RC1 commons-io-2.15.1-RC1
cd commons-io-2.15.1-RC1

1b) Download and unpack the source archive from:

https://dist.apache.org/repos/dist/dev/commons/io/2.15.1-RC1/source

2) Check Apache licenses

This step is not required if the site includes a RAT report page which
you then must check.

mvn apache-rat:check