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 291e7095 Magic numbers replaced with constants
291e7095 is described below
commit 291e709540a3be2a02ceece00c95a35cfd928770
Author: Sebb <[email protected]>
AuthorDate: Thu Nov 9 17:20:23 2023 +0000
Magic numbers replaced with constants
---
src/conf/checkstyle/checkstyle.xml | 2 ++
src/main/java/org/apache/commons/crypto/Crypto.java | 8 ++++++--
.../commons/crypto/cipher/OpenSslGaloisCounterMode.java | 4 +++-
.../java/org/apache/commons/crypto/jna/OpenSslJna.java | 8 ++++++--
.../org/apache/commons/crypto/jna/OpenSslJnaCipher.java | 16 ++++++++++------
.../org/apache/commons/crypto/jna/OpenSslNativeJna.java | 4 +++-
.../apache/commons/crypto/stream/CryptoInputStream.java | 2 +-
.../apache/commons/crypto/stream/CryptoOutputStream.java | 2 +-
.../commons/crypto/stream/CtrCryptoInputStream.java | 4 ++--
src/main/java/org/apache/commons/crypto/utils/Utils.java | 3 +++
.../commons/crypto/jna/AbstractCipherJnaStreamTest.java | 3 ++-
.../commons/crypto/stream/AbstractCipherStreamTest.java | 3 ++-
12 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/src/conf/checkstyle/checkstyle.xml
b/src/conf/checkstyle/checkstyle.xml
index 992bdd4d..3a87f303 100644
--- a/src/conf/checkstyle/checkstyle.xml
+++ b/src/conf/checkstyle/checkstyle.xml
@@ -34,6 +34,8 @@ limitations under the License.
<module name="ExplicitInitializationCheck" />
<module name="AvoidStarImport"/>
<module name="RedundantImport"/>
+ <module name="MagicNumber"/>
+ <module name="SuppressionCommentFilter"/>
<module name="UnusedImports"/>
<module name="NeedBraces"/>
<module name="JavadocMethod">
diff --git a/src/main/java/org/apache/commons/crypto/Crypto.java
b/src/main/java/org/apache/commons/crypto/Crypto.java
index 1748419e..f510738b 100644
--- a/src/main/java/org/apache/commons/crypto/Crypto.java
+++ b/src/main/java/org/apache/commons/crypto/Crypto.java
@@ -27,6 +27,7 @@ import org.apache.commons.crypto.cipher.CryptoCipherFactory;
import org.apache.commons.crypto.random.CryptoRandom;
import org.apache.commons.crypto.random.CryptoRandomFactory;
import org.apache.commons.crypto.utils.AES;
+import org.apache.commons.crypto.utils.Utils;
/**
* Provides diagnostic information about Commons Crypto and keys for native
@@ -177,8 +178,11 @@ public final class Crypto {
}
}
info("Additional OpenSSL_version(n) details:");
- for (int j = 1; j < 6; j++) { // entry 0 is shown above
- info("%s: %s", j, OpenSslInfoNative.OpenSSLVersion(j));
+ for (int j = 1; j < Utils.OPENSSL_VERSION_MAX_INDEX; j++) { //
entry 0 is shown above
+ String data = OpenSslInfoNative.OpenSSLVersion(j);
+ if (!"not available".equals(data)) {
+ info("OpenSSLVersion(%d): %s", j, data);
+ }
}
} else {
Throwable error = getLoadingError();
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 1011ca1b..5ef211ba 100644
---
a/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java
+++
b/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java
@@ -43,6 +43,8 @@ final class OpenSslGaloisCounterMode extends
AbstractOpenSslFeedbackCipher {
private ByteArrayOutputStream aadBuffer = new ByteArrayOutputStream();
private int tagBitLen = -1;
+ private static final int BITS_TO_BYTES_SHIFT_COUNT = 3; // >> 3 divides by
8 == Byte.SIZE
+
// buffer for storing input in decryption, not used for encryption
private ByteArrayOutputStream inBuffer;
@@ -221,7 +223,7 @@ final class OpenSslGaloisCounterMode extends
AbstractOpenSslFeedbackCipher {
}
private int getTagLen() {
- return tagBitLen < 0 ? DEFAULT_TAG_LEN : tagBitLen >> 3;
+ return tagBitLen < 0 ? DEFAULT_TAG_LEN : tagBitLen >>
BITS_TO_BYTES_SHIFT_COUNT;
}
@Override
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 a6064589..66238c0c 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
@@ -21,6 +21,7 @@ import java.util.Objects;
import org.apache.commons.crypto.Crypto;
import org.apache.commons.crypto.cipher.CryptoCipher;
import org.apache.commons.crypto.random.CryptoRandom;
+import org.apache.commons.crypto.utils.Utils;
/**
* Provides access to package protected class objects and a {@link
#main(String[])} method that prints version information.
@@ -108,8 +109,11 @@ public final class OpenSslJna {
System.err.flush(); // helpful for stack traces to not mix in
other output.
throw initialisationError; // propagate to make error obvious
}
- for (int i = 0; i <= 5; i++) {
- info("OpenSSLVersion(%d): %s", i, OpenSSLVersion(i));
+ for (int i = 0; i <= Utils.OPENSSL_VERSION_MAX_INDEX; i++) {
+ String data = OpenSSLVersion(i);
+ if (!"not available".equals(data)) {
+ info("OpenSSLVersion(%d): %s", i, data);
+ }
}
}
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 08f98add..5819f69e 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
@@ -45,6 +45,10 @@ import com.sun.jna.ptr.PointerByReference;
*/
final class OpenSslJnaCipher implements CryptoCipher {
+ private static final int AES_128_ENCODED_KEYLEN = 16;
+ private static final int AES_192_ENCODED_KEYLEN = 24;
+ private static final int AES_256_ENCODED_KEYLEN = 32;
+
/**
* AlgorithmMode of JNA. Currently only support AES/CTR/NoPadding.
*/
@@ -224,13 +228,13 @@ final class OpenSslJnaCipher implements CryptoCipher {
if (algorithmMode == AlgorithmMode.AES_CBC) {
switch (keyEncodedLength) {
- case 16:
+ case AES_128_ENCODED_KEYLEN:
algo = OpenSslNativeJna.EVP_aes_128_cbc();
break;
- case 24:
+ case AES_192_ENCODED_KEYLEN:
algo = OpenSslNativeJna.EVP_aes_192_cbc();
break;
- case 32:
+ case AES_256_ENCODED_KEYLEN:
algo = OpenSslNativeJna.EVP_aes_256_cbc();
break;
default:
@@ -239,13 +243,13 @@ final class OpenSslJnaCipher implements CryptoCipher {
} else {
switch (keyEncodedLength) {
- case 16:
+ case AES_128_ENCODED_KEYLEN:
algo = OpenSslNativeJna.EVP_aes_128_ctr();
break;
- case 24:
+ case AES_192_ENCODED_KEYLEN:
algo = OpenSslNativeJna.EVP_aes_192_ctr();
break;
- case 32:
+ case AES_256_ENCODED_KEYLEN:
algo = OpenSslNativeJna.EVP_aes_256_ctr();
break;
default:
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 f47862d6..6af8a1e7 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
@@ -68,7 +68,9 @@ final class OpenSslNativeJna {
// Must find one of the above two functions; else give up
VERSION = versionFunction.invokeLong(new Object[]{});
- VERSION_X_Y = VERSION & 0xffff0000; // keep only major.minor
+ //CHECKSTYLE:OFF
+ VERSION_X_Y = VERSION & 0xffff0000; // keep only major.minor
checkstyle:
+ //CHECKSTYLE:ON
OpenSslJna.debug(String.format("OpenSslNativeJna detected version 0x%x
=> 0x%x", VERSION, VERSION_X_Y));
diff --git
a/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
b/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
index 6d7b22bc..520ca8df 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
@@ -515,7 +515,7 @@ public class CryptoInputStream extends InputStream
implements ReadableByteChanne
while ((n = read(oneByteBuf, 0, 1)) == 0) { //NOPMD
/* no op */
}
- return n == EOS ? EOS : oneByteBuf[0] & 0xff;
+ return n == EOS ? EOS : oneByteBuf[0] & Utils.BYTE_MASK;
}
/**
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 2c5fd922..668436b9 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java
@@ -442,7 +442,7 @@ public class CryptoOutputStream extends OutputStream
implements
*/
@Override
public void write(final int b) throws IOException {
- oneByteBuf[0] = (byte) (b & 0xff);
+ oneByteBuf[0] = (byte) (b & Utils.BYTE_MASK);
write(oneByteBuf, 0, oneByteBuf.length);
}
}
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 ca407a0c..89c193ae 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java
@@ -83,9 +83,9 @@ public class CtrCryptoInputStream extends CryptoInputStream {
int sum = 0;
while (i-- > 0) {
// (sum >>> Byte.SIZE) is the carry for addition
- sum = (initIV[i] & 0xff) + (sum >>> Byte.SIZE); // NOPMD
+ sum = (initIV[i] & Utils.BYTE_MASK) + (sum >>> Byte.SIZE); // NOPMD
if (j++ < Long.BYTES) { // Big-endian, and long is 8 bytes length
- sum += (byte) counter & 0xff;
+ sum += (byte) counter & Utils.BYTE_MASK;
counter >>>= Long.BYTES;
}
IV[i] = (byte) sum;
diff --git a/src/main/java/org/apache/commons/crypto/utils/Utils.java
b/src/main/java/org/apache/commons/crypto/utils/Utils.java
index e46c3a19..3cada761 100644
--- a/src/main/java/org/apache/commons/crypto/utils/Utils.java
+++ b/src/main/java/org/apache/commons/crypto/utils/Utils.java
@@ -37,6 +37,9 @@ import org.apache.commons.crypto.cipher.CryptoCipherFactory;
*/
public final class Utils {
+ public static final int BYTE_MASK = 0xFF; // mask to keep a byte from a
longer number
+ public static final int OPENSSL_VERSION_MAX_INDEX = 20; // max seen so far
is 9, but leave some spare
+
private static final class DefaultPropertiesHolder {
static final Properties DEFAULT_PROPERTIES = createDefaultProperties();
diff --git
a/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
b/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
index 631a2017..255b881b 100644
---
a/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
+++
b/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.crypto.cipher.AbstractCipherTest;
import org.apache.commons.crypto.stream.AbstractCipherStreamTest;
+import org.apache.commons.crypto.utils.Utils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
@@ -65,7 +66,7 @@ public abstract class AbstractCipherJnaStreamTest extends
AbstractCipherStreamTe
doReadWriteTest(count, CIPHER_OPENSSL_JNA,
AbstractCipherTest.JCE_CIPHER_CLASSNAME, iv);
// Overflow test, IV: xx xx xx xx xx xx xx xx ff ff ff ff ff ff ff ff
for (int i = 0; i < 8; i++) {
- iv[8 + i] = (byte) 0xff;
+ iv[8 + i] = (byte) Utils.BYTE_MASK;
}
doReadWriteTest(count, CIPHER_OPENSSL_JNA, CIPHER_OPENSSL_JNA, iv);
doReadWriteTest(count, AbstractCipherTest.JCE_CIPHER_CLASSNAME,
CIPHER_OPENSSL_JNA, iv);
diff --git
a/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
b/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
index 9bd23374..3263c62d 100644
---
a/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
+++
b/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
@@ -51,6 +51,7 @@ import org.apache.commons.crypto.cipher.AbstractCipherTest;
import org.apache.commons.crypto.cipher.CryptoCipher;
import org.apache.commons.crypto.utils.AES;
import org.apache.commons.crypto.utils.ReflectionUtils;
+import org.apache.commons.crypto.utils.Utils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
@@ -711,7 +712,7 @@ public abstract class AbstractCipherStreamTest {
doReadWriteTest(count, AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME,
AbstractCipherTest.JCE_CIPHER_CLASSNAME, iv);
// Overflow test, IV: xx xx xx xx xx xx xx xx ff ff ff ff ff ff ff ff
for (int i = 0; i < 8; i++) {
- iv[8 + i] = (byte) 0xff;
+ iv[8 + i] = (byte) Utils.BYTE_MASK;
}
doReadWriteTest(count, AbstractCipherTest.JCE_CIPHER_CLASSNAME,
AbstractCipherTest.JCE_CIPHER_CLASSNAME, iv);
doReadWriteTest(count, AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME,
AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME, iv);