Add DPE ML-DSA support to Caliptra 2.0#3622
Merged
mhatrevi merged 1 commit intoApr 30, 2026
Merged
Conversation
zhalvorsen
previously approved these changes
Apr 23, 2026
46643df to
2d84048
Compare
zhalvorsen
reviewed
Apr 29, 2026
6899806 to
04af3c1
Compare
zhalvorsen
approved these changes
Apr 30, 2026
Squashed backport of: - [dpe] Enable hybrid DPE feature (chipsalliance#3243) - [dpe] Add ML-DSA DPE Crypto trait (chipsalliance#3315) - [dpe] Add support for 64 DPE contexts (chipsalliance#3246) - [dpe] Add ML-DSA DPE command (chipsalliance#3326) - [dpe] Test ML-DSA CertifyKey (chipsalliance#3357) - [dpe] Test using external mu with ML-DSA profile (chipsalliance#3371) - [dpe] reduce nesting of InvokeDpeCmd::execute (chipsalliance#3386) - [dpe] Add optional ML-DSA response over DMA (chipsalliance#3391) - [dpe] Add HW model support for large DPE responses (chipsalliance#3403) - [dpe] Support both DPE profiles in more tests (chipsalliance#3407) - [dpe] Add a test for worst case scenario certs and CSRs (chipsalliance#3417) - [dpe] Fail early for response sizing (chipsalliance#3415) - [dpe] Add ML-DSA support to CertifyKeyExtended (chipsalliance#3426) - [dpe] Test ML-DSA profile with golang verification (chipsalliance#3454) - [dpe] Add comment that initialization is profile agnostic (chipsalliance#3460) DPE rev: a26db5b — last rev bumped by PRs in this list (chipsalliance#3371). caliptra-2.0 adaptations: - DpeMldsaCrypto uses MldsaReg (2.0 has dedicated ML-DSA HW register; main uses AbrReg shared Adams Bridge register for ML-DSA and ML-KEM) - SignData::Mu returns CryptoError::NotImplemented (no external-mu on 2.0) - Removed ML-KEM commands (no ML-KEM HW on 2.0) - Removed main-only commands (ocp_lock, shake256) - Flat PersistentData paths (2.0 uses single struct, not rom/fw split) - Kept 2.0 caliptra-cfi-*-git package names to avoid ROM recompilation - STACK_SIZE=136KB (main uses 154KB; 2.0 has ~30KB more PersistentData) - RUNTIME_SIZE=176KB (main uses 210KB; 2.0 has fewer runtime features) Additional fixes on top: - Fix stack overflow in initialize_dpe by using execute_serialized - Split InvokeDpe and CertifyKeyExtended into per-profile dispatch - Defer common response buffer allocation to reduce stack usage - Remove external AXI response support (unnecessary in 2.0) - Remove subsystem mailbox size limit handling (mailbox not smaller in 2.0) - Reduce MAX_HANDLES to preserve ROM layout - Derive DPE context thresholds from MAX_HANDLES - Fix tests for 32/64 context configurations
04af3c1 to
5e317d7
Compare
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.
Squashed backport of:
hybridDPE feature #3243)InvokeDpeCmd::execute#3386)CertifyKeyExtended#3426)DPE rev: a26db5b — last rev bumped by PRs in this list (#3371).
caliptra-2.0 adaptations:
main uses AbrReg shared Adams Bridge register for ML-DSA and ML-KEM)
Additional fixes on top: