1package org.bouncycastle.jcajce.provider.symmetric; 2 3// BEGIN android-removed 4// import org.bouncycastle.crypto.BlockCipher; 5// import org.bouncycastle.crypto.CipherKeyGenerator; 6// END android-removed 7import org.bouncycastle.crypto.engines.TwofishEngine; 8// BEGIN android-removed 9// import org.bouncycastle.crypto.macs.GMac; 10// END android-removed 11import org.bouncycastle.crypto.modes.CBCBlockCipher; 12// BEGIN android-removed 13// import org.bouncycastle.crypto.modes.GCMBlockCipher; 14// END android-removed 15import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 16import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; 17// BEGIN android-removed 18// import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 19// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 20// import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; 21// import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; 22// END android-removed 23import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; 24 25public final class Twofish 26{ 27 private Twofish() 28 { 29 } 30 31 // BEGIN android-removed 32 // public static class ECB 33 // extends BaseBlockCipher 34 // { 35 // public ECB() 36 // { 37 // super(new BlockCipherProvider() 38 // { 39 // public BlockCipher get() 40 // { 41 // return new TwofishEngine(); 42 // } 43 // }); 44 // } 45 // } 46 // 47 // public static class KeyGen 48 // extends BaseKeyGenerator 49 // { 50 // public KeyGen() 51 // { 52 // super("Twofish", 256, new CipherKeyGenerator()); 53 // } 54 // } 55 // 56 // public static class GMAC 57 // extends BaseMac 58 // { 59 // public GMAC() 60 // { 61 // super(new GMac(new GCMBlockCipher(new TwofishEngine()))); 62 // } 63 // } 64 // END android-removed 65 66 /** 67 * PBEWithSHAAndTwofish-CBC 68 */ 69 static public class PBEWithSHAKeyFactory 70 extends PBESecretKeyFactory 71 { 72 public PBEWithSHAKeyFactory() 73 { 74 super("PBEwithSHAandTwofish-CBC", null, true, PKCS12, SHA1, 256, 128); 75 } 76 } 77 78 /** 79 * PBEWithSHAAndTwofish-CBC 80 */ 81 static public class PBEWithSHA 82 extends BaseBlockCipher 83 { 84 public PBEWithSHA() 85 { 86 super(new CBCBlockCipher(new TwofishEngine())); 87 } 88 } 89 90 // BEGIN android-removed 91 // public static class AlgParams 92 // extends IvAlgorithmParameters 93 // { 94 // protected String engineToString() 95 // { 96 // return "Twofish IV"; 97 // } 98 // } 99 // END android-removed 100 101 public static class Mappings 102 extends SymmetricAlgorithmProvider 103 { 104 private static final String PREFIX = Twofish.class.getName(); 105 106 public Mappings() 107 { 108 } 109 110 public void configure(ConfigurableProvider provider) 111 { 112 // BEGIN android-removed 113 // provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB"); 114 // provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen"); 115 // provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams"); 116 // END android-removed 117 118 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE"); 119 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE"); 120 provider.addAlgorithm("Cipher.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHA"); 121 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHAKeyFactory"); 122 123 // BEGIN android-removed 124 // addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen"); 125 // END android-removed 126 } 127 } 128} 129