This is an automated email from the ASF dual-hosted git repository. ggregory 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 ca96d52 CRYPTO-155 - Minor improvement new f62fd27 Merge pull request #115 from arturobernalg/feature/CRYPTO-155 ca96d52 is described below commit ca96d52303aa28a01a174a28fc4f699b813064de Author: Arturo Bernal <arturobern...@gmail.com> AuthorDate: Tue Dec 8 12:08:14 2020 +0100 CRYPTO-155 - Minor improvement --- .../org/apache/commons/crypto/cipher/OpenSslCommonMode.java | 5 +++-- .../commons/crypto/cipher/OpenSslGaloisCounterMode.java | 9 +++++---- .../org/apache/commons/crypto/jna/OpenSslJnaCipher.java | 9 +++++---- .../apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java | 9 +++++---- .../apache/commons/crypto/stream/CryptoOutputStream.java | 3 ++- .../apache/commons/crypto/stream/CtrCryptoInputStream.java | 5 +++-- .../org/apache/commons/crypto/utils/ReflectionUtils.java | 13 +++++-------- .../java/org/apache/commons/crypto/cipher/TestData.java | 4 ++-- .../crypto/stream/PositionedCryptoInputStreamTest.java | 4 ++-- 9 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java index b9520fa..15ea9c8 100644 --- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java +++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java @@ -77,12 +77,13 @@ class OpenSslCommonMode extends OpenSslFeedbackCipher { public int doFinal(final byte[] input, final int inputOffset, final int inputLen, final byte[] output, final int outputOffset) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException { checkState(); + final int outputLength = output.length; int len = OpenSslNative.updateByteArray(context, input, inputOffset, - inputLen, output, outputOffset, output.length - outputOffset); + inputLen, output, outputOffset, outputLength - outputOffset); len += OpenSslNative.doFinalByteArray(context, output, outputOffset + len, - output.length - outputOffset - len); + outputLength - outputOffset - len); return len; } diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java index efbae23..bff7693 100644 --- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java +++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java @@ -130,6 +130,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher { processAAD(); + final int outputLength = output.length; int len; if (this.cipherMode == OpenSsl.DECRYPT_MODE) { // if GCM-DECRYPT, we have to handle the buffered input @@ -153,7 +154,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher { final int inputDataLen = inputLenFinal - getTagLen(); len = OpenSslNative.updateByteArray(context, inputFinal, inputOffsetFinal, - inputDataLen, output, outputOffset, output.length - outputOffset); + inputDataLen, output, outputOffset, outputLength - outputOffset); // set tag to EVP_Cipher for integrity verification in doFinal final ByteBuffer tag = ByteBuffer.allocate(getTagLen()); @@ -162,18 +163,18 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher { evpCipherCtxCtrl(context, OpenSslEvpCtrlValues.AEAD_SET_TAG.getValue(), getTagLen(), tag); } else { len = OpenSslNative.updateByteArray(context, input, inputOffset, - inputLen, output, outputOffset, output.length - outputOffset); + inputLen, output, outputOffset, outputLength - outputOffset); } len += OpenSslNative.doFinalByteArray(context, output, outputOffset + len, - output.length - outputOffset - len); + outputLength - outputOffset - len); // Keep the similar behavior as JCE, append the tag to end of output if (this.cipherMode == OpenSsl.ENCRYPT_MODE) { ByteBuffer tag; tag = ByteBuffer.allocate(getTagLen()); evpCipherCtxCtrl(context, OpenSslEvpCtrlValues.AEAD_GET_TAG.getValue(), getTagLen(), tag); - tag.get(output, output.length - getTagLen(), getTagLen()); + tag.get(output, outputLength - getTagLen(), getTagLen()); len += getTagLen(); } diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java index 923ae1a..9e6c65d 100644 --- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java +++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java @@ -108,9 +108,10 @@ class OpenSslJnaCipher implements CryptoCipher { if ((algMode == AlgorithmMode.AES_CBC || algMode == AlgorithmMode.AES_CTR) && iv.length != IV_LENGTH) { throw new InvalidAlgorithmParameterException("Wrong IV length: must be 16 bytes long"); } + final int keyEncodedLength = key.getEncoded().length; if (algMode == AlgorithmMode.AES_CBC) { - switch (key.getEncoded().length) { + switch (keyEncodedLength) { case 16: algo = OpenSslNativeJna.EVP_aes_128_cbc(); break; @@ -121,11 +122,11 @@ class OpenSslJnaCipher implements CryptoCipher { algo = OpenSslNativeJna.EVP_aes_256_cbc(); break; default: - throw new InvalidKeyException("keysize unsupported (" + key.getEncoded().length + ")"); + throw new InvalidKeyException("keysize unsupported (" + keyEncodedLength + ")"); } } else { - switch (key.getEncoded().length) { + switch (keyEncodedLength) { case 16: algo = OpenSslNativeJna.EVP_aes_128_ctr(); break; @@ -136,7 +137,7 @@ class OpenSslJnaCipher implements CryptoCipher { algo = OpenSslNativeJna.EVP_aes_256_ctr(); break; default: - throw new InvalidKeyException("keysize unsupported (" + key.getEncoded().length + ")"); + throw new InvalidKeyException("keysize unsupported (" + keyEncodedLength + ")"); } } diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java index a42a522..7b0ae30 100644 --- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java +++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java @@ -50,7 +50,7 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom { private static final long serialVersionUID = -7128193502768749585L; private final boolean rdrandEnabled; - private transient PointerByReference rdrandEngine; + private final transient PointerByReference rdrandEngine; /** * Constructs a {@link OpenSslJnaCryptoRandom}. @@ -108,11 +108,12 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom { throw new IllegalStateException("rdrand should be used but default is detected"); } - final ByteBuffer buf = ByteBuffer.allocateDirect(bytes.length); - final int retVal = OpenSslNativeJna.RAND_bytes(buf, bytes.length); + final int byteLength = bytes.length; + final ByteBuffer buf = ByteBuffer.allocateDirect(byteLength); + final int retVal = OpenSslNativeJna.RAND_bytes(buf, byteLength); throwOnError(retVal); buf.rewind(); - buf.get(bytes,0, bytes.length); + buf.get(bytes,0, byteLength); } } diff --git a/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java b/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java index adebc72..9bad1ea 100644 --- a/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java +++ b/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java @@ -222,7 +222,8 @@ public class CryptoOutputStream extends OutputStream implements public void write(final byte[] array, int off, int len) throws IOException { checkStream(); Objects.requireNonNull(array, "array"); - if (off < 0 || len < 0 || off > array.length || len > array.length - off) { + final int arrayLength = array.length; + if (off < 0 || len < 0 || off > arrayLength || len > arrayLength - off) { throw new IndexOutOfBoundsException(); } diff --git a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java index 6e684e6..5f6643e 100644 --- a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java +++ b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java @@ -639,10 +639,11 @@ public class CtrCryptoInputStream extends CryptoInputStream { * @param IV the IV for input stream position */ static void calculateIV(final byte[] initIV, long counter, final byte[] IV) { + int i = IV.length; // IV length + Utils.checkArgument(initIV.length == CryptoCipherFactory.AES_BLOCK_SIZE); - Utils.checkArgument(IV.length == CryptoCipherFactory.AES_BLOCK_SIZE); + Utils.checkArgument(i == CryptoCipherFactory.AES_BLOCK_SIZE); - int i = IV.length; // IV length int j = 0; // counter bytes index int sum = 0; while (i-- > 0) { diff --git a/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java b/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java index 8111229..a6a5cb1 100644 --- a/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java +++ b/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java @@ -73,12 +73,13 @@ public final class ReflectionUtils { public static <T> T newInstance(final Class<T> klass, final Object... args) { try { Constructor<T> ctor; + final int argsLength = args.length; - if (args.length == 0) { + if (argsLength == 0) { ctor = klass.getDeclaredConstructor(); } else { - final Class<?>[] argClses = new Class[args.length]; - for (int i = 0; i < args.length; i++) { + final Class<?>[] argClses = new Class[argsLength]; + for (int i = 0; i < argsLength; i++) { argClses[i] = args[i].getClass(); } ctor = klass.getDeclaredConstructor(argClses); @@ -116,11 +117,7 @@ public final class ReflectionUtils { Map<String, WeakReference<Class<?>>> map; synchronized (CACHE_CLASSES) { - map = CACHE_CLASSES.get(CLASSLOADER); - if (map == null) { - map = Collections.synchronizedMap(new WeakHashMap<String, WeakReference<Class<?>>>()); - CACHE_CLASSES.put(CLASSLOADER, map); - } + map = CACHE_CLASSES.computeIfAbsent(CLASSLOADER, k -> Collections.synchronizedMap(new WeakHashMap<String, WeakReference<Class<?>>>())); } Class<?> clazz = null; diff --git a/src/test/java/org/apache/commons/crypto/cipher/TestData.java b/src/test/java/org/apache/commons/crypto/cipher/TestData.java index 966f15f..beece63 100644 --- a/src/test/java/org/apache/commons/crypto/cipher/TestData.java +++ b/src/test/java/org/apache/commons/crypto/cipher/TestData.java @@ -58,7 +58,7 @@ public class TestData { "ae2d8a571e03ac9c9eb76fac45af8e51", "9cfc4e967edb808d679f777bc6702c7d" }; - private static String[] CBCPKCS5PaddingTests = { + private static final String[] CBCPKCS5PaddingTests = { /* * key_len,key,iv,plainText,cipherText */ @@ -97,7 +97,7 @@ public class TestData { "0397f4f6820b1f9386f14403be5ac16e50213bd473b4874b9bcbf5f318ee686b1d", "e232cd6ef50047801ee681ec30f61d53cfd6b0bca02fd03c1b234baa10ea82ac9dab8b960926433a19ce6dea08677e34" }; - private static String[] cipherCTRTests = { + private static final String[] cipherCTRTests = { /* * key_len,key,iv,plainText,cipherText */ diff --git a/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java index 825b00e..e304112 100644 --- a/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java +++ b/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java @@ -336,9 +336,9 @@ public class PositionedCryptoInputStreamTest { class PositionedInputForTest implements Input { - byte[] data; + final byte[] data; long pos; - long count; + final long count; public PositionedInputForTest(final byte[] data) { this.data = data;