Implement verified Triple DES ECB on ARMv7 - #525
Closed
reaperhulk wants to merge 1 commit into
Closed
reaperhulk wants to merge 1 commit into
reaperhulk wants to merge 1 commit into
Conversation
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 21:50
9a242c9 to
1008de7
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 21:56
1008de7 to
517d53e
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 21:57
517d53e to
a134407
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 22:01
a134407 to
1c81a53
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 22:04
1c81a53 to
143b10d
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 22:07
143b10d to
042fd25
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 1, 2026 22:16
042fd25 to
31c0e2b
Compare
reaperhulk
force-pushed
the
codex/3des-ecb-armv7
branch
from
October 2, 2026 00:52
31c0e2b to
9383cb1
Compare
reaperhulk
added this pull request to stack #551
October 2, 2026 00:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds complete baseline ARMv7 Triple DES ECB support for the existing in-place Rust API, with 16-byte and 24-byte keys and both directions. Depends on #511; this PR contains only the ARMv7 implementation and its API/test/benchmark architecture gates.
All five entrypoints are verified against the merged shared spec: key expansion, block encryption/decryption, and ECB encryption/decryption. Assembly is generated by Lean. No Spec or TCB changes. The scalar implementation keeps the two 32-bit Feistel halves in registers, shares IP/FP across all three DES passes, and uses Boolean S-box circuits with fixed scratch locations. The public ECB counter stays in a register preserved by the verified block primitive; ECB saves its link register outside block scratch.
Reviewed OpenSSL DES and AWS-LC DES. Both use secret-indexed round/key tables. This implementation uses their three-pass composition and register halves with constant-time Boolean circuits and fixed key permutations. The shared benchmark covers both key lengths and directions alongside OpenSSL at 64, 1024 and 16384 bytes; native ARMv7 measurements come from CI.
Validation: full Lean build (5,861 jobs), emitter generation and check including standard-axiom/compiler audits; all six repository check scripts; root and benchmark formatting/clippy; ARMv7 cross-clippy; the entire Rust suite under QEMU with Wycheproof, including all 500 published NIST ECB cases in both directions, block-aligned splits, parity and invalid lengths; full native baseline-feature Rust tests. After rebasing onto current main, targeted artifact/dependency builds and the emitter check pass. The Rust API and tests are shared with #504, whose combined CI coverage passed at 100% before the rebase.