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);

Reply via email to