org.cryptacular.pbe.OpenSSLAlgorithm Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cryptacular Show documentation
Show all versions of cryptacular Show documentation
The spectacular complement to the Bouncy Castle crypto API for Java.
/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.pbe;
import org.cryptacular.spec.KeyedBlockCipherSpec;
/**
* Describes block ciphers allowed with the OpenSSL password-based encryption scheme.
*
* @author Middleware Services
*/
public enum OpenSSLAlgorithm {
/** AES-128 in CBC mode. */
AES_128_CBC("aes-128-cbc", new KeyedBlockCipherSpec("AES", "CBC", "PKCS5", 128)),
/** AES-192 in CBC mode. */
AES_192_CBC("aes-192-cbc", new KeyedBlockCipherSpec("AES", "CBC", "PKCS5", 192)),
/** AES-256 in CBC mode. */
AES_256_CBC("aes-256-cbc", new KeyedBlockCipherSpec("AES", "CBC", "PKCS5", 256)),
/** DES in CBC mode. */
DES_CBC("des-cbc", new KeyedBlockCipherSpec("DES", "CBC", "PKCS5", 64)),
/** Triple DES in CBC mode. */
DES_EDE3_CBC("des-ede3-cbc", new KeyedBlockCipherSpec("DESede", "CBC", "PKCS5", 192)),
/** 128-bit RC2 in CBC mode. */
RC2_CBC("rc2-cbc", new KeyedBlockCipherSpec("RC2", "CBC", "PKCS5", 128)),
/** 40-bit RC2 in CBC mode. */
RC2_40_CBC("rc2-40-cbc", new KeyedBlockCipherSpec("RC2", "CBC", "PKCS5", 40)),
/** 64-bit RC2 in CBC mode. */
RC2_64_CBC("rc2-64-cbc", new KeyedBlockCipherSpec("RC2", "CBC", "PKCS5", 64));
/** Algorithm identifier, e.g. aes-128-cbc. */
private final String algorithmId;
/** Cipher algorithm specification. */
private final KeyedBlockCipherSpec cipherSpec;
/**
* Creates a new instance with given parameters.
*
* @param algId Algorithm identifier, e.g. aes-128-cbc.
* @param cipherSpec Block cipher specification that corresponds to algorithm ID.
*/
OpenSSLAlgorithm(final String algId, final KeyedBlockCipherSpec cipherSpec)
{
this.algorithmId = algId;
this.cipherSpec = cipherSpec;
}
/** @return OpenSSL algorithm identifier, e.g. aes-128-cbc. */
public String getAlgorithmId()
{
return algorithmId;
}
/** @return Cipher algorithm specification. */
public KeyedBlockCipherSpec getCipherSpec()
{
return cipherSpec;
}
/**
* Converts an OID to the corresponding algorithm specification.
*
* @param algorithmId Algorithm OID.
*
* @return Algorithm spec.
*/
public static OpenSSLAlgorithm fromAlgorithmId(final String algorithmId)
{
for (OpenSSLAlgorithm alg : values()) {
if (alg.getAlgorithmId().equalsIgnoreCase(algorithmId)) {
return alg;
}
}
throw new IllegalArgumentException("Unsupported algorithm " + algorithmId);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy