You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by xu...@apache.org on 2016/05/04 05:45:58 UTC
[2/7] commons-crypto git commit: CRYPTO-37: Change all the 2 spaces
indent to 4 to comply Commons code style
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java b/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
index c40aaa1..9a0f9cd 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
@@ -20,13 +20,13 @@ package org.apache.commons.crypto.cipher;
public class JceCipherTest extends AbstractCipherTest {
- @Override
- public void init() {
- transformations = new CipherTransformation[]{
- CipherTransformation.AES_CBC_NOPADDING,
- CipherTransformation.AES_CBC_PKCS5PADDING,
- CipherTransformation.AES_CTR_NOPADDING};
- cipherClass = JceCipher.class.getName();
- }
+ @Override
+ public void init() {
+ transformations = new CipherTransformation[] {
+ CipherTransformation.AES_CBC_NOPADDING,
+ CipherTransformation.AES_CBC_PKCS5PADDING,
+ CipherTransformation.AES_CTR_NOPADDING };
+ cipherClass = JceCipher.class.getName();
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/cipher/OpensslCipherTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/cipher/OpensslCipherTest.java b/src/test/java/org/apache/commons/crypto/cipher/OpensslCipherTest.java
index 9428e2a..c66936a 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/OpensslCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/OpensslCipherTest.java
@@ -31,135 +31,145 @@ import org.junit.Test;
public class OpensslCipherTest extends AbstractCipherTest {
- @Override
- public void init() {
- transformations = new CipherTransformation[]{
- CipherTransformation.AES_CBC_NOPADDING,
- CipherTransformation.AES_CBC_PKCS5PADDING,
- CipherTransformation.AES_CTR_NOPADDING};
- cipherClass = OpensslCipher.class.getName();
- }
-
- @Test(expected = NoSuchAlgorithmException.class, timeout=120000)
- public void testInvalidAlgorithm() throws Exception {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
-
- try {
- Openssl.getInstance("AES2/CTR/NoPadding");
- Assert.fail("Should specify correct algorithm.");
- } catch (NoSuchAlgorithmException e) {
- Assert.assertTrue(e.getMessage().contains("Doesn't support algorithm: AES2 and mode: CTR"));
- throw e;
+ @Override
+ public void init() {
+ transformations = new CipherTransformation[] {
+ CipherTransformation.AES_CBC_NOPADDING,
+ CipherTransformation.AES_CBC_PKCS5PADDING,
+ CipherTransformation.AES_CTR_NOPADDING };
+ cipherClass = OpensslCipher.class.getName();
}
- }
-
- @Test(expected = NoSuchPaddingException.class, timeout=120000)
- public void testInvalidPadding() throws Exception {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
-
- try {
- Openssl.getInstance("AES/CTR/NoPadding2");
- Assert.fail("Should specify correct padding.");
- } catch (NoSuchPaddingException e) {
- Assert.assertTrue(e.getMessage().contains("Doesn't support padding: NoPadding2"));
- throw e;
- }
- }
-
- @Test(expected = NoSuchAlgorithmException.class, timeout=120000)
- public void testInvalidMode() throws Exception {
- try {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
- Openssl.getInstance("AES/CTR2/NoPadding");
- Assert.fail("java.security.NoSuchAlgorithmException should be thrown.");
- } catch (NoSuchAlgorithmException e) {
- Assert.assertTrue(e.getMessage().contains("Doesn't support algorithm: AES and mode: CTR2"));
- throw e;
- }
- }
-
- @Test(timeout=120000)
- public void testUpdateArguments() throws Exception {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
- Openssl cipher = Openssl.getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
- Assert.assertNotNull(cipher);
-
- cipher.init(Openssl.ENCRYPT_MODE, KEY, IV);
-
- // Require direct buffers
- ByteBuffer input = ByteBuffer.allocate(1024);
- ByteBuffer output = ByteBuffer.allocate(1024);
- try {
- cipher.update(input, output);
- Assert.fail("Input and output buffer should be direct buffer.");
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains("Direct buffers are required"));
+ @Test(expected = NoSuchAlgorithmException.class, timeout = 120000)
+ public void testInvalidAlgorithm() throws Exception {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+
+ try {
+ Openssl.getInstance("AES2/CTR/NoPadding");
+ Assert.fail("Should specify correct algorithm.");
+ } catch (NoSuchAlgorithmException e) {
+ Assert.assertTrue(e.getMessage().contains(
+ "Doesn't support algorithm: AES2 and mode: CTR"));
+ throw e;
+ }
}
- // Output buffer length should be sufficient to store output data
- input = ByteBuffer.allocateDirect(1024);
- output = ByteBuffer.allocateDirect(1000);
- try {
- cipher.update(input, output);
- Assert.fail("Output buffer length should be sufficient " +
- "to store output data");
- } catch (ShortBufferException e) {
- Assert.assertTrue(e.getMessage().contains("Output buffer is not sufficient"));
+ @Test(expected = NoSuchPaddingException.class, timeout = 120000)
+ public void testInvalidPadding() throws Exception {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+
+ try {
+ Openssl.getInstance("AES/CTR/NoPadding2");
+ Assert.fail("Should specify correct padding.");
+ } catch (NoSuchPaddingException e) {
+ Assert.assertTrue(e.getMessage().contains(
+ "Doesn't support padding: NoPadding2"));
+ throw e;
+ }
}
- }
- @Test(timeout=120000)
- public void testDoFinalArguments() throws Exception {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
- Openssl cipher = Openssl.getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
- Assert.assertNotNull(cipher);
-
- cipher.init(Openssl.ENCRYPT_MODE, KEY, IV);
+ @Test(expected = NoSuchAlgorithmException.class, timeout = 120000)
+ public void testInvalidMode() throws Exception {
+ try {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+ Openssl.getInstance("AES/CTR2/NoPadding");
+ Assert.fail("java.security.NoSuchAlgorithmException should be thrown.");
+ } catch (NoSuchAlgorithmException e) {
+ Assert.assertTrue(e.getMessage().contains(
+ "Doesn't support algorithm: AES and mode: CTR2"));
+ throw e;
+ }
+ }
- // Require direct buffer
- ByteBuffer output = ByteBuffer.allocate(1024);
+ @Test(timeout = 120000)
+ public void testUpdateArguments() throws Exception {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+ Openssl cipher = Openssl
+ .getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
+ Assert.assertNotNull(cipher);
+
+ cipher.init(Openssl.ENCRYPT_MODE, KEY, IV);
+
+ // Require direct buffers
+ ByteBuffer input = ByteBuffer.allocate(1024);
+ ByteBuffer output = ByteBuffer.allocate(1024);
+
+ try {
+ cipher.update(input, output);
+ Assert.fail("Input and output buffer should be direct buffer.");
+ } catch (IllegalArgumentException e) {
+ Assert.assertTrue(e.getMessage().contains(
+ "Direct buffers are required"));
+ }
+
+ // Output buffer length should be sufficient to store output data
+ input = ByteBuffer.allocateDirect(1024);
+ output = ByteBuffer.allocateDirect(1000);
+ try {
+ cipher.update(input, output);
+ Assert.fail("Output buffer length should be sufficient "
+ + "to store output data");
+ } catch (ShortBufferException e) {
+ Assert.assertTrue(e.getMessage().contains(
+ "Output buffer is not sufficient"));
+ }
+ }
- try {
- cipher.doFinal(output);
- Assert.fail("Output buffer should be direct buffer.");
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains("Direct buffer is required"));
+ @Test(timeout = 120000)
+ public void testDoFinalArguments() throws Exception {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+ Openssl cipher = Openssl
+ .getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
+ Assert.assertNotNull(cipher);
+
+ cipher.init(Openssl.ENCRYPT_MODE, KEY, IV);
+
+ // Require direct buffer
+ ByteBuffer output = ByteBuffer.allocate(1024);
+
+ try {
+ cipher.doFinal(output);
+ Assert.fail("Output buffer should be direct buffer.");
+ } catch (IllegalArgumentException e) {
+ Assert.assertTrue(e.getMessage().contains(
+ "Direct buffer is required"));
+ }
}
- }
-
- @Test(expected = InvalidKeyException.class, timeout=120000)
- public void testInvalidKey() throws Exception {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
- Openssl cipher = Openssl.getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
- Assert.assertNotNull(cipher);
-
- final byte[] invalidKey = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
- 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x11};
- try {
- cipher.init(Openssl.ENCRYPT_MODE, invalidKey, IV);
- Assert.fail("java.security.InvalidKeyException should be thrown.");
- } catch (Exception e) {
- Assert.assertTrue(e.getMessage().contains("Invalid key length."));
- throw e;
+
+ @Test(expected = InvalidKeyException.class, timeout = 120000)
+ public void testInvalidKey() throws Exception {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+ Openssl cipher = Openssl
+ .getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
+ Assert.assertNotNull(cipher);
+
+ final byte[] invalidKey = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
+ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x11 };
+ try {
+ cipher.init(Openssl.ENCRYPT_MODE, invalidKey, IV);
+ Assert.fail("java.security.InvalidKeyException should be thrown.");
+ } catch (Exception e) {
+ Assert.assertTrue(e.getMessage().contains("Invalid key length."));
+ throw e;
+ }
}
- }
-
- @Test(expected = InvalidAlgorithmParameterException.class, timeout=120000)
- public void testInvalidIV() throws Exception {
- Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
- Openssl cipher = Openssl.getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
- Assert.assertNotNull(cipher);
-
- final byte[] invalidIV = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
- 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x11};
- try {
- cipher.init(Openssl.ENCRYPT_MODE, KEY, invalidIV);
- Assert.fail("java.security.InvalidAlgorithmParameterException should be thrown.");
- } catch (Exception e) {
- Assert.assertTrue(e.getMessage().contains("Wrong IV length."));
- throw e;
+
+ @Test(expected = InvalidAlgorithmParameterException.class, timeout = 120000)
+ public void testInvalidIV() throws Exception {
+ Assume.assumeTrue(Openssl.getLoadingFailureReason() == null);
+ Openssl cipher = Openssl
+ .getInstance(CipherTransformation.AES_CTR_NOPADDING.getName());
+ Assert.assertNotNull(cipher);
+
+ final byte[] invalidIV = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
+ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x11 };
+ try {
+ cipher.init(Openssl.ENCRYPT_MODE, KEY, invalidIV);
+ Assert.fail("java.security.InvalidAlgorithmParameterException should be thrown.");
+ } catch (Exception e) {
+ Assert.assertTrue(e.getMessage().contains("Wrong IV length."));
+ throw e;
+ }
}
- }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/cipher/TestData.java
----------------------------------------------------------------------
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 2f8da8f..d67414e 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/TestData.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/TestData.java
@@ -22,135 +22,126 @@ import java.util.Map;
public class TestData {
- private static String[] CBCNoPaddingTests = {
- /*
- * key_len,key,iv,plainText,cipherText
- */
- "128",
- "2b7e151628aed2a6abf7158809cf4f3c",
- "000102030405060708090a0b0c0d0e0f",
- "6bc1bee22e409f96e93d7e117393172a",
- "7649abac8119b246cee98e9b12e9197d",
-
- "128",
- "2b7e151628aed2a6abf7158809cf4f3c",
- "7649ABAC8119B246CEE98E9B12E9197D",
- "ae2d8a571e03ac9c9eb76fac45af8e51",
- "5086cb9b507219ee95db113a917678b2",
-
- "192",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d7",
- "9CFC4E967EDB808D679F777BC6702C7D",
- "30c81c46a35ce411e5fbc1191a0a52ef",
- "78C57E3F543A18F472756DAC2F018523",
-
- "192",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d7",
- "39F23369A9D9BACFA530E26304231461",
- "f69f2445df4f9b17ad2b417be66c3710",
- "79ECA9610F0B9AAFB8C7C2D655047A41",
-
- "256",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
- "000102030405060708090a0b0c0d0e0f",
- "6bc1bee22e409f96e93d7e117393172a",
- "f58c4c04d6e5f1ba779eabfb5f7bfbd6",
-
- "256",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
- "F58C4C04D6E5F1BA779EABFB5F7BFBD6",
- "ae2d8a571e03ac9c9eb76fac45af8e51",
- "9cfc4e967edb808d679f777bc6702c7d"
- };
-
- private static String[] CBCPKCS5PaddingTests = {
- /*
- * key_len,key,iv,plainText,cipherText
- */
- //Test#0 for input of 6 bytes
- "128",
- "ac5800ac3cb59c7c14f36019e43b44fe",
- "f013ce1ec901b5b60a85a986b3b72eba",
- "f6cee5ff28fd",
- "e8a846fd9718507371604504d4ca1ac7",
-
- //Test#0 for input of 15 bytes
- "128",
- "0784fa652e733cb699f250b0df2c4b41",
- "106519760fb3ef97e1ccea073b27122d",
- "6842455a2992c2e5193056a5524075",
- "56a8e0c3ee3315f913693c0ca781e917",
-
- //Test#0 for input of 16 bytes
- "128",
- "04952c3fcf497a4d449c41e8730c5d9a",
- "53549bf7d5553b727458c1abaf0ba167",
- "c9a44f6f75e98ddbca7332167f5c45e3",
- "7fa290322ca7a1a04b61a1147ff20fe66fde58510a1d0289d11c0ddf6f4decfd",
-
- //Test#0 for input of 32 bytes
- "128",
- "2ae7081caebe54909820620a44a60a0f",
- "fc5e783fbe7be12f58b1f025d82ada50",
- "1ba93ee6f83752df47909585b3f28e56693f89e169d3093eee85175ea3a46cd3",
- "7944957a99e473e2c07eb496a83ec4e55db2fb44ebdd42bb611e0def29b23a73ac37eb0f4f5d86f090f3ddce3980425a",
-
- //Test#0 for input of 33 bytes
- "128",
- "898be9cc5004ed0fa6e117c9a3099d31",
- "9dea7621945988f96491083849b068df",
- "0397f4f6820b1f9386f14403be5ac16e50213bd473b4874b9bcbf5f318ee686b1d",
- "e232cd6ef50047801ee681ec30f61d53cfd6b0bca02fd03c1b234baa10ea82ac9dab8b960926433a19ce6dea08677e34"};
-
- private static String[] cipherCTRTests = {
- /*
- * key_len,key,iv,plainText,cipherText
- */
- "128",
- "2b7e151628aed2a6abf7158809cf4f3c",
- "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",
- "6bc1bee22e409f96e93d7e117393172a",
- "874d6191b620e3261bef6864990db6ce",
-
- "128",
- "2b7e151628aed2a6abf7158809cf4f3c",
- "f0f1f2f3f4f5f6f7f8f9fafbfcfdff00",
- "ae2d8a571e03ac9c9eb76fac45af8e51",
- "9806f66b7970fdff8617187bb9fffdff",
-
- //Test for input of 15 bytes
- "128",
- "2b7e151628aed2a6abf7158809cf4f3c",
- "f0f1f2f3f4f5f6f7f8f9fafbfcfdff01",
- "30c81c46a35ce411e5fbc1191a0a52",
- "5ae4df3edbd5d35e5b4f09020db03e",
-
- "256",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
- "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",
- "6bc1bee22e409f96e93d7e117393172a",
- "601ec313775789a5b7a7f504bbf3d228",
-
- "256",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
- "f0f1f2f3f4f5f6f7f8f9fafbfcfdff00",
- "ae2d8a571e03ac9c9eb76fac45af8e51",
- "f443e3ca4d62b59aca84e990cacaf5c5",
-
- //Test for input of 15 bytes
- "256",
- "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
- "f0f1f2f3f4f5f6f7f8f9fafbfcfdff01",
- "30c81c46a35ce411e5fbc1191a0a52",
- "2b0930daa23de94ce87017ba2d8498" };
-
- private static Map<CipherTransformation, String[]> testData =
- new HashMap<CipherTransformation, String[]>();
+ private static String[] CBCNoPaddingTests = {
+ /*
+ * key_len,key,iv,plainText,cipherText
+ */
+ "128", "2b7e151628aed2a6abf7158809cf4f3c",
+ "000102030405060708090a0b0c0d0e0f",
+ "6bc1bee22e409f96e93d7e117393172a",
+ "7649abac8119b246cee98e9b12e9197d",
+
+ "128", "2b7e151628aed2a6abf7158809cf4f3c",
+ "7649ABAC8119B246CEE98E9B12E9197D",
+ "ae2d8a571e03ac9c9eb76fac45af8e51",
+ "5086cb9b507219ee95db113a917678b2",
+
+ "192", "603deb1015ca71be2b73aef0857d77811f352c073b6108d7",
+ "9CFC4E967EDB808D679F777BC6702C7D",
+ "30c81c46a35ce411e5fbc1191a0a52ef",
+ "78C57E3F543A18F472756DAC2F018523",
+
+ "192", "603deb1015ca71be2b73aef0857d77811f352c073b6108d7",
+ "39F23369A9D9BACFA530E26304231461",
+ "f69f2445df4f9b17ad2b417be66c3710",
+ "79ECA9610F0B9AAFB8C7C2D655047A41",
+
+ "256",
+ "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
+ "000102030405060708090a0b0c0d0e0f",
+ "6bc1bee22e409f96e93d7e117393172a",
+ "f58c4c04d6e5f1ba779eabfb5f7bfbd6",
+
+ "256",
+ "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
+ "F58C4C04D6E5F1BA779EABFB5F7BFBD6",
+ "ae2d8a571e03ac9c9eb76fac45af8e51",
+ "9cfc4e967edb808d679f777bc6702c7d" };
+
+ private static String[] CBCPKCS5PaddingTests = {
+ /*
+ * key_len,key,iv,plainText,cipherText
+ */
+ // Test#0 for input of 6 bytes
+ "128",
+ "ac5800ac3cb59c7c14f36019e43b44fe",
+ "f013ce1ec901b5b60a85a986b3b72eba",
+ "f6cee5ff28fd",
+ "e8a846fd9718507371604504d4ca1ac7",
+
+ // Test#0 for input of 15 bytes
+ "128",
+ "0784fa652e733cb699f250b0df2c4b41",
+ "106519760fb3ef97e1ccea073b27122d",
+ "6842455a2992c2e5193056a5524075",
+ "56a8e0c3ee3315f913693c0ca781e917",
+
+ // Test#0 for input of 16 bytes
+ "128",
+ "04952c3fcf497a4d449c41e8730c5d9a",
+ "53549bf7d5553b727458c1abaf0ba167",
+ "c9a44f6f75e98ddbca7332167f5c45e3",
+ "7fa290322ca7a1a04b61a1147ff20fe66fde58510a1d0289d11c0ddf6f4decfd",
+
+ // Test#0 for input of 32 bytes
+ "128",
+ "2ae7081caebe54909820620a44a60a0f",
+ "fc5e783fbe7be12f58b1f025d82ada50",
+ "1ba93ee6f83752df47909585b3f28e56693f89e169d3093eee85175ea3a46cd3",
+ "7944957a99e473e2c07eb496a83ec4e55db2fb44ebdd42bb611e0def29b23a73ac37eb0f4f5d86f090f3ddce3980425a",
+
+ // Test#0 for input of 33 bytes
+ "128",
+ "898be9cc5004ed0fa6e117c9a3099d31",
+ "9dea7621945988f96491083849b068df",
+ "0397f4f6820b1f9386f14403be5ac16e50213bd473b4874b9bcbf5f318ee686b1d",
+ "e232cd6ef50047801ee681ec30f61d53cfd6b0bca02fd03c1b234baa10ea82ac9dab8b960926433a19ce6dea08677e34" };
+
+ private static String[] cipherCTRTests = {
+ /*
+ * key_len,key,iv,plainText,cipherText
+ */
+ "128",
+ "2b7e151628aed2a6abf7158809cf4f3c",
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",
+ "6bc1bee22e409f96e93d7e117393172a",
+ "874d6191b620e3261bef6864990db6ce",
+
+ "128",
+ "2b7e151628aed2a6abf7158809cf4f3c",
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdff00",
+ "ae2d8a571e03ac9c9eb76fac45af8e51",
+ "9806f66b7970fdff8617187bb9fffdff",
+
+ // Test for input of 15 bytes
+ "128", "2b7e151628aed2a6abf7158809cf4f3c",
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdff01",
+ "30c81c46a35ce411e5fbc1191a0a52", "5ae4df3edbd5d35e5b4f09020db03e",
+
+ "256",
+ "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",
+ "6bc1bee22e409f96e93d7e117393172a",
+ "601ec313775789a5b7a7f504bbf3d228",
+
+ "256",
+ "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdff00",
+ "ae2d8a571e03ac9c9eb76fac45af8e51",
+ "f443e3ca4d62b59aca84e990cacaf5c5",
+
+ // Test for input of 15 bytes
+ "256",
+ "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4",
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdff01",
+ "30c81c46a35ce411e5fbc1191a0a52", "2b0930daa23de94ce87017ba2d8498" };
+
+ private static Map<CipherTransformation, String[]> testData = new HashMap<CipherTransformation, String[]>();
static {
testData.put(CipherTransformation.AES_CBC_NOPADDING, CBCNoPaddingTests);
testData.put(CipherTransformation.AES_CBC_PKCS5PADDING,
- CBCPKCS5PaddingTests);
+ CBCPKCS5PaddingTests);
testData.put(CipherTransformation.AES_CTR_NOPADDING, cipherCTRTests);
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java b/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
index 1d1db88..2ccd163 100644
--- a/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
+++ b/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
@@ -24,34 +24,35 @@ import org.junit.Test;
public abstract class AbstractRandomTest {
- public abstract CryptoRandom getCryptoRandom() throws GeneralSecurityException;
+ public abstract CryptoRandom getCryptoRandom()
+ throws GeneralSecurityException;
- @Test(timeout=120000)
- public void testRandomBytes() throws Exception {
- CryptoRandom random = getCryptoRandom();
- // len = 16
- checkRandomBytes(random, 16);
- // len = 32
- checkRandomBytes(random, 32);
- // len = 128
- checkRandomBytes(random, 128);
- // len = 256
- checkRandomBytes(random, 256);
- random.close();
- }
+ @Test(timeout = 120000)
+ public void testRandomBytes() throws Exception {
+ CryptoRandom random = getCryptoRandom();
+ // len = 16
+ checkRandomBytes(random, 16);
+ // len = 32
+ checkRandomBytes(random, 32);
+ // len = 128
+ checkRandomBytes(random, 128);
+ // len = 256
+ checkRandomBytes(random, 256);
+ random.close();
+ }
- /**
- * Test will timeout if secure random implementation always returns a
- * constant value.
- */
- private void checkRandomBytes(CryptoRandom random, int len) {
- byte[] bytes = new byte[len];
- byte[] bytes1 = new byte[len];
- random.nextBytes(bytes);
- random.nextBytes(bytes1);
+ /**
+ * Test will timeout if secure random implementation always returns a
+ * constant value.
+ */
+ private void checkRandomBytes(CryptoRandom random, int len) {
+ byte[] bytes = new byte[len];
+ byte[] bytes1 = new byte[len];
+ random.nextBytes(bytes);
+ random.nextBytes(bytes1);
- while (Arrays.equals(bytes, bytes1)) {
- random.nextBytes(bytes1);
+ while (Arrays.equals(bytes, bytes1)) {
+ random.nextBytes(bytes1);
+ }
}
- }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/random/TestJavaCryptoRandom.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/random/TestJavaCryptoRandom.java b/src/test/java/org/apache/commons/crypto/random/TestJavaCryptoRandom.java
index bb84bc7..b9642ab 100644
--- a/src/test/java/org/apache/commons/crypto/random/TestJavaCryptoRandom.java
+++ b/src/test/java/org/apache/commons/crypto/random/TestJavaCryptoRandom.java
@@ -25,16 +25,18 @@ import static junit.framework.Assert.fail;
public class TestJavaCryptoRandom extends AbstractRandomTest {
- @Override
- public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
- Properties props = new Properties();
- props.setProperty(ConfigurationKeys.COMMONS_CRYPTO_SECURE_RANDOM_CLASSES_KEY,
- JavaCryptoRandom.class.getName());
- CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
- if ( !(random instanceof JavaCryptoRandom)) {
- fail("The CryptoRandom should be: " + JavaCryptoRandom.class.getName());
+ @Override
+ public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
+ Properties props = new Properties();
+ props.setProperty(
+ ConfigurationKeys.COMMONS_CRYPTO_SECURE_RANDOM_CLASSES_KEY,
+ JavaCryptoRandom.class.getName());
+ CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+ if (!(random instanceof JavaCryptoRandom)) {
+ fail("The CryptoRandom should be: "
+ + JavaCryptoRandom.class.getName());
+ }
+ return random;
}
- return random;
- }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/random/TestOpensslCryptoRandom.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/random/TestOpensslCryptoRandom.java b/src/test/java/org/apache/commons/crypto/random/TestOpensslCryptoRandom.java
index fede249..0a6600a 100644
--- a/src/test/java/org/apache/commons/crypto/random/TestOpensslCryptoRandom.java
+++ b/src/test/java/org/apache/commons/crypto/random/TestOpensslCryptoRandom.java
@@ -25,16 +25,18 @@ import static junit.framework.Assert.fail;
public class TestOpensslCryptoRandom extends AbstractRandomTest {
- @Override
- public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
- Properties props = new Properties();
- props.setProperty(ConfigurationKeys.COMMONS_CRYPTO_SECURE_RANDOM_CLASSES_KEY,
- OpensslCryptoRandom.class.getName());
- CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
- if ( !(random instanceof OpensslCryptoRandom)) {
- fail("The CryptoRandom should be: " + OpensslCryptoRandom.class.getName());
+ @Override
+ public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
+ Properties props = new Properties();
+ props.setProperty(
+ ConfigurationKeys.COMMONS_CRYPTO_SECURE_RANDOM_CLASSES_KEY,
+ OpensslCryptoRandom.class.getName());
+ CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+ if (!(random instanceof OpensslCryptoRandom)) {
+ fail("The CryptoRandom should be: "
+ + OpensslCryptoRandom.class.getName());
+ }
+ return random;
}
- return random;
- }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/random/TestOsCryptoRandom.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/random/TestOsCryptoRandom.java b/src/test/java/org/apache/commons/crypto/random/TestOsCryptoRandom.java
index 9968c34..9f0b149 100644
--- a/src/test/java/org/apache/commons/crypto/random/TestOsCryptoRandom.java
+++ b/src/test/java/org/apache/commons/crypto/random/TestOsCryptoRandom.java
@@ -19,10 +19,10 @@ package org.apache.commons.crypto.random;
import java.util.Properties;
-public class TestOsCryptoRandom extends AbstractRandomTest{
+public class TestOsCryptoRandom extends AbstractRandomTest {
- @Override
- public CryptoRandom getCryptoRandom() {
- return new OsCryptoRandom(new Properties());
- }
+ @Override
+ public CryptoRandom getCryptoRandom() {
+ return new OsCryptoRandom(new Properties());
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
----------------------------------------------------------------------
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 a89e4d1..feb318d 100644
--- a/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
@@ -44,416 +44,424 @@ import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public abstract class AbstractCipherStreamTest {
- private static final Log LOG= LogFactory.getLog(AbstractCipherStreamTest.class);
-
- private final int dataLen = 20000;
- private byte[] data = new byte[dataLen];
- private byte[] encData;
- private Properties props = new Properties();
- protected byte[] key = new byte[16];
- private byte[] iv = new byte[16];
- private int count = 10000;
- protected static int defaultBufferSize = 8192;
- protected static int smallBufferSize = 1024;
-
- private final String jceCipherClass = JceCipher.class.getName();
- private final String opensslCipherClass = OpensslCipher.class.getName();
- protected CipherTransformation transformation;
-
- public abstract void setUp() throws IOException;
-
- @Before
- public void before() throws IOException {
- Random random = new SecureRandom();
- random.nextBytes(data);
- random.nextBytes(key);
- random.nextBytes(iv);
- setUp();
- prepareData();
- }
-
- /** Test skip. */
- @Test(timeout=120000)
- public void testSkip() throws Exception {
- doSkipTest(jceCipherClass, false);
- doSkipTest(opensslCipherClass, false);
-
- doSkipTest(jceCipherClass, true);
- doSkipTest(opensslCipherClass, true);
- }
-
- /** Test byte buffer read with different buffer size. */
- @Test(timeout=120000)
- public void testByteBufferRead() throws Exception {
- doByteBufferRead(jceCipherClass, false);
- doByteBufferRead(opensslCipherClass, false);
-
- doByteBufferRead(jceCipherClass, true);
- doByteBufferRead(opensslCipherClass, true);
- }
-
- /** Test byte buffer write. */
- @Test(timeout=120000)
- public void testByteBufferWrite() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- doByteBufferWrite(jceCipherClass, baos, false);
- doByteBufferWrite(opensslCipherClass, baos, false);
-
- doByteBufferWrite(jceCipherClass, baos, true);
- doByteBufferWrite(opensslCipherClass, baos, true);
- }
-
- private void doSkipTest(String cipherClass, boolean withChannel) throws IOException {
- InputStream in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), defaultBufferSize, iv, withChannel);
- byte[] result = new byte[dataLen];
- int n1 = readAll(in, result, 0, dataLen / 3);
-
- long skipped = in.skip(dataLen / 3);
- int n2 = readAll(in, result, 0, dataLen);
-
- Assert.assertEquals(dataLen, n1 + skipped + n2);
- byte[] readData = new byte[n2];
- System.arraycopy(result, 0, readData, 0, n2);
- byte[] expectedData = new byte[n2];
- System.arraycopy(data, dataLen - n2, expectedData, 0, n2);
- Assert.assertArrayEquals(readData, expectedData);
-
- try {
- skipped = in.skip(-3);
- Assert.fail("Skip Negative length should fail.");
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains("Negative skip length"));
+ private static final Log LOG = LogFactory
+ .getLog(AbstractCipherStreamTest.class);
+
+ private final int dataLen = 20000;
+ private byte[] data = new byte[dataLen];
+ private byte[] encData;
+ private Properties props = new Properties();
+ protected byte[] key = new byte[16];
+ private byte[] iv = new byte[16];
+ private int count = 10000;
+ protected static int defaultBufferSize = 8192;
+ protected static int smallBufferSize = 1024;
+
+ private final String jceCipherClass = JceCipher.class.getName();
+ private final String opensslCipherClass = OpensslCipher.class.getName();
+ protected CipherTransformation transformation;
+
+ public abstract void setUp() throws IOException;
+
+ @Before
+ public void before() throws IOException {
+ Random random = new SecureRandom();
+ random.nextBytes(data);
+ random.nextBytes(key);
+ random.nextBytes(iv);
+ setUp();
+ prepareData();
}
- // Skip after EOF
- skipped = in.skip(3);
- Assert.assertEquals(skipped, 0);
-
- in.close();
- }
-
- private void doByteBufferRead(String cipherClass, boolean withChannel) throws Exception {
- // Default buffer size, initial buffer position is 0
- InputStream in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), defaultBufferSize, iv, withChannel);
- ByteBuffer buf = ByteBuffer.allocate(dataLen + 100);
- byteBufferReadCheck(in, buf, 0);
- in.close();
-
- // Default buffer size, initial buffer position is not 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), defaultBufferSize, iv, withChannel);
- buf.clear();
- byteBufferReadCheck(in, buf, 11);
- in.close();
-
- // Small buffer size, initial buffer position is 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), smallBufferSize, iv, withChannel);
- buf.clear();
- byteBufferReadCheck(in, buf, 0);
- in.close();
-
- // Small buffer size, initial buffer position is not 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), smallBufferSize, iv, withChannel);
- buf.clear();
- byteBufferReadCheck(in, buf, 11);
- in.close();
-
- // Direct buffer, default buffer size, initial buffer position is 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), defaultBufferSize, iv, withChannel);
- buf = ByteBuffer.allocateDirect(dataLen + 100);
- byteBufferReadCheck(in, buf, 0);
- in.close();
-
- // Direct buffer, default buffer size, initial buffer position is not 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), defaultBufferSize, iv, withChannel);
- buf.clear();
- byteBufferReadCheck(in, buf, 11);
- in.close();
-
- // Direct buffer, small buffer size, initial buffer position is 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), smallBufferSize, iv, withChannel);
- buf.clear();
- byteBufferReadCheck(in, buf, 0);
- in.close();
-
- // Direct buffer, small buffer size, initial buffer position is not 0
- in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), smallBufferSize, iv, withChannel);
- buf.clear();
- byteBufferReadCheck(in, buf, 11);
- in.close();
- }
-
- private void doByteBufferWrite(String cipherClass, ByteArrayOutputStream baos,
- boolean withChannel)
- throws Exception {
- baos.reset();
- CryptoOutputStream out =
- getCryptoOutputStream(baos, getCipher(cipherClass), defaultBufferSize,
- iv, withChannel);
- ByteBuffer buf = ByteBuffer.allocateDirect(dataLen / 2);
- buf.put(data, 0, dataLen / 2);
- buf.flip();
- int n1 = out.write(buf);
-
- buf.clear();
- buf.put(data, n1, dataLen / 3);
- buf.flip();
- int n2 = out.write(buf);
-
- buf.clear();
- buf.put(data, n1 + n2, dataLen - n1 - n2);
- buf.flip();
- int n3 = out.write(buf);
-
- Assert.assertEquals(dataLen, n1 + n2 + n3);
-
- out.flush();
-
- InputStream in = getCryptoInputStream(new ByteArrayInputStream(encData),
- getCipher(cipherClass), defaultBufferSize, iv, withChannel);
- buf = ByteBuffer.allocate(dataLen + 100);
- byteBufferReadCheck(in, buf, 0);
- in.close();
- }
-
- private void byteBufferReadCheck(InputStream in, ByteBuffer buf,
- int bufPos) throws Exception {
- buf.position(bufPos);
- int n = ((ReadableByteChannel) in).read(buf);
- Assert.assertEquals(bufPos + n, buf.position());
- byte[] readData = new byte[n];
- buf.rewind();
- buf.position(bufPos);
- buf.get(readData);
- byte[] expectedData = new byte[n];
- System.arraycopy(data, 0, expectedData, 0, n);
- Assert.assertArrayEquals(readData, expectedData);
- }
-
- private void prepareData() throws IOException {
- CryptoCipher cipher = null;
- try {
- cipher = (CryptoCipher)ReflectionUtils.newInstance(
- ReflectionUtils.getClassByName(jceCipherClass), props, transformation);
- } catch (ClassNotFoundException cnfe) {
- throw new IOException("Illegal crypto cipher!");
+ /** Test skip. */
+ @Test(timeout = 120000)
+ public void testSkip() throws Exception {
+ doSkipTest(jceCipherClass, false);
+ doSkipTest(opensslCipherClass, false);
+
+ doSkipTest(jceCipherClass, true);
+ doSkipTest(opensslCipherClass, true);
+ }
+
+ /** Test byte buffer read with different buffer size. */
+ @Test(timeout = 120000)
+ public void testByteBufferRead() throws Exception {
+ doByteBufferRead(jceCipherClass, false);
+ doByteBufferRead(opensslCipherClass, false);
+
+ doByteBufferRead(jceCipherClass, true);
+ doByteBufferRead(opensslCipherClass, true);
+ }
+
+ /** Test byte buffer write. */
+ @Test(timeout = 120000)
+ public void testByteBufferWrite() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ doByteBufferWrite(jceCipherClass, baos, false);
+ doByteBufferWrite(opensslCipherClass, baos, false);
+
+ doByteBufferWrite(jceCipherClass, baos, true);
+ doByteBufferWrite(opensslCipherClass, baos, true);
+ }
+
+ private void doSkipTest(String cipherClass, boolean withChannel)
+ throws IOException {
+ InputStream in = getCryptoInputStream(
+ new ByteArrayInputStream(encData), getCipher(cipherClass),
+ defaultBufferSize, iv, withChannel);
+ byte[] result = new byte[dataLen];
+ int n1 = readAll(in, result, 0, dataLen / 3);
+
+ long skipped = in.skip(dataLen / 3);
+ int n2 = readAll(in, result, 0, dataLen);
+
+ Assert.assertEquals(dataLen, n1 + skipped + n2);
+ byte[] readData = new byte[n2];
+ System.arraycopy(result, 0, readData, 0, n2);
+ byte[] expectedData = new byte[n2];
+ System.arraycopy(data, dataLen - n2, expectedData, 0, n2);
+ Assert.assertArrayEquals(readData, expectedData);
+
+ try {
+ skipped = in.skip(-3);
+ Assert.fail("Skip Negative length should fail.");
+ } catch (IllegalArgumentException e) {
+ Assert.assertTrue(e.getMessage().contains("Negative skip length"));
+ }
+
+ // Skip after EOF
+ skipped = in.skip(3);
+ Assert.assertEquals(skipped, 0);
+
+ in.close();
}
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- OutputStream out = new CryptoOutputStream(baos, cipher, defaultBufferSize,
- new SecretKeySpec(key,"AES"), new IvParameterSpec(iv));
- out.write(data);
- out.flush();
- out.close();
- encData = baos.toByteArray();
- }
-
- protected CryptoInputStream getCryptoInputStream(ByteArrayInputStream bais,
- CryptoCipher cipher,
- int bufferSize, byte[] iv,
- boolean withChannel) throws
- IOException {
- if (withChannel) {
- return new CryptoInputStream(Channels.newChannel(bais), cipher,
- bufferSize, new SecretKeySpec(key,"AES"), new IvParameterSpec(iv));
- } else {
- return new CryptoInputStream(bais, cipher, bufferSize,
- new SecretKeySpec(key,"AES"), new IvParameterSpec(iv));
+ private void doByteBufferRead(String cipherClass, boolean withChannel)
+ throws Exception {
+ // Default buffer size, initial buffer position is 0
+ InputStream in = getCryptoInputStream(
+ new ByteArrayInputStream(encData), getCipher(cipherClass),
+ defaultBufferSize, iv, withChannel);
+ ByteBuffer buf = ByteBuffer.allocate(dataLen + 100);
+ byteBufferReadCheck(in, buf, 0);
+ in.close();
+
+ // Default buffer size, initial buffer position is not 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), defaultBufferSize, iv, withChannel);
+ buf.clear();
+ byteBufferReadCheck(in, buf, 11);
+ in.close();
+
+ // Small buffer size, initial buffer position is 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), smallBufferSize, iv, withChannel);
+ buf.clear();
+ byteBufferReadCheck(in, buf, 0);
+ in.close();
+
+ // Small buffer size, initial buffer position is not 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), smallBufferSize, iv, withChannel);
+ buf.clear();
+ byteBufferReadCheck(in, buf, 11);
+ in.close();
+
+ // Direct buffer, default buffer size, initial buffer position is 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), defaultBufferSize, iv, withChannel);
+ buf = ByteBuffer.allocateDirect(dataLen + 100);
+ byteBufferReadCheck(in, buf, 0);
+ in.close();
+
+ // Direct buffer, default buffer size, initial buffer position is not 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), defaultBufferSize, iv, withChannel);
+ buf.clear();
+ byteBufferReadCheck(in, buf, 11);
+ in.close();
+
+ // Direct buffer, small buffer size, initial buffer position is 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), smallBufferSize, iv, withChannel);
+ buf.clear();
+ byteBufferReadCheck(in, buf, 0);
+ in.close();
+
+ // Direct buffer, small buffer size, initial buffer position is not 0
+ in = getCryptoInputStream(new ByteArrayInputStream(encData),
+ getCipher(cipherClass), smallBufferSize, iv, withChannel);
+ buf.clear();
+ byteBufferReadCheck(in, buf, 11);
+ in.close();
}
- }
-
- protected CryptoOutputStream getCryptoOutputStream(ByteArrayOutputStream baos,
- CryptoCipher cipher,
- int bufferSize, byte[] iv,
- boolean withChannel) throws
- IOException {
- if (withChannel) {
- return new CryptoOutputStream(Channels.newChannel(baos), cipher,
- bufferSize, new SecretKeySpec(key,"AES"), new IvParameterSpec(iv));
- } else {
- return new CryptoOutputStream(baos, cipher, bufferSize,
- new SecretKeySpec(key,"AES"), new IvParameterSpec(iv));
+
+ private void doByteBufferWrite(String cipherClass,
+ ByteArrayOutputStream baos, boolean withChannel) throws Exception {
+ baos.reset();
+ CryptoOutputStream out = getCryptoOutputStream(baos,
+ getCipher(cipherClass), defaultBufferSize, iv, withChannel);
+ ByteBuffer buf = ByteBuffer.allocateDirect(dataLen / 2);
+ buf.put(data, 0, dataLen / 2);
+ buf.flip();
+ int n1 = out.write(buf);
+
+ buf.clear();
+ buf.put(data, n1, dataLen / 3);
+ buf.flip();
+ int n2 = out.write(buf);
+
+ buf.clear();
+ buf.put(data, n1 + n2, dataLen - n1 - n2);
+ buf.flip();
+ int n3 = out.write(buf);
+
+ Assert.assertEquals(dataLen, n1 + n2 + n3);
+
+ out.flush();
+
+ InputStream in = getCryptoInputStream(
+ new ByteArrayInputStream(encData), getCipher(cipherClass),
+ defaultBufferSize, iv, withChannel);
+ buf = ByteBuffer.allocate(dataLen + 100);
+ byteBufferReadCheck(in, buf, 0);
+ in.close();
}
- }
-
- private int readAll(InputStream in, byte[] b, int offset, int len)
- throws IOException {
- int n = 0;
- int total = 0;
- while (n != -1) {
- total += n;
- if (total >= len) {
- break;
- }
- n = in.read(b, offset + total, len - total);
+
+ private void byteBufferReadCheck(InputStream in, ByteBuffer buf, int bufPos)
+ throws Exception {
+ buf.position(bufPos);
+ int n = ((ReadableByteChannel) in).read(buf);
+ Assert.assertEquals(bufPos + n, buf.position());
+ byte[] readData = new byte[n];
+ buf.rewind();
+ buf.position(bufPos);
+ buf.get(readData);
+ byte[] expectedData = new byte[n];
+ System.arraycopy(data, 0, expectedData, 0, n);
+ Assert.assertArrayEquals(readData, expectedData);
}
- return total;
- }
+ private void prepareData() throws IOException {
+ CryptoCipher cipher = null;
+ try {
+ cipher = (CryptoCipher) ReflectionUtils.newInstance(
+ ReflectionUtils.getClassByName(jceCipherClass), props,
+ transformation);
+ } catch (ClassNotFoundException cnfe) {
+ throw new IOException("Illegal crypto cipher!");
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ OutputStream out = new CryptoOutputStream(baos, cipher,
+ defaultBufferSize, new SecretKeySpec(key, "AES"),
+ new IvParameterSpec(iv));
+ out.write(data);
+ out.flush();
+ out.close();
+ encData = baos.toByteArray();
+ }
- protected CryptoCipher getCipher(String cipherClass) throws IOException {
- try {
- return (CryptoCipher)ReflectionUtils.newInstance(
- ReflectionUtils.getClassByName(cipherClass), props, transformation);
- } catch (ClassNotFoundException cnfe) {
- throw new IOException("Illegal crypto cipher!");
+ protected CryptoInputStream getCryptoInputStream(ByteArrayInputStream bais,
+ CryptoCipher cipher, int bufferSize, byte[] iv, boolean withChannel)
+ throws IOException {
+ if (withChannel) {
+ return new CryptoInputStream(Channels.newChannel(bais), cipher,
+ bufferSize, new SecretKeySpec(key, "AES"),
+ new IvParameterSpec(iv));
+ } else {
+ return new CryptoInputStream(bais, cipher, bufferSize,
+ new SecretKeySpec(key, "AES"), new IvParameterSpec(iv));
+ }
}
- }
-
- @Test
- public void testReadWrite() throws Exception {
- Assert.assertEquals(null, Openssl.getLoadingFailureReason());
- doReadWriteTest(0, jceCipherClass, jceCipherClass, iv);
- doReadWriteTest(0, opensslCipherClass, opensslCipherClass, iv);
- doReadWriteTest(count, jceCipherClass, jceCipherClass, iv);
- doReadWriteTest(count, opensslCipherClass, opensslCipherClass, iv);
- doReadWriteTest(count, jceCipherClass, opensslCipherClass, iv);
- doReadWriteTest(count, opensslCipherClass, jceCipherClass, 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;
+
+ protected CryptoOutputStream getCryptoOutputStream(
+ ByteArrayOutputStream baos, CryptoCipher cipher, int bufferSize,
+ byte[] iv, boolean withChannel) throws IOException {
+ if (withChannel) {
+ return new CryptoOutputStream(Channels.newChannel(baos), cipher,
+ bufferSize, new SecretKeySpec(key, "AES"),
+ new IvParameterSpec(iv));
+ } else {
+ return new CryptoOutputStream(baos, cipher, bufferSize,
+ new SecretKeySpec(key, "AES"), new IvParameterSpec(iv));
+ }
}
- doReadWriteTest(count, jceCipherClass, jceCipherClass, iv);
- doReadWriteTest(count, opensslCipherClass, opensslCipherClass, iv);
- doReadWriteTest(count, jceCipherClass, opensslCipherClass, iv);
- doReadWriteTest(count, opensslCipherClass, jceCipherClass, iv);
- }
-
- private void doReadWriteTest(int count, String encCipherClass,
- String decCipherClass, byte[] iv) throws IOException {
- doReadWriteTestForInputStream(count, encCipherClass, decCipherClass, iv);
- doReadWriteTestForReadableByteChannel(count, encCipherClass, decCipherClass,
- iv);
- }
-
- private void doReadWriteTestForInputStream(int count, String encCipherClass,
- String decCipherClass, byte[] iv) throws IOException {
- CryptoCipher encCipher = getCipher(encCipherClass);
- LOG.debug("Created a cipher object of type: " + encCipherClass);
-
- // Generate data
- SecureRandom random = new SecureRandom();
- byte[] originalData = new byte[count];
- byte[] decryptedData = new byte[count];
- random.nextBytes(originalData);
- LOG.debug("Generated " + count + " records");
-
- // Encrypt data
- ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
- CryptoOutputStream out =
- getCryptoOutputStream(encryptedData, encCipher, defaultBufferSize, iv,
- false);
- out.write(originalData, 0, originalData.length);
- out.flush();
- out.close();
- LOG.debug("Finished encrypting data");
-
- CryptoCipher decCipher = getCipher(decCipherClass);
- LOG.debug("Created a cipher object of type: " + decCipherClass);
-
- // Decrypt data
- CryptoInputStream in = getCryptoInputStream(
- new ByteArrayInputStream(encryptedData.toByteArray()), decCipher,
- defaultBufferSize, iv, false);
-
- // Check
- int remainingToRead = count;
- int offset = 0;
- while (remainingToRead > 0) {
- int n = in.read(decryptedData, offset, decryptedData.length - offset);
- if (n >=0) {
- remainingToRead -= n;
- offset += n;
- }
+
+ private int readAll(InputStream in, byte[] b, int offset, int len)
+ throws IOException {
+ int n = 0;
+ int total = 0;
+ while (n != -1) {
+ total += n;
+ if (total >= len) {
+ break;
+ }
+ n = in.read(b, offset + total, len - total);
+ }
+
+ return total;
}
- Assert.assertArrayEquals("originalData and decryptedData not equal",
- originalData, decryptedData);
-
- // Decrypt data byte-at-a-time
- in = getCryptoInputStream(
- new ByteArrayInputStream(encryptedData.toByteArray()), decCipher,
- defaultBufferSize, iv, false);
-
- // Check
- DataInputStream originalIn = new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(originalData)));
- int expected;
- do {
- expected = originalIn.read();
- Assert.assertEquals("Decrypted stream read by byte does not match",
- expected, in.read());
- } while (expected != -1);
-
- LOG.debug("SUCCESS! Completed checking " + count + " records");
- }
-
- private void doReadWriteTestForReadableByteChannel(int count,
- String encCipherClass,
- String decCipherClass,
- byte[] iv) throws IOException {
- CryptoCipher encCipher = getCipher(encCipherClass);
- LOG.debug("Created a cipher object of type: " + encCipherClass);
-
- // Generate data
- SecureRandom random = new SecureRandom();
- byte[] originalData = new byte[count];
- byte[] decryptedData = new byte[count];
- random.nextBytes(originalData);
- LOG.debug("Generated " + count + " records");
-
- // Encrypt data
- ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
- CryptoOutputStream out =
- getCryptoOutputStream(encryptedData, encCipher, defaultBufferSize, iv,
- true);
- out.write(originalData, 0, originalData.length);
- out.flush();
- out.close();
- LOG.debug("Finished encrypting data");
-
- CryptoCipher decCipher = getCipher(decCipherClass);
- LOG.debug("Created a cipher object of type: " + decCipherClass);
-
- // Decrypt data
- CryptoInputStream in = getCryptoInputStream(
- new ByteArrayInputStream(encryptedData.toByteArray()), decCipher,
- defaultBufferSize, iv, true);
-
- // Check
- int remainingToRead = count;
- int offset = 0;
- while (remainingToRead > 0) {
- int n = in.read(decryptedData, offset, decryptedData.length - offset);
- if (n >=0) {
- remainingToRead -= n;
- offset += n;
- }
+ protected CryptoCipher getCipher(String cipherClass) throws IOException {
+ try {
+ return (CryptoCipher) ReflectionUtils.newInstance(
+ ReflectionUtils.getClassByName(cipherClass), props,
+ transformation);
+ } catch (ClassNotFoundException cnfe) {
+ throw new IOException("Illegal crypto cipher!");
+ }
}
- Assert.assertArrayEquals("originalData and decryptedData not equal",
- originalData, decryptedData);
+ @Test
+ public void testReadWrite() throws Exception {
+ Assert.assertEquals(null, Openssl.getLoadingFailureReason());
+ doReadWriteTest(0, jceCipherClass, jceCipherClass, iv);
+ doReadWriteTest(0, opensslCipherClass, opensslCipherClass, iv);
+ doReadWriteTest(count, jceCipherClass, jceCipherClass, iv);
+ doReadWriteTest(count, opensslCipherClass, opensslCipherClass, iv);
+ doReadWriteTest(count, jceCipherClass, opensslCipherClass, iv);
+ doReadWriteTest(count, opensslCipherClass, jceCipherClass, 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;
+ }
+ doReadWriteTest(count, jceCipherClass, jceCipherClass, iv);
+ doReadWriteTest(count, opensslCipherClass, opensslCipherClass, iv);
+ doReadWriteTest(count, jceCipherClass, opensslCipherClass, iv);
+ doReadWriteTest(count, opensslCipherClass, jceCipherClass, iv);
+ }
- // Decrypt data byte-at-a-time
- in = getCryptoInputStream(new ByteArrayInputStream(
- encryptedData.toByteArray()),decCipher,defaultBufferSize,iv,true);
+ private void doReadWriteTest(int count, String encCipherClass,
+ String decCipherClass, byte[] iv) throws IOException {
+ doReadWriteTestForInputStream(count, encCipherClass, decCipherClass, iv);
+ doReadWriteTestForReadableByteChannel(count, encCipherClass,
+ decCipherClass, iv);
+ }
- // Check
- DataInputStream originalIn = new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(originalData)));
- int expected;
- do {
- expected = originalIn.read();
- Assert.assertEquals("Decrypted stream read by byte does not match",
- expected, in.read());
- } while (expected != -1);
+ private void doReadWriteTestForInputStream(int count,
+ String encCipherClass, String decCipherClass, byte[] iv)
+ throws IOException {
+ CryptoCipher encCipher = getCipher(encCipherClass);
+ LOG.debug("Created a cipher object of type: " + encCipherClass);
+
+ // Generate data
+ SecureRandom random = new SecureRandom();
+ byte[] originalData = new byte[count];
+ byte[] decryptedData = new byte[count];
+ random.nextBytes(originalData);
+ LOG.debug("Generated " + count + " records");
+
+ // Encrypt data
+ ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
+ CryptoOutputStream out = getCryptoOutputStream(encryptedData,
+ encCipher, defaultBufferSize, iv, false);
+ out.write(originalData, 0, originalData.length);
+ out.flush();
+ out.close();
+ LOG.debug("Finished encrypting data");
+
+ CryptoCipher decCipher = getCipher(decCipherClass);
+ LOG.debug("Created a cipher object of type: " + decCipherClass);
+
+ // Decrypt data
+ CryptoInputStream in = getCryptoInputStream(new ByteArrayInputStream(
+ encryptedData.toByteArray()), decCipher, defaultBufferSize, iv,
+ false);
+
+ // Check
+ int remainingToRead = count;
+ int offset = 0;
+ while (remainingToRead > 0) {
+ int n = in.read(decryptedData, offset, decryptedData.length
+ - offset);
+ if (n >= 0) {
+ remainingToRead -= n;
+ offset += n;
+ }
+ }
+
+ Assert.assertArrayEquals("originalData and decryptedData not equal",
+ originalData, decryptedData);
+
+ // Decrypt data byte-at-a-time
+ in = getCryptoInputStream(
+ new ByteArrayInputStream(encryptedData.toByteArray()),
+ decCipher, defaultBufferSize, iv, false);
+
+ // Check
+ DataInputStream originalIn = new DataInputStream(
+ new BufferedInputStream(new ByteArrayInputStream(originalData)));
+ int expected;
+ do {
+ expected = originalIn.read();
+ Assert.assertEquals("Decrypted stream read by byte does not match",
+ expected, in.read());
+ } while (expected != -1);
+
+ LOG.debug("SUCCESS! Completed checking " + count + " records");
+ }
- LOG.debug("SUCCESS! Completed checking " + count + " records");
- }
+ private void doReadWriteTestForReadableByteChannel(int count,
+ String encCipherClass, String decCipherClass, byte[] iv)
+ throws IOException {
+ CryptoCipher encCipher = getCipher(encCipherClass);
+ LOG.debug("Created a cipher object of type: " + encCipherClass);
+
+ // Generate data
+ SecureRandom random = new SecureRandom();
+ byte[] originalData = new byte[count];
+ byte[] decryptedData = new byte[count];
+ random.nextBytes(originalData);
+ LOG.debug("Generated " + count + " records");
+
+ // Encrypt data
+ ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
+ CryptoOutputStream out = getCryptoOutputStream(encryptedData,
+ encCipher, defaultBufferSize, iv, true);
+ out.write(originalData, 0, originalData.length);
+ out.flush();
+ out.close();
+ LOG.debug("Finished encrypting data");
+
+ CryptoCipher decCipher = getCipher(decCipherClass);
+ LOG.debug("Created a cipher object of type: " + decCipherClass);
+
+ // Decrypt data
+ CryptoInputStream in = getCryptoInputStream(new ByteArrayInputStream(
+ encryptedData.toByteArray()), decCipher, defaultBufferSize, iv,
+ true);
+
+ // Check
+ int remainingToRead = count;
+ int offset = 0;
+ while (remainingToRead > 0) {
+ int n = in.read(decryptedData, offset, decryptedData.length
+ - offset);
+ if (n >= 0) {
+ remainingToRead -= n;
+ offset += n;
+ }
+ }
+
+ Assert.assertArrayEquals("originalData and decryptedData not equal",
+ originalData, decryptedData);
+
+ // Decrypt data byte-at-a-time
+ in = getCryptoInputStream(
+ new ByteArrayInputStream(encryptedData.toByteArray()),
+ decCipher, defaultBufferSize, iv, true);
+
+ // Check
+ DataInputStream originalIn = new DataInputStream(
+ new BufferedInputStream(new ByteArrayInputStream(originalData)));
+ int expected;
+ do {
+ expected = originalIn.read();
+ Assert.assertEquals("Decrypted stream read by byte does not match",
+ expected, in.read());
+ } while (expected != -1);
+
+ LOG.debug("SUCCESS! Completed checking " + count + " records");
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/stream/CBCNoPaddingCipherStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/stream/CBCNoPaddingCipherStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/CBCNoPaddingCipherStreamTest.java
index 3b4c66e..fcf569d 100644
--- a/src/test/java/org/apache/commons/crypto/stream/CBCNoPaddingCipherStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/CBCNoPaddingCipherStreamTest.java
@@ -23,10 +23,9 @@ import org.apache.commons.crypto.cipher.CipherTransformation;
public class CBCNoPaddingCipherStreamTest extends AbstractCipherStreamTest {
- @Override
-public void setUp() throws IOException {
- transformation = CipherTransformation
- .AES_CBC_NOPADDING;
- }
+ @Override
+ public void setUp() throws IOException {
+ transformation = CipherTransformation.AES_CBC_NOPADDING;
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/stream/CBCPKCS5PaddingCipherStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/stream/CBCPKCS5PaddingCipherStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/CBCPKCS5PaddingCipherStreamTest.java
index c605a3b..830b970 100644
--- a/src/test/java/org/apache/commons/crypto/stream/CBCPKCS5PaddingCipherStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/CBCPKCS5PaddingCipherStreamTest.java
@@ -23,9 +23,8 @@ import org.apache.commons.crypto.cipher.CipherTransformation;
public class CBCPKCS5PaddingCipherStreamTest extends AbstractCipherStreamTest {
- @Override
-public void setUp() throws IOException {
- transformation = CipherTransformation
- .AES_CBC_PKCS5PADDING;
- }
+ @Override
+ public void setUp() throws IOException {
+ transformation = CipherTransformation.AES_CBC_PKCS5PADDING;
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/stream/CTRCryptoStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/stream/CTRCryptoStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/CTRCryptoStreamTest.java
index 0953196..ad8220b 100644
--- a/src/test/java/org/apache/commons/crypto/stream/CTRCryptoStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/CTRCryptoStreamTest.java
@@ -27,33 +27,32 @@ import org.apache.commons.crypto.cipher.CipherTransformation;
public class CTRCryptoStreamTest extends AbstractCipherStreamTest {
- @Override
-public void setUp() throws IOException {
- transformation = CipherTransformation
- .AES_CTR_NOPADDING;
- }
+ @Override
+ public void setUp() throws IOException {
+ transformation = CipherTransformation.AES_CTR_NOPADDING;
+ }
- @Override
- protected CTRCryptoInputStream getCryptoInputStream
- (ByteArrayInputStream bais, CryptoCipher cipher, int
- bufferSize, byte[] iv, boolean withChannel)
- throws IOException {
- if (withChannel) {
- return new CTRCryptoInputStream(Channels.newChannel(bais), cipher,
- bufferSize, key, iv);
- } else {
- return new CTRCryptoInputStream(bais, cipher, bufferSize, key, iv);
+ @Override
+ protected CTRCryptoInputStream getCryptoInputStream(
+ ByteArrayInputStream bais, CryptoCipher cipher, int bufferSize,
+ byte[] iv, boolean withChannel) throws IOException {
+ if (withChannel) {
+ return new CTRCryptoInputStream(Channels.newChannel(bais), cipher,
+ bufferSize, key, iv);
+ } else {
+ return new CTRCryptoInputStream(bais, cipher, bufferSize, key, iv);
+ }
}
- }
- @Override
- protected CTRCryptoOutputStream getCryptoOutputStream(ByteArrayOutputStream baos, CryptoCipher cipher,
- int bufferSize, byte[] iv, boolean withChannel)
- throws IOException {
- if (withChannel) {
- return new CTRCryptoOutputStream(Channels.newChannel(baos), cipher, bufferSize, key, iv);
- } else {
- return new CTRCryptoOutputStream(baos, cipher, bufferSize, key, iv);
+ @Override
+ protected CTRCryptoOutputStream getCryptoOutputStream(
+ ByteArrayOutputStream baos, CryptoCipher cipher, int bufferSize,
+ byte[] iv, boolean withChannel) throws IOException {
+ if (withChannel) {
+ return new CTRCryptoOutputStream(Channels.newChannel(baos), cipher,
+ bufferSize, key, iv);
+ } else {
+ return new CTRCryptoOutputStream(baos, cipher, bufferSize, key, iv);
+ }
}
- }
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/95a8d486/src/test/java/org/apache/commons/crypto/stream/CTRNoPaddingCipherStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/stream/CTRNoPaddingCipherStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/CTRNoPaddingCipherStreamTest.java
index dc9907f..2638a39 100644
--- a/src/test/java/org/apache/commons/crypto/stream/CTRNoPaddingCipherStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/CTRNoPaddingCipherStreamTest.java
@@ -23,10 +23,9 @@ import org.apache.commons.crypto.cipher.CipherTransformation;
public class CTRNoPaddingCipherStreamTest extends AbstractCipherStreamTest {
- @Override
-public void setUp() throws IOException {
- transformation = CipherTransformation
- .AES_CTR_NOPADDING;
- }
+ @Override
+ public void setUp() throws IOException {
+ transformation = CipherTransformation.AES_CTR_NOPADDING;
+ }
}