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