1a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrompackage org.bouncycastle.jcajce.provider.symmetric; 2a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 3a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// BEGIN android-removed 4a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.crypto.BlockCipher; 5a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.crypto.CipherKeyGenerator; 6a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// END android-removed 7a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.crypto.engines.TwofishEngine; 8a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// BEGIN android-removed 95db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root// import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; 10a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.crypto.macs.GMac; 11a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// END android-removed 12a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.crypto.modes.CBCBlockCipher; 13a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// BEGIN android-removed 14a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.crypto.modes.GCMBlockCipher; 15a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// END android-removed 16a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 17a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; 18a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// BEGIN android-removed 19a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 20a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 21a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; 22a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; 23a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// END android-removed 24a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; 25a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 26a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrompublic final class Twofish 27a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom{ 28a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private Twofish() 29a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 30a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 31a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 32a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 33a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public static class ECB 34a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // extends BaseBlockCipher 35a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 36a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public ECB() 37a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 38a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // super(new BlockCipherProvider() 39a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 40a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public BlockCipher get() 41a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 42a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // return new TwofishEngine(); 43a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 44a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // }); 45a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 46a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 47a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // 48a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public static class KeyGen 49a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // extends BaseKeyGenerator 50a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 51a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public KeyGen() 52a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 53a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // super("Twofish", 256, new CipherKeyGenerator()); 54a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 55a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 56a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // 57a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public static class GMAC 58a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // extends BaseMac 59a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 60a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public GMAC() 61a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 62a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // super(new GMac(new GCMBlockCipher(new TwofishEngine()))); 63a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 64a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 655db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // 665db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public static class Poly1305 675db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // extends BaseMac 685db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 695db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public Poly1305() 705db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 715db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // super(new org.bouncycastle.crypto.macs.Poly1305(new TwofishEngine())); 725db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 735db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 745db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // 755db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public static class Poly1305KeyGen 765db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // extends BaseKeyGenerator 775db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 785db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public Poly1305KeyGen() 795db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 805db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // super("Poly1305-Twofish", 256, new Poly1305KeyGenerator()); 815db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 825db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 83a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 84a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 85a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 86a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHAAndTwofish-CBC 87a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 88a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAKeyFactory 89a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 90a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 91a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAKeyFactory() 92a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 93a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEwithSHAandTwofish-CBC", null, true, PKCS12, SHA1, 256, 128); 94a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 95a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 96a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 97a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 98a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHAAndTwofish-CBC 99a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 100a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHA 101a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends BaseBlockCipher 102a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 103a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHA() 104a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 105a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super(new CBCBlockCipher(new TwofishEngine())); 106a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 107a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 108a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 109a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 110a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public static class AlgParams 111a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // extends IvAlgorithmParameters 112a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 113a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // protected String engineToString() 114a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 115a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // return "Twofish IV"; 116a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 117a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 118a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 119a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 120a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public static class Mappings 121a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends SymmetricAlgorithmProvider 122a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 123a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private static final String PREFIX = Twofish.class.getName(); 124a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 125a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public Mappings() 126a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 127a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 128a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 129a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public void configure(ConfigurableProvider provider) 130a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 131a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 132a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB"); 133a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen"); 134a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams"); 135a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 136a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 137a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE"); 138a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE"); 139a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHA"); 140a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHAKeyFactory"); 141a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 142a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 143a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen"); 1445db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // addPoly1305Algorithm(provider, "Twofish", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); 145a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 146a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 147a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 148a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom} 149