From 4331fad8ad91833b9e7a7e65fa666e1f50b92efa Mon Sep 17 00:00:00 2001 From: David Schachter Date: Fri, 10 Jul 2026 12:57:09 -0700 Subject: [PATCH] ADFA-4633: Strip BouncyCastle PQC classes from keystore-generator-plugin APK Adds a stripBcprovPqc Gradle task that repacks bcprov-jdk18on excluding org/bouncycastle/pqc/**, reducing APK size. Also wires in the root version catalog so the standalone plugin build can resolve plugin-api's dependencies. Co-Authored-By: Claude Sonnet 4.6 --- keystore-generator-plugin/build.gradle.kts | 24 ++++++++++++++++--- keystore-generator-plugin/settings.gradle.kts | 5 ++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/keystore-generator-plugin/build.gradle.kts b/keystore-generator-plugin/build.gradle.kts index e116c4c0d2..d3dc795d34 100644 --- a/keystore-generator-plugin/build.gradle.kts +++ b/keystore-generator-plugin/build.gradle.kts @@ -51,6 +51,21 @@ android { } } +val bcprovOriginal: Configuration by configurations.creating { + isCanBeResolved = true + isCanBeConsumed = false +} + +val stripBcprovPqc by tasks.registering(Jar::class) { + archiveFileName.set("bcprov-nopqc.jar") + destinationDirectory.set(layout.buildDirectory.dir("libs")) + from({ bcprovOriginal.map { zipTree(it) } }) { + exclude("org/bouncycastle/pqc/**") + } + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA") +} + dependencies { compileOnly(project(":plugin-api")) @@ -60,9 +75,12 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:2.1.21") implementation("androidx.fragment:fragment:1.8.8") - // BouncyCastle for keystore generation - implementation("org.bouncycastle:bcprov-jdk18on:1.78") - implementation("org.bouncycastle:bcpkix-jdk18on:1.78") + // BouncyCastle for keystore generation (PQC classes stripped via stripBcprovPqc task) + bcprovOriginal("org.bouncycastle:bcprov-jdk18on:1.78") + implementation(files(stripBcprovPqc.flatMap { it.archiveFile })) + implementation("org.bouncycastle:bcpkix-jdk18on:1.78") { + exclude(group = "org.bouncycastle", module = "bcprov-jdk18on") + } } tasks.wrapper { diff --git a/keystore-generator-plugin/settings.gradle.kts b/keystore-generator-plugin/settings.gradle.kts index df2526abc0..b7dd70ca02 100644 --- a/keystore-generator-plugin/settings.gradle.kts +++ b/keystore-generator-plugin/settings.gradle.kts @@ -16,6 +16,11 @@ dependencyResolutionManagement { google() gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } include(":plugin-api")