Home | History | Annotate | Download | only in symmetric
      1 package org.bouncycastle.jcajce.provider.symmetric;
      2 
      3 import org.bouncycastle.crypto.CipherKeyGenerator;
      4 import org.bouncycastle.crypto.engines.BlowfishEngine;
      5 import org.bouncycastle.crypto.modes.CBCBlockCipher;
      6 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
      7 import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
      8 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
      9 import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
     10 import org.bouncycastle.jcajce.provider.util.AlgorithmProvider;
     11 
     12 public 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