1-keep class com.android.org.bouncycastle.jce.provider.BouncyCastleProvider { public *; } 2 3# Keep classes for Android supported algorithms, and internal ones loaded 4# through reflection (cf. calls to ConfigurableProvider.addAlgorithm and 5# ConfigurableProvider.addPrivateAlgorithm). The *$Mappings classes are used 6# internally through reflection to configure the algorithms. 7 8-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings { public *; } 9-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA1AndAES_128 { public *; } 10-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA1AndAES_256 { public *; } 11-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA224AndAES_128 { public *; } 12-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA224AndAES_256 { public *; } 13-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA256AndAES_128 { public *; } 14-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA256AndAES_256 { public *; } 15-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA384AndAES_128 { public *; } 16-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA384AndAES_256 { public *; } 17-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA512AndAES_128 { public *; } 18-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBEWithHmacSHA512AndAES_256 { public *; } 19-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2WithHmacSHA18BIT { public *; } 20-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2WithHmacSHA1UTF8 { public *; } 21-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2WithHmacSHA224UTF8 { public *; } 22-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2WithHmacSHA256UTF8 { public *; } 23-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2WithHmacSHA384UTF8 { public *; } 24-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2WithHmacSHA512UTF8 { public *; } 25-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$PBKDF2withUTF8 { public *; } 26 27-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings { public *; } 28-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$AlgParams { public *; } 29 30-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$Mappings { public *; } 31-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA1AES128AlgorithmParameters { public *; } 32-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA1AES256AlgorithmParameters { public *; } 33-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA224AES128AlgorithmParameters { public *; } 34-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA224AES256AlgorithmParameters { public *; } 35-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA256AES128AlgorithmParameters { public *; } 36-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA256AES256AlgorithmParameters { public *; } 37-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA384AES128AlgorithmParameters { public *; } 38-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA384AES256AlgorithmParameters { public *; } 39-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA512AES128AlgorithmParameters { public *; } 40-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.PBES2AlgorithmParameters$PBEWithHmacSHA512AES256AlgorithmParameters { public *; } 41 42-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$Mappings { public *; } 43-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$CBC { public *; } 44-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$CFB { public *; } 45-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$ECB { public *; } 46-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithAESCBC { public *; } 47-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithAESCBC { public *; } 48-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithAESCBC { public *; } 49-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithMD5And128BitAESCBCOpenSSL { public *; } 50-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithMD5And192BitAESCBCOpenSSL { public *; } 51-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithMD5And256BitAESCBCOpenSSL { public *; } 52-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA1AESCBC128 { public *; } 53-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA1AESCBC192 { public *; } 54-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA1AESCBC256 { public *; } 55-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA256AESCBC128 { public *; } 56-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA256AESCBC192 { public *; } 57-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA256AESCBC256 { public *; } 58-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA256And128BitAESBC { public *; } 59-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA256And192BitAESBC { public *; } 60-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHA256And256BitAESBC { public *; } 61-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHAAnd128BitAESBC { public *; } 62-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHAAnd192BitAESBC { public *; } 63-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$PBEWithSHAAnd256BitAESBC { public *; } 64-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.AES$Wrap { public *; } 65 66-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings { public *; } 67-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$KeyGen { public *; } 68-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$PBEWithSHAAnd128Bit { public *; } 69-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$PBEWithSHAAnd128BitKeyFactory { public *; } 70-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$PBEWithSHAAnd40Bit { public *; } 71-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$PBEWithSHAAnd40BitKeyFactory { public *; } 72 73-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings { public *; } 74-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Blowfish$AlgParams { public *; } 75-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Blowfish$ECB { public *; } 76-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Blowfish$KeyGen { public *; } 77 78-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$Mappings { public *; } 79-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$ECB { public *; } 80-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$KeyFactory { public *; } 81-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$KeyGenerator { public *; } 82-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$PBEWithMD5 { public *; } 83-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$PBEWithMD5KeyFactory { public *; } 84-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$PBEWithSHA1 { public *; } 85-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DES$PBEWithSHA1KeyFactory { public *; } 86-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters { public *; } 87 88-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings { public *; } 89-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$ECB { public *; } 90-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$PBEWithSHAAndDES2Key { public *; } 91-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$PBEWithSHAAndDES2KeyFactory { public *; } 92-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$PBEWithSHAAndDES3Key { public *; } 93-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$PBEWithSHAAndDES3KeyFactory { public *; } 94-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$Wrap { public *; } 95 96-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings { public *; } 97-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithMD5AndRC2 { public *; } 98-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithMD5KeyFactory { public *; } 99-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithSHA1AndRC2 { public *; } 100-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithSHA1KeyFactory { public *; } 101-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithSHAAnd128BitKeyFactory { public *; } 102-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithSHAAnd128BitRC2 { public *; } 103-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithSHAAnd40BitKeyFactory { public *; } 104-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$PBEWithSHAAnd40BitRC2 { public *; } 105 106-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings { public *; } 107-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Twofish$PBEWithSHA { public *; } 108-keep class com.android.org.bouncycastle.jcajce.provider.symmetric.Twofish$PBEWithSHAKeyFactory { public *; } 109 110-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings { public *; } 111-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.AlgorithmParameterGeneratorSpi { public *; } 112-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.AlgorithmParametersSpi { public *; } 113-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSASigner$dsa224 { public *; } 114-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSASigner$dsa256 { public *; } 115-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSASigner$noneDSA { public *; } 116-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSASigner$stdDSA { public *; } 117-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi { public *; } 118-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyPairGeneratorSpi { public *; } 119 120-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings { public *; } 121-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.AlgorithmParameterGeneratorSpi { public *; } 122-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.AlgorithmParametersSpi { public *; } 123-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyAgreementSpi { public *; } 124-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi { public *; } 125-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyPairGeneratorSpi { public *; } 126 127-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings { public *; } 128-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.AlgorithmParametersSpi$PSS { public *; } 129-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi$NoPadding { public *; } 130-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi { public *; } 131-keep class com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyPairGeneratorSpi { public *; } 132 133-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA1$Mappings { public *; } 134-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA1$PBEWithMacKeyFactory { public *; } 135-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA1$SHA1Mac { public *; } 136 137-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA224$Mappings { public *; } 138-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA224$HashMac { public *; } 139 140-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA256$Mappings { public *; } 141-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA256$HashMac { public *; } 142 143-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA384$Mappings { public *; } 144-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA384$HashMac { public *; } 145 146-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA512$Mappings { public *; } 147-keep class com.android.org.bouncycastle.jcajce.provider.digest.SHA512$HashMac { public *; } 148 149-keep class com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings { public *; } 150-keep class com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$BouncyCastleStore { public *; } 151-keep class com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std { public *; } 152 153-keep class com.android.org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings { public *; } 154-keep class com.android.org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi$BCPKCS12KeyStore { public *; } 155 156-keep class com.android.org.bouncycastle.jce.provider.CertStoreCollectionSpi { public *; } 157-keep class com.android.org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi { public *; } 158-keep class com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi { public *; } 159 160# Classes only accessed from tests in MtsLibcoreBouncyCastleTestCases 161-keep class com.android.org.bouncycastle.asn1.x9.ECNamedCurveTable { public *; } 162-keep class com.android.org.bouncycastle.asn1.x9.X962NamedCurves { public *; } 163-keep class com.android.org.bouncycastle.asn1.x9.X9ECParameters { public *; } 164-keep class com.android.org.bouncycastle.asn1.x9.X9ECPoint { public *; } 165-keep class com.android.org.bouncycastle.crypto.ec.CustomNamedCurves { public *; } 166-keep class com.android.org.bouncycastle.math.Primes { public *; } 167-keep class com.android.org.bouncycastle.math.Primes$* { public *; } 168-keep class com.android.org.bouncycastle.math.ec.ECAlgorithms { public *; } 169-keep class com.android.org.bouncycastle.math.ec.ECCurve { public *; } 170-keep class com.android.org.bouncycastle.math.ec.ECCurve$Config { public *; } 171-keep class com.android.org.bouncycastle.math.ec.ECCurve$Fp { public *; } 172-keep class com.android.org.bouncycastle.math.ec.ECPoint { public *; } 173-keep class com.android.org.bouncycastle.math.ec.FixedPointCombMultiplier { public *; } 174-keep class com.android.org.bouncycastle.math.raw.Interleave { public *; } 175-keep class com.android.org.bouncycastle.math.raw.Nat { public *; } 176-keep class com.android.org.bouncycastle.math.raw.Nat256 { public *; } 177-keep class com.android.org.bouncycastle.util.Arrays { public *; } 178-keep class com.android.org.bouncycastle.util.Integers { public *; } 179-keep class com.android.org.bouncycastle.util.encoders.Hex { public *; } 180 181# Classes only accessed from tests in CtsLibcoreTestCases 182# tests.com.android.org.bouncycastle.crypto.digests 183-keep class com.android.org.bouncycastle.crypto.digests.*Digest { public *; } 184-keep class com.android.org.bouncycastle.crypto.digests.OpenSSLDigest$* { public *; } 185 186# Unsupported usage by vendors, from b/356844860#comment19, 187# b/365088430#comment5, and b/365088430#comment10 188-keep class com.android.org.bouncycastle.asn1.ASN1EncodableVector { public *; } 189-keep class com.android.org.bouncycastle.asn1.ASN1Enumerated { public *; } 190-keep class com.android.org.bouncycastle.asn1.ASN1InputStream { public *; } 191-keep class com.android.org.bouncycastle.asn1.ASN1Integer { public *; } 192-keep class com.android.org.bouncycastle.asn1.ASN1Object { public *; } 193-keep class com.android.org.bouncycastle.asn1.ASN1ObjectIdentifier { public *; } 194-keep class com.android.org.bouncycastle.asn1.ASN1OctetString { public *; } 195-keep class com.android.org.bouncycastle.asn1.ASN1Sequence { public *; } 196-keep class com.android.org.bouncycastle.asn1.ASN1TaggedObject { public *; } 197-keep class com.android.org.bouncycastle.asn1.DERBitString {} 198-keep class com.android.org.bouncycastle.asn1.DERInteger {} 199-keep class com.android.org.bouncycastle.asn1.DERNull {} 200-keep class com.android.org.bouncycastle.asn1.DEROctetString { public *; } 201-keep class com.android.org.bouncycastle.asn1.DERSequence {} 202-keep class com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers {} 203-keep class com.android.org.bouncycastle.asn1.pkcs.PrivateKeyInfo { public *; } 204-keep class com.android.org.bouncycastle.asn1.pkcs.RSAPublicKey { public *; } 205-keep class com.android.org.bouncycastle.asn1.x500.style.RFC4519Style {} 206-keep class com.android.org.bouncycastle.asn1.x509.AlgorithmIdentifier { public *; } 207-keep class com.android.org.bouncycastle.asn1.x509.BasicConstraints { public *; } 208-keep class com.android.org.bouncycastle.asn1.x509.Certificate { public *; } 209-keep class com.android.org.bouncycastle.asn1.x509.SubjectPublicKeyInfo { public *; } 210-keep class com.android.org.bouncycastle.asn1.x509.Time {} 211-keep class com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator { public *; } 212-keep class com.android.org.bouncycastle.asn1.x509.X509Name { public *; } 213-keep class com.android.org.bouncycastle.asn1.x9.X9ObjectIdentifiers {} 214-keep class com.android.org.bouncycastle.jce.ECNamedCurveTable { public *; } 215-keep class com.android.org.bouncycastle.jce.X509Principal {} 216-keep class com.android.org.bouncycastle.jce.netscape.NetscapeCertRequest { public *; } 217-keep class com.android.org.bouncycastle.jce.provider.BouncyCastleProvider {} 218-keep class com.android.org.bouncycastle.jce.provider.X509CertificateObject {} 219-keep class com.android.org.bouncycastle.jce.spec.ECParameterSpec { public *; } 220-keep class com.android.org.bouncycastle.math.ec.ECCurve { public *; } 221-keep class com.android.org.bouncycastle.math.ec.ECPoint { public *; } 222-keep class com.android.org.bouncycastle.util.BigIntegers { public *; } 223-keep class com.android.org.bouncycastle.util.encoders.Base64 { public *; } 224-keep class com.android.org.bouncycastle.util.encoders.Hex { public *; } 225-keep class com.android.org.bouncycastle.util.io.pem.PemObject { public *; } 226-keep class com.android.org.bouncycastle.util.io.pem.PemObjectParser { public *; } 227-keep class com.android.org.bouncycastle.util.io.pem.PemReader { public *; } 228-keep class com.android.org.bouncycastle.util.io.pem.PemWriter { public *; } 229-keep class com.android.org.bouncycastle.x509.X509V3CertificateGenerator { public *; } 230