You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2016/07/01 09:25:41 UTC
commons-crypto git commit: Move examples to test tree
Repository: commons-crypto
Updated Branches:
refs/heads/master b380b8c87 -> 3e7836f2a
Move examples to test tree
Project: http://git-wip-us.apache.org/repos/asf/commons-crypto/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-crypto/commit/3e7836f2
Tree: http://git-wip-us.apache.org/repos/asf/commons-crypto/tree/3e7836f2
Diff: http://git-wip-us.apache.org/repos/asf/commons-crypto/diff/3e7836f2
Branch: refs/heads/master
Commit: 3e7836f2a9e4315e7f1d0429ef0558b1722eb023
Parents: b380b8c
Author: Sebb <se...@apache.org>
Authored: Fri Jul 1 10:25:38 2016 +0100
Committer: Sebb <se...@apache.org>
Committed: Fri Jul 1 10:25:38 2016 +0100
----------------------------------------------------------------------
.../crypto/examples/CipherByteArrayExample.java | 91 ----------------
.../examples/CipherByteBufferExample.java | 107 -------------------
.../commons/crypto/examples/RandomExample.java | 60 -----------
.../commons/crypto/examples/StreamExample.java | 82 --------------
.../commons/crypto/examples/package-info.java | 22 ----
src/site/xdoc/userguide.xml | 8 +-
.../crypto/examples/CipherByteArrayExample.java | 91 ++++++++++++++++
.../examples/CipherByteBufferExample.java | 107 +++++++++++++++++++
.../commons/crypto/examples/RandomExample.java | 60 +++++++++++
.../commons/crypto/examples/StreamExample.java | 82 ++++++++++++++
.../commons/crypto/examples/package-info.java | 22 ++++
11 files changed, 366 insertions(+), 366 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/main/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java b/src/main/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
deleted file mode 100644
index 784b722..0000000
--- a/src/main/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.crypto.examples;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Properties;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.commons.crypto.cipher.CryptoCipher;
-import org.apache.commons.crypto.cipher.CryptoCipherFactory.CipherProvider;
-import org.apache.commons.crypto.utils.Utils;
-import static org.apache.commons.crypto.conf.ConfigurationKeys.CIPHER_CLASSES_KEY;
-
-/**
- * Example showing use of the CryptoCipher API using a byte array
- */
-public class CipherByteArrayExample {
-
- public static void main(String[] args) throws Exception {
-
- final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
- final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
-
- Properties properties = new Properties();
- properties.setProperty(CIPHER_CLASSES_KEY, CipherProvider.OPENSSL.getClassName());
- //Creates a CryptoCipher instance with the transformation and properties.
- final String transform = "AES/CBC/PKCS5Padding";
- CryptoCipher encipher = Utils.getCipherInstance(transform, properties);
- System.out.println("Cipher: " + encipher.getClass().getCanonicalName());
-
- final String sampleInput = "hello world!";
- System.out.println("input: " + sampleInput);
-
- byte[] input = getUTF8Bytes(sampleInput);
- 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.
- int updateBytes = encipher.update(input, 0, input.length, output, 0);
- System.out.println(updateBytes);
- //We must call doFinal at the end of encryption/decryption.
- 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)));
-
- // Now reverse the process using a different implementation with the same settings
- properties.setProperty(CIPHER_CLASSES_KEY, CipherProvider.JCE.getClassName());
- CryptoCipher decipher = Utils.getCipherInstance(transform, properties);
- System.out.println("Cipher: " + encipher.getClass().getCanonicalName());
-
- decipher.init(Cipher.DECRYPT_MODE, key, iv);
- byte [] decoded = new byte[32];
- decipher.doFinal(output, 0, updateBytes + finalBytes, decoded, 0);
-
- System.out.println("output: " + new String(decoded, StandardCharsets.UTF_8));
- }
-
- /**
- * Converts String to UTF8 bytes
- *
- * @param input the input string
- * @return UTF8 bytes
- */
- private static byte[] getUTF8Bytes(String input) {
- return input.getBytes(StandardCharsets.UTF_8);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/main/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java b/src/main/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
deleted file mode 100644
index c515461..0000000
--- a/src/main/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.crypto.examples;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Properties;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.commons.crypto.cipher.CryptoCipher;
-import org.apache.commons.crypto.utils.Utils;
-
-/**
- * Example showing the CryptoCipher API using a ByteBuffer
- */
-public class CipherByteBufferExample {
-
- public static void main(String[] args) throws Exception {
- final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"), "AES");
- final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
- Properties properties = new Properties();
- //Creates a CryptoCipher instance with the transformation and properties.
- final String transform = "AES/CBC/PKCS5Padding";
- final ByteBuffer outBuffer;
- final int bufferSize = 1024;
- final int updateBytes;
- final int finalBytes;
- try (CryptoCipher encipher = Utils.getCipherInstance(transform, properties)) {
-
- ByteBuffer inBuffer = ByteBuffer.allocateDirect(bufferSize);
- outBuffer = ByteBuffer.allocateDirect(bufferSize);
- inBuffer.put(getUTF8Bytes("hello world!"));
-
- inBuffer.flip(); // ready for the cipher to read it
- // Show the data is there
- System.out.println("inBuffer=" + asString(inBuffer));
-
- // 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 buffer.
- updateBytes = encipher.update(inBuffer, outBuffer);
- System.out.println(updateBytes);
-
- // We should call do final at the end of encryption/decryption.
- finalBytes = encipher.doFinal(inBuffer, outBuffer);
- System.out.println(finalBytes);
- }
-
- outBuffer.flip(); // ready for use as decrypt
- byte [] encoded = new byte[updateBytes + finalBytes];
- outBuffer.duplicate().get(encoded);
- System.out.println(Arrays.toString(encoded));
-
- // Now reverse the process
- try (CryptoCipher decipher = Utils.getCipherInstance(transform, properties)) {
- decipher.init(Cipher.DECRYPT_MODE, key, iv);
- ByteBuffer decoded = ByteBuffer.allocateDirect(bufferSize);
- decipher.update(outBuffer, decoded);
- decipher.doFinal(outBuffer, decoded);
- decoded.flip(); // ready for use
- System.out.println("decoded="+asString(decoded));
- }
- }
-
- /**
- * Converts String to UTF8 bytes
- *
- * @param input the input string
- * @return UTF8 bytes
- */
- private static byte[] getUTF8Bytes(String input) {
- return input.getBytes(StandardCharsets.UTF_8);
- }
-
- /**
- * Converts ByteBuffer to String
- *
- * @param buffer input byte buffer
- * @return the converted string
- */
- private static String asString(ByteBuffer buffer) {
- final ByteBuffer copy = buffer.duplicate();
- final byte[] bytes = new byte[Math.min(copy.remaining(),50)];
- copy.get(bytes);
- return new String(bytes, StandardCharsets.UTF_8);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/main/java/org/apache/commons/crypto/examples/RandomExample.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/examples/RandomExample.java b/src/main/java/org/apache/commons/crypto/examples/RandomExample.java
deleted file mode 100644
index 2a9ff41..0000000
--- a/src/main/java/org/apache/commons/crypto/examples/RandomExample.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.crypto.examples;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.util.Arrays;
-import java.util.Properties;
-
-import org.apache.commons.crypto.conf.ConfigurationKeys;
-import org.apache.commons.crypto.random.CryptoRandom;
-import org.apache.commons.crypto.random.CryptoRandomFactory;
-
-/**
- * Example showing use of the CryptoRandom API
- */
-public class RandomExample {
-
- public static void main(String []args) throws GeneralSecurityException, IOException {
- //Constructs a byte array to store random data.
- byte[] key = new byte[16];
- byte[] iv = new byte[32];
-
- Properties properties = new Properties();
- properties.put(ConfigurationKeys.SECURE_RANDOM_CLASSES_KEY,
- CryptoRandomFactory.RandomProvider.OPENSSL.getClassName());
-
- //Gets the 'CryptoRandom' instance.
- CryptoRandom random = CryptoRandomFactory.getCryptoRandom(properties);
-
- // Show the actual class (may be different from the one requested)
- System.out.println(random.getClass().getCanonicalName());
-
- // Generate random bytes and places them into the byte arrays.
- random.nextBytes(key);
- random.nextBytes(iv);
-
- //Closes the CryptoRandom.
- random.close();
-
- // Show the generated output
- System.out.println(Arrays.toString(key));
- System.out.println(Arrays.toString(iv));
- }
-}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/main/java/org/apache/commons/crypto/examples/StreamExample.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/examples/StreamExample.java b/src/main/java/org/apache/commons/crypto/examples/StreamExample.java
deleted file mode 100644
index 372475a..0000000
--- a/src/main/java/org/apache/commons/crypto/examples/StreamExample.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.crypto.examples;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Properties;
-
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.commons.crypto.stream.CryptoInputStream;
-import org.apache.commons.crypto.stream.CryptoOutputStream;
-
-/**
- * Example showing how to use stream encryption and decryption.
- */
-public class StreamExample {
-
- public static void main(String []args) throws IOException {
- final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
- final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
- Properties properties = new Properties();
- final String transform = "AES/CBC/PKCS5Padding";
-
- String input = "hello world!";
- //Encryption with CryptoOutputStream.
-
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-
- try (CryptoOutputStream cos = new CryptoOutputStream(transform, properties, outputStream, key, iv)) {
- cos.write(getUTF8Bytes(input));
- cos.flush();
- }
-
- // The encrypted data:
- System.out.println("Encrypted: "+Arrays.toString(outputStream.toByteArray()));
-
- // Decryption with CryptoInputStream.
- InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
-
- try (CryptoInputStream cis = new CryptoInputStream(transform, properties, inputStream, key, iv)) {
- byte[] decryptedData = new byte[1024];
- int decryptedLen = 0;
- int i;
- while ((i = cis.read(decryptedData, decryptedLen, decryptedData.length - decryptedLen)) > -1) {
- decryptedLen += i;
- }
- System.out.println("Decrypted: "+new String(decryptedData, 0, decryptedLen, StandardCharsets.UTF_8));
- }
- }
-
- /**
- * Converts String to UTF8 bytes
- *
- * @param input the input string
- * @return UTF8 bytes
- */
- private static byte[] getUTF8Bytes(String input) {
- return input.getBytes(StandardCharsets.UTF_8);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/main/java/org/apache/commons/crypto/examples/package-info.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/examples/package-info.java b/src/main/java/org/apache/commons/crypto/examples/package-info.java
deleted file mode 100644
index 6f9c541..0000000
--- a/src/main/java/org/apache/commons/crypto/examples/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Example classes
- */
-package org.apache.commons.crypto.examples;
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/site/xdoc/userguide.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/userguide.xml b/src/site/xdoc/userguide.xml
index b4715c3..41b1d7d 100644
--- a/src/site/xdoc/userguide.xml
+++ b/src/site/xdoc/userguide.xml
@@ -82,7 +82,7 @@
for accelerating the random generation.
</p>
- <a href="xref/org/apache/commons/crypto/examples/RandomExample.html">RandomExample.java</a>
+ <a href="xref-test/org/apache/commons/crypto/examples/RandomExample.html">RandomExample.java</a>
<h4>Usage of Cipher API</h4>
<p>
@@ -93,11 +93,11 @@
</p>
<h5>Usage of Byte Array Encryption/Decryption</h5>
- <a href="xref/org/apache/commons/crypto/examples/CipherByteArrayExample.html">CipherByteArrayExample.java</a>
+ <a href="xref-test/org/apache/commons/crypto/examples/CipherByteArrayExample.html">CipherByteArrayExample.java</a>
<h5>Usage of ByteBuffer Encryption/Decryption</h5>
- <a href="xref/org/apache/commons/crypto/examples/CipherByteBufferExample.html">CipherByteBufferExample.java</a>
+ <a href="xref-test/org/apache/commons/crypto/examples/CipherByteBufferExample.html">CipherByteBufferExample.java</a>
<h4>Usage of Stream API</h4>
@@ -108,7 +108,7 @@
</p>
<h5>Usage of stream encryption/decryption</h5>
- <a href="xref/org/apache/commons/crypto/examples/StreamExample.html">StreamExample.java</a>
+ <a href="xref-test/org/apache/commons/crypto/examples/StreamExample.html">StreamExample.java</a>
</subsection>
</section>
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java b/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
new file mode 100644
index 0000000..784b722
--- /dev/null
+++ b/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
@@ -0,0 +1,91 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.crypto.examples;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Properties;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import org.apache.commons.crypto.cipher.CryptoCipher;
+import org.apache.commons.crypto.cipher.CryptoCipherFactory.CipherProvider;
+import org.apache.commons.crypto.utils.Utils;
+import static org.apache.commons.crypto.conf.ConfigurationKeys.CIPHER_CLASSES_KEY;
+
+/**
+ * Example showing use of the CryptoCipher API using a byte array
+ */
+public class CipherByteArrayExample {
+
+ public static void main(String[] args) throws Exception {
+
+ final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
+ final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
+
+ Properties properties = new Properties();
+ properties.setProperty(CIPHER_CLASSES_KEY, CipherProvider.OPENSSL.getClassName());
+ //Creates a CryptoCipher instance with the transformation and properties.
+ final String transform = "AES/CBC/PKCS5Padding";
+ CryptoCipher encipher = Utils.getCipherInstance(transform, properties);
+ System.out.println("Cipher: " + encipher.getClass().getCanonicalName());
+
+ final String sampleInput = "hello world!";
+ System.out.println("input: " + sampleInput);
+
+ byte[] input = getUTF8Bytes(sampleInput);
+ 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.
+ int updateBytes = encipher.update(input, 0, input.length, output, 0);
+ System.out.println(updateBytes);
+ //We must call doFinal at the end of encryption/decryption.
+ 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)));
+
+ // Now reverse the process using a different implementation with the same settings
+ properties.setProperty(CIPHER_CLASSES_KEY, CipherProvider.JCE.getClassName());
+ CryptoCipher decipher = Utils.getCipherInstance(transform, properties);
+ System.out.println("Cipher: " + encipher.getClass().getCanonicalName());
+
+ decipher.init(Cipher.DECRYPT_MODE, key, iv);
+ byte [] decoded = new byte[32];
+ decipher.doFinal(output, 0, updateBytes + finalBytes, decoded, 0);
+
+ System.out.println("output: " + new String(decoded, StandardCharsets.UTF_8));
+ }
+
+ /**
+ * Converts String to UTF8 bytes
+ *
+ * @param input the input string
+ * @return UTF8 bytes
+ */
+ private static byte[] getUTF8Bytes(String input) {
+ return input.getBytes(StandardCharsets.UTF_8);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java b/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
new file mode 100644
index 0000000..c515461
--- /dev/null
+++ b/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
@@ -0,0 +1,107 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.crypto.examples;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Properties;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import org.apache.commons.crypto.cipher.CryptoCipher;
+import org.apache.commons.crypto.utils.Utils;
+
+/**
+ * Example showing the CryptoCipher API using a ByteBuffer
+ */
+public class CipherByteBufferExample {
+
+ public static void main(String[] args) throws Exception {
+ final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"), "AES");
+ final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
+ Properties properties = new Properties();
+ //Creates a CryptoCipher instance with the transformation and properties.
+ final String transform = "AES/CBC/PKCS5Padding";
+ final ByteBuffer outBuffer;
+ final int bufferSize = 1024;
+ final int updateBytes;
+ final int finalBytes;
+ try (CryptoCipher encipher = Utils.getCipherInstance(transform, properties)) {
+
+ ByteBuffer inBuffer = ByteBuffer.allocateDirect(bufferSize);
+ outBuffer = ByteBuffer.allocateDirect(bufferSize);
+ inBuffer.put(getUTF8Bytes("hello world!"));
+
+ inBuffer.flip(); // ready for the cipher to read it
+ // Show the data is there
+ System.out.println("inBuffer=" + asString(inBuffer));
+
+ // 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 buffer.
+ updateBytes = encipher.update(inBuffer, outBuffer);
+ System.out.println(updateBytes);
+
+ // We should call do final at the end of encryption/decryption.
+ finalBytes = encipher.doFinal(inBuffer, outBuffer);
+ System.out.println(finalBytes);
+ }
+
+ outBuffer.flip(); // ready for use as decrypt
+ byte [] encoded = new byte[updateBytes + finalBytes];
+ outBuffer.duplicate().get(encoded);
+ System.out.println(Arrays.toString(encoded));
+
+ // Now reverse the process
+ try (CryptoCipher decipher = Utils.getCipherInstance(transform, properties)) {
+ decipher.init(Cipher.DECRYPT_MODE, key, iv);
+ ByteBuffer decoded = ByteBuffer.allocateDirect(bufferSize);
+ decipher.update(outBuffer, decoded);
+ decipher.doFinal(outBuffer, decoded);
+ decoded.flip(); // ready for use
+ System.out.println("decoded="+asString(decoded));
+ }
+ }
+
+ /**
+ * Converts String to UTF8 bytes
+ *
+ * @param input the input string
+ * @return UTF8 bytes
+ */
+ private static byte[] getUTF8Bytes(String input) {
+ return input.getBytes(StandardCharsets.UTF_8);
+ }
+
+ /**
+ * Converts ByteBuffer to String
+ *
+ * @param buffer input byte buffer
+ * @return the converted string
+ */
+ private static String asString(ByteBuffer buffer) {
+ final ByteBuffer copy = buffer.duplicate();
+ final byte[] bytes = new byte[Math.min(copy.remaining(),50)];
+ copy.get(bytes);
+ return new String(bytes, StandardCharsets.UTF_8);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/test/java/org/apache/commons/crypto/examples/RandomExample.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/examples/RandomExample.java b/src/test/java/org/apache/commons/crypto/examples/RandomExample.java
new file mode 100644
index 0000000..2a9ff41
--- /dev/null
+++ b/src/test/java/org/apache/commons/crypto/examples/RandomExample.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.crypto.examples;
+
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+import java.util.Arrays;
+import java.util.Properties;
+
+import org.apache.commons.crypto.conf.ConfigurationKeys;
+import org.apache.commons.crypto.random.CryptoRandom;
+import org.apache.commons.crypto.random.CryptoRandomFactory;
+
+/**
+ * Example showing use of the CryptoRandom API
+ */
+public class RandomExample {
+
+ public static void main(String []args) throws GeneralSecurityException, IOException {
+ //Constructs a byte array to store random data.
+ byte[] key = new byte[16];
+ byte[] iv = new byte[32];
+
+ Properties properties = new Properties();
+ properties.put(ConfigurationKeys.SECURE_RANDOM_CLASSES_KEY,
+ CryptoRandomFactory.RandomProvider.OPENSSL.getClassName());
+
+ //Gets the 'CryptoRandom' instance.
+ CryptoRandom random = CryptoRandomFactory.getCryptoRandom(properties);
+
+ // Show the actual class (may be different from the one requested)
+ System.out.println(random.getClass().getCanonicalName());
+
+ // Generate random bytes and places them into the byte arrays.
+ random.nextBytes(key);
+ random.nextBytes(iv);
+
+ //Closes the CryptoRandom.
+ random.close();
+
+ // Show the generated output
+ System.out.println(Arrays.toString(key));
+ System.out.println(Arrays.toString(iv));
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/test/java/org/apache/commons/crypto/examples/StreamExample.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/examples/StreamExample.java b/src/test/java/org/apache/commons/crypto/examples/StreamExample.java
new file mode 100644
index 0000000..372475a
--- /dev/null
+++ b/src/test/java/org/apache/commons/crypto/examples/StreamExample.java
@@ -0,0 +1,82 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.crypto.examples;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Properties;
+
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import org.apache.commons.crypto.stream.CryptoInputStream;
+import org.apache.commons.crypto.stream.CryptoOutputStream;
+
+/**
+ * Example showing how to use stream encryption and decryption.
+ */
+public class StreamExample {
+
+ public static void main(String []args) throws IOException {
+ final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
+ final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
+ Properties properties = new Properties();
+ final String transform = "AES/CBC/PKCS5Padding";
+
+ String input = "hello world!";
+ //Encryption with CryptoOutputStream.
+
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+ try (CryptoOutputStream cos = new CryptoOutputStream(transform, properties, outputStream, key, iv)) {
+ cos.write(getUTF8Bytes(input));
+ cos.flush();
+ }
+
+ // The encrypted data:
+ System.out.println("Encrypted: "+Arrays.toString(outputStream.toByteArray()));
+
+ // Decryption with CryptoInputStream.
+ InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+
+ try (CryptoInputStream cis = new CryptoInputStream(transform, properties, inputStream, key, iv)) {
+ byte[] decryptedData = new byte[1024];
+ int decryptedLen = 0;
+ int i;
+ while ((i = cis.read(decryptedData, decryptedLen, decryptedData.length - decryptedLen)) > -1) {
+ decryptedLen += i;
+ }
+ System.out.println("Decrypted: "+new String(decryptedData, 0, decryptedLen, StandardCharsets.UTF_8));
+ }
+ }
+
+ /**
+ * Converts String to UTF8 bytes
+ *
+ * @param input the input string
+ * @return UTF8 bytes
+ */
+ private static byte[] getUTF8Bytes(String input) {
+ return input.getBytes(StandardCharsets.UTF_8);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/3e7836f2/src/test/java/org/apache/commons/crypto/examples/package-info.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/examples/package-info.java b/src/test/java/org/apache/commons/crypto/examples/package-info.java
new file mode 100644
index 0000000..6f9c541
--- /dev/null
+++ b/src/test/java/org/apache/commons/crypto/examples/package-info.java
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Example classes
+ */
+package org.apache.commons.crypto.examples;