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