Merge "Annotate repackaged API with @UnsupportedAppUsage"
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)"
+  }
+]