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