1package org.bouncycastle.jcajce.provider.symmetric; 2 3import org.bouncycastle.crypto.CipherKeyGenerator; 4import org.bouncycastle.crypto.engines.RC4Engine; 5import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 6import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 7import org.bouncycastle.jcajce.provider.symmetric.util.BaseStreamCipher; 8import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; 9 10public final class ARC4 11{ 12 private ARC4() 13 { 14 } 15 16 public static class Base 17 extends BaseStreamCipher 18 { 19 public Base() 20 { 21 super(new RC4Engine(), 0); 22 } 23 } 24 25 public static class KeyGen 26 extends BaseKeyGenerator 27 { 28 public KeyGen() 29 { 30 // BEGIN android-changed 31 super("ARC4", 128, new CipherKeyGenerator()); 32 // END android-changed 33 } 34 } 35 36 public static class Mappings 37 extends AlgorithmProvider 38 { 39 private static final String PREFIX = ARC4.class.getName(); 40 41 public Mappings() 42 { 43 } 44 45 public void configure(ConfigurableProvider provider) 46 { 47 48 provider.addAlgorithm("Cipher.ARC4", PREFIX + "$Base"); 49 provider.addAlgorithm("Alg.Alias.Cipher.1.2.840.113549.3.4", "ARC4"); 50 provider.addAlgorithm("Alg.Alias.Cipher.ARCFOUR", "ARC4"); 51 provider.addAlgorithm("Alg.Alias.Cipher.RC4", "ARC4"); 52 provider.addAlgorithm("KeyGenerator.ARC4", PREFIX + "$KeyGen"); 53 provider.addAlgorithm("Alg.Alias.KeyGenerator.RC4", "ARC4"); 54 provider.addAlgorithm("Alg.Alias.KeyGenerator.1.2.840.113549.3.4", "ARC4"); 55 56 } 57 } 58} 59