diff options
author | Paul Duffin <paulduffin@google.com> | 2018-11-09 15:55:32 +0000 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2018-11-09 15:56:19 +0000 |
commit | 7d8a31badeb153c0aad099f519d247617cb11928 (patch) | |
tree | 54cdef7728a96f85097cf4899e992ff5d7f32ea5 /srcgen | |
parent | 788682f69986c4288c14d1e16a02a903a97fa40a (diff) | |
download | bouncycastle-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-x | srcgen/generate_android_src.sh | 7 | ||||
-rw-r--r-- | srcgen/src/main/java/com/android/bouncycastle/srcgen/BouncyCastleTransform.java | 23 | ||||
-rw-r--r-- | srcgen/unsupported-app-usage.json | 165 |
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)" + } +] |