Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
241 commits
Select commit Hold shift + click to select a range
a26e4ab
sha2: partial-bit messages, compile-time IVs, CAVP SHAVS tests (PR #88)
dghgit Sep 6, 2026
edb407c
sha2, hmac: add SHA-512/224 and SHA-512/256 (FIPS 180-4 s. 5.3.6) and…
dghgit Sep 6, 2026
0c2a6ea
Partial bytes follow ASN.1 BIT STRING order (X.690 s. 8.6.2): message…
dghgit Sep 6, 2026
3fe4cb8
aes-lowmemory: add bouncycastle-aes-lowmemory, a constant-time, table…
dghgit Sep 6, 2026
696ee0d
modes: add BlockPermutation trait, bouncycastle-modes with AES CBC, a…
dghgit Sep 6, 2026
52809e4
padding: add Padding trait and bouncycastle-padding (PKCS7, PaddedEnc…
dghgit Sep 6, 2026
ab3582f
core, modes, aes-lowmemory: in-place block cipher API with compile-ti…
dghgit Sep 6, 2026
b019892
modes: add AES CFB128 mode with AES_CFB_* aliases, aes*-cfb CLI subco…
dghgit Sep 6, 2026
02ef6bf
core: ElectronicCodeBook (was BlockPermutation), slice block hooks, b…
dghgit Sep 6, 2026
05d9439
modes: add Ecb (SP 800-38A Sec 6.1) with AES_ECB_* aliases and aes*-e…
dghgit Sep 6, 2026
e92cb0a
padding: add NoPadding (errors when asked to pad) with Padding::ALWAY…
dghgit Sep 6, 2026
f006221
skills: add commit-range-report, a Markdown report of a commit range …
dghgit Sep 6, 2026
d563718
modes: Cfb becomes a stream cipher taking any length with no padding,…
dghgit Sep 6, 2026
6edc209
modes: pin the single-call vs chunked equivalence of Cfb and Cfb8 aga…
dghgit Sep 6, 2026
3254ff7
modes: add Ctr (SP 800-38A Sec 6.5), a stream cipher whose nonce leng…
dghgit Sep 6, 2026
2700226
modes: cross-check Ctr against BC Java's SICBlockCipher, which shares…
dghgit Sep 6, 2026
f8eced9
aes-lowmemory: the AES_CBC_* and AES_ECB_* aliases take a padding sch…
dghgit Sep 6, 2026
77d61b5
core: stream ciphers also implement SymmetricCipherEncryptor / Symmet…
dghgit Sep 7, 2026
b6bcfd7
core: delete the SymmetricCipher trait and move its four one-shots on…
dghgit Sep 7, 2026
6aa1796
aes: rename bouncycastle-aes-lowmemory to bouncycastle-aes
dghgit Sep 7, 2026
ca0f781
aes: the ElectronicCodeBook trait is the only public route to the per…
dghgit Sep 7, 2026
a957707
aes: the permutation types keep the spec's capitalisation, AES / AES_…
dghgit Sep 9, 2026
38f90ff
core: ElectronicCodeBook's pair methods are encrypt_2blocks / decrypt…
dghgit Sep 9, 2026
05d7a99
aes: cipher2 / inv_cipher2 after FIPS 197's CIPHER() and INVCIPHER(),…
dghgit Sep 9, 2026
36bdbe8
core: ElectronicCodeBook's eight-block methods are encrypt_8blocks / …
dghgit Sep 9, 2026
344c317
core: ElectronicCodeBook batches four blocks, encrypt_4blocks / decry…
dghgit Sep 9, 2026
3bffe61
core: SymmetricCipherEncryptor / SymmetricCipherDecryptor are SimpleC…
dghgit Sep 9, 2026
0620116
gitignore: ignore editor swap and backup files, and drop the .fred.sw…
dghgit Sep 9, 2026
30a13cf
sha2: partial-bit messages, compile-time IVs, CAVP SHAVS tests (PR #88)
dghgit Sep 6, 2026
0c6ce5d
aes-lowmemory: add bouncycastle-aes-lowmemory, a constant-time, table…
dghgit Sep 6, 2026
7f31000
modes: add BlockPermutation trait, bouncycastle-modes with AES CBC, a…
dghgit Sep 6, 2026
bdede73
padding: add Padding trait and bouncycastle-padding (PKCS7, PaddedEnc…
dghgit Sep 6, 2026
393209f
core, modes, aes-lowmemory: in-place block cipher API with compile-ti…
dghgit Sep 6, 2026
b2a0591
modes: add AES CFB128 mode with AES_CFB_* aliases, aes*-cfb CLI subco…
dghgit Sep 6, 2026
2b3a69e
core: ElectronicCodeBook (was BlockPermutation), slice block hooks, b…
dghgit Sep 6, 2026
8d0d71b
modes: add Ecb (SP 800-38A Sec 6.1) with AES_ECB_* aliases and aes*-e…
dghgit Sep 6, 2026
b99387a
mldsa, mlkem: replace the const-generic turbofish with sealed MLDSAPa…
ounsworth Sep 7, 2026
f8ce8b7
modes: Cfb becomes a stream cipher taking any length with no padding,…
dghgit Sep 6, 2026
fd518de
modes: add Ctr (SP 800-38A Sec 6.5), a stream cipher whose nonce leng…
dghgit Sep 6, 2026
337440c
modes: cross-check Ctr against BC Java's SICBlockCipher, which shares…
dghgit Sep 6, 2026
3e1cf3a
Reverting the SKILL.md changes about producing a report since this se…
ounsworth Sep 9, 2026
03dee73
Removing summary.md files
ounsworth Sep 12, 2026
510a0c4
CLAUDE.md: add a scope-of-changes section, since an unrequested refac…
dghgit Sep 13, 2026
0bc698c
core, padding: rename the trait bouncycastle_core::traits::Padding to…
dghgit Sep 20, 2026
2462154
core, modes, aes, padding: rename SimpleCipherEncryptor / SimpleCiphe…
dghgit Sep 21, 2026
af036ce
core, padding, modes: rename SymmetricCipherError::IncorrectOutputBuf…
dghgit Sep 21, 2026
0eb2fa6
aes, core: restore the FIPS 197 Appendix B known-answer values in the…
dghgit Sep 22, 2026
1c19eca
core, modes, aes, core-test-framework: make do_encrypt_init_rng panic…
dghgit Sep 22, 2026
4d7eadd
Style / docs refactors: renamed AES, AES_128, AES_192, AES_256 to AES…
ounsworth Sep 24, 2026
a9b73f8
cli, modes, mem_usage_benches, aes: finish the AES_128 / AES_192 / AE…
ounsworth Sep 24, 2026
085c087
core, aes, modes, core-test-framework: make ElectronicCodeBook's encr…
dghgit Sep 25, 2026
ab6d391
* BIG CHANGE: refactored this from Pornin's 32-bit bitsliced impl to …
ounsworth Sep 25, 2026
f586950
Applied skills/memory-hygiene-in-rust/SKILL.md and shaved the AES imp…
ounsworth Sep 25, 2026
984ebb6
Applied skills/memory-hygiene-in-rust/SKILL.md and shaved the AES imp…
ounsworth Sep 25, 2026
1b7e49a
docs tweaks
ounsworth Sep 26, 2026
4e35073
Refactor core: removed SecurityStrength and impls from traits.rs
ounsworth Sep 26, 2026
ff8286a
Aesthetic changes to padded_block_cipher
ounsworth Sep 27, 2026
3e417db
Removed an uncessary turbofish from test code
ounsworth Sep 27, 2026
52c315c
sha3: add cSHAKE128 and cSHAKE256 (SP 800-185 Sec 3) with the Sec 2.3…
dghgit Sep 7, 2026
b328795
docs: record the cargo mutants scoping flags, the bc-test-data conven…
dghgit Sep 7, 2026
46f3ae5
sha3: pin the Hash and XOF trait views of TupleHash, ParallelHash and…
dghgit Sep 7, 2026
9a9b33a
core: Hash gains Clone as a supertrait, so a hash mid-stream can be f…
dghgit Sep 9, 2026
71790f8
core: XOF gains default hash_xof and hash_xof_out bodies so only SHAK…
dghgit Sep 10, 2026
34fae44
sha3: TupleHash and ParallelHash panicked on an output buffer shorter…
dghgit Sep 10, 2026
3d2ba35
core, core-test-framework, sha3, factory, mldsa, mlkem, cli: rename t…
dghgit Sep 14, 2026
e2636e7
core, core-test-framework, sha3: a final read of a XOF binds its outp…
dghgit Sep 14, 2026
7371847
CLAUDE.md: record the cargo mutants mechanics this repo needs, since …
dghgit Sep 14, 2026
f24468d
core, core-test-framework: AEADCipherEncryptor/AEADCipherDecryptor ga…
officialfrancismendoza Sep 9, 2026
5fc0a40
ascon, cli: add bouncycastle-ascon (SP 800-232 Ascon-AEAD128/Hash256/…
officialfrancismendoza Sep 9, 2026
8262c51
Rebased #120 onto #118. Ported ASCON XOF/CXOF to new Hash/XOF/XOFSque…
officialfrancismendoza Sep 17, 2026
ae41f6c
Remediated documentation and test concerns (#119)
officialfrancismendoza Sep 18, 2026
3d693de
core, core-test-framework, ascon, cli: carry the inline ciphertext||t…
dghgit Sep 20, 2026
a6a1c72
core, core-test-framework: close the mutation gaps a scoped run found…
dghgit Sep 20, 2026
a7eb666
core, core-test-framework, ascon, cli: make AEADCipherEncryptor/AEADC…
dghgit Sep 24, 2026
19cfabb
Initial add of AES lightweight CCM mode (#125)
officialfrancismendoza Sep 10, 2026
b6f2cc5
core, modes: document why AEADCipherEncryptor/Decryptor were not resh…
officialfrancismendoza Sep 14, 2026
1ba6dc0
cli: --nonce-file for CCM reads raw bytes only, never hex-decodes
officialfrancismendoza Sep 15, 2026
c0b5d28
modes, core: zeroize CCM's CBC-MAC state, and make BUFFER_LEN vs the …
officialfrancismendoza Sep 15, 2026
2da65cc
modes: batch CCM's CTR half, and fix docs that claimed it was impossible
officialfrancismendoza Sep 15, 2026
b7a6b9c
modes: dedupe CcmEncryptor/CcmDecryptor over a shared CcmBuffer, drop…
officialfrancismendoza Sep 15, 2026
3d72316
modes: add a Wycheproof AES-CCM suite, move/drop CCM unit tests that …
officialfrancismendoza Sep 15, 2026
92b2cd9
modes: close the mutation-testing gaps the batching and buffer-bounda…
officialfrancismendoza Sep 15, 2026
27d189d
modes: adapt CCM buffer errors to the #120 API
officialfrancismendoza Sep 21, 2026
0cc33c7
Fixed formatting with cargo fmt (#125)
officialfrancismendoza Sep 21, 2026
8664cbc
Remediated concerns. F1-F10 fixed except F9 (optional), which was lef…
officialfrancismendoza Sep 23, 2026
abc6b05
modes, aes, core-test-framework: port CcmEncryptor/CcmDecryptor to th…
dghgit Sep 24, 2026
133dbf8
Fix batched keystream left on stack (#125)
officialfrancismendoza Sep 27, 2026
4d14751
modes: CCM review fixes -- decryptor nonce floor, one error variant f…
dghgit Sep 27, 2026
f0bc5fe
cli: aes*-ccm -- warn on a nonce file ending in a newline, and explai…
dghgit Sep 27, 2026
d80d336
Initial add of AES lightengine GCM mode (#124)
officialfrancismendoza Sep 14, 2026
cfc5d57
modes, aes, cli: follow the base branch's API renames in AES-GCM (#124)
dghgit Sep 24, 2026
0c9c93b
modes, aes, cli: implement AEADCipherEncryptor/AEADCipherDecryptor fo…
dghgit Sep 24, 2026
522d829
Remove .claude/settings.json (#124)
dghgit Sep 27, 2026
b51d95b
modes: keep GCM's H, tag mask and computed tag out of unzeroized stac…
dghgit Sep 27, 2026
9d98e76
cli: --aad-file for GCM reads raw bytes only, never hex-decodes (#124)
dghgit Sep 27, 2026
56234e4
Restructuring of the cipher modes docs
ounsworth Sep 28, 2026
6f2be33
modes: Ccm's inherent one-shots take the library's _out names -- encr…
dghgit Sep 28, 2026
2b84d4a
core-test-framework: fix inverted ctx-ignoring assertion in signature.rs
dghgit Sep 14, 2026
6703a5f
utils: add limb-array conditional_select/conditional_swap to ct
dghgit Sep 14, 2026
0f86886
ec: Nat<L> limb layer and the P-256 base field
dghgit Sep 14, 2026
3969f89
ec: branch-free Jacobian point arithmetic for P-256
dghgit Sep 14, 2026
24d6984
ec: P-256 scalar field (Montgomery arithmetic) and Scalar/PublicScalar
dghgit Sep 14, 2026
5674dc3
ec: fixed-base comb multiplier for [k]G
dghgit Sep 14, 2026
6239eb9
ec: interleaved wNAF Shamir's-trick multiplier for verification
dghgit Sep 14, 2026
84d24d0
ec: SEC 1 point encoding/decoding and domain parameters for P-256
dghgit Sep 14, 2026
bb7eee6
ec: SEC 1 octets and Montgomery-domain arithmetic for secret P-256 sc…
dghgit Sep 14, 2026
b01e9b8
ecdsa: key generation, deterministic/randomised signing, and verifica…
dghgit Sep 14, 2026
4d83a24
ec: field, point, scalar, comb/wNAF multipliers, and SEC 1 for P-384
dghgit Sep 14, 2026
89f71df
ec: field, point, scalar, comb/wNAF multipliers, and SEC 1 for P-521
dghgit Sep 15, 2026
fdfa105
ecdsa: key generation, deterministic/randomised signing, verification,
dghgit Sep 15, 2026
b059cc9
ecdsa: key generation, deterministic/randomised signing, verification,
dghgit Sep 15, 2026
a66c2e6
ec: field, point, scalar, comb/wNAF multipliers, and SEC 1 for secp256k1
dghgit Sep 15, 2026
402d940
ecdsa: key generation, deterministic/randomised signing, verification…
dghgit Sep 15, 2026
d7a213b
ec: generic Montgomery field/scalar arithmetic, point/comb/wNAF multi…
dghgit Sep 15, 2026
aee372c
ecdsa: key generation, deterministic/randomised signing, verification…
dghgit Sep 15, 2026
41f478a
ec: field, scalar, point, comb/wNAF multipliers, and SEC 1 for brainp…
dghgit Sep 16, 2026
189a6af
ecdsa: key generation, deterministic/randomised signing, verification…
dghgit Sep 16, 2026
fc9f8b0
ec: field, scalar, point, comb/wNAF multipliers, and SEC 1 for brainp…
dghgit Sep 16, 2026
5f4f9e8
ecdsa: key generation, deterministic/randomised signing, verification…
dghgit Sep 16, 2026
ba5c5bb
ec: field, scalar, point, comb/wNAF multipliers, and SEC 1 for SM2
dghgit Sep 16, 2026
61fc62f
sm2: SM2 Digital Signature Algorithm (draft-shen-sm2-ecdsa-02 S5)
dghgit Sep 16, 2026
fa897ca
ecdsa: NIST CAVP legacy vectors for P-256, P-384 and P-521
dghgit Sep 16, 2026
406684b
ecdsa: derive_pk() for CLI PkFromSk/CheckConsistency parity
dghgit Sep 16, 2026
f1329ea
sm2: derive_pk() for CLI PkFromSk/CheckConsistency parity
dghgit Sep 16, 2026
421763b
cli: wire up every ECDSA curve and SM2
dghgit Sep 16, 2026
5a4821a
ec: criterion benches for P-384, P-521, secp256k1, brainpool, and SM2
dghgit Sep 17, 2026
5701378
ecdsa: criterion benches for keygen, sign, and verify per curve
dghgit Sep 17, 2026
b7340b6
sm2: criterion bench for keygen, sign, and verify
dghgit Sep 17, 2026
f2d00a0
mem_usage_benches: stack-usage harness for ECDSA and SM2
dghgit Sep 17, 2026
f509ab5
ecdsa: Memory Footprint table in crate docs
dghgit Sep 17, 2026
7e4f6c7
sm2: Memory Footprint table in crate docs
dghgit Sep 17, 2026
ef9e466
ec: single-pass field reduction, cheaper invert and scalar REDC
dghgit Sep 17, 2026
65c4820
ec: flat accumulators in the generic Montgomery module
dghgit Sep 17, 2026
5149b4b
ec: variable-time point addition for the wNAF multiplier
dghgit Sep 17, 2026
56ff34b
ec: benchmarks for the scalar field and the scalar multipliers
dghgit Sep 17, 2026
c70e583
ecdsa: reject malformed keys and signatures, scrub secret state
dghgit Sep 17, 2026
6879688
sm2: branch-free x1, cached public key, and an external test vector
dghgit Sep 17, 2026
2c3419f
ec: dedicated squaring for the field and scalar arithmetic
dghgit Sep 17, 2026
31289d4
ec, ecdsa, sm2: usage examples, and stop citing an unreadable file
dghgit Sep 17, 2026
5594c05
ec: note the disjoint-OR equivalent mutant in widening_square
dghgit Sep 17, 2026
5eb8715
ec, ecdsa, sm2: scrub the secret scalars the signing path leaves behind
dghgit Sep 18, 2026
cd2115f
ec: pin the edge cases every curve's tests skipped, and fix stale docs
dghgit Sep 18, 2026
fa5f54c
ecdsa: pin the behaviours only P-256's tests covered; cite FIPS 186-5…
dghgit Sep 18, 2026
0a0902d
sm2: test step B4's t = 0 rejection and the ENTLA limit; fix the extr…
dghgit Sep 18, 2026
4e8c56b
ecdsa: check signing output against NIST SigGen, and fail rather than…
dghgit Sep 18, 2026
32edec9
ecdsa: draw N + 64 bits for the randomised k on P-384, secp256k1 and …
dghgit Sep 18, 2026
a56c51f
sm2: note why P-384, P-521 and secp256k1 draw extra bits after all
dghgit Sep 18, 2026
4856eb7
ecdsa: decide wycheproof verdicts explicitly, and fail on "acceptable"
dghgit Sep 18, 2026
50cdbc0
ec: select between points without re-reducing or re-converting their …
dghgit Sep 18, 2026
62de7a7
sm2: cache (1 + dA)^-1 on the private key
dghgit Sep 18, 2026
c6f7b7c
ec: variable-time inversion for public scalars
dghgit Sep 18, 2026
6e69f23
ecdsa: invert the public s in variable time during verification
dghgit Sep 18, 2026
18f7900
ec: constant-time Barrett reduction for wide values
dghgit Sep 18, 2026
4d88332
ecdsa: reduce the DRBG output with Barrett rather than one bit at a time
dghgit Sep 18, 2026
1bcdd36
sm2: reduce the DRBG output with Barrett rather than one bit at a time
dghgit Sep 18, 2026
cae8f77
ec: fixed 4-bit-window exponentiation for the constant-time inversions
dghgit Sep 18, 2026
67d59b5
ec: mixed addition for the comb's table entries
dghgit Sep 18, 2026
5ed521f
ec: evaluate SM2's reduction table by columns
dghgit Sep 18, 2026
d13fb03
ec: precomputed affine table for the fixed side of Shamir's trick
dghgit Sep 18, 2026
e5afe17
ec: consolidate the bc-java attribution and drop dead plan citations
dghgit Sep 18, 2026
d3a1517
ecdsa: drop dead plan citations from doc comments
dghgit Sep 18, 2026
2424737
ci: check out bc-test-data and wycheproof alongside the repo
dghgit Sep 19, 2026
4d04ab9
Revert "ci: check out bc-test-data and wycheproof alongside the repo"
dghgit Sep 19, 2026
49117a5
Reapply "ci: check out bc-test-data and wycheproof alongside the repo"
dghgit Sep 19, 2026
e98a20b
Revert "ci: check out bc-test-data and wycheproof alongside the repo"
dghgit Sep 19, 2026
9f2144b
ci: check out bc-test-data and wycheproof into the workspace, symlink…
dghgit Sep 19, 2026
e6b197d
ecdsa, sm2: reject an RNG below the curve's required security strengt…
dghgit Sep 21, 2026
ed7947c
Renaming the acvp_gcm helper file to indicate that it's a helper.
ounsworth Sep 28, 2026
10e5f16
Adding tests for ccm mode, specifically one that demonstrates that th…
ounsworth Sep 28, 2026
87328cc
Adding tests for ccm mode, specifically one that demonstrates that th…
ounsworth Sep 28, 2026
2c9d998
Renamed SymmetricCipher from do_update to do_encrypt / do_decrypt.
ounsworth Sep 28, 2026
86da021
core, core-test-framework, modes, aes, cli, mem_usage_benches: Stream…
dghgit Sep 28, 2026
5330462
cli: aes{128,192,256}-ccm take --aad-file, raw bytes and never hex-de…
dghgit Sep 28, 2026
3f12cea
modes: remove test_large_payload_symmetric_cipher, which still fails …
dghgit Sep 29, 2026
a41afcd
Did a pass over CFB and CFB8 docs.
ounsworth Sep 29, 2026
6b8a37e
Tweaked docs for gcm
ounsworth Sep 29, 2026
0820bce
Refactored the cli helpers into a helpers/ submod
ounsworth Sep 30, 2026
5090bea
ec: p256_comb docs say why the comb carries no offset (complete add, …
dghgit Oct 2, 2026
b853cc4
Removed the AES dependency from the core (non-vector-based) modes tes…
ounsworth Sep 30, 2026
13cdb53
Fable de-duplicated the AES vector tests
ounsworth Sep 30, 2026
a475ae9
Refactored to move all AES tests out of the modes crate into the aes …
ounsworth Sep 30, 2026
dd0b953
Split the AEAD and block-cipher runners out of core-test-framework's …
ounsworth Sep 30, 2026
fcbccd9
Tweaked docs for AES_CBC
ounsworth Sep 30, 2026
3e164d7
ascon: seal the direction projection and trim the public API
dghgit Sep 30, 2026
6f38aae
Merge PR #131 (utils ct: volatile optimisation barrier for Condition …
ounsworth Sep 30, 2026
2136ac2
Converted cli/tests to be bash tests. Written entirely by claude/fabl…
ounsworth Oct 1, 2026
43f681f
aes docs tweaks
ounsworth Oct 1, 2026
87c4291
hazmat: a path-based notice for the raw primitives (#156)
dghgit Oct 1, 2026
b1bbcb5
aes: project the padded aliases through core's sealed Direction::Select
dghgit Oct 1, 2026
a19288f
BIG REFACTOR: folded crates bouncycastle-modes and bouncycastle-paddi…
ounsworth Oct 1, 2026
91d4998
cipher: move StreamCipher and the direction markers out of core
ounsworth Oct 1, 2026
9a63735
Adding wycheproof test harnesses for AES_CBC and AES_GCM
ounsworth Oct 2, 2026
4a546d4
Implemented SuspendableKeyed for AES
ounsworth Oct 2, 2026
fca3b41
cipher, aes, core: CCM's trait adapters stream a fixed-length frame i…
ounsworth Oct 2, 2026
5483607
Consistency pass over all the traits.rs to make sure than fn prefixes…
ounsworth Oct 5, 2026
8a2f119
cli: rename the ascon-aead128 subcommand to ascon-aead-128, following…
dghgit Oct 5, 2026
ba33057
ascon, cli: name the type Ascon_AEAD128 and the subcommand ascon-aead…
dghgit Oct 5, 2026
fe232b0
ec: make REDC carry propagation a counted loop, removing a secret-dep…
laruizlo Oct 6, 2026
1ab8073
Refactor / cleanup of cshake code
ounsworth Oct 6, 2026
3ba1cac
Refactored all bc-test-data (ACVP) and Wycheproof tests to use a cons…
ounsworth Oct 6, 2026
a64a611
- Added dedicated Wycheproof test harnesses for ascon, cshake, gmac, …
ounsworth Oct 6, 2026
b1d89ed
Further consolidated test code so that all json test vectors (bc-test…
ounsworth Oct 6, 2026
5da0fbe
Changed mode types to be unique by implementing a ModeNames trait. Th…
officialfrancismendoza Oct 8, 2026
eaae0bf
Added an opt-in option for SymmetricCipherKey to bind to a specific a…
officialfrancismendoza Oct 9, 2026
6d72423
CCM one-shots and a supplied-nonce path on the AEAD traits
dghgit Oct 10, 2026
b985811
Rename the streaming finals do_{en,de}crypt_final_detachedtag[_out] t…
dghgit Oct 10, 2026
dad97c6
Claude Opus 5.5 refactors of aes tests
ounsworth Oct 21, 2026
97a4397
Claude Opus 5.5 added suspended state tests for all AES key sizes.
ounsworth Oct 21, 2026
8cbc2ab
Deleted cipher::padding standalone benches
ounsworth Oct 21, 2026
cdef374
core, cipher, ascon: revert the KeyMaterial algorithm binding (0de70ae)
officialfrancismendoza Oct 22, 2026
8e9f38a
Moved ghash out of ghash.rs and into a private module within gcm.rs, …
ounsworth Oct 22, 2026
f44d9d3
ecdsa: split each curve's signer into ECDSA* (random k) and ECDetDSA*…
dghbc Oct 30, 2026
176a7dc
ecdsa: rfc6979 builds its HMAC from an HmacKey, the MAC rework's key-…
dghbc Oct 30, 2026
360fee7
ec: pin secp256k1's third reduction fold, and put its bound proof whe…
laruizlo Oct 14, 2026
b303737
ecdsa: say the brainpool rfc6979 rejection loop is a normal path, and…
laruizlo Oct 24, 2026
30ab8b8
ecdsa, ec: name the rfc6979 loop in the crate's timing contract, and …
laruizlo Oct 25, 2026
19071e5
utils: Condition::to_bool_opaque, a bool conversion that passes the o…
laruizlo Oct 25, 2026
9049c08
ecdsa: compare the rfc6979 candidate against [1, n-1] under a mask, o…
laruizlo Oct 25, 2026
e2519e8
ecdsa: one home for the rfc6979 rejection-loop argument, and a rate f…
laruizlo Oct 25, 2026
f88abaa
sm2: generate and accept the private key in [1, n-2], per GB/T 32918.…
laruizlo Oct 25, 2026
8fdb5ba
ec: pin sm2 REDC's final subtraction with a known answer
laruizlo Oct 25, 2026
6d52166
sm2, ec: cite GB/T 32918 and the draft's real sections, and describe …
laruizlo Oct 25, 2026
53c9599
sm2: name the step A5 and A6 retry branches in the crate's timing con…
laruizlo Oct 25, 2026
ed470b1
utils, ecdsa: Condition::to_bool passes the optimisation barrier, and…
laruizlo Oct 27, 2026
2ce695b
ec: drop the dead carry select in secp256k1's third reduction fold
laruizlo Nov 1, 2026
c062299
ecdsa: fix the RFC 6979 attribution and give the brainpool rejection …
laruizlo Nov 1, 2026
8dab57e
ec, sm2: correct two SM2 doc strings: the dA range in an expect, and …
laruizlo Nov 1, 2026
da9d1e1
ec, ecdsa: Security Considerations headings per QUALITY_AND_STYLE
laruizlo Nov 1, 2026
a30e894
ecdsa: FIPS 186-5 §6.4.1 step 11 -- a random k that gives r = 0 or s …
dghgit Nov 2, 2026
8d4223d
sm2: steps A5 and A6 go back to step A3 inside the signer; probabilit…
dghgit Nov 2, 2026
6546f40
ec: drop Sm2PublicScalar::invert_vartime, which nothing calls
dghgit Nov 2, 2026
b3902e6
ecdsa: brainpool rejection rates stated once per curve; secp256k1's r…
dghgit Nov 2, 2026
d7d4fb6
ecdsa: one limbs_in_range for every curve's RFC 6979 step h.3 range c…
dghgit Nov 2, 2026
1043904
ecdsa: P-256's modules take the per-curve names
dghgit Nov 2, 2026
52c790e
ecdsa, sm2, cli: keygen takes the caller's RNG
dghgit Nov 3, 2026
d8d2146
ecdsa: the merge-time adaptations to feature/key-rework-memory, carri…
dghgit Nov 3, 2026
5cb8a1d
ecdsa: the merge-time adaptations to feature/key-rework-memory, carri…
dghgit Nov 3, 2026
00872b5
INTRODUCTION: the roadmap no longer disowns RSA, ECDSA and ECDH
dghgit Nov 3, 2026
308aecf
ec, ecdsa: the extra-random-bits reduction moves into ec
dghgit Nov 3, 2026
a993f01
ec: constant-time variable-base scalar multiplication for the seven c…
dghgit Nov 3, 2026
1c69848
ecdsa: the merge-time adaptations to release/0.1.3alpha, carried over…
dghgit Nov 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/rust-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,23 @@ jobs:
- name: Check out repository
uses: actions/checkout@v4

- name: Check out bc-test-data
uses: actions/checkout@v4
with:
repository: bcgit/bc-test-data
path: .ci-data/bc-test-data

- name: Check out wycheproof
uses: actions/checkout@v4
with:
repository: C2SP/wycheproof
path: .ci-data/wycheproof

- name: Symlink test data alongside the checkout
run: |
ln -s "$GITHUB_WORKSPACE/.ci-data/bc-test-data" ../bc-test-data
ln -s "$GITHUB_WORKSPACE/.ci-data/wycheproof" ../wycheproof

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

Expand Down
5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ bouncycastle-chacha20-poly1305-aead = { path = "./crypto/chacha20-poly1305-aead"
bouncycastle-cipher = { path = "./crypto/cipher" }
bouncycastle-core = { path = "crypto/core" }
bouncycastle-core-test-framework = { path = "./crypto/core-test-framework" }
bouncycastle-ec = { path = "./crypto/ec" }
bouncycastle-ecdsa = { path = "./crypto/ecdsa" }
bouncycastle-factory = { path = "./crypto/factory" }
bouncycastle-hex = { path = "./crypto/hex" }
bouncycastle-hkdf = { path = "./crypto/hkdf" }
Expand All @@ -33,6 +35,7 @@ bouncycastle-poly1305 = { path = "./crypto/poly1305" }
bouncycastle-rng = { path = "./crypto/rng" }
bouncycastle-sha2 = { path = "./crypto/sha2" }
bouncycastle-sha3 = { path = "./crypto/sha3" }
bouncycastle-sm2 = { path = "./crypto/sm2" }
bouncycastle-sm3 = { path = "./crypto/sm3" }
bouncycastle-utils = { path = "./crypto/utils" }

Expand Down Expand Up @@ -68,6 +71,7 @@ bouncycastle-chacha20.workspace = true
bouncycastle-chacha20-poly1305-aead.workspace = true
bouncycastle-cipher.workspace = true
bouncycastle-core.workspace = true
bouncycastle-ecdsa.workspace = true
bouncycastle-factory.workspace = true
bouncycastle-hex.workspace = true
bouncycastle-hkdf.workspace = true
Expand All @@ -80,4 +84,5 @@ bouncycastle-poly1305.workspace = true
bouncycastle-rng.workspace = true
bouncycastle-sha2.workspace = true
bouncycastle-sha3.workspace = true
bouncycastle-sm2.workspace = true
bouncycastle-sm3.workspace = true
8 changes: 5 additions & 3 deletions INTRODUCTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,10 +257,12 @@ the `core-interface` sub-crate.
Next up will be to round out the set of cryptographic primitives:

* Block ciphers (AES)
* Signatures (Ed25519, Ed448, ML-DSA, SLH-DSA)
* Key Establishment (X25519, X448, ML-KEM)
* Signatures (Ed25519, Ed448, ML-DSA, SLH-DSA, ECDSA, RSA)
* Key Establishment (X25519, X448, ML-KEM, ECDH)

(yes, you have noticed that RSA, ECDSA and ECDH are not on the list. I suppose we could, but we'd really rather not.)
(an earlier draft of this list left out RSA, ECDSA and ECDH on purpose; there has been a change of heart, and they
are being implemented on the same terms as everything else: fixed-width constant-time arithmetic, no runtime-described
parameters.)

After that, we'll tackle in some kind of order (depending on public interest and funding):

Expand Down
Loading
Loading