diff options
Diffstat (limited to 'prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric')
49 files changed, 0 insertions, 8522 deletions
diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java deleted file mode 100644 index 244342b1..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java +++ /dev/null @@ -1,651 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.bc.BCObjectIdentifiers; -import org.bouncycastle.asn1.cms.GCMParameters; -import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.BufferedBlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.AESFastEngine; -import org.bouncycastle.crypto.engines.AESWrapEngine; -import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -import org.bouncycastle.crypto.engines.RFC5649WrapEngine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.CMac; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.CFBBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.crypto.modes.OFBBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Integers; - -public final class AES -{ - private static final Class gcmSpecClass = lookup("javax.crypto.spec.GCMParameterSpec"); - - private AES() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new AESFastEngine(); - } - }); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new AESFastEngine()), 128); - } - } - - static public class CFB - extends BaseBlockCipher - { - public CFB() - { - super(new BufferedBlockCipher(new CFBBlockCipher(new AESFastEngine(), 128)), 128); - } - } - - static public class OFB - extends BaseBlockCipher - { - public OFB() - { - super(new BufferedBlockCipher(new OFBBlockCipher(new AESFastEngine(), 128)), 128); - } - } - - static public class GCM - extends BaseBlockCipher - { - public GCM() - { - super(new GCMBlockCipher(new AESFastEngine())); - } - } - - public static class AESCMAC - extends BaseMac - { - public AESCMAC() - { - super(new CMac(new AESFastEngine())); - } - } - - public static class AESGMAC - extends BaseMac - { - public AESGMAC() - { - super(new GMac(new GCMBlockCipher(new AESFastEngine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new AESFastEngine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-AES", 256, new Poly1305KeyGenerator()); - } - } - - static public class Wrap - extends BaseWrapCipher - { - public Wrap() - { - super(new AESWrapEngine()); - } - } - - public static class RFC3211Wrap - extends BaseWrapCipher - { - public RFC3211Wrap() - { - super(new RFC3211WrapEngine(new AESFastEngine()), 16); - } - } - - public static class RFC5649Wrap - extends BaseWrapCipher - { - public RFC5649Wrap() - { - super(new RFC5649WrapEngine(new AESFastEngine())); - } - } - - /** - * PBEWithAES-CBC - */ - static public class PBEWithAESCBC - extends BaseBlockCipher - { - public PBEWithAESCBC() - { - super(new CBCBlockCipher(new AESFastEngine())); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - this(192); - } - - public KeyGen(int keySize) - { - super("AES", keySize, new CipherKeyGenerator()); - } - } - - public static class KeyGen128 - extends KeyGen - { - public KeyGen128() - { - super(128); - } - } - - public static class KeyGen192 - extends KeyGen - { - public KeyGen192() - { - super(192); - } - } - - public static class KeyGen256 - extends KeyGen - { - public KeyGen256() - { - super(256); - } - } - - /** - * PBEWithSHA1And128BitAES-BC - */ - static public class PBEWithSHAAnd128BitAESBC - extends PBESecretKeyFactory - { - public PBEWithSHAAnd128BitAESBC() - { - super("PBEWithSHA1And128BitAES-CBC-BC", null, true, PKCS12, SHA1, 128, 128); - } - } - - /** - * PBEWithSHA1And192BitAES-BC - */ - static public class PBEWithSHAAnd192BitAESBC - extends PBESecretKeyFactory - { - public PBEWithSHAAnd192BitAESBC() - { - super("PBEWithSHA1And192BitAES-CBC-BC", null, true, PKCS12, SHA1, 192, 128); - } - } - - /** - * PBEWithSHA1And256BitAES-BC - */ - static public class PBEWithSHAAnd256BitAESBC - extends PBESecretKeyFactory - { - public PBEWithSHAAnd256BitAESBC() - { - super("PBEWithSHA1And256BitAES-CBC-BC", null, true, PKCS12, SHA1, 256, 128); - } - } - - /** - * PBEWithSHA256And128BitAES-BC - */ - static public class PBEWithSHA256And128BitAESBC - extends PBESecretKeyFactory - { - public PBEWithSHA256And128BitAESBC() - { - super("PBEWithSHA256And128BitAES-CBC-BC", null, true, PKCS12, SHA256, 128, 128); - } - } - - /** - * PBEWithSHA256And192BitAES-BC - */ - static public class PBEWithSHA256And192BitAESBC - extends PBESecretKeyFactory - { - public PBEWithSHA256And192BitAESBC() - { - super("PBEWithSHA256And192BitAES-CBC-BC", null, true, PKCS12, SHA256, 192, 128); - } - } - - /** - * PBEWithSHA256And256BitAES-BC - */ - static public class PBEWithSHA256And256BitAESBC - extends PBESecretKeyFactory - { - public PBEWithSHA256And256BitAESBC() - { - super("PBEWithSHA256And256BitAES-CBC-BC", null, true, PKCS12, SHA256, 256, 128); - } - } - - /** - * PBEWithMD5And128BitAES-OpenSSL - */ - static public class PBEWithMD5And128BitAESCBCOpenSSL - extends PBESecretKeyFactory - { - public PBEWithMD5And128BitAESCBCOpenSSL() - { - super("PBEWithMD5And128BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 128, 128); - } - } - - /** - * PBEWithMD5And192BitAES-OpenSSL - */ - static public class PBEWithMD5And192BitAESCBCOpenSSL - extends PBESecretKeyFactory - { - public PBEWithMD5And192BitAESCBCOpenSSL() - { - super("PBEWithMD5And192BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 192, 128); - } - } - - /** - * PBEWithMD5And256BitAES-OpenSSL - */ - static public class PBEWithMD5And256BitAESCBCOpenSSL - extends PBESecretKeyFactory - { - public PBEWithMD5And256BitAESCBCOpenSSL() - { - super("PBEWithMD5And256BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 256, 128); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[16]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "AES IV"; - } - } - - public static class AlgParamsGCM - extends BaseAlgorithmParameters - { - private GCMParameters gcmParams; - - protected void engineInit(AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (gcmSpecClass != null) - { - try - { - Method tLen = gcmSpecClass.getDeclaredMethod("getTLen", new Class[0]); - Method iv= gcmSpecClass.getDeclaredMethod("getIV", new Class[0]); - - - gcmParams = new GCMParameters((byte[])iv.invoke(paramSpec, new Object[0]), ((Integer)tLen.invoke(paramSpec, new Object[0])).intValue()); - } - catch (Exception e) - { - throw new InvalidParameterSpecException("Cannot process GCMParameterSpec."); - } - } - } - - protected void engineInit(byte[] params) - throws IOException - { - gcmParams = GCMParameters.getInstance(params); - } - - protected void engineInit(byte[] params, String format) - throws IOException - { - if (!isASN1FormatString(format)) - { - throw new IOException("unknown format specified"); - } - - gcmParams = GCMParameters.getInstance(params); - } - - protected byte[] engineGetEncoded() - throws IOException - { - return gcmParams.getEncoded(); - } - - protected byte[] engineGetEncoded(String format) - throws IOException - { - if (!isASN1FormatString(format)) - { - throw new IOException("unknown format specified"); - } - - return gcmParams.getEncoded(); - } - - protected String engineToString() - { - return "GCM"; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec(Class paramSpec) - throws InvalidParameterSpecException - { - if (gcmSpecClass != null) - { - try - { - Constructor constructor = gcmSpecClass.getConstructor(new Class[] { Integer.TYPE, byte[].class }); - - return (AlgorithmParameterSpec)constructor.newInstance(new Object[] { Integers.valueOf(gcmParams.getIcvLen()), gcmParams.getNonce() }); - } - catch (NoSuchMethodException e) - { - throw new InvalidParameterSpecException("no constructor found!"); // should never happen - } - catch (Exception e) - { - throw new InvalidParameterSpecException("construction failed: " + e.getMessage()); // should never happen - } - } - - throw new InvalidParameterSpecException("unknown parameter spec: " + paramSpec.getName()); - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = AES.class.getName(); - - /** - * These three got introduced in some messages as a result of a typo in an - * early document. We don't produce anything using these OID values, but we'll - * read them. - */ - private static final String wrongAES128 = "2.16.840.1.101.3.4.2"; - private static final String wrongAES192 = "2.16.840.1.101.3.4.22"; - private static final String wrongAES256 = "2.16.840.1.101.3.4.42"; - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("AlgorithmParameters.AES", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES128, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES192, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES256, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); - - provider.addAlgorithm("AlgorithmParameters.GCM", PREFIX + "$AlgParamsGCM"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_GCM, "GCM"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_GCM, "GCM"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_GCM, "GCM"); - - provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); - - provider.addAlgorithm("Cipher.AES", PREFIX + "$ECB"); - provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES128, "AES"); - provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES192, "AES"); - provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES256, "AES"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB"); - provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB"); - provider.addAlgorithm("Cipher.AESWRAP", PREFIX + "$Wrap"); - provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP"); - provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP"); - provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP"); - - provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap"); - provider.addAlgorithm("Cipher.AESRFC5649WRAP", PREFIX + "$RFC5649Wrap"); - - provider.addAlgorithm("Cipher.GCM", PREFIX + "$GCM"); - provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_GCM, "GCM"); - provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_GCM, "GCM"); - provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_GCM, "GCM"); - - provider.addAlgorithm("KeyGenerator.AES", PREFIX + "$KeyGen"); - provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256"); - provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256"); - - provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC"); - - provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PBEWITHSHAAND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); - - provider.addAlgorithm("Cipher.PBEWITHSHAAND128BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHSHAAND192BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHSHAAND256BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHSHA256AND128BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHSHA256AND192BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHSHA256AND256BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); - - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND128BITAES-CBC-BC","PBEWITHSHA256AND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND192BITAES-CBC-BC","PBEWITHSHA256AND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND256BITAES-CBC-BC","PBEWITHSHA256AND256BITAES-CBC-BC"); - - provider.addAlgorithm("Cipher.PBEWITHMD5AND128BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHMD5AND192BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); - provider.addAlgorithm("Cipher.PBEWITHMD5AND256BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); - - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND128BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And128BitAESCBCOpenSSL"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND192BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And192BitAESCBCOpenSSL"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND256BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And256BitAESCBCOpenSSL"); - - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd128BitAESBC"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND192BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd192BitAESBC"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND256BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd256BitAESBC"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND128BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And128BitAESBC"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND192BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And192BitAESBC"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND256BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And256BitAESBC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND128BITAES-CBC-BC","PBEWITHSHA256AND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND192BITAES-CBC-BC","PBEWITHSHA256AND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND256BITAES-CBC-BC","PBEWITHSHA256AND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PBEWITHSHAAND256BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITAES-CBC-BC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND192BITAES-CBC-BC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND256BITAES-CBC-BC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND128BITAES-CBC-BC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND192BITAES-CBC-BC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND256BITAES-CBC-BC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND128BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND192BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND256BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND128BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND192BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND256BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND128BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND192BITAES-CBC-BC","PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND256BITAES-CBC-BC","PKCS12PBE"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); - - addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128"); - addPoly1305Algorithm(provider, "AES", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } - - private static Class lookup(String className) - { - try - { - Class def = AES.class.getClassLoader().loadClass(className); - - return def; - } - catch (Exception e) - { - return null; - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ARC4.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ARC4.java deleted file mode 100644 index e31ab296..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ARC4.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.RC4Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class ARC4 -{ - private ARC4() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new RC4Engine(), 0); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("RC4", 128, new CipherKeyGenerator()); - } - } - - /** - * PBEWithSHAAnd128BitRC4 - */ - static public class PBEWithSHAAnd128BitKeyFactory - extends PBESecretKeyFactory - { - public PBEWithSHAAnd128BitKeyFactory() - { - super("PBEWithSHAAnd128BitRC4", PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, true, PKCS12, SHA1, 128, 0); - } - } - - /** - * PBEWithSHAAnd40BitRC4 - */ - static public class PBEWithSHAAnd40BitKeyFactory - extends PBESecretKeyFactory - { - public PBEWithSHAAnd40BitKeyFactory() - { - super("PBEWithSHAAnd128BitRC4", PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, true, PKCS12, SHA1, 40, 0); - } - } - - - /** - * PBEWithSHAAnd128BitRC4 - */ - static public class PBEWithSHAAnd128Bit - extends BaseStreamCipher - { - public PBEWithSHAAnd128Bit() - { - super(new RC4Engine(), 0); - } - } - - /** - * PBEWithSHAAnd40BitRC4 - */ - static public class PBEWithSHAAnd40Bit - extends BaseStreamCipher - { - public PBEWithSHAAnd40Bit() - { - super(new RC4Engine(), 0); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = ARC4.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.ARC4", PREFIX + "$Base"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.rc4, "ARC4"); - provider.addAlgorithm("Alg.Alias.Cipher.ARCFOUR", "ARC4"); - provider.addAlgorithm("Alg.Alias.Cipher.RC4", "ARC4"); - provider.addAlgorithm("KeyGenerator.ARC4", PREFIX + "$KeyGen"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.RC4", "ARC4"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.1.2.840.113549.3.4", "ARC4"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITRC4", PREFIX + "$PBEWithSHAAnd128BitKeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND40BITRC4", PREFIX + "$PBEWithSHAAnd40BitKeyFactory"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4, "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC4", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC4", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC4", "PKCS12PBE"); - provider.addAlgorithm("Cipher.PBEWITHSHAAND128BITRC4", PREFIX + "$PBEWithSHAAnd128Bit"); - provider.addAlgorithm("Cipher.PBEWITHSHAAND40BITRC4", PREFIX + "$PBEWithSHAAnd40Bit"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, "PBEWITHSHAAND128BITRC4"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4, "PBEWITHSHAAND40BITRC4"); - - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC4", "PBEWITHSHAAND128BITRC4"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC4", "PBEWITHSHAAND40BITRC4"); - - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, "PBEWITHSHAAND128BITRC4"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4, "PBEWITHSHAAND40BITRC4"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java deleted file mode 100644 index 76949344..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.BlowfishEngine; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Blowfish -{ - private Blowfish() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlowfishEngine()); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new BlowfishEngine()), 64); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Blowfish", 128, new CipherKeyGenerator()); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Blowfish IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Blowfish.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.BLOWFISH", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher.1.3.6.1.4.1.3029.1.2", PREFIX + "$CBC"); - provider.addAlgorithm("KeyGenerator.BLOWFISH", PREFIX + "$KeyGen"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.1.3.6.1.4.1.3029.1.2", "BLOWFISH"); - provider.addAlgorithm("AlgorithmParameters.BLOWFISH", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.3.6.1.4.1.3029.1.2", "BLOWFISH"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/CAST5.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/CAST5.java deleted file mode 100644 index f360a41f..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/CAST5.java +++ /dev/null @@ -1,221 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.misc.CAST5CBCParameters; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.CAST5Engine; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class CAST5 -{ - private CAST5() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new CAST5Engine()); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new CAST5Engine()), 64); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("CAST5", 128, new CipherKeyGenerator()); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for CAST5 parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[8]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("CAST5", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends BaseAlgorithmParameters - { - private byte[] iv; - private int keyLength = 128; - - protected byte[] engineGetEncoded() - { - byte[] tmp = new byte[iv.length]; - - System.arraycopy(iv, 0, tmp, 0, iv.length); - return tmp; - } - - protected byte[] engineGetEncoded( - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - return new CAST5CBCParameters(engineGetEncoded(), keyLength).getEncoded(); - } - - if (format.equals("RAW")) - { - return engineGetEncoded(); - } - - - return null; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == IvParameterSpec.class) - { - return new IvParameterSpec(iv); - } - - throw new InvalidParameterSpecException("unknown parameter spec passed to CAST5 parameters object."); - } - - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec instanceof IvParameterSpec) - { - this.iv = ((IvParameterSpec)paramSpec).getIV(); - } - else - { - throw new InvalidParameterSpecException("IvParameterSpec required to initialise a CAST5 parameters algorithm parameters object"); - } - } - - protected void engineInit( - byte[] params) - throws IOException - { - this.iv = new byte[params.length]; - - System.arraycopy(params, 0, iv, 0, iv.length); - } - - protected void engineInit( - byte[] params, - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - ASN1InputStream aIn = new ASN1InputStream(params); - CAST5CBCParameters p = CAST5CBCParameters.getInstance(aIn.readObject()); - - keyLength = p.getKeyLength(); - - iv = p.getIV(); - - return; - } - - if (format.equals("RAW")) - { - engineInit(params); - return; - } - - throw new IOException("Unknown parameters format in IV parameters object"); - } - - protected String engineToString() - { - return "CAST5 Parameters"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = CAST5.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("AlgorithmParameters.CAST5", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.2.840.113533.7.66.10", "CAST5"); - - provider.addAlgorithm("AlgorithmParameterGenerator.CAST5", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator.1.2.840.113533.7.66.10", "CAST5"); - - provider.addAlgorithm("Cipher.CAST5", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher.1.2.840.113533.7.66.10", PREFIX + "$CBC"); - - provider.addAlgorithm("KeyGenerator.CAST5", PREFIX + "$KeyGen"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.1.2.840.113533.7.66.10", "CAST5"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/CAST6.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/CAST6.java deleted file mode 100644 index d16e6c76..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/CAST6.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.CAST6Engine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; - -public final class CAST6 -{ - private CAST6() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new CAST6Engine(); - } - }); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("CAST6", 256, new CipherKeyGenerator()); - } - } - - public static class GMAC - extends BaseMac - { - public GMAC() - { - super(new GMac(new GCMBlockCipher(new CAST6Engine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new CAST6Engine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-CAST6", 256, new Poly1305KeyGenerator()); - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = CAST6.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.CAST6", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.CAST6", PREFIX + "$KeyGen"); - - addGMacAlgorithm(provider, "CAST6", PREFIX + "$GMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "CAST6", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Camellia.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Camellia.java deleted file mode 100644 index 95b51567..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Camellia.java +++ /dev/null @@ -1,238 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.ntt.NTTObjectIdentifiers; -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.CamelliaEngine; -import org.bouncycastle.crypto.engines.CamelliaWrapEngine; -import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class Camellia -{ - private Camellia() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new CamelliaEngine(); - } - }); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new CamelliaEngine()), 128); - } - } - - public static class Wrap - extends BaseWrapCipher - { - public Wrap() - { - super(new CamelliaWrapEngine()); - } - } - - public static class RFC3211Wrap - extends BaseWrapCipher - { - public RFC3211Wrap() - { - super(new RFC3211WrapEngine(new CamelliaEngine()), 16); - } - } - - public static class GMAC - extends BaseMac - { - public GMAC() - { - super(new GMac(new GCMBlockCipher(new CamelliaEngine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new CamelliaEngine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-Camellia", 256, new Poly1305KeyGenerator()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - this(256); - } - - public KeyGen(int keySize) - { - super("Camellia", keySize, new CipherKeyGenerator()); - } - } - - public static class KeyGen128 - extends KeyGen - { - public KeyGen128() - { - super(128); - } - } - - public static class KeyGen192 - extends KeyGen - { - public KeyGen192() - { - super(192); - } - } - - public static class KeyGen256 - extends KeyGen - { - public KeyGen256() - { - super(256); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for Camellia parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[16]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("Camellia", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Camellia IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = Camellia.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("AlgorithmParameters.CAMELLIA", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NTTObjectIdentifiers.id_camellia128_cbc, "CAMELLIA"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NTTObjectIdentifiers.id_camellia192_cbc, "CAMELLIA"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NTTObjectIdentifiers.id_camellia256_cbc, "CAMELLIA"); - - provider.addAlgorithm("AlgorithmParameterGenerator.CAMELLIA", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NTTObjectIdentifiers.id_camellia128_cbc, "CAMELLIA"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NTTObjectIdentifiers.id_camellia192_cbc, "CAMELLIA"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NTTObjectIdentifiers.id_camellia256_cbc, "CAMELLIA"); - - provider.addAlgorithm("Cipher.CAMELLIA", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + NTTObjectIdentifiers.id_camellia128_cbc, PREFIX + "$CBC"); - provider.addAlgorithm("Cipher." + NTTObjectIdentifiers.id_camellia192_cbc, PREFIX + "$CBC"); - provider.addAlgorithm("Cipher." + NTTObjectIdentifiers.id_camellia256_cbc, PREFIX + "$CBC"); - - provider.addAlgorithm("Cipher.CAMELLIARFC3211WRAP", PREFIX + "$RFC3211Wrap"); - provider.addAlgorithm("Cipher.CAMELLIAWRAP", PREFIX + "$Wrap"); - provider.addAlgorithm("Alg.Alias.Cipher." + NTTObjectIdentifiers.id_camellia128_wrap, "CAMELLIAWRAP"); - provider.addAlgorithm("Alg.Alias.Cipher." + NTTObjectIdentifiers.id_camellia192_wrap, "CAMELLIAWRAP"); - provider.addAlgorithm("Alg.Alias.Cipher." + NTTObjectIdentifiers.id_camellia256_wrap, "CAMELLIAWRAP"); - - provider.addAlgorithm("KeyGenerator.CAMELLIA", PREFIX + "$KeyGen"); - provider.addAlgorithm("KeyGenerator." + NTTObjectIdentifiers.id_camellia128_wrap, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NTTObjectIdentifiers.id_camellia192_wrap, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NTTObjectIdentifiers.id_camellia256_wrap, PREFIX + "$KeyGen256"); - provider.addAlgorithm("KeyGenerator." + NTTObjectIdentifiers.id_camellia128_cbc, PREFIX + "$KeyGen128"); - provider.addAlgorithm("KeyGenerator." + NTTObjectIdentifiers.id_camellia192_cbc, PREFIX + "$KeyGen192"); - provider.addAlgorithm("KeyGenerator." + NTTObjectIdentifiers.id_camellia256_cbc, PREFIX + "$KeyGen256"); - - addGMacAlgorithm(provider, "CAMELLIA", PREFIX + "$GMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "CAMELLIA", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ChaCha.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ChaCha.java deleted file mode 100644 index ff748ae4..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ChaCha.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.ChaChaEngine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class ChaCha -{ - private ChaCha() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new ChaChaEngine(), 8); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("ChaCha", 128, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = ChaCha.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.CHACHA", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.CHACHA", PREFIX + "$KeyGen"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java deleted file mode 100644 index f3411950..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java +++ /dev/null @@ -1,505 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; - -import javax.crypto.SecretKey; -import javax.crypto.spec.DESKeySpec; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.KeyGenerationParameters; -import org.bouncycastle.crypto.engines.DESEngine; -import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -import org.bouncycastle.crypto.generators.DESKeyGenerator; -import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -import org.bouncycastle.crypto.macs.CMac; -import org.bouncycastle.crypto.macs.ISO9797Alg3Mac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.paddings.ISO7816d4Padding; -import org.bouncycastle.crypto.params.DESParameters; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseSecretKeyFactory; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.PBE; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class DES -{ - private DES() - { - } - - static public class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new DESEngine()); - } - } - - static public class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new DESEngine()), 64); - } - } - - /** - * DES CFB8 - */ - public static class DESCFB8 - extends BaseMac - { - public DESCFB8() - { - super(new CFBBlockCipherMac(new DESEngine())); - } - } - - /** - * DES64 - */ - public static class DES64 - extends BaseMac - { - public DES64() - { - super(new CBCBlockCipherMac(new DESEngine(), 64)); - } - } - - /** - * DES64with7816-4Padding - */ - public static class DES64with7816d4 - extends BaseMac - { - public DES64with7816d4() - { - super(new CBCBlockCipherMac(new DESEngine(), 64, new ISO7816d4Padding())); - } - } - - public static class CBCMAC - extends BaseMac - { - public CBCMAC() - { - super(new CBCBlockCipherMac(new DESEngine())); - } - } - - static public class CMAC - extends BaseMac - { - public CMAC() - { - super(new CMac(new DESEngine())); - } - } - - /** - * DES9797Alg3with7816-4Padding - */ - public static class DES9797Alg3with7816d4 - extends BaseMac - { - public DES9797Alg3with7816d4() - { - super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding())); - } - } - - /** - * DES9797Alg3 - */ - public static class DES9797Alg3 - extends BaseMac - { - public DES9797Alg3() - { - super(new ISO9797Alg3Mac(new DESEngine())); - } - } - - public static class RFC3211 - extends BaseWrapCipher - { - public RFC3211() - { - super(new RFC3211WrapEngine(new DESEngine()), 8); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[8]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - /** - * DES - the default for this is to generate a key in - * a-b-a format that's 24 bytes long but has 16 bytes of - * key material (the first 8 bytes is repeated as the last - * 8 bytes). If you give it a size, you'll get just what you - * asked for. - */ - public static class KeyGenerator - extends BaseKeyGenerator - { - public KeyGenerator() - { - super("DES", 64, new DESKeyGenerator()); - } - - protected void engineInit( - int keySize, - SecureRandom random) - { - super.engineInit(keySize, random); - } - - protected SecretKey engineGenerateKey() - { - if (uninitialised) - { - engine.init(new KeyGenerationParameters(new SecureRandom(), defaultKeySize)); - uninitialised = false; - } - - return new SecretKeySpec(engine.generateKey(), algName); - } - } - - static public class KeyFactory - extends BaseSecretKeyFactory - { - public KeyFactory() - { - super("DES", null); - } - - protected KeySpec engineGetKeySpec( - SecretKey key, - Class keySpec) - throws InvalidKeySpecException - { - if (keySpec == null) - { - throw new InvalidKeySpecException("keySpec parameter is null"); - } - if (key == null) - { - throw new InvalidKeySpecException("key parameter is null"); - } - - if (SecretKeySpec.class.isAssignableFrom(keySpec)) - { - return new SecretKeySpec(key.getEncoded(), algName); - } - else if (DESKeySpec.class.isAssignableFrom(keySpec)) - { - byte[] bytes = key.getEncoded(); - - try - { - return new DESKeySpec(bytes); - } - catch (Exception e) - { - throw new InvalidKeySpecException(e.toString()); - } - } - - throw new InvalidKeySpecException("Invalid KeySpec"); - } - - protected SecretKey engineGenerateSecret( - KeySpec keySpec) - throws InvalidKeySpecException - { - if (keySpec instanceof DESKeySpec) - { - DESKeySpec desKeySpec = (DESKeySpec)keySpec; - return new SecretKeySpec(desKeySpec.getKey(), "DES"); - } - - return super.engineGenerateSecret(keySpec); - } - } - - static public class DESPBEKeyFactory - extends BaseSecretKeyFactory - { - private boolean forCipher; - private int scheme; - private int digest; - private int keySize; - private int ivSize; - - public DESPBEKeyFactory( - String algorithm, - ASN1ObjectIdentifier oid, - boolean forCipher, - int scheme, - int digest, - int keySize, - int ivSize) - { - super(algorithm, oid); - - this.forCipher = forCipher; - this.scheme = scheme; - this.digest = digest; - this.keySize = keySize; - this.ivSize = ivSize; - } - - protected SecretKey engineGenerateSecret( - KeySpec keySpec) - throws InvalidKeySpecException - { - if (keySpec instanceof PBEKeySpec) - { - PBEKeySpec pbeSpec = (PBEKeySpec)keySpec; - CipherParameters param; - - if (pbeSpec.getSalt() == null) - { - return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, null); - } - - if (forCipher) - { - param = PBE.Util.makePBEParameters(pbeSpec, scheme, digest, keySize, ivSize); - } - else - { - param = PBE.Util.makePBEMacParameters(pbeSpec, scheme, digest, keySize); - } - - KeyParameter kParam; - if (param instanceof ParametersWithIV) - { - kParam = (KeyParameter)((ParametersWithIV)param).getParameters(); - } - else - { - kParam = (KeyParameter)param; - } - - DESParameters.setOddParity(kParam.getKey()); - - return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param); - } - - throw new InvalidKeySpecException("Invalid KeySpec"); - } - } - - /** - * PBEWithMD2AndDES - */ - static public class PBEWithMD2KeyFactory - extends DESPBEKeyFactory - { - public PBEWithMD2KeyFactory() - { - super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64); - } - } - - /** - * PBEWithMD5AndDES - */ - static public class PBEWithMD5KeyFactory - extends DESPBEKeyFactory - { - public PBEWithMD5KeyFactory() - { - super("PBEwithMD5andDES", PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, true, PKCS5S1, MD5, 64, 64); - } - } - - /** - * PBEWithSHA1AndDES - */ - static public class PBEWithSHA1KeyFactory - extends DESPBEKeyFactory - { - public PBEWithSHA1KeyFactory() - { - super("PBEwithSHA1andDES", PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, true, PKCS5S1, SHA1, 64, 64); - } - } - - /** - * PBEWithMD2AndDES - */ - static public class PBEWithMD2 - extends BaseBlockCipher - { - public PBEWithMD2() - { - super(new CBCBlockCipher(new DESEngine())); - } - } - - /** - * PBEWithMD5AndDES - */ - static public class PBEWithMD5 - extends BaseBlockCipher - { - public PBEWithMD5() - { - super(new CBCBlockCipher(new DESEngine())); - } - } - - /** - * PBEWithSHA1AndDES - */ - static public class PBEWithSHA1 - extends BaseBlockCipher - { - public PBEWithSHA1() - { - super(new CBCBlockCipher(new DESEngine())); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = DES.class.getName(); - private static final String PACKAGE = "org.bouncycastle.jcajce.provider.symmetric"; // JDK 1.2 - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.DES", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + OIWObjectIdentifiers.desCBC, PREFIX + "$CBC"); - - addAlias(provider, OIWObjectIdentifiers.desCBC, "DES"); - - provider.addAlgorithm("Cipher.DESRFC3211WRAP", PREFIX + "$RFC3211"); - - provider.addAlgorithm("KeyGenerator.DES", PREFIX + "$KeyGenerator"); - - provider.addAlgorithm("SecretKeyFactory.DES", PREFIX + "$KeyFactory"); - - provider.addAlgorithm("Mac.DESCMAC", PREFIX + "$CMAC"); - provider.addAlgorithm("Mac.DESMAC", PREFIX + "$CBCMAC"); - provider.addAlgorithm("Alg.Alias.Mac.DES", "DESMAC"); - - provider.addAlgorithm("Mac.DESMAC/CFB8", PREFIX + "$DESCFB8"); - provider.addAlgorithm("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8"); - - provider.addAlgorithm("Mac.DESMAC64", PREFIX + "$DES64"); - provider.addAlgorithm("Alg.Alias.Mac.DES64", "DESMAC64"); - - provider.addAlgorithm("Mac.DESMAC64WITHISO7816-4PADDING", PREFIX + "$DES64with7816d4"); - provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); - provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); - provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); - - provider.addAlgorithm("Mac.DESWITHISO9797", PREFIX + "$DES9797Alg3"); - provider.addAlgorithm("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797"); - - provider.addAlgorithm("Mac.ISO9797ALG3MAC", PREFIX + "$DES9797Alg3"); - provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC"); - provider.addAlgorithm("Mac.ISO9797ALG3WITHISO7816-4PADDING", PREFIX + "$DES9797Alg3with7816d4"); - provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING"); - - provider.addAlgorithm("AlgorithmParameters.DES", PACKAGE + ".util.IvAlgorithmParameters"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + OIWObjectIdentifiers.desCBC, "DES"); - - provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES"); - - provider.addAlgorithm("Cipher.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2"); - provider.addAlgorithm("Cipher.PBEWITHMD5ANDDES", PREFIX + "$PBEWithMD5"); - provider.addAlgorithm("Cipher.PBEWITHSHA1ANDDES", PREFIX + "$PBEWithSHA1"); - - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES"); - - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2KeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5ANDDES", PREFIX + "$PBEWithMD5KeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA1ANDDES", PREFIX + "$PBEWithSHA1KeyFactory"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDDES-CBC", "PBEWITHMD5ANDDES"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDDES-CBC", "PBEWITHSHA1ANDDES"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES"); - } - - private void addAlias(ConfigurableProvider provider, ASN1ObjectIdentifier oid, String name) - { - provider.addAlgorithm("Alg.Alias.KeyGenerator." + oid.getId(), name); - provider.addAlgorithm("Alg.Alias.KeyFactory." + oid.getId(), name); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java deleted file mode 100644 index 0f53e504..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java +++ /dev/null @@ -1,435 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; - -import javax.crypto.SecretKey; -import javax.crypto.spec.DESedeKeySpec; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.crypto.KeyGenerationParameters; -import org.bouncycastle.crypto.engines.DESedeEngine; -import org.bouncycastle.crypto.engines.DESedeWrapEngine; -import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -import org.bouncycastle.crypto.generators.DESedeKeyGenerator; -import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -import org.bouncycastle.crypto.macs.CMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.paddings.ISO7816d4Padding; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseSecretKeyFactory; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class DESede -{ - private DESede() - { - } - - static public class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new DESedeEngine()); - } - } - - static public class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new DESedeEngine()), 64); - } - } - - /** - * DESede CFB8 - */ - public static class DESedeCFB8 - extends BaseMac - { - public DESedeCFB8() - { - super(new CFBBlockCipherMac(new DESedeEngine())); - } - } - - /** - * DESede64 - */ - public static class DESede64 - extends BaseMac - { - public DESede64() - { - super(new CBCBlockCipherMac(new DESedeEngine(), 64)); - } - } - - /** - * DESede64with7816-4Padding - */ - public static class DESede64with7816d4 - extends BaseMac - { - public DESede64with7816d4() - { - super(new CBCBlockCipherMac(new DESedeEngine(), 64, new ISO7816d4Padding())); - } - } - - public static class CBCMAC - extends BaseMac - { - public CBCMAC() - { - super(new CBCBlockCipherMac(new DESedeEngine())); - } - } - - static public class CMAC - extends BaseMac - { - public CMAC() - { - super(new CMac(new DESedeEngine())); - } - } - - public static class Wrap - extends BaseWrapCipher - { - public Wrap() - { - super(new DESedeWrapEngine()); - } - } - - public static class RFC3211 - extends BaseWrapCipher - { - public RFC3211() - { - super(new RFC3211WrapEngine(new DESedeEngine()), 8); - } - } - - /** - * DESede - the default for this is to generate a key in - * a-b-a format that's 24 bytes long but has 16 bytes of - * key material (the first 8 bytes is repeated as the last - * 8 bytes). If you give it a size, you'll get just what you - * asked for. - */ - public static class KeyGenerator - extends BaseKeyGenerator - { - private boolean keySizeSet = false; - - public KeyGenerator() - { - super("DESede", 192, new DESedeKeyGenerator()); - } - - protected void engineInit( - int keySize, - SecureRandom random) - { - super.engineInit(keySize, random); - keySizeSet = true; - } - - protected SecretKey engineGenerateKey() - { - if (uninitialised) - { - engine.init(new KeyGenerationParameters(new SecureRandom(), defaultKeySize)); - uninitialised = false; - } - - // - // if no key size has been defined generate a 24 byte key in - // the a-b-a format - // - if (!keySizeSet) - { - byte[] k = engine.generateKey(); - - System.arraycopy(k, 0, k, 16, 8); - - return new SecretKeySpec(k, algName); - } - else - { - return new SecretKeySpec(engine.generateKey(), algName); - } - } - } - - /** - * generate a desEDE key in the a-b-c format. - */ - public static class KeyGenerator3 - extends BaseKeyGenerator - { - public KeyGenerator3() - { - super("DESede3", 192, new DESedeKeyGenerator()); - } - } - - /** - * PBEWithSHAAnd3-KeyTripleDES-CBC - */ - static public class PBEWithSHAAndDES3Key - extends BaseBlockCipher - { - public PBEWithSHAAndDES3Key() - { - super(new CBCBlockCipher(new DESedeEngine())); - } - } - - /** - * PBEWithSHAAnd2-KeyTripleDES-CBC - */ - static public class PBEWithSHAAndDES2Key - extends BaseBlockCipher - { - public PBEWithSHAAndDES2Key() - { - super(new CBCBlockCipher(new DESedeEngine())); - } - } - - /** - * PBEWithSHAAnd3-KeyTripleDES-CBC - */ - static public class PBEWithSHAAndDES3KeyFactory - extends DES.DESPBEKeyFactory - { - public PBEWithSHAAndDES3KeyFactory() - { - super("PBEwithSHAandDES3Key-CBC", PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, true, PKCS12, SHA1, 192, 64); - } - } - - /** - * PBEWithSHAAnd2-KeyTripleDES-CBC - */ - static public class PBEWithSHAAndDES2KeyFactory - extends DES.DESPBEKeyFactory - { - public PBEWithSHAAndDES2KeyFactory() - { - super("PBEwithSHAandDES2Key-CBC", PKCSObjectIdentifiers.pbeWithSHAAnd2_KeyTripleDES_CBC, true, PKCS12, SHA1, 128, 64); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[8]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - static public class KeyFactory - extends BaseSecretKeyFactory - { - public KeyFactory() - { - super("DESede", null); - } - - protected KeySpec engineGetKeySpec( - SecretKey key, - Class keySpec) - throws InvalidKeySpecException - { - if (keySpec == null) - { - throw new InvalidKeySpecException("keySpec parameter is null"); - } - if (key == null) - { - throw new InvalidKeySpecException("key parameter is null"); - } - - if (SecretKeySpec.class.isAssignableFrom(keySpec)) - { - return new SecretKeySpec(key.getEncoded(), algName); - } - else if (DESedeKeySpec.class.isAssignableFrom(keySpec)) - { - byte[] bytes = key.getEncoded(); - - try - { - if (bytes.length == 16) - { - byte[] longKey = new byte[24]; - - System.arraycopy(bytes, 0, longKey, 0, 16); - System.arraycopy(bytes, 0, longKey, 16, 8); - - return new DESedeKeySpec(longKey); - } - else - { - return new DESedeKeySpec(bytes); - } - } - catch (Exception e) - { - throw new InvalidKeySpecException(e.toString()); - } - } - - throw new InvalidKeySpecException("Invalid KeySpec"); - } - - protected SecretKey engineGenerateSecret( - KeySpec keySpec) - throws InvalidKeySpecException - { - if (keySpec instanceof DESedeKeySpec) - { - DESedeKeySpec desKeySpec = (DESedeKeySpec)keySpec; - return new SecretKeySpec(desKeySpec.getKey(), "DESede"); - } - - return super.engineGenerateSecret(keySpec); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = DESede.class.getName(); - private static final String PACKAGE = "org.bouncycastle.jcajce.provider.symmetric"; // JDK 1.2 - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.DESEDE", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$CBC"); - provider.addAlgorithm("Cipher.DESEDEWRAP", PREFIX + "$Wrap"); - provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, PREFIX + "$Wrap"); - provider.addAlgorithm("Cipher.DESEDERFC3211WRAP", PREFIX + "$RFC3211"); - - provider.addAlgorithm("Alg.Alias.Cipher.TDEA", "DESEDE"); - provider.addAlgorithm("Alg.Alias.Cipher.TDEAWRAP", "DESEDEWRAP"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.TDEA", "DESEDE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.TDEA", "DESEDE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator.TDEA", "DESEDE"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.TDEA", "DESEDE"); - - if (provider.hasAlgorithm("MessageDigest", "SHA-1")) - { - provider.addAlgorithm("Cipher.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3Key"); - provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES3Key"); - provider.addAlgorithm("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$OldPBEWithSHAAndDES3Key"); - provider.addAlgorithm("Cipher.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2Key"); - provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES2Key"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd2_KeyTripleDES_CBC, "PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1ANDDESEDE", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND3-KEYTRIPLEDES-CBC", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND2-KEYTRIPLEDES-CBC", "PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); - } - - provider.addAlgorithm("KeyGenerator.DESEDE", PREFIX + "$KeyGenerator"); - provider.addAlgorithm("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$KeyGenerator3"); - provider.addAlgorithm("KeyGenerator.DESEDEWRAP", PREFIX + "$KeyGenerator"); - - provider.addAlgorithm("SecretKeyFactory.DESEDE", PREFIX + "$KeyFactory"); - - provider.addAlgorithm("Mac.DESEDECMAC", PREFIX + "$CMAC"); - provider.addAlgorithm("Mac.DESEDEMAC", PREFIX + "$CBCMAC"); - provider.addAlgorithm("Alg.Alias.Mac.DESEDE", "DESEDEMAC"); - - provider.addAlgorithm("Mac.DESEDEMAC/CFB8", PREFIX + "$DESedeCFB8"); - provider.addAlgorithm("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8"); - - provider.addAlgorithm("Mac.DESEDEMAC64", PREFIX + "$DESede64"); - provider.addAlgorithm("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64"); - - provider.addAlgorithm("Mac.DESEDEMAC64WITHISO7816-4PADDING", PREFIX + "$DESede64with7816d4"); - provider.addAlgorithm("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); - provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); - provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); - - provider.addAlgorithm("AlgorithmParameters.DESEDE", PACKAGE + ".util.IvAlgorithmParameters"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE"); - - provider.addAlgorithm("AlgorithmParameterGenerator.DESEDE", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE"); - - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3KeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2KeyFactory"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND3-KEYTRIPLEDES", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND2-KEYTRIPLEDES", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDDES3KEY-CBC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDDES2KEY-CBC", "PKCS12PBE"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.3", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.4", "PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWithSHAAnd3KeyTripleDES", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.3", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.4", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWithSHAAnd3KeyTripleDES", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/GOST28147.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/GOST28147.java deleted file mode 100644 index fcaea941..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/GOST28147.java +++ /dev/null @@ -1,157 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.crypto.BufferedBlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.GOST28147Engine; -import org.bouncycastle.crypto.macs.GOST28147Mac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.GCFBBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class GOST28147 -{ - private GOST28147() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new GOST28147Engine()); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new GOST28147Engine()), 64); - } - } - - public static class GCFB - extends BaseBlockCipher - { - public GCFB() - { - super(new BufferedBlockCipher(new GCFBBlockCipher(new GOST28147Engine())), 64); - } - } - - /** - * GOST28147 - */ - public static class Mac - extends BaseMac - { - public Mac() - { - super(new GOST28147Mac()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - this(256); - } - - public KeyGen(int keySize) - { - super("GOST28147", keySize, new CipherKeyGenerator()); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for GOST28147 parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[16]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("GOST28147", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "GOST IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = GOST28147.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.GOST28147", PREFIX + "$ECB"); - provider.addAlgorithm("Alg.Alias.Cipher.GOST", "GOST28147"); - provider.addAlgorithm("Alg.Alias.Cipher.GOST-28147", "GOST28147"); - provider.addAlgorithm("Cipher." + CryptoProObjectIdentifiers.gostR28147_gcfb, PREFIX + "$GCFB"); - - provider.addAlgorithm("KeyGenerator.GOST28147", PREFIX + "$KeyGen"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.GOST", "GOST28147"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.GOST-28147", "GOST28147"); - provider.addAlgorithm("Alg.Alias.KeyGenerator." + CryptoProObjectIdentifiers.gostR28147_gcfb, "GOST28147"); - - provider.addAlgorithm("Mac.GOST28147MAC", PREFIX + "$Mac"); - provider.addAlgorithm("Alg.Alias.Mac.GOST28147", "GOST28147MAC"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Grain128.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Grain128.java deleted file mode 100644 index d7232b11..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Grain128.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.Grain128Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Grain128 -{ - private Grain128() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new Grain128Engine(), 12); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Grain128", 128, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Grain128.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.Grain128", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.Grain128", PREFIX + "$KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Grainv1.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Grainv1.java deleted file mode 100644 index fce224d2..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Grainv1.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.Grainv1Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Grainv1 -{ - private Grainv1() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new Grainv1Engine(), 8); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Grainv1", 80, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Grainv1.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.Grainv1", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.Grainv1", PREFIX + "$KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/HC128.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/HC128.java deleted file mode 100644 index efe7ede1..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/HC128.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.HC128Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class HC128 -{ - private HC128() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new HC128Engine(), 16); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("HC128", 128, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = HC128.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.HC128", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.HC128", PREFIX + "$KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/HC256.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/HC256.java deleted file mode 100644 index dd93445b..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/HC256.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.HC256Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class HC256 -{ - private HC256() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new HC256Engine(), 32); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("HC256", 256, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = HC256.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.HC256", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.HC256", PREFIX + "$KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/IDEA.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/IDEA.java deleted file mode 100644 index 4248eb8d..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/IDEA.java +++ /dev/null @@ -1,258 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.asn1.misc.IDEACBCPar; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.IDEAEngine; -import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class IDEA -{ - private IDEA() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new IDEAEngine()); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new IDEAEngine()), 64); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("IDEA", 128, new CipherKeyGenerator()); - } - } - - public static class PBEWithSHAAndIDEAKeyGen - extends PBESecretKeyFactory - { - public PBEWithSHAAndIDEAKeyGen() - { - super("PBEwithSHAandIDEA-CBC", null, true, PKCS12, SHA1, 128, 64); - } - } - - static public class PBEWithSHAAndIDEA - extends BaseBlockCipher - { - public PBEWithSHAAndIDEA() - { - super(new CBCBlockCipher(new IDEAEngine())); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for IDEA parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[8]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("IDEA", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends BaseAlgorithmParameters - { - private byte[] iv; - - protected byte[] engineGetEncoded() - throws IOException - { - return engineGetEncoded("ASN.1"); - } - - protected byte[] engineGetEncoded( - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - return new IDEACBCPar(engineGetEncoded("RAW")).getEncoded(); - } - - if (format.equals("RAW")) - { - byte[] tmp = new byte[iv.length]; - - System.arraycopy(iv, 0, tmp, 0, iv.length); - return tmp; - } - - return null; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == IvParameterSpec.class) - { - return new IvParameterSpec(iv); - } - - throw new InvalidParameterSpecException("unknown parameter spec passed to IV parameters object."); - } - - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (!(paramSpec instanceof IvParameterSpec)) - { - throw new InvalidParameterSpecException("IvParameterSpec required to initialise a IV parameters algorithm parameters object"); - } - - this.iv = ((IvParameterSpec)paramSpec).getIV(); - } - - protected void engineInit( - byte[] params) - throws IOException - { - this.iv = new byte[params.length]; - - System.arraycopy(params, 0, iv, 0, iv.length); - } - - protected void engineInit( - byte[] params, - String format) - throws IOException - { - if (format.equals("RAW")) - { - engineInit(params); - return; - } - if (format.equals("ASN.1")) - { - ASN1InputStream aIn = new ASN1InputStream(params); - IDEACBCPar oct = new IDEACBCPar((ASN1Sequence)aIn.readObject()); - - engineInit(oct.getIV()); - return; - } - - throw new IOException("Unknown parameters format in IV parameters object"); - } - - protected String engineToString() - { - return "IDEA Parameters"; - } - } - - public static class Mac - extends BaseMac - { - public Mac() - { - super(new CBCBlockCipherMac(new IDEAEngine())); - } - } - - public static class CFB8Mac - extends BaseMac - { - public CFB8Mac() - { - super(new CFBBlockCipherMac(new IDEAEngine())); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = IDEA.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("AlgorithmParameterGenerator.IDEA", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("AlgorithmParameterGenerator.1.3.6.1.4.1.188.7.1.1.2", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("AlgorithmParameters.IDEA", PREFIX + "$AlgParams"); - provider.addAlgorithm("AlgorithmParameters.1.3.6.1.4.1.188.7.1.1.2", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDIDEA", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDIDEA-CBC", "PKCS12PBE"); - provider.addAlgorithm("Cipher.IDEA", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher.1.3.6.1.4.1.188.7.1.1.2", PREFIX + "$CBC"); - provider.addAlgorithm("Cipher.PBEWITHSHAANDIDEA-CBC", PREFIX + "$PBEWithSHAAndIDEA"); - provider.addAlgorithm("KeyGenerator.IDEA", PREFIX + "$KeyGen"); - provider.addAlgorithm("KeyGenerator.1.3.6.1.4.1.188.7.1.1.2", PREFIX + "$KeyGen"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAANDIDEA-CBC", PREFIX + "$PBEWithSHAAndIDEAKeyGen"); - provider.addAlgorithm("Mac.IDEAMAC", PREFIX + "$Mac"); - provider.addAlgorithm("Alg.Alias.Mac.IDEA", "IDEAMAC"); - provider.addAlgorithm("Mac.IDEAMAC/CFB8", PREFIX + "$CFB8Mac"); - provider.addAlgorithm("Alg.Alias.Mac.IDEA/CFB8", "IDEAMAC/CFB8"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Noekeon.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Noekeon.java deleted file mode 100644 index a92f21dd..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Noekeon.java +++ /dev/null @@ -1,153 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.NoekeonEngine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class Noekeon -{ - private Noekeon() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new NoekeonEngine(); - } - }); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Noekeon", 128, new CipherKeyGenerator()); - } - } - - public static class GMAC - extends BaseMac - { - public GMAC() - { - super(new GMac(new GCMBlockCipher(new NoekeonEngine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new NoekeonEngine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-Noekeon", 256, new Poly1305KeyGenerator()); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for Noekeon parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[16]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("Noekeon", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Noekeon IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = Noekeon.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("AlgorithmParameters.NOEKEON", PREFIX + "$AlgParams"); - - provider.addAlgorithm("AlgorithmParameterGenerator.NOEKEON", PREFIX + "$AlgParamGen"); - - provider.addAlgorithm("Cipher.NOEKEON", PREFIX + "$ECB"); - - provider.addAlgorithm("KeyGenerator.NOEKEON", PREFIX + "$KeyGen"); - - addGMacAlgorithm(provider, "NOEKEON", PREFIX + "$GMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "NOEKEON", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2.java deleted file mode 100644 index 4b0d8b97..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2.java +++ /dev/null @@ -1,228 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.io.IOException; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.InvalidParameterSpecException; -import java.security.spec.KeySpec; - -import javax.crypto.SecretKey; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.PBEParameterSpec; - -import org.bouncycastle.asn1.ASN1Encoding; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.PBKDF2Params; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseSecretKeyFactory; -import org.bouncycastle.jcajce.provider.symmetric.util.PBE; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jcajce.spec.PBKDF2KeySpec; - -public class PBEPBKDF2 -{ - private PBEPBKDF2() - { - - } - - public static class AlgParams - extends BaseAlgorithmParameters - { - PBKDF2Params params; - - protected byte[] engineGetEncoded() - { - try - { - return params.getEncoded(ASN1Encoding.DER); - } - catch (IOException e) - { - throw new RuntimeException("Oooops! " + e.toString()); - } - } - - protected byte[] engineGetEncoded( - String format) - { - if (this.isASN1FormatString(format)) - { - return engineGetEncoded(); - } - - return null; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == PBEParameterSpec.class) - { - return new PBEParameterSpec(params.getSalt(), - params.getIterationCount().intValue()); - } - - throw new InvalidParameterSpecException("unknown parameter spec passed to PBKDF2 PBE parameters object."); - } - - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (!(paramSpec instanceof PBEParameterSpec)) - { - throw new InvalidParameterSpecException("PBEParameterSpec required to initialise a PBKDF2 PBE parameters algorithm parameters object"); - } - - PBEParameterSpec pbeSpec = (PBEParameterSpec)paramSpec; - - this.params = new PBKDF2Params(pbeSpec.getSalt(), - pbeSpec.getIterationCount()); - } - - protected void engineInit( - byte[] params) - throws IOException - { - this.params = PBKDF2Params.getInstance(ASN1Primitive.fromByteArray(params)); - } - - protected void engineInit( - byte[] params, - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - engineInit(params); - return; - } - - throw new IOException("Unknown parameters format in PBKDF2 parameters object"); - } - - protected String engineToString() - { - return "PBKDF2 Parameters"; - } - } - - public static class BasePBKDF2 - extends BaseSecretKeyFactory - { - private int scheme; - - public BasePBKDF2(String name, int scheme) - { - super(name, PKCSObjectIdentifiers.id_PBKDF2); - - this.scheme = scheme; - } - - protected SecretKey engineGenerateSecret( - KeySpec keySpec) - throws InvalidKeySpecException - { - if (keySpec instanceof PBEKeySpec) - { - PBEKeySpec pbeSpec = (PBEKeySpec)keySpec; - - if (pbeSpec.getSalt() == null) - { - throw new InvalidKeySpecException("missing required salt"); - } - - if (pbeSpec.getIterationCount() <= 0) - { - throw new InvalidKeySpecException("positive iteration count required: " - + pbeSpec.getIterationCount()); - } - - if (pbeSpec.getKeyLength() <= 0) - { - throw new InvalidKeySpecException("positive key length required: " - + pbeSpec.getKeyLength()); - } - - if (pbeSpec.getPassword().length == 0) - { - throw new IllegalArgumentException("password empty"); - } - - if (pbeSpec instanceof PBKDF2KeySpec) - { - PBKDF2KeySpec spec = (PBKDF2KeySpec)pbeSpec; - - int digest = getDigestCode(spec.getPrf().getAlgorithm()); - int keySize = pbeSpec.getKeyLength(); - int ivSize = -1; // JDK 1,2 and earlier does not understand simplified version. - CipherParameters param = PBE.Util.makePBEMacParameters(pbeSpec, scheme, digest, keySize); - - return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param); - } - else - { - int digest = SHA1; - int keySize = pbeSpec.getKeyLength(); - int ivSize = -1; // JDK 1,2 and earlier does not understand simplified version. - CipherParameters param = PBE.Util.makePBEMacParameters(pbeSpec, scheme, digest, keySize); - - return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param); - } - } - - throw new InvalidKeySpecException("Invalid KeySpec"); - } - - - private int getDigestCode(ASN1ObjectIdentifier algorithm) - throws InvalidKeySpecException - { - if (algorithm.equals(CryptoProObjectIdentifiers.gostR3411Hmac)) - { - return GOST3411; - } - else if (algorithm.equals(PKCSObjectIdentifiers.id_hmacWithSHA1)) - { - return SHA1; - } - - throw new InvalidKeySpecException("Invalid KeySpec: unknown PRF algorithm " + algorithm); - } - } - - public static class PBKDF2withUTF8 - extends BasePBKDF2 - { - public PBKDF2withUTF8() - { - super("PBKDF2", PKCS5S2_UTF8); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = PBEPBKDF2.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("AlgorithmParameters.PBKDF2", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.id_PBKDF2, "PBKDF2"); - provider.addAlgorithm("SecretKeyFactory.PBKDF2", PREFIX + "$PBKDF2withUTF8"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.id_PBKDF2, "PBKDF2"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12.java deleted file mode 100644 index 9be3c997..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.io.IOException; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.spec.PBEParameterSpec; - -import org.bouncycastle.asn1.ASN1Encoding; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.pkcs.PKCS12PBEParams; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public class PBEPKCS12 -{ - private PBEPKCS12() - { - - } - - public static class AlgParams - extends BaseAlgorithmParameters - { - PKCS12PBEParams params; - - protected byte[] engineGetEncoded() - { - try - { - return params.getEncoded(ASN1Encoding.DER); - } - catch (IOException e) - { - throw new RuntimeException("Oooops! " + e.toString()); - } - } - - protected byte[] engineGetEncoded( - String format) - { - if (this.isASN1FormatString(format)) - { - return engineGetEncoded(); - } - - return null; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == PBEParameterSpec.class) - { - return new PBEParameterSpec(params.getIV(), - params.getIterations().intValue()); - } - - throw new InvalidParameterSpecException("unknown parameter spec passed to PKCS12 PBE parameters object."); - } - - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (!(paramSpec instanceof PBEParameterSpec)) - { - throw new InvalidParameterSpecException("PBEParameterSpec required to initialise a PKCS12 PBE parameters algorithm parameters object"); - } - - PBEParameterSpec pbeSpec = (PBEParameterSpec)paramSpec; - - this.params = new PKCS12PBEParams(pbeSpec.getSalt(), - pbeSpec.getIterationCount()); - } - - protected void engineInit( - byte[] params) - throws IOException - { - this.params = PKCS12PBEParams.getInstance(ASN1Primitive.fromByteArray(params)); - } - - protected void engineInit( - byte[] params, - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - engineInit(params); - return; - } - - throw new IOException("Unknown parameters format in PKCS12 PBE parameters object"); - } - - protected String engineToString() - { - return "PKCS12 PBE Parameters"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = PBEPKCS12.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("AlgorithmParameters.PKCS12PBE", PREFIX + "$AlgParams"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC2.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC2.java deleted file mode 100644 index 4160999f..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC2.java +++ /dev/null @@ -1,523 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.RC2ParameterSpec; - -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.RC2CBCParameter; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.RC2Engine; -import org.bouncycastle.crypto.engines.RC2WrapEngine; -import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; - -public final class RC2 -{ - private RC2() - { - } - - /** - * RC2 - */ - static public class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new RC2Engine()); - } - } - - /** - * RC2CBC - */ - static public class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new RC2Engine()), 64); - } - } - - public static class Wrap - extends BaseWrapCipher - { - public Wrap() - { - super(new RC2WrapEngine()); - } - } - - /** - * RC2 - */ - public static class CBCMAC - extends BaseMac - { - public CBCMAC() - { - super(new CBCBlockCipherMac(new RC2Engine())); - } - } - - public static class CFB8MAC - extends BaseMac - { - public CFB8MAC() - { - super(new CFBBlockCipherMac(new RC2Engine())); - } - } - - /** - * PBEWithSHA1AndRC2 - */ - static public class PBEWithSHA1KeyFactory - extends PBESecretKeyFactory - { - public PBEWithSHA1KeyFactory() - { - super("PBEwithSHA1andRC2", PKCSObjectIdentifiers.pbeWithSHA1AndRC2_CBC, true, PKCS5S1, SHA1, 64, 64); - } - } - - /** - * PBEWithSHAAnd128BitRC2-CBC - */ - static public class PBEWithSHAAnd128BitKeyFactory - extends PBESecretKeyFactory - { - public PBEWithSHAAnd128BitKeyFactory() - { - super("PBEwithSHAand128BitRC2-CBC", PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC2_CBC, true, PKCS12, SHA1, 128, 64); - } - } - - /** - * PBEWithSHAAnd40BitRC2-CBC - */ - static public class PBEWithSHAAnd40BitKeyFactory - extends PBESecretKeyFactory - { - public PBEWithSHAAnd40BitKeyFactory() - { - super("PBEwithSHAand40BitRC2-CBC", PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC2_CBC, true, PKCS12, SHA1, 40, 64); - } - } - - /** - * PBEWithMD5AndRC2 - */ - static public class PBEWithMD5AndRC2 - extends BaseBlockCipher - { - public PBEWithMD5AndRC2() - { - super(new CBCBlockCipher(new RC2Engine())); - } - } - - /** - * PBEWithSHA1AndRC2 - */ - static public class PBEWithSHA1AndRC2 - extends BaseBlockCipher - { - public PBEWithSHA1AndRC2() - { - super(new CBCBlockCipher(new RC2Engine())); - } - } - - /** - * PBEWithSHAAnd128BitRC2-CBC - */ - static public class PBEWithSHAAnd128BitRC2 - extends BaseBlockCipher - { - public PBEWithSHAAnd128BitRC2() - { - super(new CBCBlockCipher(new RC2Engine())); - } - } - - /** - * PBEWithSHAAnd40BitRC2-CBC - */ - static public class PBEWithSHAAnd40BitRC2 - extends BaseBlockCipher - { - public PBEWithSHAAnd40BitRC2() - { - super(new CBCBlockCipher(new RC2Engine())); - } - } - - /** - * PBEWithMD2AndRC2 - */ - static public class PBEWithMD2KeyFactory - extends PBESecretKeyFactory - { - public PBEWithMD2KeyFactory() - { - super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64); - } - } - - /** - * PBEWithMD5AndRC2 - */ - static public class PBEWithMD5KeyFactory - extends PBESecretKeyFactory - { - public PBEWithMD5KeyFactory() - { - super("PBEwithMD5andRC2", PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, true, PKCS5S1, MD5, 64, 64); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - RC2ParameterSpec spec = null; - - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - if (genParamSpec instanceof RC2ParameterSpec) - { - spec = (RC2ParameterSpec)genParamSpec; - return; - } - - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - AlgorithmParameters params; - - if (spec == null) - { - byte[] iv = new byte[8]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - try - { - params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - } - else - { - try - { - params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME); - params.init(spec); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - } - - return params; - } - } - - public static class KeyGenerator - extends BaseKeyGenerator - { - public KeyGenerator() - { - super("RC2", 128, new CipherKeyGenerator()); - } - } - - public static class AlgParams - extends BaseAlgorithmParameters - { - private static final short[] table = { - 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0, - 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a, - 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36, - 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c, - 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60, - 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa, - 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e, - 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf, - 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6, - 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3, - 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c, - 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2, - 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5, - 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5, - 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f, - 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab - }; - - private static final short[] ekb = { - 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5, - 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5, - 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef, - 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d, - 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb, - 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d, - 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3, - 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61, - 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1, - 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21, - 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42, - 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f, - 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7, - 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15, - 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7, - 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd - }; - - private byte[] iv; - private int parameterVersion = 58; - - protected byte[] engineGetEncoded() - { - return Arrays.clone(iv); - } - - protected byte[] engineGetEncoded( - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - if (parameterVersion == -1) - { - return new RC2CBCParameter(engineGetEncoded()).getEncoded(); - } - else - { - return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded(); - } - } - - if (format.equals("RAW")) - { - return engineGetEncoded(); - } - - return null; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == RC2ParameterSpec.class) - { - if (parameterVersion != -1) - { - if (parameterVersion < 256) - { - return new RC2ParameterSpec(ekb[parameterVersion], iv); - } - else - { - return new RC2ParameterSpec(parameterVersion, iv); - } - } - } - - if (paramSpec == IvParameterSpec.class) - { - return new IvParameterSpec(iv); - } - - throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object."); - } - - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec instanceof IvParameterSpec) - { - this.iv = ((IvParameterSpec)paramSpec).getIV(); - } - else if (paramSpec instanceof RC2ParameterSpec) - { - int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits(); - if (effKeyBits != -1) - { - if (effKeyBits < 256) - { - parameterVersion = table[effKeyBits]; - } - else - { - parameterVersion = effKeyBits; - } - } - - this.iv = ((RC2ParameterSpec)paramSpec).getIV(); - } - else - { - throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object"); - } - } - - protected void engineInit( - byte[] params) - throws IOException - { - this.iv = Arrays.clone(params); - } - - protected void engineInit( - byte[] params, - String format) - throws IOException - { - if (this.isASN1FormatString(format)) - { - RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Primitive.fromByteArray(params)); - - if (p.getRC2ParameterVersion() != null) - { - parameterVersion = p.getRC2ParameterVersion().intValue(); - } - - iv = p.getIV(); - - return; - } - - if (format.equals("RAW")) - { - engineInit(params); - return; - } - - throw new IOException("Unknown parameters format in IV parameters object"); - } - - protected String engineToString() - { - return "RC2 Parameters"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = RC2.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("AlgorithmParameterGenerator.RC2", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("AlgorithmParameterGenerator.1.2.840.113549.3.2", PREFIX + "$AlgParamGen"); - - provider.addAlgorithm("KeyGenerator.RC2", PREFIX + "$KeyGenerator"); - provider.addAlgorithm("KeyGenerator.1.2.840.113549.3.2", PREFIX + "$KeyGenerator"); - - provider.addAlgorithm("AlgorithmParameters.RC2", PREFIX + "$AlgParams"); - provider.addAlgorithm("AlgorithmParameters.1.2.840.113549.3.2", PREFIX + "$AlgParams"); - - provider.addAlgorithm("Cipher.RC2", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher.RC2WRAP", PREFIX + "$Wrap"); - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMSRC2wrap, "RC2WRAP"); - provider.addAlgorithm("Cipher.1.2.840.113549.3.2", PREFIX + "$CBC"); - - provider.addAlgorithm("Mac.RC2MAC", PREFIX + "$CBCMAC"); - provider.addAlgorithm("Alg.Alias.Mac.RC2", "RC2MAC"); - provider.addAlgorithm("Mac.RC2MAC/CFB8", PREFIX + "$CFB8MAC"); - provider.addAlgorithm("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDRC2-CBC", "PBEWITHMD5ANDRC2"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDRC2-CBC", "PBEWITHSHA1ANDRC2"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2"); - - provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndRC2_CBC, "PBEWITHSHA1ANDRC2"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.5", "PBEWITHSHAAND128BITRC2-CBC"); - provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.6", "PBEWITHSHAAND40BITRC2-CBC"); - - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDRC2", PREFIX + "$PBEWithMD2KeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5ANDRC2", PREFIX + "$PBEWithMD5KeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA1ANDRC2", PREFIX + "$PBEWithSHA1KeyFactory"); - - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITRC2-CBC", PREFIX + "$PBEWithSHAAnd128BitKeyFactory"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND40BITRC2-CBC", PREFIX + "$PBEWithSHAAnd40BitKeyFactory"); - - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2"); - - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2"); - - provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHA1AndRC2_CBC, "PBEWITHSHA1ANDRC2"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.5", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.6", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWithSHAAnd3KeyTripleDES", "PKCS12PBE"); - - provider.addAlgorithm("Alg.Alias.Cipher.1.2.840.113549.1.12.1.5", "PBEWITHSHAAND128BITRC2-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher.1.2.840.113549.1.12.1.6", "PBEWITHSHAAND40BITRC2-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC2-CBC", "PBEWITHSHAAND128BITRC2-CBC"); - provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC2-CBC", "PBEWITHSHAAND40BITRC2-CBC"); - provider.addAlgorithm("Cipher.PBEWITHSHA1ANDRC2", PREFIX + "$PBEWithSHA1AndRC2"); - - provider.addAlgorithm("Cipher.PBEWITHSHAAND128BITRC2-CBC", PREFIX + "$PBEWithSHAAnd128BitRC2"); - provider.addAlgorithm("Cipher.PBEWITHSHAAND40BITRC2-CBC", PREFIX + "$PBEWithSHAAnd40BitRC2"); - provider.addAlgorithm("Cipher.PBEWITHMD5ANDRC2", PREFIX + "$PBEWithMD5AndRC2"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1ANDRC2", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC2", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1ANDRC2-CBC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC2-CBC", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC2-CBC", "PKCS12PBE"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC5.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC5.java deleted file mode 100644 index aa63a951..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC5.java +++ /dev/null @@ -1,177 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.RC532Engine; -import org.bouncycastle.crypto.engines.RC564Engine; -import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class RC5 -{ - private RC5() - { - } - - /** - * RC5 - */ - public static class ECB32 - extends BaseBlockCipher - { - public ECB32() - { - super(new RC532Engine()); - } - } - - /** - * RC564 - */ - public static class ECB64 - extends BaseBlockCipher - { - public ECB64() - { - super(new RC564Engine()); - } - } - - public static class CBC32 - extends BaseBlockCipher - { - public CBC32() - { - super(new CBCBlockCipher(new RC532Engine()), 64); - } - } - - public static class KeyGen32 - extends BaseKeyGenerator - { - public KeyGen32() - { - super("RC5", 128, new CipherKeyGenerator()); - } - } - - /** - * RC5 - */ - public static class KeyGen64 - extends BaseKeyGenerator - { - public KeyGen64() - { - super("RC5-64", 256, new CipherKeyGenerator()); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC5 parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[8]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("RC5", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class Mac32 - extends BaseMac - { - public Mac32() - { - super(new CBCBlockCipherMac(new RC532Engine())); - } - } - - public static class CFB8Mac32 - extends BaseMac - { - public CFB8Mac32() - { - super(new CFBBlockCipherMac(new RC532Engine())); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "RC5 IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = RC5.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.RC5", PREFIX + "$ECB32"); - provider.addAlgorithm("Alg.Alias.Cipher.RC5-32", "RC5"); - provider.addAlgorithm("Cipher.RC5-64", PREFIX + "$ECB64"); - provider.addAlgorithm("KeyGenerator.RC5", PREFIX + "$KeyGen32"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.RC5-32", "RC5"); - provider.addAlgorithm("KeyGenerator.RC5-64", PREFIX + "$KeyGen64"); - provider.addAlgorithm("AlgorithmParameters.RC5", PREFIX + "$AlgParams"); - provider.addAlgorithm("AlgorithmParameters.RC5-64", PREFIX + "$AlgParams"); - provider.addAlgorithm("Mac.RC5MAC", PREFIX + "$Mac32"); - provider.addAlgorithm("Alg.Alias.Mac.RC5", "RC5MAC"); - provider.addAlgorithm("Mac.RC5MAC/CFB8", PREFIX + "$CFB8Mac32"); - provider.addAlgorithm("Alg.Alias.Mac.RC5/CFB8", "RC5MAC/CFB8"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC6.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC6.java deleted file mode 100644 index 114c40b6..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/RC6.java +++ /dev/null @@ -1,180 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.BufferedBlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.RC6Engine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.CFBBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.crypto.modes.OFBBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class RC6 -{ - private RC6() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new RC6Engine(); - } - }); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new RC6Engine()), 128); - } - } - - static public class CFB - extends BaseBlockCipher - { - public CFB() - { - super(new BufferedBlockCipher(new CFBBlockCipher(new RC6Engine(), 128)), 128); - } - } - - static public class OFB - extends BaseBlockCipher - { - public OFB() - { - super(new BufferedBlockCipher(new OFBBlockCipher(new RC6Engine(), 128)), 128); - } - } - - public static class GMAC - extends BaseMac - { - public GMAC() - { - super(new GMac(new GCMBlockCipher(new RC6Engine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new RC6Engine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-RC6", 256, new Poly1305KeyGenerator()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("RC6", 256, new CipherKeyGenerator()); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC6 parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[16]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("RC6", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "RC6 IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = RC6.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.RC6", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.RC6", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.RC6", PREFIX + "$AlgParams"); - - addGMacAlgorithm(provider, "RC6", PREFIX + "$GMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "RC6", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Rijndael.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Rijndael.java deleted file mode 100644 index b8c36b7b..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Rijndael.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.RijndaelEngine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Rijndael -{ - private Rijndael() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new RijndaelEngine(); - } - }); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Rijndael", 192, new CipherKeyGenerator()); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Rijndael IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Rijndael.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.RIJNDAEL", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.RIJNDAEL", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.RIJNDAEL", PREFIX + "$AlgParams"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SEED.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SEED.java deleted file mode 100644 index e7e257c3..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SEED.java +++ /dev/null @@ -1,183 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.kisa.KISAObjectIdentifiers; -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.SEEDEngine; -import org.bouncycastle.crypto.engines.SEEDWrapEngine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class SEED -{ - private SEED() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new SEEDEngine(); - } - }); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new SEEDEngine()), 128); - } - } - - public static class Wrap - extends BaseWrapCipher - { - public Wrap() - { - super(new SEEDWrapEngine()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("SEED", 128, new CipherKeyGenerator()); - } - } - - public static class GMAC - extends BaseMac - { - public GMAC() - { - super(new GMac(new GCMBlockCipher(new SEEDEngine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new SEEDEngine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-SEED", 256, new Poly1305KeyGenerator()); - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for SEED parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[16]; - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("SEED", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "SEED IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = SEED.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("AlgorithmParameters.SEED", PREFIX + "$AlgParams"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + KISAObjectIdentifiers.id_seedCBC, "SEED"); - - provider.addAlgorithm("AlgorithmParameterGenerator.SEED", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + KISAObjectIdentifiers.id_seedCBC, "SEED"); - - provider.addAlgorithm("Cipher.SEED", PREFIX + "$ECB"); - provider.addAlgorithm("Cipher." + KISAObjectIdentifiers.id_seedCBC, PREFIX + "$CBC"); - - provider.addAlgorithm("Cipher.SEEDWRAP", PREFIX + "$Wrap"); - provider.addAlgorithm("Alg.Alias.Cipher." + KISAObjectIdentifiers.id_npki_app_cmsSeed_wrap, "SEEDWRAP"); - - provider.addAlgorithm("KeyGenerator.SEED", PREFIX + "$KeyGen"); - provider.addAlgorithm("KeyGenerator." + KISAObjectIdentifiers.id_seedCBC, PREFIX + "$KeyGen"); - provider.addAlgorithm("KeyGenerator." + KISAObjectIdentifiers.id_npki_app_cmsSeed_wrap, PREFIX + "$KeyGen"); - - addGMacAlgorithm(provider, "SEED", PREFIX + "$GMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "SEED", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Salsa20.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Salsa20.java deleted file mode 100644 index 88b27a6d..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Salsa20.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.Salsa20Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Salsa20 -{ - private Salsa20() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new Salsa20Engine(), 8); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Salsa20", 128, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Salsa20.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.SALSA20", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.SALSA20", PREFIX + "$KeyGen"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Serpent.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Serpent.java deleted file mode 100644 index ec21880c..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Serpent.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.SerpentEngine; -import org.bouncycastle.crypto.engines.TwofishEngine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; - -public final class Serpent -{ - private Serpent() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new SerpentEngine(); - } - }); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Serpent", 192, new CipherKeyGenerator()); - } - } - - public static class SerpentGMAC - extends BaseMac - { - public SerpentGMAC() - { - super(new GMac(new GCMBlockCipher(new SerpentEngine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new TwofishEngine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-Serpent", 256, new Poly1305KeyGenerator()); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Serpent IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = Serpent.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.Serpent", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.Serpent", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.Serpent", PREFIX + "$AlgParams"); - - addGMacAlgorithm(provider, "SERPENT", PREFIX + "$SerpentGMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "SERPENT", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Shacal2.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Shacal2.java deleted file mode 100644 index 81666af7..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Shacal2.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.Shacal2Engine; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public final class Shacal2 -{ - private Shacal2() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new Shacal2Engine(); - } - }); - } - } - - public static class CBC - extends BaseBlockCipher - { - public CBC() - { - super(new CBCBlockCipher(new Shacal2Engine()), 256);//block size - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Shacal2", 512, new CipherKeyGenerator());//key size - } - } - - public static class AlgParamGen - extends BaseAlgorithmParameterGenerator - { - protected void engineInit( - AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for Shacal2 parameter generation."); - } - - protected AlgorithmParameters engineGenerateParameters() - { - byte[] iv = new byte[32];// block size 256 - - if (random == null) - { - random = new SecureRandom(); - } - - random.nextBytes(iv); - - AlgorithmParameters params; - - try - { - params = AlgorithmParameters.getInstance("Shacal2", BouncyCastleProvider.PROVIDER_NAME); - params.init(new IvParameterSpec(iv)); - } - catch (Exception e) - { - throw new RuntimeException(e.getMessage()); - } - return params; - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Shacal2 IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = Shacal2.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.Shacal2", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.Shacal2", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameterGenerator.Shacal2", PREFIX + "$AlgParamGen"); - provider.addAlgorithm("AlgorithmParameters.Shacal2", PREFIX + "$AlgParams"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SipHash.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SipHash.java deleted file mode 100644 index 5a115318..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SipHash.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class SipHash -{ - private SipHash() - { - } - - public static class Mac24 - extends BaseMac - { - public Mac24() - { - super(new org.bouncycastle.crypto.macs.SipHash()); - } - } - - public static class Mac48 - extends BaseMac - { - public Mac48() - { - super(new org.bouncycastle.crypto.macs.SipHash(4, 8)); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("SipHash", 128, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = SipHash.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Mac.SIPHASH-2-4", PREFIX + "$Mac24"); - provider.addAlgorithm("Alg.Alias.Mac.SIPHASH", "SIPHASH-2-4"); - provider.addAlgorithm("Mac.SIPHASH-4-8", PREFIX + "$Mac48"); - - provider.addAlgorithm("KeyGenerator.SIPHASH", PREFIX + "$KeyGen"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.SIPHASH-2-4", "SIPHASH"); - provider.addAlgorithm("Alg.Alias.KeyGenerator.SIPHASH-4-8", "SIPHASH"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Skipjack.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Skipjack.java deleted file mode 100644 index ec75944c..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Skipjack.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.SkipjackEngine; -import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Skipjack -{ - private Skipjack() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new SkipjackEngine()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Skipjack", 80, new CipherKeyGenerator()); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Skipjack IV"; - } - } - - public static class Mac - extends BaseMac - { - public Mac() - { - super(new CBCBlockCipherMac(new SkipjackEngine())); - } - } - - public static class MacCFB8 - extends BaseMac - { - public MacCFB8() - { - super(new CFBBlockCipherMac(new SkipjackEngine())); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Skipjack.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.SKIPJACK", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.SKIPJACK", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.SKIPJACK", PREFIX + "$AlgParams"); - provider.addAlgorithm("Mac.SKIPJACKMAC", PREFIX + "$Mac"); - provider.addAlgorithm("Alg.Alias.Mac.SKIPJACK", "SKIPJACKMAC"); - provider.addAlgorithm("Mac.SKIPJACKMAC/CFB8", PREFIX + "$MacCFB8"); - provider.addAlgorithm("Alg.Alias.Mac.SKIPJACK/CFB8", "SKIPJACKMAC/CFB8"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java deleted file mode 100644 index c1b3d199..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -abstract class SymmetricAlgorithmProvider - extends AlgorithmProvider -{ - protected void addGMacAlgorithm( - ConfigurableProvider provider, - String algorithm, - String algorithmClassName, - String keyGeneratorClassName) - { - provider.addAlgorithm("Mac." + algorithm + "-GMAC", algorithmClassName); - provider.addAlgorithm("Alg.Alias.Mac." + algorithm + "GMAC", algorithm + "-GMAC"); - - provider.addAlgorithm("KeyGenerator." + algorithm + "-GMAC", keyGeneratorClassName); - provider.addAlgorithm("Alg.Alias.KeyGenerator." + algorithm + "GMAC", algorithm + "-GMAC"); - } - - protected void addPoly1305Algorithm(ConfigurableProvider provider, - String algorithm, - String algorithmClassName, - String keyGeneratorClassName) - { - provider.addAlgorithm("Mac.POLY1305-" + algorithm, algorithmClassName); - provider.addAlgorithm("Alg.Alias.Mac.POLY1305" + algorithm, "POLY1305-" + algorithm); - - provider.addAlgorithm("KeyGenerator.POLY1305-" + algorithm, keyGeneratorClassName); - provider.addAlgorithm("Alg.Alias.KeyGenerator.POLY1305" + algorithm, "POLY1305-" + algorithm); - } - -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/TEA.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/TEA.java deleted file mode 100644 index 4bc12c9f..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/TEA.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.TEAEngine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class TEA -{ - private TEA() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new TEAEngine()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("TEA", 128, new CipherKeyGenerator()); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "TEA IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = TEA.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.TEA", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.TEA", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.TEA", PREFIX + "$AlgParams"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Threefish.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Threefish.java deleted file mode 100644 index 2970de6a..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Threefish.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.ThreefishEngine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class Threefish -{ - private Threefish() - { - } - - public static class ECB_256 - extends BaseBlockCipher - { - public ECB_256() - { - super(new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256)); - } - } - - public static class ECB_512 - extends BaseBlockCipher - { - public ECB_512() - { - super(new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512)); - } - } - - public static class ECB_1024 - extends BaseBlockCipher - { - public ECB_1024() - { - super(new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024)); - } - } - - public static class KeyGen_256 - extends BaseKeyGenerator - { - public KeyGen_256() - { - super("Threefish-256", 256, new CipherKeyGenerator()); - } - } - - public static class KeyGen_512 - extends BaseKeyGenerator - { - public KeyGen_512() - { - super("Threefish-512", 512, new CipherKeyGenerator()); - } - } - - public static class KeyGen_1024 - extends BaseKeyGenerator - { - public KeyGen_1024() - { - super("Threefish-1024", 1024, new CipherKeyGenerator()); - } - } - - public static class AlgParams_256 - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Threefish-256 IV"; - } - } - - public static class AlgParams_512 - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Threefish-512 IV"; - } - } - - public static class AlgParams_1024 - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Threefish-1024 IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = Threefish.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.Threefish-256", PREFIX + "$ECB_256"); - provider.addAlgorithm("Cipher.Threefish-512", PREFIX + "$ECB_512"); - provider.addAlgorithm("Cipher.Threefish-1024", PREFIX + "$ECB_1024"); - provider.addAlgorithm("KeyGenerator.Threefish-256", PREFIX + "$KeyGen_256"); - provider.addAlgorithm("KeyGenerator.Threefish-512", PREFIX + "$KeyGen_512"); - provider.addAlgorithm("KeyGenerator.Threefish-1024", PREFIX + "$KeyGen_1024"); - provider.addAlgorithm("AlgorithmParameters.Threefish-256", PREFIX + "$AlgParams_256"); - provider.addAlgorithm("AlgorithmParameters.Threefish-512", PREFIX + "$AlgParams_512"); - provider.addAlgorithm("AlgorithmParameters.Threefish-1024", PREFIX + "$AlgParams_1024"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Twofish.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Twofish.java deleted file mode 100644 index 4c3ab1c7..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Twofish.java +++ /dev/null @@ -1,132 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.TwofishEngine; -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.crypto.macs.GMac; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; - -public final class Twofish -{ - private Twofish() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new BlockCipherProvider() - { - public BlockCipher get() - { - return new TwofishEngine(); - } - }); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("Twofish", 256, new CipherKeyGenerator()); - } - } - - public static class GMAC - extends BaseMac - { - public GMAC() - { - super(new GMac(new GCMBlockCipher(new TwofishEngine()))); - } - } - - public static class Poly1305 - extends BaseMac - { - public Poly1305() - { - super(new org.bouncycastle.crypto.macs.Poly1305(new TwofishEngine())); - } - } - - public static class Poly1305KeyGen - extends BaseKeyGenerator - { - public Poly1305KeyGen() - { - super("Poly1305-Twofish", 256, new Poly1305KeyGenerator()); - } - } - - /** - * PBEWithSHAAndTwofish-CBC - */ - static public class PBEWithSHAKeyFactory - extends PBESecretKeyFactory - { - public PBEWithSHAKeyFactory() - { - super("PBEwithSHAandTwofish-CBC", null, true, PKCS12, SHA1, 256, 128); - } - } - - /** - * PBEWithSHAAndTwofish-CBC - */ - static public class PBEWithSHA - extends BaseBlockCipher - { - public PBEWithSHA() - { - super(new CBCBlockCipher(new TwofishEngine())); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "Twofish IV"; - } - } - - public static class Mappings - extends SymmetricAlgorithmProvider - { - private static final String PREFIX = Twofish.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams"); - - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE"); - provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE"); - provider.addAlgorithm("Cipher.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHA"); - provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHAKeyFactory"); - - addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen"); - addPoly1305Algorithm(provider, "Twofish", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/VMPC.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/VMPC.java deleted file mode 100644 index 1e59e078..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/VMPC.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.VMPCEngine; -import org.bouncycastle.crypto.macs.VMPCMac; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class VMPC -{ - private VMPC() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new VMPCEngine(), 16); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("VMPC", 128, new CipherKeyGenerator()); - } - } - - public static class Mac - extends BaseMac - { - public Mac() - { - super(new VMPCMac()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = VMPC.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.VMPC", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.VMPC", PREFIX + "$KeyGen"); - provider.addAlgorithm("Mac.VMPCMAC", PREFIX + "$Mac"); - provider.addAlgorithm("Alg.Alias.Mac.VMPC", "VMPCMAC"); - provider.addAlgorithm("Alg.Alias.Mac.VMPC-MAC", "VMPCMAC"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3.java deleted file mode 100644 index b5d8814a..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.VMPCKSA3Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class VMPCKSA3 -{ - private VMPCKSA3() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new VMPCKSA3Engine(), 16); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("VMPC-KSA3", 128, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = VMPCKSA3.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.VMPC-KSA3", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.VMPC-KSA3", PREFIX + "$KeyGen"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/XSalsa20.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/XSalsa20.java deleted file mode 100644 index 5be06401..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/XSalsa20.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.XSalsa20Engine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class XSalsa20 -{ - private XSalsa20() - { - } - - public static class Base - extends BaseStreamCipher - { - public Base() - { - super(new XSalsa20Engine(), 24); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("XSalsa20", 256, new CipherKeyGenerator()); - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = XSalsa20.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.XSALSA20", PREFIX + "$Base"); - provider.addAlgorithm("KeyGenerator.XSALSA20", PREFIX + "$KeyGen"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/XTEA.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/XTEA.java deleted file mode 100644 index 2e946de1..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/XTEA.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.engines.XTEAEngine; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; -import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; -import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; -import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; - -public final class XTEA -{ - private XTEA() - { - } - - public static class ECB - extends BaseBlockCipher - { - public ECB() - { - super(new XTEAEngine()); - } - } - - public static class KeyGen - extends BaseKeyGenerator - { - public KeyGen() - { - super("XTEA", 128, new CipherKeyGenerator()); - } - } - - public static class AlgParams - extends IvAlgorithmParameters - { - protected String engineToString() - { - return "XTEA IV"; - } - } - - public static class Mappings - extends AlgorithmProvider - { - private static final String PREFIX = XTEA.class.getName(); - - public Mappings() - { - } - - public void configure(ConfigurableProvider provider) - { - - provider.addAlgorithm("Cipher.XTEA", PREFIX + "$ECB"); - provider.addAlgorithm("KeyGenerator.XTEA", PREFIX + "$KeyGen"); - provider.addAlgorithm("AlgorithmParameters.XTEA", PREFIX + "$AlgParams"); - - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java deleted file mode 100644 index a4719729..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java +++ /dev/null @@ -1,155 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import javax.crypto.interfaces.PBEKey; -import javax.crypto.spec.PBEKeySpec; - -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.PBEParametersGenerator; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; - -public class BCPBEKey - implements PBEKey -{ - String algorithm; - ASN1ObjectIdentifier oid; - int type; - int digest; - int keySize; - int ivSize; - CipherParameters param; - PBEKeySpec pbeKeySpec; - boolean tryWrong = false; - - /** - * @param param - */ - public BCPBEKey( - String algorithm, - ASN1ObjectIdentifier oid, - int type, - int digest, - int keySize, - int ivSize, - PBEKeySpec pbeKeySpec, - CipherParameters param) - { - this.algorithm = algorithm; - this.oid = oid; - this.type = type; - this.digest = digest; - this.keySize = keySize; - this.ivSize = ivSize; - this.pbeKeySpec = pbeKeySpec; - this.param = param; - } - - public String getAlgorithm() - { - return algorithm; - } - - public String getFormat() - { - return "RAW"; - } - - public byte[] getEncoded() - { - if (param != null) - { - KeyParameter kParam; - - if (param instanceof ParametersWithIV) - { - kParam = (KeyParameter)((ParametersWithIV)param).getParameters(); - } - else - { - kParam = (KeyParameter)param; - } - - return kParam.getKey(); - } - else - { - if (type == PBE.PKCS12) - { - return PBEParametersGenerator.PKCS12PasswordToBytes(pbeKeySpec.getPassword()); - } - else if (type == PBE.PKCS5S2_UTF8) - { - return PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(pbeKeySpec.getPassword()); - } - else - { - return PBEParametersGenerator.PKCS5PasswordToBytes(pbeKeySpec.getPassword()); - } - } - } - - int getType() - { - return type; - } - - int getDigest() - { - return digest; - } - - int getKeySize() - { - return keySize; - } - - public int getIvSize() - { - return ivSize; - } - - public CipherParameters getParam() - { - return param; - } - - /* (non-Javadoc) - * @see javax.crypto.interfaces.PBEKey#getPassword() - */ - public char[] getPassword() - { - return pbeKeySpec.getPassword(); - } - - /* (non-Javadoc) - * @see javax.crypto.interfaces.PBEKey#getSalt() - */ - public byte[] getSalt() - { - return pbeKeySpec.getSalt(); - } - - /* (non-Javadoc) - * @see javax.crypto.interfaces.PBEKey#getIterationCount() - */ - public int getIterationCount() - { - return pbeKeySpec.getIterationCount(); - } - - public ASN1ObjectIdentifier getOID() - { - return oid; - } - - public void setTryWrongPKCS12Zero(boolean tryWrong) - { - this.tryWrong = tryWrong; - } - - boolean shouldTryWrongPKCS12() - { - return tryWrong; - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameterGenerator.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameterGenerator.java deleted file mode 100644 index 63d6548e..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameterGenerator.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.AlgorithmParameterGeneratorSpi; -import java.security.SecureRandom; - -public abstract class BaseAlgorithmParameterGenerator - extends AlgorithmParameterGeneratorSpi -{ - protected SecureRandom random; - protected int strength = 1024; - - protected void engineInit( - int strength, - SecureRandom random) - { - this.strength = strength; - this.random = random; - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java deleted file mode 100644 index ec723db6..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.AlgorithmParametersSpi; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -public abstract class BaseAlgorithmParameters - extends AlgorithmParametersSpi -{ - protected boolean isASN1FormatString(String format) - { - return format == null || format.equals("ASN.1"); - } - - protected AlgorithmParameterSpec engineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == null) - { - throw new NullPointerException("argument to getParameterSpec must not be null"); - } - - return localEngineGetParameterSpec(paramSpec); - } - - protected abstract AlgorithmParameterSpec localEngineGetParameterSpec(Class paramSpec) - throws InvalidParameterSpecException; -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java deleted file mode 100644 index 01fe466d..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java +++ /dev/null @@ -1,1095 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.InvalidParameterException; -import java.security.Key; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.SecretKey; -import javax.crypto.ShortBufferException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEParameterSpec; -import javax.crypto.spec.RC2ParameterSpec; -import javax.crypto.spec.RC5ParameterSpec; - -import org.bouncycastle.asn1.cms.GCMParameters; -import org.bouncycastle.crypto.BlockCipher; -import org.bouncycastle.crypto.BufferedBlockCipher; -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.DataLengthException; -import org.bouncycastle.crypto.InvalidCipherTextException; -import org.bouncycastle.crypto.OutputLengthException; -import org.bouncycastle.crypto.modes.AEADBlockCipher; -import org.bouncycastle.crypto.modes.CBCBlockCipher; -import org.bouncycastle.crypto.modes.CCMBlockCipher; -import org.bouncycastle.crypto.modes.CFBBlockCipher; -import org.bouncycastle.crypto.modes.CTSBlockCipher; -import org.bouncycastle.crypto.modes.EAXBlockCipher; -import org.bouncycastle.crypto.modes.GCFBBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.crypto.modes.GOFBBlockCipher; -import org.bouncycastle.crypto.modes.OCBBlockCipher; -import org.bouncycastle.crypto.modes.OFBBlockCipher; -import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher; -import org.bouncycastle.crypto.modes.PGPCFBBlockCipher; -import org.bouncycastle.crypto.modes.SICBlockCipher; -import org.bouncycastle.crypto.paddings.BlockCipherPadding; -import org.bouncycastle.crypto.paddings.ISO10126d2Padding; -import org.bouncycastle.crypto.paddings.ISO7816d4Padding; -import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher; -import org.bouncycastle.crypto.paddings.TBCPadding; -import org.bouncycastle.crypto.paddings.X923Padding; -import org.bouncycastle.crypto.paddings.ZeroBytePadding; -import org.bouncycastle.crypto.params.AEADParameters; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; -import org.bouncycastle.crypto.params.ParametersWithRandom; -import org.bouncycastle.crypto.params.ParametersWithSBox; -import org.bouncycastle.crypto.params.RC2Parameters; -import org.bouncycastle.crypto.params.RC5Parameters; -import org.bouncycastle.jcajce.spec.GOST28147ParameterSpec; -import org.bouncycastle.jcajce.spec.RepeatedSecretKeySpec; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Strings; - -public class BaseBlockCipher - extends BaseWrapCipher - implements PBE -{ - private static final Class gcmSpecClass = lookup("javax.crypto.spec.GCMParameterSpec"); - - // - // specs we can handle. - // - private Class[] availableSpecs = - { - RC2ParameterSpec.class, - RC5ParameterSpec.class, - IvParameterSpec.class, - PBEParameterSpec.class, - GOST28147ParameterSpec.class, - gcmSpecClass - }; - - private BlockCipher baseEngine; - private BlockCipherProvider engineProvider; - private GenericBlockCipher cipher; - private ParametersWithIV ivParam; - private AEADParameters aeadParams; - - private int ivLength = 0; - - private boolean padded; - - private PBEParameterSpec pbeSpec = null; - private String pbeAlgorithm = null; - - private String modeName = null; - - private static Class lookup(String className) - { - try - { - Class def = BaseBlockCipher.class.getClassLoader().loadClass(className); - - return def; - } - catch (Exception e) - { - return null; - } - } - - protected BaseBlockCipher( - BlockCipher engine) - { - baseEngine = engine; - - cipher = new BufferedGenericBlockCipher(engine); - } - - protected BaseBlockCipher( - BlockCipherProvider provider) - { - baseEngine = provider.get(); - engineProvider = provider; - - cipher = new BufferedGenericBlockCipher(provider.get()); - } - - protected BaseBlockCipher( - AEADBlockCipher engine) - { - baseEngine = engine.getUnderlyingCipher(); - ivLength = baseEngine.getBlockSize(); - cipher = new AEADGenericBlockCipher(engine); - } - - protected BaseBlockCipher( - org.bouncycastle.crypto.BlockCipher engine, - int ivLength) - { - baseEngine = engine; - - this.cipher = new BufferedGenericBlockCipher(engine); - this.ivLength = ivLength / 8; - } - - protected BaseBlockCipher( - BufferedBlockCipher engine, - int ivLength) - { - baseEngine = engine.getUnderlyingCipher(); - - this.cipher = new BufferedGenericBlockCipher(engine); - this.ivLength = ivLength / 8; - } - - protected int engineGetBlockSize() - { - return baseEngine.getBlockSize(); - } - - protected byte[] engineGetIV() - { - if (aeadParams != null) - { - return aeadParams.getNonce(); - } - - return (ivParam != null) ? ivParam.getIV() : null; - } - - protected int engineGetKeySize( - Key key) - { - return key.getEncoded().length * 8; - } - - protected int engineGetOutputSize( - int inputLen) - { - return cipher.getOutputSize(inputLen); - } - - protected AlgorithmParameters engineGetParameters() - { - if (engineParams == null) - { - if (pbeSpec != null) - { - try - { - engineParams = AlgorithmParameters.getInstance(pbeAlgorithm, BouncyCastleProvider.PROVIDER_NAME); - engineParams.init(pbeSpec); - } - catch (Exception e) - { - return null; - } - } - else if (ivParam != null) - { - String name = cipher.getUnderlyingCipher().getAlgorithmName(); - - if (name.indexOf('/') >= 0) - { - name = name.substring(0, name.indexOf('/')); - } - - try - { - engineParams = AlgorithmParameters.getInstance(name, BouncyCastleProvider.PROVIDER_NAME); - engineParams.init(ivParam.getIV()); - } - catch (Exception e) - { - throw new RuntimeException(e.toString()); - } - } - else if (aeadParams != null) - { - try - { - engineParams = AlgorithmParameters.getInstance("GCM", BouncyCastleProvider.PROVIDER_NAME); - engineParams.init(new GCMParameters(aeadParams.getNonce(), aeadParams.getMacSize()).getEncoded()); - } - catch (Exception e) - { - throw new RuntimeException(e.toString()); - } - } - } - - return engineParams; - } - - protected void engineSetMode( - String mode) - throws NoSuchAlgorithmException - { - modeName = Strings.toUpperCase(mode); - - if (modeName.equals("ECB")) - { - ivLength = 0; - cipher = new BufferedGenericBlockCipher(baseEngine); - } - else if (modeName.equals("CBC")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new BufferedGenericBlockCipher( - new CBCBlockCipher(baseEngine)); - } - else if (modeName.startsWith("OFB")) - { - ivLength = baseEngine.getBlockSize(); - if (modeName.length() != 3) - { - int wordSize = Integer.parseInt(modeName.substring(3)); - - cipher = new BufferedGenericBlockCipher( - new OFBBlockCipher(baseEngine, wordSize)); - } - else - { - cipher = new BufferedGenericBlockCipher( - new OFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize())); - } - } - else if (modeName.startsWith("CFB")) - { - ivLength = baseEngine.getBlockSize(); - if (modeName.length() != 3) - { - int wordSize = Integer.parseInt(modeName.substring(3)); - - cipher = new BufferedGenericBlockCipher( - new CFBBlockCipher(baseEngine, wordSize)); - } - else - { - cipher = new BufferedGenericBlockCipher( - new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize())); - } - } - else if (modeName.startsWith("PGP")) - { - boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV"); - - ivLength = baseEngine.getBlockSize(); - cipher = new BufferedGenericBlockCipher( - new PGPCFBBlockCipher(baseEngine, inlineIV)); - } - else if (modeName.equalsIgnoreCase("OpenPGPCFB")) - { - ivLength = 0; - cipher = new BufferedGenericBlockCipher( - new OpenPGPCFBBlockCipher(baseEngine)); - } - else if (modeName.startsWith("SIC")) - { - ivLength = baseEngine.getBlockSize(); - if (ivLength < 16) - { - throw new IllegalArgumentException("Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)"); - } - cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( - new SICBlockCipher(baseEngine))); - } - else if (modeName.startsWith("CTR")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( - new SICBlockCipher(baseEngine))); - } - else if (modeName.startsWith("GOFB")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( - new GOFBBlockCipher(baseEngine))); - } - else if (modeName.startsWith("GCFB")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( - new GCFBBlockCipher(baseEngine))); - } - else if (modeName.startsWith("CTS")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new BufferedGenericBlockCipher(new CTSBlockCipher(new CBCBlockCipher(baseEngine))); - } - else if (modeName.startsWith("CCM")) - { - ivLength = 13; // CCM nonce 7..13 bytes - cipher = new AEADGenericBlockCipher(new CCMBlockCipher(baseEngine)); - } - else if (modeName.startsWith("OCB")) - { - if (engineProvider != null) - { - /* - * RFC 7253 4.2. Nonce is a string of no more than 120 bits - */ - ivLength = 15; - cipher = new AEADGenericBlockCipher(new OCBBlockCipher(baseEngine, engineProvider.get())); - } - else - { - throw new NoSuchAlgorithmException("can't support mode " + mode); - } - } - else if (modeName.startsWith("EAX")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine)); - } - else if (modeName.startsWith("GCM")) - { - ivLength = baseEngine.getBlockSize(); - cipher = new AEADGenericBlockCipher(new GCMBlockCipher(baseEngine)); - } - else - { - throw new NoSuchAlgorithmException("can't support mode " + mode); - } - } - - protected void engineSetPadding( - String padding) - throws NoSuchPaddingException - { - String paddingName = Strings.toUpperCase(padding); - - if (paddingName.equals("NOPADDING")) - { - if (cipher.wrapOnNoPadding()) - { - cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(cipher.getUnderlyingCipher())); - } - } - else if (paddingName.equals("WITHCTS")) - { - cipher = new BufferedGenericBlockCipher(new CTSBlockCipher(cipher.getUnderlyingCipher())); - } - else - { - padded = true; - - if (isAEADModeName(modeName)) - { - throw new NoSuchPaddingException("Only NoPadding can be used with AEAD modes."); - } - else if (paddingName.equals("PKCS5PADDING") || paddingName.equals("PKCS7PADDING")) - { - cipher = new BufferedGenericBlockCipher(cipher.getUnderlyingCipher()); - } - else if (paddingName.equals("ZEROBYTEPADDING")) - { - cipher = new BufferedGenericBlockCipher(cipher.getUnderlyingCipher(), new ZeroBytePadding()); - } - else if (paddingName.equals("ISO10126PADDING") || paddingName.equals("ISO10126-2PADDING")) - { - cipher = new BufferedGenericBlockCipher(cipher.getUnderlyingCipher(), new ISO10126d2Padding()); - } - else if (paddingName.equals("X9.23PADDING") || paddingName.equals("X923PADDING")) - { - cipher = new BufferedGenericBlockCipher(cipher.getUnderlyingCipher(), new X923Padding()); - } - else if (paddingName.equals("ISO7816-4PADDING") || paddingName.equals("ISO9797-1PADDING")) - { - cipher = new BufferedGenericBlockCipher(cipher.getUnderlyingCipher(), new ISO7816d4Padding()); - } - else if (paddingName.equals("TBCPADDING")) - { - cipher = new BufferedGenericBlockCipher(cipher.getUnderlyingCipher(), new TBCPadding()); - } - else - { - throw new NoSuchPaddingException("Padding " + padding + " unknown."); - } - } - } - - protected void engineInit( - int opmode, - Key key, - AlgorithmParameterSpec params, - SecureRandom random) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - CipherParameters param; - - this.pbeSpec = null; - this.pbeAlgorithm = null; - this.engineParams = null; - this.aeadParams = null; - - // - // basic key check - // - if (!(key instanceof SecretKey)) - { - throw new InvalidKeyException("Key for algorithm " + key.getAlgorithm() + " not suitable for symmetric enryption."); - } - - // - // for RC5-64 we must have some default parameters - // - if (params == null && baseEngine.getAlgorithmName().startsWith("RC5-64")) - { - throw new InvalidAlgorithmParameterException("RC5 requires an RC5ParametersSpec to be passed in."); - } - - // - // a note on iv's - if ivLength is zero the IV gets ignored (we don't use it). - // - if (key instanceof BCPBEKey) - { - BCPBEKey k = (BCPBEKey)key; - - if (k.getOID() != null) - { - pbeAlgorithm = k.getOID().getId(); - } - else - { - pbeAlgorithm = k.getAlgorithm(); - } - - if (k.getParam() != null) - { - param = k.getParam(); - if (params instanceof IvParameterSpec) - { - IvParameterSpec iv = (IvParameterSpec)params; - - param = new ParametersWithIV(param, iv.getIV()); - } - else if (params instanceof GOST28147ParameterSpec) - { - // need to pick up IV and SBox. - GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params; - - param = new ParametersWithSBox(param, gost28147Param.getSbox()); - - if (gost28147Param.getIV() != null && ivLength != 0) - { - param = new ParametersWithIV(param, gost28147Param.getIV()); - } - } - } - else if (params instanceof PBEParameterSpec) - { - pbeSpec = (PBEParameterSpec)params; - param = PBE.Util.makePBEParameters(k, params, cipher.getUnderlyingCipher().getAlgorithmName()); - } - else - { - throw new InvalidAlgorithmParameterException("PBE requires PBE parameters to be set."); - } - - if (param instanceof ParametersWithIV) - { - ivParam = (ParametersWithIV)param; - } - } - else if (params == null) - { - param = new KeyParameter(key.getEncoded()); - } - else if (params instanceof IvParameterSpec) - { - if (ivLength != 0) - { - IvParameterSpec p = (IvParameterSpec)params; - - if (p.getIV().length != ivLength && !isAEADModeName(modeName)) - { - throw new InvalidAlgorithmParameterException("IV must be " + ivLength + " bytes long."); - } - - if (key instanceof RepeatedSecretKeySpec) - { - param = new ParametersWithIV(null, p.getIV()); - ivParam = (ParametersWithIV)param; - } - else - { - param = new ParametersWithIV(new KeyParameter(key.getEncoded()), p.getIV()); - ivParam = (ParametersWithIV)param; - } - } - else - { - if (modeName != null && modeName.equals("ECB")) - { - throw new InvalidAlgorithmParameterException("ECB mode does not use an IV"); - } - - param = new KeyParameter(key.getEncoded()); - } - } - else if (params instanceof GOST28147ParameterSpec) - { - GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params; - - param = new ParametersWithSBox( - new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox()); - - if (gost28147Param.getIV() != null && ivLength != 0) - { - param = new ParametersWithIV(param, gost28147Param.getIV()); - ivParam = (ParametersWithIV)param; - } - } - else if (params instanceof RC2ParameterSpec) - { - RC2ParameterSpec rc2Param = (RC2ParameterSpec)params; - - param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits()); - - if (rc2Param.getIV() != null && ivLength != 0) - { - param = new ParametersWithIV(param, rc2Param.getIV()); - ivParam = (ParametersWithIV)param; - } - } - else if (params instanceof RC5ParameterSpec) - { - RC5ParameterSpec rc5Param = (RC5ParameterSpec)params; - - param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds()); - if (baseEngine.getAlgorithmName().startsWith("RC5")) - { - if (baseEngine.getAlgorithmName().equals("RC5-32")) - { - if (rc5Param.getWordSize() != 32) - { - throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + "."); - } - } - else if (baseEngine.getAlgorithmName().equals("RC5-64")) - { - if (rc5Param.getWordSize() != 64) - { - throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + "."); - } - } - } - else - { - throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5."); - } - if ((rc5Param.getIV() != null) && (ivLength != 0)) - { - param = new ParametersWithIV(param, rc5Param.getIV()); - ivParam = (ParametersWithIV)param; - } - } - else if (gcmSpecClass != null && gcmSpecClass.isInstance(params)) - { - if (!isAEADModeName(modeName) && !(cipher instanceof AEADGenericBlockCipher)) - { - throw new InvalidAlgorithmParameterException("GCMParameterSpec can only be used with AEAD modes."); - } - - try - { - Method tLen = gcmSpecClass.getDeclaredMethod("getTLen", new Class[0]); - Method iv= gcmSpecClass.getDeclaredMethod("getIV", new Class[0]); - - if (key instanceof RepeatedSecretKeySpec) - { - param = aeadParams = new AEADParameters(null, ((Integer)tLen.invoke(params, new Object[0])).intValue(), (byte[])iv.invoke(params, new Object[0])); - } - else - { - param = aeadParams = new AEADParameters(new KeyParameter(key.getEncoded()), ((Integer)tLen.invoke(params, new Object[0])).intValue(), (byte[])iv.invoke(params, new Object[0])); - } - } - catch (Exception e) - { - throw new InvalidAlgorithmParameterException("Cannot process GCMParameterSpec."); - } - } - else - { - throw new InvalidAlgorithmParameterException("unknown parameter type."); - } - - if ((ivLength != 0) && !(param instanceof ParametersWithIV) && !(param instanceof AEADParameters)) - { - SecureRandom ivRandom = random; - - if (ivRandom == null) - { - ivRandom = new SecureRandom(); - } - - if ((opmode == Cipher.ENCRYPT_MODE) || (opmode == Cipher.WRAP_MODE)) - { - byte[] iv = new byte[ivLength]; - - ivRandom.nextBytes(iv); - param = new ParametersWithIV(param, iv); - ivParam = (ParametersWithIV)param; - } - else if (cipher.getUnderlyingCipher().getAlgorithmName().indexOf("PGPCFB") < 0) - { - throw new InvalidAlgorithmParameterException("no IV set when one expected"); - } - } - - if (random != null && padded) - { - param = new ParametersWithRandom(param, random); - } - - try - { - switch (opmode) - { - case Cipher.ENCRYPT_MODE: - case Cipher.WRAP_MODE: - cipher.init(true, param); - break; - case Cipher.DECRYPT_MODE: - case Cipher.UNWRAP_MODE: - cipher.init(false, param); - break; - default: - throw new InvalidParameterException("unknown opmode " + opmode + " passed"); - } - } - catch (Exception e) - { - throw new InvalidKeyException(e.getMessage()); - } - } - - protected void engineInit( - int opmode, - Key key, - AlgorithmParameters params, - SecureRandom random) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - AlgorithmParameterSpec paramSpec = null; - - if (params != null) - { - for (int i = 0; i != availableSpecs.length; i++) - { - if (availableSpecs[i] == null) - { - continue; - } - - try - { - paramSpec = params.getParameterSpec(availableSpecs[i]); - break; - } - catch (Exception e) - { - // try again if possible - } - } - - if (paramSpec == null) - { - throw new InvalidAlgorithmParameterException("can't handle parameter " + params.toString()); - } - } - - engineInit(opmode, key, paramSpec, random); - - engineParams = params; - } - - protected void engineInit( - int opmode, - Key key, - SecureRandom random) - throws InvalidKeyException - { - try - { - engineInit(opmode, key, (AlgorithmParameterSpec)null, random); - } - catch (InvalidAlgorithmParameterException e) - { - throw new InvalidKeyException(e.getMessage()); - } - } - - protected void engineUpdateAAD(byte[] input, int offset, int length) - { - cipher.updateAAD(input, offset, length); - } - - protected void engineUpdateAAD(ByteBuffer bytebuffer) - { - int offset = bytebuffer.arrayOffset() + bytebuffer.position(); - int length = bytebuffer.limit() - bytebuffer.position(); - engineUpdateAAD(bytebuffer.array(), offset, length); - } - - protected byte[] engineUpdate( - byte[] input, - int inputOffset, - int inputLen) - { - int length = cipher.getUpdateOutputSize(inputLen); - - if (length > 0) - { - byte[] out = new byte[length]; - - int len = cipher.processBytes(input, inputOffset, inputLen, out, 0); - - if (len == 0) - { - return null; - } - else if (len != out.length) - { - byte[] tmp = new byte[len]; - - System.arraycopy(out, 0, tmp, 0, len); - - return tmp; - } - - return out; - } - - cipher.processBytes(input, inputOffset, inputLen, null, 0); - - return null; - } - - protected int engineUpdate( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) - throws ShortBufferException - { - try - { - return cipher.processBytes(input, inputOffset, inputLen, output, outputOffset); - } - catch (DataLengthException e) - { - throw new ShortBufferException(e.getMessage()); - } - } - - protected byte[] engineDoFinal( - byte[] input, - int inputOffset, - int inputLen) - throws IllegalBlockSizeException, BadPaddingException - { - int len = 0; - byte[] tmp = new byte[engineGetOutputSize(inputLen)]; - - if (inputLen != 0) - { - len = cipher.processBytes(input, inputOffset, inputLen, tmp, 0); - } - - try - { - len += cipher.doFinal(tmp, len); - } - catch (DataLengthException e) - { - throw new IllegalBlockSizeException(e.getMessage()); - } - - if (len == tmp.length) - { - return tmp; - } - - byte[] out = new byte[len]; - - System.arraycopy(tmp, 0, out, 0, len); - - return out; - } - - protected int engineDoFinal( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) - throws IllegalBlockSizeException, BadPaddingException, ShortBufferException - { - try - { - int len = 0; - - if (inputLen != 0) - { - len = cipher.processBytes(input, inputOffset, inputLen, output, outputOffset); - } - - return (len + cipher.doFinal(output, outputOffset + len)); - } - catch (OutputLengthException e) - { - throw new ShortBufferException(e.getMessage()); - } - catch (DataLengthException e) - { - throw new IllegalBlockSizeException(e.getMessage()); - } - } - - private boolean isAEADModeName( - String modeName) - { - return "CCM".equals(modeName) || "EAX".equals(modeName) || "GCM".equals(modeName) || "OCB".equals(modeName); - } - - /* - * The ciphers that inherit from us. - */ - - static private interface GenericBlockCipher - { - public void init(boolean forEncryption, CipherParameters params) - throws IllegalArgumentException; - - public boolean wrapOnNoPadding(); - - public String getAlgorithmName(); - - public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher(); - - public int getOutputSize(int len); - - public int getUpdateOutputSize(int len); - - public void updateAAD(byte[] input, int offset, int length); - - public int processByte(byte in, byte[] out, int outOff) - throws DataLengthException; - - public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) - throws DataLengthException; - - public int doFinal(byte[] out, int outOff) - throws IllegalStateException, - BadPaddingException; - } - - private static class BufferedGenericBlockCipher - implements GenericBlockCipher - { - private BufferedBlockCipher cipher; - - BufferedGenericBlockCipher(BufferedBlockCipher cipher) - { - this.cipher = cipher; - } - - BufferedGenericBlockCipher(org.bouncycastle.crypto.BlockCipher cipher) - { - this.cipher = new PaddedBufferedBlockCipher(cipher); - } - - BufferedGenericBlockCipher(org.bouncycastle.crypto.BlockCipher cipher, BlockCipherPadding padding) - { - this.cipher = new PaddedBufferedBlockCipher(cipher, padding); - } - - public void init(boolean forEncryption, CipherParameters params) - throws IllegalArgumentException - { - cipher.init(forEncryption, params); - } - - public boolean wrapOnNoPadding() - { - return !(cipher instanceof CTSBlockCipher); - } - - public String getAlgorithmName() - { - return cipher.getUnderlyingCipher().getAlgorithmName(); - } - - public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher() - { - return cipher.getUnderlyingCipher(); - } - - public int getOutputSize(int len) - { - return cipher.getOutputSize(len); - } - - public int getUpdateOutputSize(int len) - { - return cipher.getUpdateOutputSize(len); - } - - public void updateAAD(byte[] input, int offset, int length) - { - throw new UnsupportedOperationException("AAD is not supported in the current mode."); - } - - public int processByte(byte in, byte[] out, int outOff) throws DataLengthException - { - return cipher.processByte(in, out, outOff); - } - - public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) throws DataLengthException - { - return cipher.processBytes(in, inOff, len, out, outOff); - } - - public int doFinal(byte[] out, int outOff) throws IllegalStateException, BadPaddingException - { - try - { - return cipher.doFinal(out, outOff); - } - catch (InvalidCipherTextException e) - { - throw new BadPaddingException(e.getMessage()); - } - } - } - - private static class AEADGenericBlockCipher - implements GenericBlockCipher - { - private static final Constructor aeadBadTagConstructor; - - static { - Class aeadBadTagClass = lookup("javax.crypto.AEADBadTagException"); - if (aeadBadTagClass != null) - { - aeadBadTagConstructor = findExceptionConstructor(aeadBadTagClass); - } - else - { - aeadBadTagConstructor = null; - } - } - - private static Constructor findExceptionConstructor(Class clazz) - { - try - { - return clazz.getConstructor(new Class[]{String.class}); - } - catch (Exception e) - { - return null; - } - } - - private AEADBlockCipher cipher; - - AEADGenericBlockCipher(AEADBlockCipher cipher) - { - this.cipher = cipher; - } - - public void init(boolean forEncryption, CipherParameters params) - throws IllegalArgumentException - { - cipher.init(forEncryption, params); - } - - public String getAlgorithmName() - { - return cipher.getUnderlyingCipher().getAlgorithmName(); - } - - public boolean wrapOnNoPadding() - { - return false; - } - - public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher() - { - return cipher.getUnderlyingCipher(); - } - - public int getOutputSize(int len) - { - return cipher.getOutputSize(len); - } - - public int getUpdateOutputSize(int len) - { - return cipher.getUpdateOutputSize(len); - } - - public void updateAAD(byte[] input, int offset, int length) - { - cipher.processAADBytes(input, offset, length); - } - - public int processByte(byte in, byte[] out, int outOff) throws DataLengthException - { - return cipher.processByte(in, out, outOff); - } - - public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) throws DataLengthException - { - return cipher.processBytes(in, inOff, len, out, outOff); - } - - public int doFinal(byte[] out, int outOff) throws IllegalStateException, BadPaddingException - { - try - { - return cipher.doFinal(out, outOff); - } - catch (InvalidCipherTextException e) - { - if (aeadBadTagConstructor != null) - { - BadPaddingException aeadBadTag = null; - try - { - aeadBadTag = (BadPaddingException)aeadBadTagConstructor - .newInstance(new Object[]{e.getMessage()}); - } - catch (Exception i) - { - // Shouldn't happen, but fall through to BadPaddingException - } - if (aeadBadTag != null) - { - throw aeadBadTag; - } - } - throw new BadPaddingException(e.getMessage()); - } - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java deleted file mode 100644 index 12d2b851..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java +++ /dev/null @@ -1,82 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidParameterException; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.KeyGeneratorSpi; -import javax.crypto.SecretKey; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.crypto.CipherKeyGenerator; -import org.bouncycastle.crypto.KeyGenerationParameters; - -public class BaseKeyGenerator - extends KeyGeneratorSpi -{ - protected String algName; - protected int keySize; - protected int defaultKeySize; - protected CipherKeyGenerator engine; - - protected boolean uninitialised = true; - - protected BaseKeyGenerator( - String algName, - int defaultKeySize, - CipherKeyGenerator engine) - { - this.algName = algName; - this.keySize = this.defaultKeySize = defaultKeySize; - this.engine = engine; - } - - protected void engineInit( - AlgorithmParameterSpec params, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - throw new InvalidAlgorithmParameterException("Not Implemented"); - } - - protected void engineInit( - SecureRandom random) - { - if (random != null) - { - engine.init(new KeyGenerationParameters(random, defaultKeySize)); - uninitialised = false; - } - } - - protected void engineInit( - int keySize, - SecureRandom random) - { - try - { - if (random == null) - { - random = new SecureRandom(); - } - engine.init(new KeyGenerationParameters(random, keySize)); - uninitialised = false; - } - catch (IllegalArgumentException e) - { - throw new InvalidParameterException(e.getMessage()); - } - } - - protected SecretKey engineGenerateKey() - { - if (uninitialised) - { - engine.init(new KeyGenerationParameters(new SecureRandom(), defaultKeySize)); - uninitialised = false; - } - - return new SecretKeySpec(engine.generateKey(), algName); - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java deleted file mode 100644 index 270d6486..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java +++ /dev/null @@ -1,144 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.spec.AlgorithmParameterSpec; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Map; - -import javax.crypto.MacSpi; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEParameterSpec; - -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.Mac; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; -import org.bouncycastle.crypto.params.SkeinParameters; -import org.bouncycastle.jcajce.spec.SkeinParameterSpec; - -public class BaseMac - extends MacSpi implements PBE -{ - private Mac macEngine; - - private int pbeType = PKCS12; - private int pbeHash = SHA1; - private int keySize = 160; - - protected BaseMac( - Mac macEngine) - { - this.macEngine = macEngine; - } - - protected BaseMac( - Mac macEngine, - int pbeType, - int pbeHash, - int keySize) - { - this.macEngine = macEngine; - this.pbeType = pbeType; - this.pbeHash = pbeHash; - this.keySize = keySize; - } - - protected void engineInit( - Key key, - AlgorithmParameterSpec params) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - CipherParameters param; - - if (key == null) - { - throw new InvalidKeyException("key is null"); - } - - if (key instanceof BCPBEKey) - { - BCPBEKey k = (BCPBEKey)key; - - if (k.getParam() != null) - { - param = k.getParam(); - } - else if (params instanceof PBEParameterSpec) - { - param = PBE.Util.makePBEMacParameters(k, params); - } - else - { - throw new InvalidAlgorithmParameterException("PBE requires PBE parameters to be set."); - } - } - else if (params instanceof IvParameterSpec) - { - param = new ParametersWithIV(new KeyParameter(key.getEncoded()), ((IvParameterSpec)params).getIV()); - } - else if (params instanceof SkeinParameterSpec) - { - param = new SkeinParameters.Builder(copyMap(((SkeinParameterSpec)params).getParameters())).setKey(key.getEncoded()).build(); - } - else if (params == null) - { - param = new KeyParameter(key.getEncoded()); - } - else - { - throw new InvalidAlgorithmParameterException("unknown parameter type."); - } - - macEngine.init(param); - } - - protected int engineGetMacLength() - { - return macEngine.getMacSize(); - } - - protected void engineReset() - { - macEngine.reset(); - } - - protected void engineUpdate( - byte input) - { - macEngine.update(input); - } - - protected void engineUpdate( - byte[] input, - int offset, - int len) - { - macEngine.update(input, offset, len); - } - - protected byte[] engineDoFinal() - { - byte[] out = new byte[engineGetMacLength()]; - - macEngine.doFinal(out, 0); - - return out; - } - - private static Hashtable copyMap(Map paramsMap) - { - Hashtable newTable = new Hashtable(); - - Iterator keys = paramsMap.keySet().iterator(); - while (keys.hasNext()) - { - Object key = keys.next(); - newTable.put(key, paramsMap.get(key)); - } - - return newTable; - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory.java deleted file mode 100644 index 31896cd2..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.lang.reflect.Constructor; -import java.security.InvalidKeyException; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; - -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactorySpi; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.ASN1ObjectIdentifier; - -public class BaseSecretKeyFactory - extends SecretKeyFactorySpi - implements PBE -{ - protected String algName; - protected ASN1ObjectIdentifier algOid; - - protected BaseSecretKeyFactory( - String algName, - ASN1ObjectIdentifier algOid) - { - this.algName = algName; - this.algOid = algOid; - } - - protected SecretKey engineGenerateSecret( - KeySpec keySpec) - throws InvalidKeySpecException - { - if (keySpec instanceof SecretKeySpec) - { - return (SecretKey)keySpec; - } - - throw new InvalidKeySpecException("Invalid KeySpec"); - } - - protected KeySpec engineGetKeySpec( - SecretKey key, - Class keySpec) - throws InvalidKeySpecException - { - if (keySpec == null) - { - throw new InvalidKeySpecException("keySpec parameter is null"); - } - if (key == null) - { - throw new InvalidKeySpecException("key parameter is null"); - } - - if (SecretKeySpec.class.isAssignableFrom(keySpec)) - { - return new SecretKeySpec(key.getEncoded(), algName); - } - - try - { - Class[] parameters = { byte[].class }; - - Constructor c = keySpec.getConstructor(parameters); - Object[] p = new Object[1]; - - p[0] = key.getEncoded(); - - return (KeySpec)c.newInstance(p); - } - catch (Exception e) - { - throw new InvalidKeySpecException(e.toString()); - } - } - - protected SecretKey engineTranslateKey( - SecretKey key) - throws InvalidKeyException - { - if (key == null) - { - throw new InvalidKeyException("key parameter is null"); - } - - if (!key.getAlgorithm().equalsIgnoreCase(algName)) - { - throw new InvalidKeyException("Key not of type " + algName + "."); - } - - return new SecretKeySpec(key.getEncoded(), algName); - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java deleted file mode 100644 index f376aa2c..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java +++ /dev/null @@ -1,359 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.InvalidParameterException; -import java.security.Key; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.Cipher; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.SecretKey; -import javax.crypto.ShortBufferException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEParameterSpec; -import javax.crypto.spec.RC2ParameterSpec; -import javax.crypto.spec.RC5ParameterSpec; - -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.DataLengthException; -import org.bouncycastle.crypto.StreamCipher; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public class BaseStreamCipher - extends BaseWrapCipher - implements PBE -{ - // - // specs we can handle. - // - private Class[] availableSpecs = - { - RC2ParameterSpec.class, - RC5ParameterSpec.class, - IvParameterSpec.class, - PBEParameterSpec.class - }; - - private StreamCipher cipher; - private ParametersWithIV ivParam; - - private int ivLength = 0; - - private PBEParameterSpec pbeSpec = null; - private String pbeAlgorithm = null; - - protected BaseStreamCipher( - StreamCipher engine, - int ivLength) - { - cipher = engine; - this.ivLength = ivLength; - } - - protected int engineGetBlockSize() - { - return 0; - } - - protected byte[] engineGetIV() - { - return (ivParam != null) ? ivParam.getIV() : null; - } - - protected int engineGetKeySize( - Key key) - { - return key.getEncoded().length * 8; - } - - protected int engineGetOutputSize( - int inputLen) - { - return inputLen; - } - - protected AlgorithmParameters engineGetParameters() - { - if (engineParams == null) - { - if (pbeSpec != null) - { - try - { - AlgorithmParameters engineParams = AlgorithmParameters.getInstance(pbeAlgorithm, BouncyCastleProvider.PROVIDER_NAME); - engineParams.init(pbeSpec); - - return engineParams; - } - catch (Exception e) - { - return null; - } - } - } - - return engineParams; - } - - /** - * should never be called. - */ - protected void engineSetMode( - String mode) - { - if (!mode.equalsIgnoreCase("ECB")) - { - throw new IllegalArgumentException("can't support mode " + mode); - } - } - - /** - * should never be called. - */ - protected void engineSetPadding( - String padding) - throws NoSuchPaddingException - { - if (!padding.equalsIgnoreCase("NoPadding")) - { - throw new NoSuchPaddingException("Padding " + padding + " unknown."); - } - } - - protected void engineInit( - int opmode, - Key key, - AlgorithmParameterSpec params, - SecureRandom random) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - CipherParameters param; - - this.pbeSpec = null; - this.pbeAlgorithm = null; - - this.engineParams = null; - - // - // basic key check - // - if (!(key instanceof SecretKey)) - { - throw new InvalidKeyException("Key for algorithm " + key.getAlgorithm() + " not suitable for symmetric enryption."); - } - - if (key instanceof BCPBEKey) - { - BCPBEKey k = (BCPBEKey)key; - - if (k.getOID() != null) - { - pbeAlgorithm = k.getOID().getId(); - } - else - { - pbeAlgorithm = k.getAlgorithm(); - } - - if (k.getParam() != null) - { - param = k.getParam(); - pbeSpec = new PBEParameterSpec(k.getSalt(), k.getIterationCount()); - } - else if (params instanceof PBEParameterSpec) - { - param = PBE.Util.makePBEParameters(k, params, cipher.getAlgorithmName()); - pbeSpec = (PBEParameterSpec)params; - } - else - { - throw new InvalidAlgorithmParameterException("PBE requires PBE parameters to be set."); - } - - if (k.getIvSize() != 0) - { - ivParam = (ParametersWithIV)param; - } - } - else if (params == null) - { - param = new KeyParameter(key.getEncoded()); - } - else if (params instanceof IvParameterSpec) - { - param = new ParametersWithIV(new KeyParameter(key.getEncoded()), ((IvParameterSpec)params).getIV()); - ivParam = (ParametersWithIV)param; - } - else - { - throw new InvalidAlgorithmParameterException("unknown parameter type."); - } - - if ((ivLength != 0) && !(param instanceof ParametersWithIV)) - { - SecureRandom ivRandom = random; - - if (ivRandom == null) - { - ivRandom = new SecureRandom(); - } - - if ((opmode == Cipher.ENCRYPT_MODE) || (opmode == Cipher.WRAP_MODE)) - { - byte[] iv = new byte[ivLength]; - - ivRandom.nextBytes(iv); - param = new ParametersWithIV(param, iv); - ivParam = (ParametersWithIV)param; - } - else - { - throw new InvalidAlgorithmParameterException("no IV set when one expected"); - } - } - - try - { - switch (opmode) - { - case Cipher.ENCRYPT_MODE: - case Cipher.WRAP_MODE: - cipher.init(true, param); - break; - case Cipher.DECRYPT_MODE: - case Cipher.UNWRAP_MODE: - cipher.init(false, param); - break; - default: - throw new InvalidParameterException("unknown opmode " + opmode + " passed"); - } - } - catch (Exception e) - { - throw new InvalidKeyException(e.getMessage()); - } - } - - protected void engineInit( - int opmode, - Key key, - AlgorithmParameters params, - SecureRandom random) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - AlgorithmParameterSpec paramSpec = null; - - if (params != null) - { - for (int i = 0; i != availableSpecs.length; i++) - { - try - { - paramSpec = params.getParameterSpec(availableSpecs[i]); - break; - } - catch (Exception e) - { - continue; - } - } - - if (paramSpec == null) - { - throw new InvalidAlgorithmParameterException("can't handle parameter " + params.toString()); - } - } - - engineInit(opmode, key, paramSpec, random); - engineParams = params; - } - - protected void engineInit( - int opmode, - Key key, - SecureRandom random) - throws InvalidKeyException - { - try - { - engineInit(opmode, key, (AlgorithmParameterSpec)null, random); - } - catch (InvalidAlgorithmParameterException e) - { - throw new InvalidKeyException(e.getMessage()); - } - } - - protected byte[] engineUpdate( - byte[] input, - int inputOffset, - int inputLen) - { - byte[] out = new byte[inputLen]; - - cipher.processBytes(input, inputOffset, inputLen, out, 0); - - return out; - } - - protected int engineUpdate( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) - throws ShortBufferException - { - try - { - cipher.processBytes(input, inputOffset, inputLen, output, outputOffset); - - return inputLen; - } - catch (DataLengthException e) - { - throw new ShortBufferException(e.getMessage()); - } - } - - protected byte[] engineDoFinal( - byte[] input, - int inputOffset, - int inputLen) - { - if (inputLen != 0) - { - byte[] out = engineUpdate(input, inputOffset, inputLen); - - cipher.reset(); - - return out; - } - - cipher.reset(); - - return new byte[0]; - } - - protected int engineDoFinal( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) - { - if (inputLen != 0) - { - cipher.processBytes(input, inputOffset, inputLen, output, outputOffset); - } - - cipher.reset(); - - return inputLen; - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java deleted file mode 100644 index 42ab6217..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java +++ /dev/null @@ -1,394 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PrivateKey; -import java.security.SecureRandom; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.CipherSpi; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.ShortBufferException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEParameterSpec; -import javax.crypto.spec.RC2ParameterSpec; -import javax.crypto.spec.RC5ParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.InvalidCipherTextException; -import org.bouncycastle.crypto.Wrapper; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; -import org.bouncycastle.crypto.params.ParametersWithRandom; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -public abstract class BaseWrapCipher - extends CipherSpi - implements PBE -{ - // - // specs we can handle. - // - private Class[] availableSpecs = - { - IvParameterSpec.class, - PBEParameterSpec.class, - RC2ParameterSpec.class, - RC5ParameterSpec.class - }; - - protected int pbeType = PKCS12; - protected int pbeHash = SHA1; - protected int pbeKeySize; - protected int pbeIvSize; - - protected AlgorithmParameters engineParams = null; - - protected Wrapper wrapEngine = null; - - private int ivSize; - private byte[] iv; - - protected BaseWrapCipher() - { - } - - protected BaseWrapCipher( - Wrapper wrapEngine) - { - this(wrapEngine, 0); - } - - protected BaseWrapCipher( - Wrapper wrapEngine, - int ivSize) - { - this.wrapEngine = wrapEngine; - this.ivSize = ivSize; - } - - protected int engineGetBlockSize() - { - return 0; - } - - protected byte[] engineGetIV() - { - return (byte[])iv.clone(); - } - - protected int engineGetKeySize( - Key key) - { - return key.getEncoded().length; - } - - protected int engineGetOutputSize( - int inputLen) - { - return -1; - } - - protected AlgorithmParameters engineGetParameters() - { - return null; - } - - protected void engineSetMode( - String mode) - throws NoSuchAlgorithmException - { - throw new NoSuchAlgorithmException("can't support mode " + mode); - } - - protected void engineSetPadding( - String padding) - throws NoSuchPaddingException - { - throw new NoSuchPaddingException("Padding " + padding + " unknown."); - } - - protected void engineInit( - int opmode, - Key key, - AlgorithmParameterSpec params, - SecureRandom random) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - CipherParameters param; - - if (key instanceof BCPBEKey) - { - BCPBEKey k = (BCPBEKey)key; - - if (params instanceof PBEParameterSpec) - { - param = PBE.Util.makePBEParameters(k, params, wrapEngine.getAlgorithmName()); - } - else if (k.getParam() != null) - { - param = k.getParam(); - } - else - { - throw new InvalidAlgorithmParameterException("PBE requires PBE parameters to be set."); - } - } - else - { - param = new KeyParameter(key.getEncoded()); - } - - if (params instanceof IvParameterSpec) - { - IvParameterSpec iv = (IvParameterSpec) params; - param = new ParametersWithIV(param, iv.getIV()); - } - - if (param instanceof KeyParameter && ivSize != 0) - { - iv = new byte[ivSize]; - random.nextBytes(iv); - param = new ParametersWithIV(param, iv); - } - - if (random != null) - { - param = new ParametersWithRandom(param, random); - } - - switch (opmode) - { - case Cipher.WRAP_MODE: - wrapEngine.init(true, param); - break; - case Cipher.UNWRAP_MODE: - wrapEngine.init(false, param); - break; - case Cipher.ENCRYPT_MODE: - case Cipher.DECRYPT_MODE: - throw new IllegalArgumentException("engine only valid for wrapping"); - default: - System.out.println("eeek!"); - } - } - - protected void engineInit( - int opmode, - Key key, - AlgorithmParameters params, - SecureRandom random) - throws InvalidKeyException, InvalidAlgorithmParameterException - { - AlgorithmParameterSpec paramSpec = null; - - if (params != null) - { - for (int i = 0; i != availableSpecs.length; i++) - { - try - { - paramSpec = params.getParameterSpec(availableSpecs[i]); - break; - } - catch (Exception e) - { - // try next spec - } - } - - if (paramSpec == null) - { - throw new InvalidAlgorithmParameterException("can't handle parameter " + params.toString()); - } - } - - engineParams = params; - engineInit(opmode, key, paramSpec, random); - } - - protected void engineInit( - int opmode, - Key key, - SecureRandom random) - throws InvalidKeyException - { - try - { - engineInit(opmode, key, (AlgorithmParameterSpec)null, random); - } - catch (InvalidAlgorithmParameterException e) - { - throw new IllegalArgumentException(e.getMessage()); - } - } - - protected byte[] engineUpdate( - byte[] input, - int inputOffset, - int inputLen) - { - throw new RuntimeException("not supported for wrapping"); - } - - protected int engineUpdate( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) - throws ShortBufferException - { - throw new RuntimeException("not supported for wrapping"); - } - - protected byte[] engineDoFinal( - byte[] input, - int inputOffset, - int inputLen) - throws IllegalBlockSizeException, BadPaddingException - { - return null; - } - - protected int engineDoFinal( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) - throws IllegalBlockSizeException, BadPaddingException, ShortBufferException - { - return 0; - } - - protected byte[] engineWrap( - Key key) - throws IllegalBlockSizeException, InvalidKeyException - { - byte[] encoded = key.getEncoded(); - if (encoded == null) - { - throw new InvalidKeyException("Cannot wrap key, null encoding."); - } - - try - { - if (wrapEngine == null) - { - return engineDoFinal(encoded, 0, encoded.length); - } - else - { - return wrapEngine.wrap(encoded, 0, encoded.length); - } - } - catch (BadPaddingException e) - { - throw new IllegalBlockSizeException(e.getMessage()); - } - } - - protected Key engineUnwrap( - byte[] wrappedKey, - String wrappedKeyAlgorithm, - int wrappedKeyType) - throws InvalidKeyException, NoSuchAlgorithmException - { - byte[] encoded; - try - { - if (wrapEngine == null) - { - encoded = engineDoFinal(wrappedKey, 0, wrappedKey.length); - } - else - { - encoded = wrapEngine.unwrap(wrappedKey, 0, wrappedKey.length); - } - } - catch (InvalidCipherTextException e) - { - throw new InvalidKeyException(e.getMessage()); - } - catch (BadPaddingException e) - { - throw new InvalidKeyException(e.getMessage()); - } - catch (IllegalBlockSizeException e2) - { - throw new InvalidKeyException(e2.getMessage()); - } - - if (wrappedKeyType == Cipher.SECRET_KEY) - { - return new SecretKeySpec(encoded, wrappedKeyAlgorithm); - } - else if (wrappedKeyAlgorithm.equals("") && wrappedKeyType == Cipher.PRIVATE_KEY) - { - /* - * The caller doesn't know the algorithm as it is part of - * the encrypted data. - */ - try - { - PrivateKeyInfo in = PrivateKeyInfo.getInstance(encoded); - - PrivateKey privKey = BouncyCastleProvider.getPrivateKey(in); - - if (privKey != null) - { - return privKey; - } - else - { - throw new InvalidKeyException("algorithm " + in.getPrivateKeyAlgorithm().getAlgorithm() + " not supported"); - } - } - catch (Exception e) - { - throw new InvalidKeyException("Invalid key encoding."); - } - } - else - { - try - { - KeyFactory kf = KeyFactory.getInstance(wrappedKeyAlgorithm, BouncyCastleProvider.PROVIDER_NAME); - - if (wrappedKeyType == Cipher.PUBLIC_KEY) - { - return kf.generatePublic(new X509EncodedKeySpec(encoded)); - } - else if (wrappedKeyType == Cipher.PRIVATE_KEY) - { - return kf.generatePrivate(new PKCS8EncodedKeySpec(encoded)); - } - } - catch (NoSuchProviderException e) - { - throw new InvalidKeyException("Unknown key type " + e.getMessage()); - } - catch (InvalidKeySpecException e2) - { - throw new InvalidKeyException("Unknown key type " + e2.getMessage()); - } - - throw new InvalidKeyException("Unknown key type " + wrappedKeyType); - } - } - -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider.java deleted file mode 100644 index f5ab9ad0..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import org.bouncycastle.crypto.BlockCipher; - -public interface BlockCipherProvider -{ - BlockCipher get(); -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/IvAlgorithmParameters.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/IvAlgorithmParameters.java deleted file mode 100644 index b5a95526..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/IvAlgorithmParameters.java +++ /dev/null @@ -1,118 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.io.IOException; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.asn1.ASN1OctetString; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.DEROctetString; -import org.bouncycastle.util.Arrays; - -public class IvAlgorithmParameters - extends BaseAlgorithmParameters -{ - private byte[] iv; - - protected byte[] engineGetEncoded() - throws IOException - { - return engineGetEncoded("ASN.1"); - } - - protected byte[] engineGetEncoded( - String format) - throws IOException - { - if (isASN1FormatString(format)) - { - return new DEROctetString(engineGetEncoded("RAW")).getEncoded(); - } - - if (format.equals("RAW")) - { - return Arrays.clone(iv); - } - - return null; - } - - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException - { - if (paramSpec == IvParameterSpec.class) - { - return new IvParameterSpec(iv); - } - - throw new InvalidParameterSpecException("unknown parameter spec passed to IV parameters object."); - } - - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException - { - if (!(paramSpec instanceof IvParameterSpec)) - { - throw new InvalidParameterSpecException("IvParameterSpec required to initialise a IV parameters algorithm parameters object"); - } - - this.iv = ((IvParameterSpec)paramSpec).getIV(); - } - - protected void engineInit( - byte[] params) - throws IOException - { - // - // check that we don't have a DER encoded octet string - // - if ((params.length % 8) != 0 - && params[0] == 0x04 && params[1] == params.length - 2) - { - ASN1OctetString oct = (ASN1OctetString)ASN1Primitive.fromByteArray(params); - - params = oct.getOctets(); - } - - this.iv = Arrays.clone(params); - } - - protected void engineInit( - byte[] params, - String format) - throws IOException - { - if (isASN1FormatString(format)) - { - try - { - ASN1OctetString oct = (ASN1OctetString)ASN1Primitive.fromByteArray(params); - - engineInit(oct.getOctets()); - } - catch (Exception e) - { - throw new IOException("Exception decoding: " + e); - } - - return; - } - - if (format.equals("RAW")) - { - engineInit(params); - return; - } - - throw new IOException("Unknown parameters format in IV parameters object"); - } - - protected String engineToString() - { - return "IV Parameters"; - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java deleted file mode 100644 index fac3ead0..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java +++ /dev/null @@ -1,319 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.spec.AlgorithmParameterSpec; - -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.PBEParameterSpec; - -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.PBEParametersGenerator; -import org.bouncycastle.crypto.digests.GOST3411Digest; -import org.bouncycastle.crypto.digests.MD2Digest; -import org.bouncycastle.crypto.digests.MD5Digest; -import org.bouncycastle.crypto.digests.RIPEMD160Digest; -import org.bouncycastle.crypto.digests.SHA1Digest; -import org.bouncycastle.crypto.digests.SHA256Digest; -import org.bouncycastle.crypto.digests.TigerDigest; -import org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator; -import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator; -import org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator; -import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator; -import org.bouncycastle.crypto.params.DESParameters; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; - -public interface PBE -{ - // - // PBE Based encryption constants - by default we do PKCS12 with SHA-1 - // - static final int MD5 = 0; - static final int SHA1 = 1; - static final int RIPEMD160 = 2; - static final int TIGER = 3; - static final int SHA256 = 4; - static final int MD2 = 5; - static final int GOST3411 = 6; - - static final int PKCS5S1 = 0; - static final int PKCS5S2 = 1; - static final int PKCS12 = 2; - static final int OPENSSL = 3; - static final int PKCS5S1_UTF8 = 4; - static final int PKCS5S2_UTF8 = 5; - - /** - * uses the appropriate mixer to generate the key and IV if necessary. - */ - static class Util - { - static private PBEParametersGenerator makePBEGenerator( - int type, - int hash) - { - PBEParametersGenerator generator; - - if (type == PKCS5S1 || type == PKCS5S1_UTF8) - { - switch (hash) - { - case MD2: - generator = new PKCS5S1ParametersGenerator(new MD2Digest()); - break; - case MD5: - generator = new PKCS5S1ParametersGenerator(new MD5Digest()); - break; - case SHA1: - generator = new PKCS5S1ParametersGenerator(new SHA1Digest()); - break; - default: - throw new IllegalStateException("PKCS5 scheme 1 only supports MD2, MD5 and SHA1."); - } - } - else if (type == PKCS5S2 || type == PKCS5S2_UTF8) - { - switch (hash) - { - case MD2: - generator = new PKCS5S2ParametersGenerator(new MD2Digest()); - break; - case MD5: - generator = new PKCS5S2ParametersGenerator(new MD5Digest()); - break; - case SHA1: - generator = new PKCS5S2ParametersGenerator(new SHA1Digest()); - break; - case RIPEMD160: - generator = new PKCS5S2ParametersGenerator(new RIPEMD160Digest()); - break; - case TIGER: - generator = new PKCS5S2ParametersGenerator(new TigerDigest()); - break; - case SHA256: - generator = new PKCS5S2ParametersGenerator(new SHA256Digest()); - break; - case GOST3411: - generator = new PKCS5S2ParametersGenerator(new GOST3411Digest()); - break; - default: - throw new IllegalStateException("unknown digest scheme for PBE PKCS5S2 encryption."); - } - } - else if (type == PKCS12) - { - switch (hash) - { - case MD2: - generator = new PKCS12ParametersGenerator(new MD2Digest()); - break; - case MD5: - generator = new PKCS12ParametersGenerator(new MD5Digest()); - break; - case SHA1: - generator = new PKCS12ParametersGenerator(new SHA1Digest()); - break; - case RIPEMD160: - generator = new PKCS12ParametersGenerator(new RIPEMD160Digest()); - break; - case TIGER: - generator = new PKCS12ParametersGenerator(new TigerDigest()); - break; - case SHA256: - generator = new PKCS12ParametersGenerator(new SHA256Digest()); - break; - case GOST3411: - generator = new PKCS12ParametersGenerator(new GOST3411Digest()); - break; - default: - throw new IllegalStateException("unknown digest scheme for PBE encryption."); - } - } - else - { - generator = new OpenSSLPBEParametersGenerator(); - } - - return generator; - } - - /** - * construct a key and iv (if necessary) suitable for use with a - * Cipher. - */ - public static CipherParameters makePBEParameters( - BCPBEKey pbeKey, - AlgorithmParameterSpec spec, - String targetAlgorithm) - { - if ((spec == null) || !(spec instanceof PBEParameterSpec)) - { - throw new IllegalArgumentException("Need a PBEParameter spec with a PBE key."); - } - - PBEParameterSpec pbeParam = (PBEParameterSpec)spec; - PBEParametersGenerator generator = makePBEGenerator(pbeKey.getType(), pbeKey.getDigest()); - byte[] key = pbeKey.getEncoded(); - CipherParameters param; - - if (pbeKey.shouldTryWrongPKCS12()) - { - key = new byte[2]; - } - - generator.init(key, pbeParam.getSalt(), pbeParam.getIterationCount()); - - if (pbeKey.getIvSize() != 0) - { - param = generator.generateDerivedParameters(pbeKey.getKeySize(), pbeKey.getIvSize()); - } - else - { - param = generator.generateDerivedParameters(pbeKey.getKeySize()); - } - - if (targetAlgorithm.startsWith("DES")) - { - if (param instanceof ParametersWithIV) - { - KeyParameter kParam = (KeyParameter)((ParametersWithIV)param).getParameters(); - - DESParameters.setOddParity(kParam.getKey()); - } - else - { - KeyParameter kParam = (KeyParameter)param; - - DESParameters.setOddParity(kParam.getKey()); - } - } - - for (int i = 0; i != key.length; i++) - { - key[i] = 0; - } - - return param; - } - - /** - * generate a PBE based key suitable for a MAC algorithm, the - * key size is chosen according the MAC size, or the hashing algorithm, - * whichever is greater. - */ - public static CipherParameters makePBEMacParameters( - BCPBEKey pbeKey, - AlgorithmParameterSpec spec) - { - if ((spec == null) || !(spec instanceof PBEParameterSpec)) - { - throw new IllegalArgumentException("Need a PBEParameter spec with a PBE key."); - } - - PBEParameterSpec pbeParam = (PBEParameterSpec)spec; - PBEParametersGenerator generator = makePBEGenerator(pbeKey.getType(), pbeKey.getDigest()); - byte[] key = pbeKey.getEncoded(); - CipherParameters param; - - if (pbeKey.shouldTryWrongPKCS12()) - { - key = new byte[2]; - } - - generator.init(key, pbeParam.getSalt(), pbeParam.getIterationCount()); - - param = generator.generateDerivedMacParameters(pbeKey.getKeySize()); - - for (int i = 0; i != key.length; i++) - { - key[i] = 0; - } - - return param; - } - - /** - * construct a key and iv (if necessary) suitable for use with a - * Cipher. - */ - public static CipherParameters makePBEParameters( - PBEKeySpec keySpec, - int type, - int hash, - int keySize, - int ivSize) - { - PBEParametersGenerator generator = makePBEGenerator(type, hash); - byte[] key; - CipherParameters param; - - key = convertPassword(type, keySpec); - - generator.init(key, keySpec.getSalt(), keySpec.getIterationCount()); - - if (ivSize != 0) - { - param = generator.generateDerivedParameters(keySize, ivSize); - } - else - { - param = generator.generateDerivedParameters(keySize); - } - - for (int i = 0; i != key.length; i++) - { - key[i] = 0; - } - - return param; - } - - - /** - * generate a PBE based key suitable for a MAC algorithm, the - * key size is chosen according the MAC size, or the hashing algorithm, - * whichever is greater. - */ - public static CipherParameters makePBEMacParameters( - PBEKeySpec keySpec, - int type, - int hash, - int keySize) - { - PBEParametersGenerator generator = makePBEGenerator(type, hash); - byte[] key; - CipherParameters param; - - key = convertPassword(type, keySpec); - - generator.init(key, keySpec.getSalt(), keySpec.getIterationCount()); - - param = generator.generateDerivedMacParameters(keySize); - - for (int i = 0; i != key.length; i++) - { - key[i] = 0; - } - - return param; - } - - private static byte[] convertPassword(int type, PBEKeySpec keySpec) - { - byte[] key; - - if (type == PKCS12) - { - key = PBEParametersGenerator.PKCS12PasswordToBytes(keySpec.getPassword()); - } - else if (type == PKCS5S2_UTF8 || type == PKCS5S1_UTF8) - { - key = PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(keySpec.getPassword()); - } - else - { - key = PBEParametersGenerator.PKCS5PasswordToBytes(keySpec.getPassword()); - } - return key; - } - } -} diff --git a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/PBESecretKeyFactory.java b/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/PBESecretKeyFactory.java deleted file mode 100644 index 434f6bb8..00000000 --- a/prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/PBESecretKeyFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.bouncycastle.jcajce.provider.symmetric.util; - -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; - -import javax.crypto.SecretKey; -import javax.crypto.spec.PBEKeySpec; - -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.crypto.CipherParameters; - -public class PBESecretKeyFactory - extends BaseSecretKeyFactory - implements PBE -{ - private boolean forCipher; - private int scheme; - private int digest; - private int keySize; - private int ivSize; - - public PBESecretKeyFactory( - String algorithm, - ASN1ObjectIdentifier oid, - boolean forCipher, - int scheme, - int digest, - int keySize, - int ivSize) - { - super(algorithm, oid); - - this.forCipher = forCipher; - this.scheme = scheme; - this.digest = digest; - this.keySize = keySize; - this.ivSize = ivSize; - } - - protected SecretKey engineGenerateSecret( - KeySpec keySpec) - throws InvalidKeySpecException - { - if (keySpec instanceof PBEKeySpec) - { - PBEKeySpec pbeSpec = (PBEKeySpec)keySpec; - CipherParameters param; - - if (pbeSpec.getSalt() == null) - { - return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, null); - } - - if (forCipher) - { - param = PBE.Util.makePBEParameters(pbeSpec, scheme, digest, keySize, ivSize); - } - else - { - param = PBE.Util.makePBEMacParameters(pbeSpec, scheme, digest, keySize); - } - - return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param); - } - - throw new InvalidKeySpecException("Invalid KeySpec"); - } -} |