1package org.bouncycastle.jcajce.provider.symmetric; 2 3import java.io.IOException; 4import java.lang.reflect.Constructor; 5import java.lang.reflect.Method; 6// BEGIN android-removed 7// import java.security.AlgorithmParameters; 8// import java.security.InvalidAlgorithmParameterException; 9// END android-removed 10import java.security.SecureRandom; 11import java.security.spec.AlgorithmParameterSpec; 12import java.security.spec.InvalidParameterSpecException; 13 14// BEGIN android-removed 15// import javax.crypto.spec.IvParameterSpec; 16// END android-removed 17 18import org.bouncycastle.asn1.bc.BCObjectIdentifiers; 19import org.bouncycastle.asn1.cms.GCMParameters; 20import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; 21import org.bouncycastle.crypto.BlockCipher; 22import org.bouncycastle.crypto.BufferedBlockCipher; 23import org.bouncycastle.crypto.CipherKeyGenerator; 24import org.bouncycastle.crypto.engines.AESFastEngine; 25import org.bouncycastle.crypto.engines.AESWrapEngine; 26// BEGIN android-removed 27// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; 28// import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; 29// import org.bouncycastle.crypto.macs.CMac; 30// import org.bouncycastle.crypto.macs.GMac; 31// END android-removed 32import org.bouncycastle.crypto.modes.CBCBlockCipher; 33import org.bouncycastle.crypto.modes.CFBBlockCipher; 34import org.bouncycastle.crypto.modes.GCMBlockCipher; 35import org.bouncycastle.crypto.modes.OFBBlockCipher; 36import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 37// BEGIN android-removed 38// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; 39// END android-removed 40import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; 41import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; 42import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 43// BEGIN android-removed 44// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 45// END android-removed 46import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; 47import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; 48import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; 49import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; 50// BEGIN android-removed 51// import org.bouncycastle.jce.provider.BouncyCastleProvider; 52// END android-removed 53import org.bouncycastle.util.Integers; 54 55public final class AES 56{ 57 private static final Class gcmSpecClass = lookup("javax.crypto.spec.GCMParameterSpec"); 58 59 private AES() 60 { 61 } 62 63 public static class ECB 64 extends BaseBlockCipher 65 { 66 public ECB() 67 { 68 super(new BlockCipherProvider() 69 { 70 public BlockCipher get() 71 { 72 return new AESFastEngine(); 73 } 74 }); 75 } 76 } 77 78 public static class CBC 79 extends BaseBlockCipher 80 { 81 public CBC() 82 { 83 super(new CBCBlockCipher(new AESFastEngine()), 128); 84 } 85 } 86 87 static public class CFB 88 extends BaseBlockCipher 89 { 90 public CFB() 91 { 92 super(new BufferedBlockCipher(new CFBBlockCipher(new AESFastEngine(), 128)), 128); 93 } 94 } 95 96 static public class OFB 97 extends BaseBlockCipher 98 { 99 public OFB() 100 { 101 super(new BufferedBlockCipher(new OFBBlockCipher(new AESFastEngine(), 128)), 128); 102 } 103 } 104 105 static public class GCM 106 extends BaseBlockCipher 107 { 108 public GCM() 109 { 110 super(new GCMBlockCipher(new AESFastEngine())); 111 } 112 } 113 114 // BEGIN android-removed 115 // public static class AESCMAC 116 // extends BaseMac 117 // { 118 // public AESCMAC() 119 // { 120 // super(new CMac(new AESFastEngine())); 121 // } 122 // } 123 // 124 // public static class AESGMAC 125 // extends BaseMac 126 // { 127 // public AESGMAC() 128 // { 129 // super(new GMac(new GCMBlockCipher(new AESFastEngine()))); 130 // } 131 // } 132 // 133 // public static class Poly1305 134 // extends BaseMac 135 // { 136 // public Poly1305() 137 // { 138 // super(new org.bouncycastle.crypto.macs.Poly1305(new AESFastEngine())); 139 // } 140 // } 141 // 142 // public static class Poly1305KeyGen 143 // extends BaseKeyGenerator 144 // { 145 // public Poly1305KeyGen() 146 // { 147 // super("Poly1305-AES", 256, new Poly1305KeyGenerator()); 148 // } 149 // } 150 // END android-removed 151 152 static public class Wrap 153 extends BaseWrapCipher 154 { 155 public Wrap() 156 { 157 super(new AESWrapEngine()); 158 } 159 } 160 161 // BEGIN android-removed 162 // public static class RFC3211Wrap 163 // extends BaseWrapCipher 164 // { 165 // public RFC3211Wrap() 166 // { 167 // super(new RFC3211WrapEngine(new AESFastEngine()), 16); 168 // } 169 // } 170 // END android-removed 171 172 173 /** 174 * PBEWithAES-CBC 175 */ 176 static public class PBEWithAESCBC 177 extends BaseBlockCipher 178 { 179 public PBEWithAESCBC() 180 { 181 super(new CBCBlockCipher(new AESFastEngine())); 182 } 183 } 184 185 public static class KeyGen 186 extends BaseKeyGenerator 187 { 188 public KeyGen() 189 { 190 this(192); 191 } 192 193 public KeyGen(int keySize) 194 { 195 super("AES", keySize, new CipherKeyGenerator()); 196 } 197 } 198 199 // BEGIN android-removed 200 // public static class KeyGen128 201 // extends KeyGen 202 // { 203 // public KeyGen128() 204 // { 205 // super(128); 206 // } 207 // } 208 // 209 // public static class KeyGen192 210 // extends KeyGen 211 // { 212 // public KeyGen192() 213 // { 214 // super(192); 215 // } 216 // } 217 // 218 // public static class KeyGen256 219 // extends KeyGen 220 // { 221 // public KeyGen256() 222 // { 223 // super(256); 224 // } 225 // } 226 // END android-removed 227 228 /** 229 * PBEWithSHA1And128BitAES-BC 230 */ 231 static public class PBEWithSHAAnd128BitAESBC 232 extends PBESecretKeyFactory 233 { 234 public PBEWithSHAAnd128BitAESBC() 235 { 236 super("PBEWithSHA1And128BitAES-CBC-BC", null, true, PKCS12, SHA1, 128, 128); 237 } 238 } 239 240 /** 241 * PBEWithSHA1And192BitAES-BC 242 */ 243 static public class PBEWithSHAAnd192BitAESBC 244 extends PBESecretKeyFactory 245 { 246 public PBEWithSHAAnd192BitAESBC() 247 { 248 super("PBEWithSHA1And192BitAES-CBC-BC", null, true, PKCS12, SHA1, 192, 128); 249 } 250 } 251 252 /** 253 * PBEWithSHA1And256BitAES-BC 254 */ 255 static public class PBEWithSHAAnd256BitAESBC 256 extends PBESecretKeyFactory 257 { 258 public PBEWithSHAAnd256BitAESBC() 259 { 260 super("PBEWithSHA1And256BitAES-CBC-BC", null, true, PKCS12, SHA1, 256, 128); 261 } 262 } 263 264 /** 265 * PBEWithSHA256And128BitAES-BC 266 */ 267 static public class PBEWithSHA256And128BitAESBC 268 extends PBESecretKeyFactory 269 { 270 public PBEWithSHA256And128BitAESBC() 271 { 272 super("PBEWithSHA256And128BitAES-CBC-BC", null, true, PKCS12, SHA256, 128, 128); 273 } 274 } 275 276 /** 277 * PBEWithSHA256And192BitAES-BC 278 */ 279 static public class PBEWithSHA256And192BitAESBC 280 extends PBESecretKeyFactory 281 { 282 public PBEWithSHA256And192BitAESBC() 283 { 284 super("PBEWithSHA256And192BitAES-CBC-BC", null, true, PKCS12, SHA256, 192, 128); 285 } 286 } 287 288 /** 289 * PBEWithSHA256And256BitAES-BC 290 */ 291 static public class PBEWithSHA256And256BitAESBC 292 extends PBESecretKeyFactory 293 { 294 public PBEWithSHA256And256BitAESBC() 295 { 296 super("PBEWithSHA256And256BitAES-CBC-BC", null, true, PKCS12, SHA256, 256, 128); 297 } 298 } 299 300 /** 301 * PBEWithMD5And128BitAES-OpenSSL 302 */ 303 static public class PBEWithMD5And128BitAESCBCOpenSSL 304 extends PBESecretKeyFactory 305 { 306 public PBEWithMD5And128BitAESCBCOpenSSL() 307 { 308 super("PBEWithMD5And128BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 128, 128); 309 } 310 } 311 312 /** 313 * PBEWithMD5And192BitAES-OpenSSL 314 */ 315 static public class PBEWithMD5And192BitAESCBCOpenSSL 316 extends PBESecretKeyFactory 317 { 318 public PBEWithMD5And192BitAESCBCOpenSSL() 319 { 320 super("PBEWithMD5And192BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 192, 128); 321 } 322 } 323 324 /** 325 * PBEWithMD5And256BitAES-OpenSSL 326 */ 327 static public class PBEWithMD5And256BitAESCBCOpenSSL 328 extends PBESecretKeyFactory 329 { 330 public PBEWithMD5And256BitAESCBCOpenSSL() 331 { 332 super("PBEWithMD5And256BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 256, 128); 333 } 334 } 335 336 // BEGIN android-removed 337 // public static class AlgParamGen 338 // extends BaseAlgorithmParameterGenerator 339 // { 340 // protected void engineInit( 341 // AlgorithmParameterSpec genParamSpec, 342 // SecureRandom random) 343 // throws InvalidAlgorithmParameterException 344 // { 345 // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); 346 // } 347 // 348 // protected AlgorithmParameters engineGenerateParameters() 349 // { 350 // byte[] iv = new byte[16]; 351 // 352 // if (random == null) 353 // { 354 // random = new SecureRandom(); 355 // } 356 // 357 // random.nextBytes(iv); 358 // 359 // AlgorithmParameters params; 360 // 361 // try 362 // { 363 // params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); 364 // params.init(new IvParameterSpec(iv)); 365 // } 366 // catch (Exception e) 367 // { 368 // throw new RuntimeException(e.getMessage()); 369 // } 370 // 371 // return params; 372 // } 373 // } 374 // END android-removed 375 376 public static class AlgParams 377 extends IvAlgorithmParameters 378 { 379 protected String engineToString() 380 { 381 return "AES IV"; 382 } 383 } 384 385 public static class AlgParamsGCM 386 extends BaseAlgorithmParameters 387 { 388 private GCMParameters gcmParams; 389 390 protected void engineInit(AlgorithmParameterSpec paramSpec) 391 throws InvalidParameterSpecException 392 { 393 if (gcmSpecClass != null) 394 { 395 try 396 { 397 Method tLen = gcmSpecClass.getDeclaredMethod("getTLen", new Class[0]); 398 Method iv= gcmSpecClass.getDeclaredMethod("getIV", new Class[0]); 399 400 401 gcmParams = new GCMParameters((byte[])iv.invoke(paramSpec, new Object[0]), ((Integer)tLen.invoke(paramSpec, new Object[0])).intValue()); 402 } 403 catch (Exception e) 404 { 405 throw new InvalidParameterSpecException("Cannot process GCMParameterSpec."); 406 } 407 } 408 } 409 410 protected void engineInit(byte[] params) 411 throws IOException 412 { 413 gcmParams = GCMParameters.getInstance(params); 414 } 415 416 protected void engineInit(byte[] params, String format) 417 throws IOException 418 { 419 if (!isASN1FormatString(format)) 420 { 421 throw new IOException("unknown format specified"); 422 } 423 424 gcmParams = GCMParameters.getInstance(params); 425 } 426 427 protected byte[] engineGetEncoded() 428 throws IOException 429 { 430 return gcmParams.getEncoded(); 431 } 432 433 protected byte[] engineGetEncoded(String format) 434 throws IOException 435 { 436 if (!isASN1FormatString(format)) 437 { 438 throw new IOException("unknown format specified"); 439 } 440 441 return gcmParams.getEncoded(); 442 } 443 444 protected String engineToString() 445 { 446 return "GCM"; 447 } 448 449 protected AlgorithmParameterSpec localEngineGetParameterSpec(Class paramSpec) 450 throws InvalidParameterSpecException 451 { 452 if (gcmSpecClass != null) 453 { 454 try 455 { 456 Constructor constructor = gcmSpecClass.getConstructor(new Class[] { byte[].class, Integer.class }); 457 458 return (AlgorithmParameterSpec)constructor.newInstance(new Object[] { gcmParams.getNonce(), Integers.valueOf(gcmParams.getIcvLen()) }); 459 } 460 catch (NoSuchMethodException e) 461 { 462 throw new InvalidParameterSpecException("no constructor found!"); // should never happen 463 } 464 catch (Exception e) 465 { 466 throw new InvalidParameterSpecException("construction failed: " + e.getMessage()); // should never happen 467 } 468 } 469 470 throw new InvalidParameterSpecException("unknown parameter spec: " + paramSpec.getName()); 471 } 472 } 473 474 public static class Mappings 475 extends SymmetricAlgorithmProvider 476 { 477 private static final String PREFIX = AES.class.getName(); 478 479 /** 480 * These three got introduced in some messages as a result of a typo in an 481 * early document. We don't produce anything using these OID values, but we'll 482 * read them. 483 */ 484 private static final String wrongAES128 = "2.16.840.1.101.3.4.2"; 485 private static final String wrongAES192 = "2.16.840.1.101.3.4.22"; 486 private static final String wrongAES256 = "2.16.840.1.101.3.4.42"; 487 488 public Mappings() 489 { 490 } 491 492 public void configure(ConfigurableProvider provider) 493 { 494 provider.addAlgorithm("AlgorithmParameters.AES", PREFIX + "$AlgParams"); 495 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES128, "AES"); 496 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES192, "AES"); 497 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES256, "AES"); 498 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); 499 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); 500 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); 501 502 provider.addAlgorithm("AlgorithmParameters.GCM", PREFIX + "$AlgParamsGCM"); 503 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_GCM, "GCM"); 504 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_GCM, "GCM"); 505 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_GCM, "GCM"); 506 507 // BEGIN android-removed 508 // provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen"); 509 // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); 510 // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); 511 // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); 512 // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); 513 // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); 514 // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); 515 // END android-removed 516 517 provider.addAlgorithm("Cipher.AES", PREFIX + "$ECB"); 518 provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES128, "AES"); 519 provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES192, "AES"); 520 provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES256, "AES"); 521 // BEGIN android-removed 522 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB"); 523 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB"); 524 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB"); 525 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC"); 526 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC"); 527 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC"); 528 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB"); 529 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB"); 530 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB"); 531 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB"); 532 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB"); 533 // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB"); 534 // END android-removed 535 provider.addAlgorithm("Cipher.AESWRAP", PREFIX + "$Wrap"); 536 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP"); 537 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP"); 538 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP"); 539 // BEGIN android-removed 540 // provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap"); 541 // END android-removed 542 543 provider.addAlgorithm("Cipher.GCM", PREFIX + "$GCM"); 544 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_GCM, "GCM"); 545 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_GCM, "GCM"); 546 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_GCM, "GCM"); 547 548 provider.addAlgorithm("KeyGenerator.AES", PREFIX + "$KeyGen"); 549 // BEGIN android-removed 550 // provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128"); 551 // provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192"); 552 // provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256"); 553 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128"); 554 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128"); 555 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128"); 556 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128"); 557 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192"); 558 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192"); 559 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192"); 560 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192"); 561 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256"); 562 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256"); 563 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256"); 564 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256"); 565 // provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen"); 566 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128"); 567 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192"); 568 // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256"); 569 // 570 // provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC"); 571 // END android-removed 572 573 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); 574 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); 575 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PBEWITHSHAAND256BITAES-CBC-BC"); 576 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); 577 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); 578 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); 579 580 provider.addAlgorithm("Cipher.PBEWITHSHAAND128BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 581 provider.addAlgorithm("Cipher.PBEWITHSHAAND192BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 582 provider.addAlgorithm("Cipher.PBEWITHSHAAND256BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 583 provider.addAlgorithm("Cipher.PBEWITHSHA256AND128BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 584 provider.addAlgorithm("Cipher.PBEWITHSHA256AND192BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 585 provider.addAlgorithm("Cipher.PBEWITHSHA256AND256BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 586 587 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 588 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 589 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 590 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 591 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 592 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 593 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND128BITAES-CBC-BC","PBEWITHSHA256AND128BITAES-CBC-BC"); 594 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND192BITAES-CBC-BC","PBEWITHSHA256AND192BITAES-CBC-BC"); 595 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND256BITAES-CBC-BC","PBEWITHSHA256AND256BITAES-CBC-BC"); 596 597 provider.addAlgorithm("Cipher.PBEWITHMD5AND128BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); 598 provider.addAlgorithm("Cipher.PBEWITHMD5AND192BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); 599 provider.addAlgorithm("Cipher.PBEWITHMD5AND256BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); 600 601 provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND128BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And128BitAESCBCOpenSSL"); 602 provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND192BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And192BitAESCBCOpenSSL"); 603 provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND256BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And256BitAESCBCOpenSSL"); 604 605 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd128BitAESBC"); 606 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND192BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd192BitAESBC"); 607 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND256BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd256BitAESBC"); 608 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND128BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And128BitAESBC"); 609 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND192BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And192BitAESBC"); 610 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND256BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And256BitAESBC"); 611 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 612 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 613 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 614 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 615 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 616 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 617 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND128BITAES-CBC-BC","PBEWITHSHA256AND128BITAES-CBC-BC"); 618 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND192BITAES-CBC-BC","PBEWITHSHA256AND192BITAES-CBC-BC"); 619 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND256BITAES-CBC-BC","PBEWITHSHA256AND256BITAES-CBC-BC"); 620 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); 621 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); 622 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PBEWITHSHAAND256BITAES-CBC-BC"); 623 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); 624 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); 625 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); 626 627 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITAES-CBC-BC", "PKCS12PBE"); 628 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND192BITAES-CBC-BC", "PKCS12PBE"); 629 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND256BITAES-CBC-BC", "PKCS12PBE"); 630 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND128BITAES-CBC-BC", "PKCS12PBE"); 631 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND192BITAES-CBC-BC", "PKCS12PBE"); 632 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND256BITAES-CBC-BC", "PKCS12PBE"); 633 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND128BITAES-CBC-BC","PKCS12PBE"); 634 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND192BITAES-CBC-BC","PKCS12PBE"); 635 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND256BITAES-CBC-BC","PKCS12PBE"); 636 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND128BITAES-CBC-BC","PKCS12PBE"); 637 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND192BITAES-CBC-BC","PKCS12PBE"); 638 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND256BITAES-CBC-BC","PKCS12PBE"); 639 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND128BITAES-CBC-BC","PKCS12PBE"); 640 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND192BITAES-CBC-BC","PKCS12PBE"); 641 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND256BITAES-CBC-BC","PKCS12PBE"); 642 643 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); 644 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); 645 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); 646 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); 647 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); 648 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); 649 650 // BEGIN android-removed 651 // addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128"); 652 // addPoly1305Algorithm(provider, "AES", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); 653 // END android-removed 654 } 655 } 656 657 private static Class lookup(String className) 658 { 659 try 660 { 661 Class def = AES.class.getClassLoader().loadClass(className); 662 663 return def; 664 } 665 catch (Exception e) 666 { 667 return null; 668 } 669 } 670} 671