Repository: commons-crypto Updated Branches: refs/heads/master 6cbf4e90e -> 0226546f1
Add Javadoc for props to enum so appears in Javadoc and IDE Project: http://git-wip-us.apache.org/repos/asf/commons-crypto/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-crypto/commit/0226546f Tree: http://git-wip-us.apache.org/repos/asf/commons-crypto/tree/0226546f Diff: http://git-wip-us.apache.org/repos/asf/commons-crypto/diff/0226546f Branch: refs/heads/master Commit: 0226546f1b1278f30657dfb5276331d935efc2c8 Parents: 6cbf4e9 Author: Sebb <s...@apache.org> Authored: Wed Jun 29 22:01:03 2016 +0100 Committer: Sebb <s...@apache.org> Committed: Wed Jun 29 22:01:03 2016 +0100 ---------------------------------------------------------------------- .../crypto/cipher/CryptoCipherFactory.java | 14 ++++++++++ .../apache/commons/crypto/cipher/JceCipher.java | 2 ++ .../commons/crypto/cipher/OpensslCipher.java | 2 ++ .../crypto/random/CryptoRandomFactory.java | 28 ++++++++++++++++++-- .../commons/crypto/random/JavaCryptoRandom.java | 2 ++ .../crypto/random/OpensslCryptoRandom.java | 2 ++ .../commons/crypto/random/OsCryptoRandom.java | 2 ++ 7 files changed, 50 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java b/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java index 7c5c558..d9047cd 100644 --- a/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java +++ b/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java @@ -36,11 +36,25 @@ public class CryptoCipherFactory { * <p> * <code> * props.setProperty(CIPHER_CLASSES_KEY, CipherProvider.OPENSSL.getClassName()); + * props.setProperty(...); // if required by the implementation + * cipher = CryptoCipherFactory.getInstance(transformation, props); * </code> */ public enum CipherProvider { + /** + * The OpenSSL cipher implementation (using JNI) + * <p> + * This implementation does not use any properties + */ OPENSSL(OpensslCipher.class), + + /** + * The JCE cipher implementation from the JVM + * <p> + * uses {@link ConfigurationKeys#CIPHER_JCE_PROVIDER_KEY}) as the provider name. + * This is optional + */ JCE(JceCipher.class); private final Class<? extends CryptoCipher> klass; http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java b/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java index 4205b48..d09a65a 100644 --- a/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java +++ b/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java @@ -46,6 +46,8 @@ class JceCipher implements CryptoCipher { * @param transformation transformation for JCE cipher (algorithm/mode/padding) * @throws GeneralSecurityException if JCE cipher initialize failed */ + // N.B. this class is not public/protected so does not appear in the main Javadoc + // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider public JceCipher(Properties props, String transformation) throws GeneralSecurityException { String provider = getJCEProvider(props); http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/cipher/OpensslCipher.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpensslCipher.java b/src/main/java/org/apache/commons/crypto/cipher/OpensslCipher.java index b4366ab..06e3798 100644 --- a/src/main/java/org/apache/commons/crypto/cipher/OpensslCipher.java +++ b/src/main/java/org/apache/commons/crypto/cipher/OpensslCipher.java @@ -50,6 +50,8 @@ class OpensslCipher implements CryptoCipher { * @param transformation transformation for OpenSSL cipher (algorithm/mode/padding) * @throws GeneralSecurityException if OpenSSL cipher initialize failed */ + // N.B. this class is not public/protected so does not appear in the main Javadoc + // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider public OpensslCipher(Properties props, String transformation) // NOPMD throws GeneralSecurityException { this.transformation = transformation; http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java b/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java index 81c18aa..659b9c1 100644 --- a/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java +++ b/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java @@ -35,14 +35,38 @@ public class CryptoRandomFactory { * Usage: * <p> * <code> - * props.setProperty(RANDOM_CLASSES_KEY, RandomProvider.OPENSSL - * .getClassName()); + * props.setProperty(RANDOM_CLASSES_KEY, RandomProvider.OPENSSL.getClassName()); + * props.setProperty(...); // if required by the implementation + * random = CryptoRandomFactory.getCryptoRandom(transformation, props); * </code> */ public enum RandomProvider { + /** + * The OpenSSL Random implementation (using JNI) + * <p> + * No properties are used for configuration, but they + * are passed to the JCE backup implementation (q.v.) + */ OPENSSL(OpensslCryptoRandom.class), + + /** + * The SecureRandom implementation from the JVM + * <p> + * Uses the property with key + * {@link ConfigurationKeys#SECURE_RANDOM_JAVA_ALGORITHM_KEY SECURE_RANDOM_JAVA_ALGORITHM_KEY} + * with the default of + * {@link ConfigurationKeys#SECURE_RANDOM_JAVA_ALGORITHM_DEFAULT SECURE_RANDOM_JAVA_ALGORITHM_DEFAULT} + */ JCE(JavaCryptoRandom.class), + + /** + * The OS random device implementation + * <p> + * Uses {@link ConfigurationKeys#SECURE_RANDOM_DEVICE_FILE_PATH_KEY} to determine the + * path to the random device, default is + * {@link ConfigurationKeys#SECURE_RANDOM_DEVICE_FILE_PATH_DEFAULT} + */ OS(OsCryptoRandom.class); private final Class<? extends CryptoRandom> klass; http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java b/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java index 0d95fc9..39e0d18 100644 --- a/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java +++ b/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java @@ -40,6 +40,8 @@ class JavaCryptoRandom implements CryptoRandom { * @throws NoSuchAlgorithmException if no Provider supports a * SecureRandomSpi implementation for the specified algorithm. */ + // N.B. this class is not public/protected so does not appear in the main Javadoc + // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider public JavaCryptoRandom(Properties properties) throws NoSuchAlgorithmException { instance = SecureRandom http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/random/OpensslCryptoRandom.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/random/OpensslCryptoRandom.java b/src/main/java/org/apache/commons/crypto/random/OpensslCryptoRandom.java index 7401f03..23ab482 100644 --- a/src/main/java/org/apache/commons/crypto/random/OpensslCryptoRandom.java +++ b/src/main/java/org/apache/commons/crypto/random/OpensslCryptoRandom.java @@ -78,6 +78,8 @@ class OpensslCryptoRandom extends Random implements CryptoRandom { * @throws NoSuchAlgorithmException if no Provider supports a * SecureRandomSpi implementation for the specified algorithm. */ + // N.B. this class is not public/protected so does not appear in the main Javadoc + // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider public OpensslCryptoRandom(Properties props) throws NoSuchAlgorithmException { //fallback needs to be initialized here in any case cause even if http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/0226546f/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java b/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java index 6b2fb0c..8ea2add 100644 --- a/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java +++ b/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java @@ -66,6 +66,8 @@ class OsCryptoRandom extends Random implements CryptoRandom { * path to the random device, default is * {@link ConfigurationKeys#SECURE_RANDOM_DEVICE_FILE_PATH_DEFAULT} */ + // N.B. this class is not public/protected so does not appear in the main Javadoc + // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider public OsCryptoRandom(Properties props) { File randomDevFile = new File(getRandomDevPath(props));