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