diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1EncodableVector.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1EncodableVector.java
index 1b8f0d7..97a9161 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1EncodableVector.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1EncodableVector.java
@@ -16,6 +16,7 @@
     /**
      * Base constructor.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public ASN1EncodableVector()
     {
@@ -26,6 +27,7 @@
      *
      * @param obj the encodable to add.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void add(ASN1Encodable obj)
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1InputStream.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1InputStream.java
index 8d57dbc..da38178 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1InputStream.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1InputStream.java
@@ -26,6 +26,7 @@
 
     private final byte[][] tmpBuffers;
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public ASN1InputStream(
         InputStream is)
@@ -39,6 +40,7 @@
      * 
      * @param input array containing ASN.1 encoded data.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public ASN1InputStream(
         byte[] input)
@@ -215,6 +217,7 @@
         return new ASN1InputStream(dIn).buildEncodableVector();
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public ASN1Primitive readObject()
         throws IOException
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1Integer.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1Integer.java
index bdee87c..8018d95 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1Integer.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/ASN1Integer.java
@@ -78,6 +78,7 @@
         bytes = BigInteger.valueOf(value).toByteArray();
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public ASN1Integer(
         BigInteger value)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERBitString.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERBitString.java
index 0d95b85..7b7a1e2 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERBitString.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERBitString.java
@@ -97,6 +97,7 @@
         super(data, padBits);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public DERBitString(
         byte[]  data)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEREncodableVector.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEREncodableVector.java
index 016c815..4cd553b 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEREncodableVector.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEREncodableVector.java
@@ -13,6 +13,7 @@
     /**
      * @deprecated use ASN1EncodableVector instead.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public DEREncodableVector()
     {
 
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERInteger.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERInteger.java
index d489bba..381f562 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERInteger.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERInteger.java
@@ -21,11 +21,13 @@
         super(bytes, true);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public DERInteger(BigInteger value)
     {
         super(value);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public DERInteger(long value)
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERNull.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERNull.java
index b4352c6..22431f0 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERNull.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERNull.java
@@ -11,6 +11,7 @@
 public class DERNull
     extends ASN1Null
 {
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public static final DERNull INSTANCE = new DERNull();
 
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERObjectIdentifier.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERObjectIdentifier.java
index ab93041..35efdf3 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERObjectIdentifier.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERObjectIdentifier.java
@@ -9,6 +9,7 @@
 public class DERObjectIdentifier
     extends ASN1ObjectIdentifier
 {
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public DERObjectIdentifier(String identifier)
     {
         super(identifier);
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROctetString.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROctetString.java
index 56aab6d..42b30eb 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROctetString.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROctetString.java
@@ -16,6 +16,7 @@
      *
      * @param string the octets making up the octet string.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public DEROctetString(
         byte[]  string)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROutputStream.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROutputStream.java
index 5811ac7..5b9d638 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROutputStream.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DEROutputStream.java
@@ -11,6 +11,7 @@
 public class DEROutputStream
     extends ASN1OutputStream
 {
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public DEROutputStream(
         OutputStream    os)
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSequence.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSequence.java
index 0c2bc2f..b66c3e0 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSequence.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSequence.java
@@ -16,6 +16,7 @@
     /**
      * create an empty sequence
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public DERSequence()
     {
@@ -35,6 +36,7 @@
      * create a sequence containing a vector of objects.
      * @param v the vector of objects to make up the sequence.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public DERSequence(
         ASN1EncodableVector v)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSet.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSet.java
index d2160cd..8d4870c 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSet.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/DERSet.java
@@ -34,6 +34,7 @@
      * create a set containing a vector of objects.
      * @param v the vector of objects to make up the set.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public DERSet(
         ASN1EncodableVector v)
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
index 931bfa9..6777318 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
@@ -39,6 +39,7 @@
     /** PKCS#1: 1.2.840.113549.1.1.10 */
     static final ASN1ObjectIdentifier    id_RSASSA_PSS             = pkcs_1.branch("10");
     /** PKCS#1: 1.2.840.113549.1.1.11 */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     static final ASN1ObjectIdentifier    sha256WithRSAEncryption   = pkcs_1.branch("11");
     /** PKCS#1: 1.2.840.113549.1.1.12 */
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier.java
index 98a4f76..216e969 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier.java
@@ -42,6 +42,7 @@
         return null;
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public AlgorithmIdentifier(
         ASN1ObjectIdentifier algorithm)
@@ -49,6 +50,7 @@
         this.algorithm = algorithm;
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public AlgorithmIdentifier(
         ASN1ObjectIdentifier algorithm,
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Certificate.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Certificate.java
index 13eef2b..1ee3369 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Certificate.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Certificate.java
@@ -36,6 +36,7 @@
         return getInstance(ASN1Sequence.getInstance(obj, explicit));
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public static Certificate getInstance(
         Object  obj)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/DigestInfo.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/DigestInfo.java
index ab2033d..080c7cf 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/DigestInfo.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/DigestInfo.java
@@ -49,6 +49,7 @@
         return null;
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public DigestInfo(
         AlgorithmIdentifier  algId,
         byte[]               digest)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.java
index 5c3adee..be72953 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.java
@@ -35,6 +35,7 @@
         return getInstance(ASN1Sequence.getInstance(obj, explicit));
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public static SubjectPublicKeyInfo getInstance(
         Object  obj)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Time.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Time.java
index a3441c4..db488ba 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Time.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/Time.java
@@ -54,6 +54,7 @@
      *
      * @param time a date object representing the time of interest.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public Time(
         Date    time)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/V3TBSCertificateGenerator.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/V3TBSCertificateGenerator.java
index a1b749d..ec0888a 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/V3TBSCertificateGenerator.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/V3TBSCertificateGenerator.java
@@ -45,11 +45,13 @@
     private DERBitString issuerUniqueID;
     private DERBitString subjectUniqueID;
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public V3TBSCertificateGenerator()
     {
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSerialNumber(
         ASN1Integer  serialNumber)
@@ -57,6 +59,7 @@
         this.serialNumber = serialNumber;
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSignature(
         AlgorithmIdentifier    signature)
@@ -67,6 +70,7 @@
         /**
      * @deprecated use X500Name method
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setIssuer(
         X509Name    issuer)
@@ -86,6 +90,7 @@
         this.startDate = new Time(startDate);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setStartDate(
         Time startDate)
@@ -99,6 +104,7 @@
         this.endDate = new Time(endDate);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setEndDate(
         Time endDate)
@@ -109,6 +115,7 @@
         /**
      * @deprecated use X500Name method
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSubject(
         X509Name    subject)
@@ -134,6 +141,7 @@
         this.subjectUniqueID = uniqueID;
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSubjectPublicKeyInfo(
         SubjectPublicKeyInfo    pubKeyInfo)
@@ -166,6 +174,7 @@
         }
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public TBSCertificate generateTBSCertificate()
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/X509Name.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/X509Name.java
index ce7ef10..c66d831 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/X509Name.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x509/X509Name.java
@@ -71,6 +71,7 @@
      * common name - StringType(SIZE(1..64))
      * @deprecated use a X500NameStyle
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public static final ASN1ObjectIdentifier CN = new ASN1ObjectIdentifier("2.5.4.3");
 
@@ -410,6 +411,7 @@
      * the principal will be a list of constructed sets, each containing an (OID, String) pair.
      * @deprecated use X500Name.getInstance()
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public X509Name(
         ASN1Sequence  seq)
     {
@@ -598,6 +600,7 @@
      * some such, converting it into an ordered set of name attributes.
      * @deprecated use X500Name, X500NameBuilder
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public X509Name(
         String  dirName)
@@ -870,6 +873,7 @@
     /**
      * return a vector of the oids in the name, in the order they were found.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public Vector getOIDs()
     {
@@ -887,6 +891,7 @@
      * return a vector of the values found in the name, in the order they
      * were found.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public Vector getValues()
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x9/X9ObjectIdentifiers.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x9/X9ObjectIdentifiers.java
index d194f95..876f3b4 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x9/X9ObjectIdentifiers.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/asn1/x9/X9ObjectIdentifiers.java
@@ -55,6 +55,7 @@
     static final ASN1ObjectIdentifier ecdsa_with_SHA224 = ecdsa_with_SHA2.branch("1");
 
     /** OID: 1.2.840.10045.4.3.2 */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     static final ASN1ObjectIdentifier ecdsa_with_SHA256 = ecdsa_with_SHA2.branch("2");
 
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/X509Principal.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/X509Principal.java
index 3d7469a..49f22c4 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/X509Principal.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/X509Principal.java
@@ -45,6 +45,7 @@
     /**
      * Constructor from an encoded byte array.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public X509Principal(
         byte[]  bytes)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/BouncyCastleProvider.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/BouncyCastleProvider.java
index 78e548e..0cd63f0 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/BouncyCastleProvider.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/BouncyCastleProvider.java
@@ -141,6 +141,7 @@
      * using runtime registration of the provider using the
      * <code>Security.addProvider()</code> mechanism.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public BouncyCastleProvider()
     {
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/X509CertificateObject.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/X509CertificateObject.java
index 7edc67b..f2ff6c3 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/X509CertificateObject.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/jce/provider/X509CertificateObject.java
@@ -87,6 +87,7 @@
 
     private PKCS12BagAttributeCarrier   attrCarrier = new PKCS12BagAttributeCarrierImpl();
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public X509CertificateObject(
         com.android.org.bouncycastle.asn1.x509.Certificate    c)
diff --git a/android_bcprov/src/main/java/com/android/org/bouncycastle/x509/X509V3CertificateGenerator.java b/android_bcprov/src/main/java/com/android/org/bouncycastle/x509/X509V3CertificateGenerator.java
index 12f0027..4ac8b9d 100644
--- a/android_bcprov/src/main/java/com/android/org/bouncycastle/x509/X509V3CertificateGenerator.java
+++ b/android_bcprov/src/main/java/com/android/org/bouncycastle/x509/X509V3CertificateGenerator.java
@@ -58,6 +58,7 @@
     private String                      signatureAlgorithm;
     private X509ExtensionsGenerator     extGenerator;
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public X509V3CertificateGenerator()
     {
@@ -77,6 +78,7 @@
     /**
      * set the serial number for the certificate.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSerialNumber(
         BigInteger      serialNumber)
@@ -93,6 +95,7 @@
      * Set the issuer distinguished name - the issuer is the entity whose private key is used to sign the
      * certificate.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setIssuerDN(
         X500Principal   issuer)
@@ -111,12 +114,14 @@
      * Set the issuer distinguished name - the issuer is the entity whose private key is used to sign the
      * certificate.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public void setIssuerDN(
         X509Name   issuer)
     {
         tbsGen.setIssuer(issuer);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setNotBefore(
         Date    date)
@@ -124,6 +129,7 @@
         tbsGen.setStartDate(new Time(date));
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setNotAfter(
         Date    date)
@@ -134,6 +140,7 @@
     /**
      * Set the subject distinguished name. The subject describes the entity associated with the public key.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSubjectDN(
         X500Principal   subject)
@@ -151,12 +158,14 @@
     /**
      * Set the subject distinguished name. The subject describes the entity associated with the public key.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     public void setSubjectDN(
         X509Name   subject)
     {
         tbsGen.setSubject(subject);
     }
 
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setPublicKey(
         PublicKey       key)
@@ -179,6 +188,7 @@
      * 
      * @param signatureAlgorithm string representation of the algorithm name.
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public void setSignatureAlgorithm(
         String  signatureAlgorithm)
@@ -421,6 +431,7 @@
      * used - not "BC".
      * </p>
      */
+    @dalvik.annotation.compat.UnsupportedAppUsage
     @libcore.api.CorePlatformApi
     public X509Certificate generate(
         PrivateKey      key)
diff --git a/srcgen/generate_android_src.sh b/srcgen/generate_android_src.sh
index 36b8f4c..76db979 100755
--- a/srcgen/generate_android_src.sh
+++ b/srcgen/generate_android_src.sh
@@ -12,6 +12,7 @@
 make -j15 currysrc android_bouncycastle_srcgen
 
 CORE_PLATFORM_API_FILE=${BOUNCY_CASTLE_DIR}/srcgen/core-platform-api.txt
+UNSUPPORTED_APP_USAGE_FILE=${BOUNCY_CASTLE_DIR}/srcgen/unsupported-app-usage.json
 
 function do_transform() {
   local SRC_IN_DIR=$1
@@ -24,7 +25,11 @@
   rm -rf ${SRC_OUT_DIR}
   mkdir -p ${SRC_OUT_DIR}
 
-  java -cp ${CLASSPATH} com.android.bouncycastle.srcgen.BouncyCastleTransform ${SRC_IN_DIR} ${SRC_OUT_DIR} ${CORE_PLATFORM_API_FILE}
+  java -cp ${CLASSPATH} com.android.bouncycastle.srcgen.BouncyCastleTransform \
+       ${SRC_IN_DIR} \
+       ${SRC_OUT_DIR} \
+       ${CORE_PLATFORM_API_FILE} \
+       ${UNSUPPORTED_APP_USAGE_FILE}
 }
 
 BCPROV_SRC_IN_DIR=${BOUNCY_CASTLE_DIR}/bcprov/src/main/java
diff --git a/srcgen/src/main/java/com/android/bouncycastle/srcgen/BouncyCastleTransform.java b/srcgen/src/main/java/com/android/bouncycastle/srcgen/BouncyCastleTransform.java
index 70b0da1..cef22c8 100644
--- a/srcgen/src/main/java/com/android/bouncycastle/srcgen/BouncyCastleTransform.java
+++ b/srcgen/src/main/java/com/android/bouncycastle/srcgen/BouncyCastleTransform.java
@@ -19,6 +19,7 @@
 import static com.google.currysrc.api.process.Rules.createOptionalRule;
 
 import com.google.currysrc.Main;
+import com.google.currysrc.aosp.Annotations;
 import com.google.currysrc.api.RuleSet;
 import com.google.currysrc.api.input.DirectoryInputFileGenerator;
 import com.google.currysrc.api.input.InputFileGenerator;
@@ -33,7 +34,6 @@
 import com.google.currysrc.processors.ModifyQualifiedNames;
 import com.google.currysrc.processors.ModifyStringLiterals;
 import com.google.currysrc.processors.RenamePackage;
-
 import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -56,14 +56,18 @@
      * java BouncyCastleTransform {source dir} {target dir}
      */
     public static void main(String[] args) throws Exception {
-        if (args.length != 3) {
+        if (args.length != 4) {
           throw new IllegalArgumentException(
               "Usage: " + BouncyCastleTransform.class.getCanonicalName()
-                  + " <source-dir> <target-dir> <core-platform-api-file>");
+                  + " <source-dir>"
+                  + " <target-dir>"
+                  + " <core-platform-api-file>"
+                  + " <unsupported-app-usage-file>");
         }
         String sourceDir = args[0];
         String targetDir = args[1];
         Path corePlatformApiFile = Paths.get(args[2]);
+        Path unsupportedAppUsageFile = Paths.get(args[3]);
 
         Map<String, String> options = JavaCore.getOptions();
         options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_8);
@@ -74,18 +78,22 @@
 
         new Main(false /* debug */)
             .setJdtOptions(options)
-            .execute(new TransformRuleSet(sourceDir, targetDir, corePlatformApiFile));
+            .execute(new TransformRuleSet(sourceDir, targetDir, corePlatformApiFile,
+                unsupportedAppUsageFile));
     }
 
     static class TransformRuleSet implements RuleSet {
         private final String sourceDir;
         private final String targetDir;
         private final Path corePlatformApiFile;
+        private final Path unsupportedAppUsageFile;
 
-        TransformRuleSet(String sourceDir, String targetDir, Path corePlatformApiFile) {
+        TransformRuleSet(String sourceDir, String targetDir, Path corePlatformApiFile,
+            Path unsupportedAppUsageFile) {
             this.sourceDir = sourceDir;
             this.targetDir = targetDir;
             this.corePlatformApiFile = corePlatformApiFile;
+            this.unsupportedAppUsageFile = unsupportedAppUsageFile;
         }
 
         @Override
@@ -109,7 +117,10 @@
                     createHidePublicClassesRule(),
                     // AST change: Add CorePlatformApi to specified classes and members
                     createOptionalRule(new AddMarkerAnnotation("libcore.api.CorePlatformApi",
-                        BodyDeclarationLocators.readBodyDeclarationLocators(corePlatformApiFile)))
+                        BodyDeclarationLocators.readBodyDeclarationLocators(corePlatformApiFile))),
+                    // AST Change: Add UnsupportedAppUsage to specified class members.
+                    createOptionalRule(
+                        Annotations.addUnsupportedAppUsage(unsupportedAppUsageFile))
                     );
         }
 
diff --git a/srcgen/unsupported-app-usage.json b/srcgen/unsupported-app-usage.json
new file mode 100644
index 0000000..cdac99b
--- /dev/null
+++ b/srcgen/unsupported-app-usage.json
@@ -0,0 +1,165 @@
+/*
+See com.google.currysrc.aosp.Annotations.addUnsupportedAppUsage(Path) method for details on the
+syntax.
+*/
+[
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.ASN1EncodableVector#ASN1EncodableVector()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.ASN1EncodableVector#add(ASN1Encodable)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.ASN1InputStream#ASN1InputStream(InputStream)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.ASN1InputStream#ASN1InputStream(byte[])"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.ASN1InputStream#readObject()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.ASN1Integer#ASN1Integer(BigInteger)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERBitString#DERBitString(byte[])"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DEREncodableVector#DEREncodableVector()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERInteger#DERInteger(long)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERInteger#DERInteger(BigInteger)"
+  },
+  {
+"@location": "field:com.android.org.bouncycastle.asn1.DERNull#INSTANCE"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERObjectIdentifier#DERObjectIdentifier(String)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DEROctetString#DEROctetString(byte[])"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DEROutputStream#DEROutputStream(OutputStream)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERSequence#DERSequence()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERSequence#DERSequence(ASN1EncodableVector)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.DERSet#DERSet(ASN1EncodableVector)"
+  },
+  {
+"@location": "field:com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers#sha256WithRSAEncryption"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.AlgorithmIdentifier#AlgorithmIdentifier(ASN1ObjectIdentifier)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.AlgorithmIdentifier#AlgorithmIdentifier(ASN1ObjectIdentifier,ASN1Encodable)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.Certificate#getInstance(Object)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.DigestInfo#DigestInfo(AlgorithmIdentifier,byte[])"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.SubjectPublicKeyInfo#getInstance(Object)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.Time#Time(Date)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#V3TBSCertificateGenerator()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#generateTBSCertificate()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setEndDate(Time)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setIssuer(X509Name)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setSerialNumber(ASN1Integer)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setSignature(AlgorithmIdentifier)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setStartDate(Time)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setSubject(X509Name)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.V3TBSCertificateGenerator#setSubjectPublicKeyInfo(SubjectPublicKeyInfo)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.X509Name#X509Name(ASN1Sequence)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.X509Name#X509Name(String)"
+  },
+  {
+"@location": "field:com.android.org.bouncycastle.asn1.x509.X509Name#CN"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.X509Name#getOIDs()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.asn1.x509.X509Name#getValues()"
+  },
+  {
+"@location": "field:com.android.org.bouncycastle.asn1.x9.X9ObjectIdentifiers#ecdsa_with_SHA256"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.jce.provider.BouncyCastleProvider#BouncyCastleProvider()"
+  },
+  {
+    "@location": "method:com.android.org.bouncycastle.jce.provider.X509CertificateObject#X509CertificateObject(com.android.org.bouncycastle.asn1.x509.Certificate)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.jce.X509Principal#X509Principal(byte[])"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#X509V3CertificateGenerator()"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#generate(PrivateKey)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setIssuerDN(X509Name)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setIssuerDN(X500Principal)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setNotAfter(Date)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setNotBefore(Date)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setPublicKey(PublicKey)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setSerialNumber(BigInteger)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setSignatureAlgorithm(String)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setSubjectDN(X509Name)"
+  },
+  {
+"@location": "method:com.android.org.bouncycastle.x509.X509V3CertificateGenerator#setSubjectDN(X500Principal)"
+  }
+]
