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 e06fefd  Use try-with-resources.
e06fefd is described below

commit e06fefd494a1c4945f8795b772480b0f2571755b
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu Mar 17 10:10:07 2022 -0400

    Use try-with-resources.
---
 .../commons/crypto/cipher/AbstractCipherTest.java  | 47 ++++++++--------
 .../crypto/examples/CipherByteArrayExample.java    | 64 ++++++++++++----------
 .../crypto/stream/AbstractCipherStreamTest.java    | 18 +++---
 .../stream/PositionedCryptoInputStreamTest.java    | 29 +++++-----
 4 files changed, 83 insertions(+), 75 deletions(-)

diff --git 
a/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java 
b/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java
index 6233fb2..15b8398 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java
@@ -77,49 +77,50 @@ public abstract class AbstractCipherTest {
        public void closeTestNoInit() throws Exception {
                // This test deliberately does not use try with resources in 
order to control
                // the sequence of operations exactly
-               final CryptoCipher enc = getCipher(transformations[0]);
-               enc.close();
+               try (final CryptoCipher enc = getCipher(transformations[0])) {
+                   // empty
+               }
        }
 
        @Test
        public void closeTestAfterInit() throws Exception {
                // This test deliberately does not use try with resources in 
order to control
                // the sequence of operations exactly
-               final CryptoCipher enc = getCipher(transformations[0]);
-               enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), 
new IvParameterSpec(IV));
-               enc.close();
+        try (final CryptoCipher enc = getCipher(transformations[0])) {
+            enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new 
IvParameterSpec(IV));
+        }
        }
 
        @Test
        public void reInitTest() throws Exception {
                // This test deliberately does not use try with resources in 
order to control
                // the sequence of operations exactly
-               final CryptoCipher enc = getCipher(transformations[0]);
-               enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), 
new IvParameterSpec(IV));
-               enc.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), 
new IvParameterSpec(IV));
-               enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), 
new IvParameterSpec(IV));
-               enc.close();
+        try (final CryptoCipher enc = getCipher(transformations[0])) {
+            enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new 
IvParameterSpec(IV));
+            enc.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), new 
IvParameterSpec(IV));
+            enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new 
IvParameterSpec(IV));
+        }
        }
 
        @Test
-       public void reInitAfterClose() throws Exception {
-               // This test deliberately does not use try with resources in 
order to control
-               // the sequence of operations exactly
-               final CryptoCipher enc = getCipher(transformations[0]);
-               enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), 
new IvParameterSpec(IV));
-               enc.close();
-               enc.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), 
new IvParameterSpec(IV));
-               enc.close();
-       }
+    public void reInitAfterClose() throws Exception {
+        // This test deliberately does not use try with resources in order to 
control
+        // the sequence of operations exactly
+        try (final CryptoCipher enc = getCipher(transformations[0])) {
+            enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new 
IvParameterSpec(IV));
+            enc.close();
+            enc.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), new 
IvParameterSpec(IV));
+        }
+    }
 
        @Test
        public void closeTestRepeat() throws Exception {
                // This test deliberately does not use try with resources in 
order to control
                // the sequence of operations exactly
-               final CryptoCipher enc = getCipher(transformations[0]);
-               enc.close();
-               enc.close(); // repeat the close
-               enc.close();
+        try (final CryptoCipher enc = getCipher(transformations[0])) {
+            enc.close();
+            enc.close(); // repeat the close
+        }
        }
 
        @Test
diff --git 
a/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java 
b/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
index 264466f..15afb8d 100644
--- 
a/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
+++ 
b/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
@@ -37,45 +37,51 @@ public class CipherByteArrayExample {
 
     public static void main(final String[] args) throws Exception {
 
-        final SecretKeySpec key = new 
SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
+        final SecretKeySpec key = new 
SecretKeySpec(getUTF8Bytes("1234567890123456"), "AES");
         final IvParameterSpec iv = new 
IvParameterSpec(getUTF8Bytes("1234567890123456"));
 
         final Properties properties = new Properties();
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY, 
CipherProvider.OPENSSL.getClassName());
-        //Creates a CryptoCipher instance with the transformation and 
properties.
+        // Creates a CryptoCipher instance with the transformation and 
properties.
         final String transform = "AES/CBC/PKCS5Padding";
-        final CryptoCipher encipher = Utils.getCipherInstance(transform, 
properties);
-        System.out.println("Cipher:  " + 
encipher.getClass().getCanonicalName());
-
-        final String sampleInput = "hello world!";
-        System.out.println("input:  " + sampleInput);
-
-        final byte[] input = getUTF8Bytes(sampleInput);
-        final byte[] output = new byte[32];
-
-        //Initializes the cipher with ENCRYPT_MODE, key and iv.
-        encipher.init(Cipher.ENCRYPT_MODE, key, iv);
-        //Continues a multiple-part encryption/decryption operation for byte 
array.
-        final int updateBytes = encipher.update(input, 0, input.length, 
output, 0);
-        System.out.println(updateBytes);
-        //We must call doFinal at the end of encryption/decryption.
-        final int finalBytes = encipher.doFinal(input, 0, 0, output, 
updateBytes);
-        System.out.println(finalBytes);
-        //Closes the cipher.
-        encipher.close();
-
-        System.out.println(Arrays.toString(Arrays.copyOf(output, 
updateBytes+finalBytes)));
+        byte[] output;
+        int updateBytes;
+        int finalBytes;
+        Class<?> encipherClass;
+        try (final CryptoCipher encipher = Utils.getCipherInstance(transform, 
properties)) {
+            System.out.println("Cipher:  " + 
encipher.getClass().getCanonicalName());
+
+            final String sampleInput = "hello world!";
+            System.out.println("input:  " + sampleInput);
+
+            final byte[] input = getUTF8Bytes(sampleInput);
+            output = new byte[32];
+
+            // Initializes the cipher with ENCRYPT_MODE, key and iv.
+            encipher.init(Cipher.ENCRYPT_MODE, key, iv);
+            // Continues a multiple-part encryption/decryption operation for 
byte array.
+            updateBytes = encipher.update(input, 0, input.length, output, 0);
+            System.out.println(updateBytes);
+            // We must call doFinal at the end of encryption/decryption.
+            finalBytes = encipher.doFinal(input, 0, 0, output, updateBytes);
+            System.out.println(finalBytes);
+            encipherClass = encipher.getClass();
+            // Closes the cipher.
+        }
+
+        System.out.println(Arrays.toString(Arrays.copyOf(output, updateBytes + 
finalBytes)));
 
         // Now reverse the process using a different implementation with the 
same settings
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY, 
CipherProvider.JCE.getClassName());
-        final CryptoCipher decipher = Utils.getCipherInstance(transform, 
properties);
-        System.out.println("Cipher:  " + 
encipher.getClass().getCanonicalName());
+        try (final CryptoCipher decipher = Utils.getCipherInstance(transform, 
properties)) {
+            System.out.println("Cipher:  " + encipherClass.getCanonicalName());
 
-        decipher.init(Cipher.DECRYPT_MODE, key, iv);
-        final byte [] decoded = new byte[32];
-        decipher.doFinal(output, 0, updateBytes + finalBytes, decoded, 0);
+            decipher.init(Cipher.DECRYPT_MODE, key, iv);
+            final byte[] decoded = new byte[32];
+            decipher.doFinal(output, 0, updateBytes + finalBytes, decoded, 0);
 
-        System.out.println("output: " + new String(decoded, 
StandardCharsets.UTF_8));
+            System.out.println("output: " + new String(decoded, 
StandardCharsets.UTF_8));
+        }
     }
 
     /**
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 547c3c1..600dfae 100644
--- 
a/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
+++ 
b/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
@@ -365,16 +365,18 @@ public abstract class AbstractCipherStreamTest {
                 new IvParameterSpec(iv), withChannel));
 
         // Test reading a closed stream.
-        final InputStream in = newCryptoInputStream(new 
ByteArrayInputStream(encData),
-                getCipher(cipherClass), defaultBufferSize, iv, withChannel);
-        in.close();
+        InputStream closedIn;
+        try (final InputStream in = newCryptoInputStream(new 
ByteArrayInputStream(encData),
+                getCipher(cipherClass), defaultBufferSize, iv, withChannel)) {
+            closedIn = in;
+        }
         // Throw exception.
-        ex = assertThrows(IOException.class, in::read);
+        ex = assertThrows(IOException.class, closedIn::read);
         assertEquals(ex.getMessage(), "Stream closed");
 
         // Test closing a closed stream.
         try {
-            in.close(); // Don't throw exception on double-close.
+            closedIn.close(); // Don't throw exception on double-close.
         } catch (final IOException ioEx) {
             fail("Should not throw exception closing a closed stream.");
         }
@@ -399,14 +401,14 @@ public abstract class AbstractCipherStreamTest {
         } catch (final IOException ioEx) {
             assertEquals(ioEx.getMessage(), "AES/CTR/NoPadding is required");
         } finally {
-            in.close();
+            closedIn.close();
         }
 
         // Test unsupported operation handling.
         final InputStream inNewCrytptoStr = newCryptoInputStream(new 
ByteArrayInputStream(encData),
                 getCipher(cipherClass), defaultBufferSize, iv, false);
-        in.mark(0);
-        assertFalse(in.markSupported());
+        closedIn.mark(0);
+        assertFalse(closedIn.markSupported());
         ex = assertThrows(IOException.class, inNewCrytptoStr::reset);
         assertEquals(ex.getMessage(), "mark/reset not supported");
     }
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 418347d..0926b9e 100644
--- 
a/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java
+++ 
b/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java
@@ -82,11 +82,11 @@ public class PositionedCryptoInputStreamTest {
 
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         // encryption data
-        final OutputStream out = new CryptoOutputStream(baos, cipher, 
bufferSize,
-                new SecretKeySpec(key, "AES"), new IvParameterSpec(iv));
-        out.write(testData);
-        out.flush();
-        out.close();
+        try (final OutputStream out = new CryptoOutputStream(baos, cipher, 
bufferSize,
+                new SecretKeySpec(key, "AES"), new IvParameterSpec(iv))) {
+            out.write(testData);
+            out.flush();
+        }
         encData = baos.toByteArray();
     }
 
@@ -246,10 +246,9 @@ public class PositionedCryptoInputStreamTest {
     // test for the out of index position, eg, -1.
     private void testSeekFailed(final String cipherClass, final int position, 
final int bufferSize)
             throws Exception {
-        final PositionedCryptoInputStream in = getCryptoInputStream(
-                getCipher(cipherClass), bufferSize);
-        assertThrows(IllegalArgumentException.class, () -> in.seek(position));
-        in.close();
+        try (final PositionedCryptoInputStream in = 
getCryptoInputStream(getCipher(cipherClass), bufferSize)) {
+            assertThrows(IllegalArgumentException.class, () -> 
in.seek(position));
+        }
     }
 
     private void testPositionedReadLoop(final String cipherClass, int position,
@@ -298,12 +297,12 @@ public class PositionedCryptoInputStreamTest {
     // test for the End of file reached before reading fully
     private void testReadFullyFailed(final String cipherClass, final int 
position,
             final int length, final int bufferSize) throws Exception {
-        final PositionedCryptoInputStream in = getCryptoInputStream(
-                getCipher(cipherClass), bufferSize);
-        final byte[] bytes = new byte[length];
-        assertThrows(IOException.class, () -> in.readFully(position, bytes, 0, 
length));
-        in.close();
-        in.close(); // Don't throw exception.
+        try (final PositionedCryptoInputStream in = 
getCryptoInputStream(getCipher(cipherClass), bufferSize)) {
+            final byte[] bytes = new byte[length];
+            assertThrows(IOException.class, () -> in.readFully(position, 
bytes, 0, length));
+            in.close();
+            in.close(); // Don't throw exception.
+        }
     }
 
     // compare the data from pos with length and data2 from 0 with length

Reply via email to