Blowfish.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.jcajce.provider.symmetric;
2
3import org.bouncycastle.crypto.CipherKeyGenerator;
4import org.bouncycastle.crypto.engines.BlowfishEngine;
5import org.bouncycastle.crypto.modes.CBCBlockCipher;
6import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
7import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
8import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
9import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
10import org.bouncycastle.jcajce.provider.util.AlgorithmProvider;
11
12public final class Blowfish
13{
14    private Blowfish()
15    {
16    }
17
18    public static class ECB
19        extends BaseBlockCipher
20    {
21        public ECB()
22        {
23            super(new BlowfishEngine());
24        }
25    }
26
27    public static class CBC
28        extends BaseBlockCipher
29    {
30        public CBC()
31        {
32            super(new CBCBlockCipher(new BlowfishEngine()), 64);
33        }
34    }
35
36    public static class KeyGen
37        extends BaseKeyGenerator
38    {
39        public KeyGen()
40        {
41            super("Blowfish", 128, new CipherKeyGenerator());
42        }
43    }
44
45    public static class AlgParams
46        extends IvAlgorithmParameters
47    {
48        protected String engineToString()
49        {
50            return "Blowfish IV";
51        }
52    }
53
54    public static class Mappings
55        extends AlgorithmProvider
56    {
57        private static final String PREFIX = Blowfish.class.getName();
58
59        public Mappings()
60        {
61        }
62
63        public void configure(ConfigurableProvider provider)
64        {
65
66            provider.addAlgorithm("Cipher.BLOWFISH", PREFIX + "$ECB");
67            // BEGIN android-removed
68            // provider.addAlgorithm("Cipher.1.3.6.1.4.1.3029.1.2", PREFIX + "$CBC");
69            // END android-removed
70            provider.addAlgorithm("KeyGenerator.BLOWFISH", PREFIX + "$KeyGen");
71            provider.addAlgorithm("Alg.Alias.KeyGenerator.1.3.6.1.4.1.3029.1.2", "BLOWFISH");
72            provider.addAlgorithm("AlgorithmParameters.BLOWFISH", PREFIX + "$AlgParams");
73            provider.addAlgorithm("Alg.Alias.AlgorithmParameters.1.3.6.1.4.1.3029.1.2", "BLOWFISH");
74
75        }
76    }
77}
78