+`misc/` is the canonical home for example / demo code. Existing example packages: `misc/src/main/java/org/bouncycastle/{asn1,asn1/x500,cades,cbor/c509,cert,cert/plants,cms,crypto,jcajce,mail/smime,mls,openpgp,pqc/crypto,tls}/examples/`. It is also where a **test harness that needs third-party jars** belongs — `org.bouncycastle.mls.examples.client` (the MLS working group's gRPC interop runner, with its `src/main/proto/mls_client.proto` and the protobuf codegen plugin) moved here out of the published `mls` module, which had been shipping classes needing `io.grpc` / `com.google.protobuf` in a jar whose POM and OSGi manifest declared neither. Take such dependencies **by Maven coordinate**, not as jars hand-placed under `test/libs` and pulled in with `files()`: those are invisible to Dependabot (its config says so) and to any dependency scanner, which is how that set drifted three CVEs behind — CVE-2024-7246 and CVE-2025-55163 in gRPC, CVE-2024-7254 in protobuf-java — with nothing anywhere to report it. `misc` not being published is what makes a real coordinate free of consequence for the shipped jars. New example code should land here, never inside a **published** Gradle module (core/prov/pkix/pg/...) — that would force it into the published `bc*` jars and make it part of the JPMS-exported API surface.
0 commit comments