You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/12/11 21:23:27 UTC

[commons-crypto] branch master updated: CRYPTO-155 - Minor improvement

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 <ar...@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;