GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — CI: Add automated PQCA CBOM (Cryptography Bill of Materials) generation by xaexaex · Pull Request #2370 · bcgit/bc-java

Conversation

@xaexaex

@xaexaex xaexaex commented Jul 22, 2026

Copy link
Copy Markdown

Description

This PR adds a GitHub Action to automatically generate a CycloneDX 1.6 Cryptography Bill of Materials (CBOM) for the Bouncy Castle project upon demand.

As the industry transitions to Post-Quantum Cryptography (PQC), global regulatory frameworks (such as US Executive Order 14028, NIST guidelines, and EU DORA) increasingly mandate strict cryptographic asset visibility. By utilizing the official Linux Foundation / PQCA cbomkit-action, this workflow automatically inventories all cryptographic primitives (including ML-KEM and SLH-DSA) and attaches the resulting cbom.json as an artifact.

Motivation

Providing a verifiable CBOM allows enterprise consumers worldwide to immediately validate Bouncy Castle's PQC readiness and integrate the library's cryptographic inventory directly into their global compliance and risk management pipelines.

Licensing & Safety

  • Tooling: This workflow utilizes the cbomkit-action provided by the Post-Quantum Cryptography Alliance (Linux Foundation).
  • License Compatibility: The action is licensed under Apache-2.0, which is fully compatible with Bouncy Castle's MIT License. No third-party code is ingested into the Bouncy Castle source tree; this strictly operates as a CI analysis step.

Testing

  • Tested on my personal fork.
  • Successfully generated a cbom.json containing 301 cryptographic assets mapping both classical and PQC algorithms.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
dghgit and others added 30 commits June 27, 2026 16:01
@dghgit
refactored out slow tests for parallel execution.
9912127
@peterdettman
CMS: It's just "algorithm protection" attribute
154927e
@peterdettman
Add AttributeTable.hasAny method
e7047a6
@peterdettman
Refactor SIgnerInformation
2cf2af0
@peterdettman
Refactor CMSAuthenticatedData
6b21544
- improve attribute validation and prepare for more
@dghgit
Read S-Expression canonical string length incrementally to avoid pre-…
a4a3109
…allocation DoS, relates to github bcgit#2338.
@dghgit
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
0aa2511
@dghgit
Generalise canonical-string read into Streams.readLenBytesFully and a…
84cba75
…dd StreamsTest, relates to github bcgit#2338.
@dghgit
Remove unused legacy SXprUtils S-expression helper, relates to github b…
cbf5b27
…cgit#2338.
@ligefeiBouncycastle Administrator
EthereumIESEngine: close static-key stream-mode cross-message MAC for…
0948a3b
…gery
Administrator
Merge branch 'ethereum-ies-static-key-fix' into 'main'
14a64f4
EthereumIESEngine: close static-key stream-mode cross-message MAC forgery

See merge request root/bc-java!237
Administrator
Merge branch 'armor-pem-header-injection-fix' into 'main'
4c56032
ArmoredOutputStream / PemWriter: reject CR/LF in header name/value (header injection)

See merge request root/bc-java!232
@ligefeiBouncycastle Administrator
MLS SecureRandom hygiene: source from the Group / registrar, never `n…
b6496f2
…ew SecureRandom()` per operation
Administrator
Merge branch 'mls-securerandom-sweep' into 'main'
56c6489
MLS SecureRandom hygiene: source from the Group / registrar, never `new SecureRandom()` per operation

See merge request root/bc-java!212
@ligefeiBouncycastle Administrator
GF(2^8) / GF(2^4) arithmetic consolidation onto constant-time util.GF…
f99a41e
…256 / util.GF16
Administrator
Merge branch 'alg-gf256-dedup' into 'main'
953ecde
GF(2^8) / GF(2^4) arithmetic consolidation onto constant-time util.GF256 / util.GF16

See merge request root/bc-java!215
@ligefeiBouncycastle Administrator
EAX / CCM / OCB / KCCM: reject nonce reuse on re-init for encryption
9b7ada7
Administrator
Merge branch 'aead-nonce-reuse-guard' into 'main'
b65ba5f
EAX / CCM / OCB / KCCM: reject nonce reuse on re-init for encryption

See merge request root/bc-java!226
@ligefeiBouncycastle Administrator
AIMer
409c939
Administrator
Merge branch 'kpqc-aimer' into 'main'
62b2c35
AIMer

See merge request root/bc-java!133
@ligefeiBouncycastle Administrator
ElGamalEngine: validate ciphertext components on decryption (small-su…
c146fca
…bgroup confinement)
Administrator
Merge branch 'elgamal-peer-value-validation' into 'main'
9e8991f
ElGamalEngine: validate ciphertext components on decryption (small-subgroup confinement)

See merge request root/bc-java!236
@ligefeiBouncycastle Administrator
Fix PKIXCertPathReviewer.getPolicyTree() always returning null
4371f61
Administrator
Merge branch 'pkix-getpolicytree-fix' into 'main'
24e0103
Fix `PKIXCertPathReviewer.getPolicyTree()` always returning `null`

See merge request root/bc-java!217
@dghgit
Reject empty GeneralSubtrees/GeneralSubtree sequences in X.509 NameCo…
3a03043
…nstraints per RFC 5280 sec. 4.2.1.10, relates to github bcgit#2331.
@peterdettman
KCCM: Decryption input length guard
211fd23
@ligefeiBouncycastle Administrator
RFC 8702 — SHAKE in CMS: KMAC-with-SHAKE support
98dc30f
Administrator
Merge branch 'rfc-8702-shake-cms' into 'main'
86626df
RFC 8702 — SHAKE in CMS: KMAC-with-SHAKE support

See merge request root/bc-java!185
@peterdettman
KCCM/KGCM: Improve parameter type and reuse checks
efe1030
@ligefeiBouncycastle Administrator
Enforce the RFC 9106 Argon2 memory-size-exponent floor at key derivation
4fb18ac
dghgit and others added 29 commits July 16, 2026 07:26
@dghgit
Add an X500NameStyle example showing how to parse a Distinguished Nam…
a6ae246
…e with a commonName longer than the RFC 5280 64-character bound
@dghgit
Add the misc examples tree to the Gradle build as a non-publishing mo…
09cb1ed
…dule so examples compile and smoke-test under CI without shipping in the bc jars
royb
Add ML-KEM and X-Wing KEM support to HPKE, relates to github bcgit#2351
272fb32
@dghgit
Bound the PKIX certification-path builder's depth-first search with a…
b4df1c5
… configurable node limit (org.bouncycastle.x509.max_cert_path_build_nodes)
@dghgit
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
23b6712
@dghgit
Keep junit out of the legacy provider jars by excluding main-namespac…
3406b62
…e *Test classes from the bcprov copy, and relocate OwlUtilTest to its own AllTests so it builds under bctest
@dghgit
Document the jdk1.3->jdk1.4 overlay layering and the legacy provider-…
e1271da
…jar junit test-sweeping OSGi gotcha in docs/claude/build-jdk14.md
@dghgit
Drop crypto.agreement.owl.AllTests from the signed legacy Ant test st…
38f563a
…aging to avoid the OwlUtilTest bcprov signer-info clash, matching the lms/mayo/est/keybox pattern
@dghgit
Revive the jdk1.3 (build1-3) provider build: sync rotted overlays (X5…
e57eda2
…09CRLEntryObject/RFC3280/X509CertificateObject/BaseBlockCipher, new PQC KeyPairGeneratorSpi overlays with NoSuchProviderException catch, SM2Signer/Utils), the Falcon FPREngine JLS2 forward-reference fix, and drop the KEM cipher families so bcprov-jdk13 compiles clean
@dghgit
added back PQC list
924fd93
gefeili
Guard empty/missing-content and out-of-range parse paths against leak…
ff7b761
…ed NPE/AIOOBE

Consolidates the empty/missing-content parser-robustness fixes into one review unit.
Each entry point converts an unchecked runtime exception (NullPointerException,
ArrayIndexOutOfBoundsException, IllegalStateException or ArithmeticException) that
escaped on empty / content-less / truncated / out-of-range input into the checked
exception it already declares; the malformed input is rejected either way, only the
leaked exception type is corrected. Well-formed input is unaffected.

Parse entry points:
  tsp.cms.CMSTimeStampedData (+ asn1.cms.MetaData, tsp.cms.TimeStampDataUtil)
  cms.CMSEnvelopedData (EnvelopedData with no encryptedContent)
  tsp.TimeStampToken (SignerInfo carrying no signed attributes)
  tsp.TimeStampRequest, tsp.TimeStampResponse (empty/truncated stream)
  cert.cmp.GeneralPKIMessage, est.CSRAttributesResponse, cmc.SimplePKIResponse,
  openssl.X509TrustedCertificateBlock, pkcs.PKCS12PfxPdu,
  pkcs.PKCS8EncryptedPrivateKeyInfo (empty / no-content input)
  cert.crmf.CertificateRequestMessage.hasSigningKeyProofOfPossessionWithPKMAC
  crypto.util.OpenSSHPrivateKeyUtil.parsePrivateKeyBlob, math.ec.ECCurve.decodePoint

PKIX revocation reporting (attacker-controlled CRL/OCSP fields):
  pkix.jcajce.PKIXCertPathReviewer, pkix.jcajce.X509RevocationChecker
    (out-of-range CRLReason index against the fixed reason table)
  jce.provider.RFC3280CertPathUtilities (absent CRL distribution-point reasons mask)
  jce.provider.ProvOcspRevocationChecker (OCSP response with no nonce extension)

Audit findings F16, F23, F24, F26, F28, F29, F30, F32, F52 plus the
parse-empty-input-null-guards, tsp-empty-stream-parse-guard and
crl-reasoncode-crlreasons-aioobe branches.
@dghgit
Advance the jdk1.3 full build: re-introduce SecretWithEncapsulation w…
f9762d3
…ith destroy() throws DestroyFailedException resolved via the jce/src backport on the build-lw classpath, plus jdk14-parity cades excludes and jce/lcrypto test-contamination excludes
@dghgit
fixed typo in CVE number
3001351
@dghgit
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
eaeab5d
@dghgit
minor cleanup.
cfbf497
@dghgit
Add PQCCertTest exercising ML-KEM and FrodoKEM certificate generation…
606a959
… and register it in the cert test AllTests suite
@dghgit
Enable FrodoKEM as a CMS RFC 9629 KEMRecipientInfo recipient by regis…
9b2a164
…tering its encapsulation lengths, with a round-trip test covering the AES-Wrap-192/256 mappings from draft-chen-lamps-cms-frodokem
@dghgit
Add user keying material (UKM) support to the CMS RFC 9629 KEMRecipie…
1dfefa6
…ntInfo generate side, binding the ukm field into the KDF otherInfo, with round-trip and tamper tests
@dghgit
Register a Composite ML-KEM KEM Cipher so composite recipients work i…
eac0b55
…n CMS EnvelopedData, add the twelve composite encapsulation lengths, with a round-trip test over all parameter sets
@dghgit
Route InvalidKeyException throws that fold in a caught exception's me…
657daa1
…ssage through SecurityExceptions.invalidKeyException so the cause is chained (and stays Java 4 safe), across the KEM CipherSpis and the RSA/ElGamal/Falcon/Dilithium/composite paths
@dghgit
Route the RSA-KEM CipherSpi wrap-failure IllegalBlockSizeException th…
5b0e00d
…rough SecurityExceptions.illegalBlockSizeException so the cause is chained, matching the sibling KEM CipherSpis
@dghgit
Add SecurityExceptions.noSuchAlgorithmException and route cause-foldi…
8831e2b
…ng NoSuchAlgorithmException throws through it so the cause is chained (and stays Java 4 safe), across the KEM CipherSpis, X509CRL/Certificate, BCFKS and JcaPKCS10CertificationRequest
@dghgit
Add JceKEMAuthEnvelopedRecipient so KEM (RFC 9629) recipients work wi…
2dd651e
…th CMS AuthEnvelopedData AEAD content, with ML-KEM/FrodoKEM/Composite round-trip tests
@dghgit
Assert the AES-256-KW wrap OID in the Composite ML-KEM CMS test, pinn…
0d4fe40
…ing the full draft-ietf-lamps-cms-composite-kem wrap/KDF/KEM mapping
@dghgit
fixed JavaDoc
5b42463
@dghgit
Document CMS container constructors, noting byte[] input must be the …
52407d8
…complete encoding and nothing extra; add byte[]/InputStream constructors to CMSEncryptedData
@dghgit
added doc on 1.85.1
575a623
@dghgit
Fix CodeQL workflow: trigger on main not master, bump to codeql-actio…
c47e8a8
…n v3/checkout v4, use build-mode none (Gradle needs JDK 25 so autobuild cannot compile)
@xaexaex
Add CBOM generation workflow
d2e0c8b
This workflow automates the creation and upload of a Component Bill of Materials (CBOM) for Java projects.
@hubot
hubot force-pushed the main branch from d3d00d9 to 88c6a3a Compare July 29, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@xaexaex @dghgit @peterdettman @ligefeiBouncycastle
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.