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;