14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.symmetric; 24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 3a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.CipherKeyGenerator; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.engines.RC4Engine; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; 9a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; 104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.util.AlgorithmProvider; 114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic final class ARC4 134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{ 144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private ARC4() 154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class Base 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseStreamCipher 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Base() 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new RC4Engine(), 0); 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class KeyGen 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseKeyGenerator 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGen() 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-changed 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super("ARC4", 128, new CipherKeyGenerator()); 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-changed 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 38a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 39a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHAAnd128BitRC4 40a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 41a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd128BitKeyFactory 42a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 43a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 44a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd128BitKeyFactory() 45a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 46a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHAAnd128BitRC4", PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, true, PKCS12, SHA1, 128, 0); 47a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 48a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 49a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 50a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 51a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHAAnd40BitRC4 52a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 53a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd40BitKeyFactory 54a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 55a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 56a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd40BitKeyFactory() 57a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 58a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHAAnd128BitRC4", PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, true, PKCS12, SHA1, 40, 0); 59a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 60a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 61a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 62a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 63a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 64a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHAAnd128BitRC4 65a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 66a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd128Bit 67a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends BaseStreamCipher 68a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 69a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd128Bit() 70a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 71a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super(new RC4Engine(), 0); 72a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 73a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 74a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 75a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 76a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHAAnd40BitRC4 77a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 78a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd40Bit 79a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends BaseStreamCipher 80a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 81a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd40Bit() 82a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 83a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super(new RC4Engine(), 0); 84a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 85a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 86a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class Mappings 884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends AlgorithmProvider 894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String PREFIX = ARC4.class.getName(); 914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Mappings() 934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public void configure(ConfigurableProvider provider) 974c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Cipher.ARC4", PREFIX + "$Base"); 99a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.rc4, "ARC4"); 1004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.ARCFOUR", "ARC4"); 1014c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.RC4", "ARC4"); 1024c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("KeyGenerator.ARC4", PREFIX + "$KeyGen"); 1034c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.KeyGenerator.RC4", "ARC4"); 1044c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.KeyGenerator.1.2.840.113549.3.4", "ARC4"); 105a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITRC4", PREFIX + "$PBEWithSHAAnd128BitKeyFactory"); 106a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND40BITRC4", PREFIX + "$PBEWithSHAAnd40BitKeyFactory"); 107a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 108a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, "PKCS12PBE"); 109a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4, "PKCS12PBE"); 110a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC4", "PKCS12PBE"); 111a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC4", "PKCS12PBE"); 112a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC4", "PKCS12PBE"); 113a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHAAND128BITRC4", PREFIX + "$PBEWithSHAAnd128Bit"); 114a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHAAND40BITRC4", PREFIX + "$PBEWithSHAAnd40Bit"); 115a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 116a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, "PBEWITHSHAAND128BITRC4"); 117a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4, "PBEWITHSHAAND40BITRC4"); 118a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 119a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC4", "PBEWITHSHAAND128BITRC4"); 120a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC4", "PBEWITHSHAAND40BITRC4"); 1214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 122a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd128BitRC4, "PBEWITHSHAAND128BITRC4"); 123a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC4, "PBEWITHSHAAND40BITRC4"); 1244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom} 127