1
I Use This!
Very High Activity

Commits : Listings

Analyzed about 23 hours ago. based on code collected 2 days ago.
Nov 06, 2025 — Nov 06, 2026
Commit Message Contributor Files Modified Lines Added Lines Removed Code Location Date
Guard the composite ML-DSA engineSetParameter re-init on a key being present so a context can be set before initSign / initVerify as it can on the base engines, clear the cached AlgorithmParameters when the context changes, have the fall-through branch either accept a context-carrying spec or reject it rather than both, and record a CompositeSignatureSpec's pre-hash choice until the generic COMPOSITE service learns its algorithm, relates to github #2412. More... 2 months ago
Merge remote-tracking branch 'origin/main' More... 2 months ago
Add property to opt-out for malformed ASN.1 time content, fix CMS parser exception, relates to github #2411. More... 2 months ago
SLH-DSA: Don't recompute PK.root when signing More... 2 months ago
Add ECAlgorithms.sumOfTwoMultipliesSecret placeholders More... 2 months ago
Tweak EC point decoding exception message More... 2 months ago
Compare the SRP-6a evidence messages and the J-PAKE MacTag in constant time over fixed-width encodings rather than with BigInteger.equals, keeping each expected value in the digest's own output form so its length cannot vary with the secret, and sign-extending the J-PAKE tag, which is read signed, incorporating github PR #2406, relates to github #2406. More... 2 months ago
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java More... 2 months ago
Promote the XMSS and XMSS^MT hash-based signature implementation. More... 2 months ago
Let Kangaroo produce its output in more than one piece: switchToSqueezing() now records that it has run, so repeated doOutput() and doFinal() after doOutput() work, incorporating the doFinal() guard removal from github PR #2409, relates to github #2409. More... 2 months ago
(D)TLS: OCSP stapling followup changes More... 2 months ago
Bring the stateful hash-based signers into line with the JCA contract the newer signers already follow: LMSSignatureSpi.engineVerify() answers false for a signature it cannot decode and raises SignatureException through SecurityExceptions for one naming an OTS type other than the verifying key's rather than letting the lightweight API's unchecked exceptions out, clearing the accumulated message in a finally either way, XMSSSignature.Builder.withSignature() rejects any length other than the RFC 8391 sec. 4.1.8 fixed size so trailing data no longer gives a valid signature a second encoding the way XMSSMTSignature has always refused, and the uninitialised XMSS / XMSS^MT generateKeyPair() branches set their tree digest and default to the constructible XMSSMT-SHA2_20/2_512 parameter set, with the verify contract and the two keygen and parse pitfalls written up in the conventions, architecture and BCPQC skill docs, relates to github #2408. More... 2 months ago
Wrap the cms, cades, c509, est.jcajce, pkix.jcajce and crypto.signers.lms AllTests suites in a nested BCTestSetup and make the cades suite extend TestCase, so the Gradle AllTest* test filter no longer rejects every child of their bare TestSuite roots and silently skips the 484 tests they carry, and document the requirement in the test conventions. More... 2 months ago
Cut the core test run time: split the QR-UOV, SNOVA, MQOM, SQIsign, SLH-DSA and XMSS^MT KAT suites into finer AllTests* suites so each runs as its own parallel fork, sample the ACVP SLH-DSA-sigGen.txt vectors the way the per-parameter-set sigGen files already are, generate the XMSSPrivateKeyTest keys at height 4, compute the OpenBSDBCryptTest root hashes once per salt rather than per candidate, and exclude the nested AllTest*$* TestCase classes from the Gradle test filter so they run only through their suite() rather than twice. More... 2 months ago
Cut the prov test run time: run the prov test task's per-class forks eight wide as every other test task already does, add a write-side org.bouncycastle.bcfks.store_it_count property (Properties.BCFKS_STORE_IT_COUNT) so the BCFKS keystore's default PBKDF2-HMAC-SHA512 iteration count can be lowered the way the PKCS#12 one can, set it low in the Gradle and Ant test harnesses alongside the PKCS#12 property with a BCFKSStoreTest case covering the honoured, out-of-range and explicit-PBKDFConfig cases, and generate the XMSS and XMSS^MT test keys at small tree heights wherever the test does not depend on the height. More... 2 months ago
Stop the misc S/MIME example smoke test contacting smtp.gmail.com, where a silently dropped outbound port 25 left Transport.send() blocked without a connect timeout and hung the whole :misc:test run, delivering to an in-process loopback SMTP stub with connect / read / write timeouts instead and asserting the message arrives, relates to github #2407. More... 2 months ago
Add Merkle tree proof generation to org.bouncycastle.cert.plants.MerkleTreePrimitives alongside the existing verifiers: computeMerkleTreeHash() for the RFC 9162 Merkle Tree Hash over a range of entries, generateSubtreeInclusionProof() for the RFC 9162 PATH inclusion proof of an entry within a subtree and generateSubtreeConsistencyProof() implementing SUBTREE_PROOF from draft-ietf-plants-merkle-tree-certs section 4.4.1, each over either an in-memory list of entry hashes or the new MerkleTreeNodeSource interface through which a storage-backed log supplies the full-subtree node hashes it already keeps, with ListMerkleTreeNodeSource as the in-memory implementation, MerkleTreeCertificatesTest rewritten onto the public API with generate-then-verify round trips and a misc example of the log-side flow. More... 3 months ago
Reduce the public surface of the promoted LMS engine in org.bouncycastle.crypto.signers.lms to the shape of the ML-DSA and SLH-DSA promotions: a single LMSEngine facade carrying the tree, signing, verification, HSS key generation and child-key derivation operations the key parameter classes and generators call, LMSContext moved into the package so its one-time key and signed public key fields can be package-private types, and LMSSignature kept public only as the opaque form of the chaining signatures an HSS private key carries, with LMS and HSS folded into the facade and LM_OTS, the LM-OTS key and signature classes, HSSSignature, LMSSignedPubKey, SeedDerive, Composer, DigestUtil, LmsUtils and LMSException made package-private, the key classes taking back their range test, index increments and consumed-key replacement so those methods return to package-private, LMSSigner and HSSSigner driving the LMSContextBased API instead of the engine and an L=1 HSS key signing through the HSS key with the u32str(0) prefix stripped, the engine-internal tests moved into a crypto.signers.lms test package and the rest rewritten onto the public API. More... 3 months ago
Honour TlsPeer.getHandshakeTimeoutMillis() in the blocking TlsClientProtocol / TlsServerProtocol stream API as well as the DTLS protocols, checking the deadline at each record boundary in blockForHandshake via the same Timeout helper DTLSReliableHandshake already uses, with the (BC)JSSE provider's HandshakeTimeoutInputStream now distinguishing a handshake settled by completion or failure from one merely interrupted by the caller's own tighter per-read SO_TIMEOUT, restoring SO_TIMEOUT in both cases but only disarming the deadline in the former so a resumed handshake cannot extend the total budget, relates to github #1666. More... 3 months ago
Promote the LMS and HSS hash-based signature implementation from org.bouncycastle.pqc.crypto.lms into org.bouncycastle.crypto as ML-KEM, ML-DSA and SLH-DSA were, splitting it the same way with the key parameter classes in crypto.params, the key pair generators in crypto.generators, LMSSigner, HSSSigner, LMSContext and the LMSContextBased interfaces in crypto.signers and the engine classes in crypto.signers.lms, the signers now implementing crypto.Signer and an exhausted key raising the new crypto.ExhaustedPrivateKeyException that the pqc one extends, with the LMS half of the crypto.util key factories held in one LmsKeyUtil hook so the distributions excluding LMS replace a stub rather than fork four factories, the BC provider's LMS services and the pkix HSS/LMS operators moved onto the promoted classes, the JCE parameter specs given constructors and accessors for the new types alongside their deprecated originals, and pqc.crypto.lms deprecated for removal in the next release with its own suites kept and a new LMSPromotionCompatibilityTest asserting the two implementations agree byte for byte. More... 3 months ago
Resolve a composite key's algorithm name through the composite KEM index as well as the composite signature one, so that getAlgorithm() no longer returns null for the twelve Composite ML-KEM parameter sets and the SubjectPublicKeyInfo / PrivateKeyInfo constructors accept them, normalise an EC component to an uncompressed point wherever a composite key or the KEM combiner input is serialised as section 4 of the drafts requires, while still decoding a compressed one, default the SecureRandom the RSA-OAEP composites draw their traditional secret from and clear the ML-KEM component's secret as section 3.5 requires, and register the brainpool sets under the draft's spelling with the abbreviated names and OID constants kept as deprecated aliases, relates to github #2404. More... 3 months ago
Store an empty array for a null otherInfo in the KEMKDFSpec constructor, so that getOtherInfo() never returns null and the KMAC-128, KMAC-256 and SHAKE-256 branches of KdfUtil.makeKeyBytes no longer throw NullPointerException out of a KEM operation for a spec built through the protected constructor rather than a Builder, as the deprecated KEMParameterSpec is. More... 3 months ago
State in createBlindedExponent's javadoc what its seven bits of exponent blinding do and do not cover - that it removes the exponent bit-length and bit-pattern leak from the variable-time modPow but leaves 128 enumerable multipliers for an adversary averaging many operations under one long-term exponent, and randomises only the exponent so base-dependent leakage is untouched - mirrored into the jdk1.1 overlay, and replace the two non-ASCII em dashes left in areSecretValuesEqual's javadoc. More... 3 months ago
Correct the 1.86 ML-DSA, ML-KEM and SLH-DSA removal notes, which still described the pqc.crypto.util key-factory entries as repointed at the canonical classes and PQCOtherInfoGenerator as widened to a CipherParameters constructor, both of which later commits removed and reverted, so the notes now name the org.bouncycastle.crypto.util classes a caller of those factories should move to and scope the decode-as-before claim to the paths that still recognise the OIDs. More... 3 months ago
Move the shared javax.crypto.KEM SPI prologue off jcajce.util.SpiUtil, whose jdk25 twin cannot carry it, onto the never-overlaid KemSpiUtil, so that encapsulate and decapsulate no longer fail with NoSuchMethodError on a JDK 25 runtime, where the jdk17-only SPIs resolve against the versions/25 copy of the hook, with a src/test/jdk25 regression test because test25 is the only task that puts a JDK 25 in front of the multi-release jar and the eleven jdk17 KEM tests cannot see the mismatch, and the rule recorded in the architecture guide. More... 3 months ago
Reject the non-canonical QR-UOV and SNOVA signature encodings that verification still ignored inside the signature after the trailing-byte fix, validate the SNOVA private key length and bound its signing retry loop, clear the MAYO key material the reference clears, and record SQIsign's own encoding non-uniqueness in its javadoc, relates to github #2403. More... 3 months ago
Record the MessageSigner bare-signature contract in the bcpqc-add-signature-algorithm skill and the architecture guide, so that a new PQC signature port does not carry the reference harness's crypto_sign signed-message envelope forward as MAYO, SNOVA, QR-UOV, SQIsign and AIMer each did, with the encoding assertions a sign-then-verify round-trip test cannot catch, relates to github #2403. More... 3 months ago
Add the missing SQIsign and AIMer cases to PqcMalformedInputTest so that an empty or one-byte signature is covered for all five of the fixed-length PQC signature schemes rather than only MAYO, SNOVA and QR-UOV, and correct the CONTRIBUTORS.html entry that still described the AIMer length guard as bounding the signed-message envelope since removed, relates to github #2401. More... 3 months ago
Return the bare signature from the MAYO, SNOVA, QR-UOV, SQIsign and AIMer signers rather than the NIST crypto_sign signed-message envelope, and require verification to be given exactly the parameter set's signature length, so that a signature no longer carries a copy of the signed data into every certificate and CMS structure built on it and trailing bytes are no longer ignored, with the KAT tests rebuilding the envelope as FalconTest already does, relates to github #2403. More... 3 months ago
Add org.bouncycastle.pkcs12.store_it_count so the PBE iteration count the PKCS12 keystore writes with is settable, the write-side counterpart of the existing max_it_count that only bounds what is accepted on load, and bring the jdk1.3 and jdk1.4 keystore overlays into step with it so all three distributions share the 600,000 default rather than the 1,024 and 51,200 they had kept, take their MAC count from a file they loaded, and honour the property, with the Gradle and Ant test harnesses setting it low so the suites do not spend their time on the KDF. More... 3 months ago