summaryrefslogtreecommitdiff
path: root/srcgen
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2018-11-09 15:55:32 +0000
committerPaul Duffin <paulduffin@google.com>2018-11-09 15:56:19 +0000
commit7d8a31badeb153c0aad099f519d247617cb11928 (patch)
tree54cdef7728a96f85097cf4899e992ff5d7f32ea5 /srcgen
parent788682f69986c4288c14d1e16a02a903a97fa40a (diff)
downloadbouncycastle-7d8a31badeb153c0aad099f519d247617cb11928.tar.gz
Annotate repackaged API with @UnsupportedAppUsage
Adds @UnsupportedAppUsage annotations to the parts of bouncycastle that are in the hidden API. Allows the bouncycastle entries to be removed from the frameworks/base/config/hiddenapi-light-greylist.txt. This was tested by making and then manually checking that the generated out/target/common/obj/PACKAGING/hiddenapi-light-greylist.txt was the same (after sorting) before and after this change. Bug: 117818301 Test: see above Change-Id: Icdc7c2cf07710d808c32e09caf71867efec4d775
Diffstat (limited to 'srcgen')
-rwxr-xr-xsrcgen/generate_android_src.sh7
-rw-r--r--srcgen/src/main/java/com/android/bouncycastle/srcgen/BouncyCastleTransform.java23
-rw-r--r--srcgen/unsupported-app-usage.json165
3 files changed, 188 insertions, 7 deletions
diff --git a/srcgen/generate_android_src.sh b/srcgen/generate_android_src.sh
index 36b8f4c1..76db9797 100755
--- a/srcgen/generate_android_src.sh
+++ b/srcgen/generate_android_src.sh
@@ -12,6 +12,7 @@ cd ${ANDROID_BUILD_TOP}
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 @@ function do_transform() {
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 70b0da1c..cef22c80 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.createMandatoryRule;
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.InsertHeader;
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 @@ public class BouncyCastleTransform {
* 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 @@ public class BouncyCastleTransform {
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 @@ public class BouncyCastleTransform {
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 00000000..cdac99b4
--- /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)"
+ }
+]