Skip to content

Releases: chipsalliance/caliptra-sw

fw-2.1.1

Choose a tag to compare

@github-actions github-actions released this 22 Jun 18:03
Immutable release. Only release title and notes can be modified.
24b1fff

This is a combined runtime and FMC release.

Caliptra Firmware 2.1.1 Release Notes

Release notes for changes introduced since Firmware 2.1.0.

Features

  • DPE & Certification:
    • Add support for SIGN_WITH_EXPORTED_MLDSA (#3679)
    • Add a new command to chunk DPE certificates (CertifyKeyChunks) (#3765)
  • Runtime/FMC Functionality:
    • Add ACTIVATE_FIRMWARE INITIAL_ACTIVATE flag (#3720)
    • Add more telemetry to fw_info (#3631)

Fixes

  • Mailbox & Debug Unlock:
    • Fix TAP mailbox availability after debug unlock (#3848)
    • Bind debug unlock token to device UDI (#3694)
    • Fix WDT stop after production debug unlock (#3675)
    • Set PROD_DBG_UNLOCK_IN_PROGRESS bit in runtime to match ROM (#3628)
    • Require non-zeroized SEK & DPK for OCP-LOCK (#3606)
  • Firmware Activation & Auth:
    • Fix ActivateFirmware to call AuthorizeAndStash correctly (#3719)
    • Fix ACTIVATE_FIRMWARE to use exec_bit instead of fw_id for activate bitmap (#3619)
    • Bound auth manifest metadata lookup by entry_count (#3732)
    • Address-based authorize-and-stash measurement (#3688)
  • FIPS & Cryptography:
    • Fix AES-GCM streaming GHASH save/restore bug (#3790)
    • Add missing KATs in runtime start up (#3799)
    • Add ML-KEM, ML-DSA, and ECDH pairwise consistency tests (PCT) (#3548, #3547, #3546)
    • Fix runtime FIPS shutdown zeroization (#3808)
  • General:

fw-2.0.2

Choose a tag to compare

@github-actions github-actions released this 22 Jun 18:10
Immutable release. Only release title and notes can be modified.

This is a combined runtime and FMC release.

Caliptra FW 2.0.2 Release Notes

Release notes for changes introduced since FW 2.0.1.

Features

  • DPE Upgrades:
    • DPE core upgrades including support for SVN in DeriveContext, a new Crypto API, and unified environment creation (99c1d64a)
    • Support DPE ML-DSA hybrid mode (#3622)
    • Add a new command to chunk DPE certificates (CertifyKeyChunksReq) (#3765)
  • Attested CSR:
    • Add Attested CSR support for Runtime Alias key (#3406) and FMC Alias key (#3405)
    • Add GET_ATTESTED_ECC384_CSR and GET_ATTESTED_MLDSA87_CSR mailbox commands (#3339)
  • Cryptographic & Drivers:
    • Add ML-DSA pairwise consistency test (PCT) (#3547)
    • Add ECDH pairwise consistency test (PCT) (#3546)
    • Add MLDSA-87 SigVer KAT and CTR_DRBG-AES-256 KAT coverage (#3795, #3706)
    • Add hashing step to ECDSA KAT (#3821)
  • Runtime & Firmware Capabilities:
    • Add more information about how firmware was verified to fw_info (#3638)
    • Modify AuthorizeAndStash command to not skip stash by default (#3402)
  • Optimizations:
    • Skip Runtime journey PCR extension when booting the same firmware version (#3055)

Fixes

  • Security & Debug Unlock:
    • Fix some logic around production debug unlock (#3694, #3766, #3628, #3636)
    • Fix TAP mailbox availability after debug unlock (#3848)
    • Fix WDT stop after production debug unlock (#3675, #3676)
    • Re-derive dummy FMC key pairs on warm reset in debug unlocked mode as a workaround for key vault reset (143b72ec)
  • Boot & Recovery:
    • Populate Runtime recovery reason on boot failures and synchronize recovery codes (852d1e25)
    • Advertise recovery capabilities (PROT_CAP_2) and clean up recovery reason mapping (25eed8c5)
  • Robustness & Bug Fixes:
    • Bound authority manifest metadata lookup by entry_count (#3732)
    • Implement address-based authorize-and-stash measurement (#3688)
    • Fix AES-GCM streaming GHASH save/restore bug in drivers (#3790)
    • Fix mailbox packet handling to validate packet length (dlen) against mailbox SRAM size (#3414, #3571)
    • Handle mailbox FSM error state and unexpected DataReady in drivers (#3393, #3516)
    • Mark hash-based ECDSA/LMS verification as FIPS non-approved (#3803)
    • Add missing DICE EKU extension to Runtime alias certificates (#3202)
    • Use configurable OTP status offset for UDS/FE programming (#3723)
    • Fix runtime FIPS shutdown zeroization (#3908)

rom-2.0.3

Choose a tag to compare

@github-actions github-actions released this 18 Jun 18:10
Immutable release. Only release title and notes can be modified.

Caliptra ROM 2.0.3 Release Notes

Release notes for changes introduced since ROM 2.0.2 (473ae255) through c1e3ff2e on the caliptra-2.0 branch.

Features

  • Use SS_STRAP_GENERIC[2] to configure entropy_src single-bit mode during CSRNG initialization.
  • Add CTR_DRBG-AES-256 and MLDSA-87 SigVer KAT coverage.

Fixes

  • Zeroize ROM state before acknowledging SHUTDOWN.
  • Update CSRNG entropy source configuration and health-test behavior.
  • Fix production debug unlock behavior.
  • Bind production debug unlock tokens to the device UDI.
  • Move production debug unlock token public-key hash check from mailbox SRAM to stack.
  • Advertise recovery capabilities and report boot failure reasons.
  • Use configurable OTP status offset for UDS/FE programming.
  • Mark hash-based ECDSA/LMS verify as FIPS non-approved and add ECDSA KAT hashing coverage.

Full Changelog: rom-2.0.2...rom-2.0.3-1

rom-2.1.2

Choose a tag to compare

@github-actions github-actions released this 17 Jun 13:13
Immutable release. Only release title and notes can be modified.
45de392

Caliptra ROM 2.1.2 Release Notes

Release notes for changes introduced since ROM 2.1.1 through 45de392f on the main branch.

Features

  • Add Stable Owner Key derivation from HEK seed (#3625)
  • Gate fatal error reporting on recovery reset strap (#3887)

Fixes

  • Verify firmware after loading to ICCM (#3702)
  • Use SS_STRAP_GENERIC[2] to configure entropy_src single-bit mode during CSRNG initialization (#3809)
  • Disable entropy_src repcnts health test in ROM (#3836)
  • Set CSRNG entropy_src CONF.THRESHOLD_SCOPE to false (#3788)
  • Mark hash-based ECDSA/LMS verify as FIPS non-approved (#3803)
  • Disallow UDS programming when debug intent is set (#3804)
  • Reject prod debug unlock request if pk hash fuse is zeroized or uninitialized (#3602)
  • Zeroize ROM state before acknowledging SHUTDOWN (#3807)
  • Debug unlock token: move key hash check from mailbox SRAM to stack (#3766)
  • Update OCP LOCK key ladder to use DOE (#3701)
  • Use configurable OTP status offset for UDS/FE (#3723)
  • Add MLDSA-87 SigVer KAT (#3795)
  • Add CTR_DRBG-AES-256 KAT for CSRNG (#3706)
  • Add hashing step to ECDSA KAT (#3821)
  • Add MLDSA pairwise consistency test (PCT) (#3547)
  • Advertise recovery capabilities and report boot failure reasons (#3846)
  • Fix TAP mailbox availability after debug unlock (#3848)
  • Raise OTP error result on zeroization (#3858)
  • Write-lock Stable IDevID/LDevID identity root keys (#3873)

Full Changelog: rom-2.1.1...rom-2.1.2

release_v20260603_0-2.0

Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Jun 16:56
Immutable release. Only release title and notes can be modified.
88512eb
cherry-pick 2.0: test and reset fixes (#3815)

* tests: Warm reset has a race condition for subsystem FPGA (#3456)

For the subsystem FPGA, which has a real MCU, generally when Caliptra
finishes the boot flow, MCU still needs to finish two additional resets
to get to its runtime firmware.

If the HwModel issues a warm reset before MCU has completed its firmware
boot reset sequence, it can cause a conflict and MCU may not issue the
warm reset to Caliptra as expected. (Since the HwModel warm reset goes
through MCU ROM, which has to then trigger the Calitpra core warm
reset.)

This modifies the test to wait until MCU has finished booting to runtime
firmware before issuing the warm reset.

(cherry picked from commit c127cac37c2ab378093e4b10f114b8a4b30a534d)

* [fix] `ActivateFirmware` to call `AuthorizeAndStash` correctly (#3719)

This adds the `image_size` to the `AuthorizeAndStashReq` used in
`ActivateFirmware`

This also rearchitects the tests to allow modifying the staging content
more easily.

(cherry picked from commit d73320e1f68a88b2c2ad4d6d3a566265ae05825a)

* test(2.0): revert test_activate_firmware refactor from #3719

The new test_activate_firmware.rs helpers in #3719 use
write_payload_to_ss_staging_area to write directly to MCU SRAM staging,
a method that does not exist on caliptra-2.0's ModelFpgaSubsystem (it
was added by intervening PRs not on this branch).

This commit reverts the test file (and the matching api/src/mailbox.rs
scaffolding) to the caliptra-2.0 baseline while keeping the
runtime/src/activate_firmware.rs production fix from #3719
(image_size + IMAGE_AUTHORIZED check).

* hw-model: Do a full AXI reset on cold reset for subsystem (#3413)

Adapts the cold_reset() rewrite from PR #3413 to caliptra-2.0. The PR
itself does not cherry-pick cleanly because main has diverged
significantly in this area (saved init params, OCP-LOCK, recovery state
tracking, i3c controller wrappers, the BootMode-based persistent data
layout, etc.) since the 2.0 branch was cut.

This commit applies the *spirit* of #3413 with the minimum churn needed
on 2.0:

* Add a `realtime_thread_paused` flag to ModelFpgaSubsystem and have
  the TRNG thread honor it. cold_reset() asserts the flag before
  touching the AXI bus so the TRNG thread can't race the reset.
* Save the InitParams that affect FPGA wrapper registers cleared by
  AXI reset (input wires, obf key, CSR HMAC key, UDS/FE seed, debug
  intent, prod-debug-unlock settings, security state, LC override).
* New setup_hardware_registers() helper re-programs all of those
  registers and re-initializes OTP. It is called from cold_reset().
* cold_reset() itself now: waits 10ms for MCU to flush any pending
  log/exit status, pauses the TRNG thread, issues axi_reset(), calls
  setup_hardware_registers(), then unpauses the TRNG thread.

This is the fix for the long-running flakiness on caliptra-2.0 nightly
where the FPGA subsystem sometimes 'just doesn't come out of reset'
after the prior cold_reset (CptraSsRstB/CptraPwrgood toggle only),
causing tests::test_cold_reset to time out at 180s.

Adapted from commit 4d538cced5fdac2f21c0aeb3f414b80de7f34c04.

* hw-model: fix UTF-8 search panic and expose setters for cold_reset state (#3711)

Two small fixes for tests:

* output.rs: When the buffered UART output contains multi-byte UTF-8
  characters, `process_new_data` could compute `search_pos = output.len()
  - term.len()` and land inside a multi-byte codepoint. The subsequent
  `self.output[self.search_pos..]` slice would panic. Floor the index
  down to a UTF-8 character boundary before storing it. Added regression
  tests.

* model_fpga_subsystem.rs: With #3413, `cold_reset()` now does a full
  AXI reset and re-provisions OTP from `saved_lc_state` and `otp_init`.
  Add two pub setters so tests can adjust the state cold_reset will
  restore: `set_saved_lc_state` (for tests that transition LC over
  JTAG and then cold-reset) and `set_otp_init` (for tests that need
  particular OTP contents to survive a cold reset).

(cherry picked from commit 0a3da7689b28d8e2a7f3e12c93f2913ad4c34a5b)

* test(2.0): stage activate_firmware payload in MCU SRAM on FPGA

The post-DMA `AuthorizeAndStash(LoadAddress)` check added in #3719
re-verifies the MCU image at `load_address` after `ActivateFirmware`
DMAs it into MCU SRAM. The 2.0 FPGA harness was staging the payload
in the MCU mailbox SRAM and pointing the manifest's load_address
there, which had two problems:

  * It acquired the MCU mailbox SRAM lock and never released it, so
    when the MCU ROM ran its hitless-update flow after Caliptra set
    FW_EXEC_CTRL it could not finish its own mailbox command (fatal
    0001000A), eventually wedging the test.
  * `load_address` pointed at the mailbox SRAM rather than where
    Caliptra's DMA actually writes (MCU SRAM proper), so the test
    had to manually mirror the payload into both locations.

Mirror the approach upstream main takes via its
`staging_physical_address` / `write_payload_to_ss_staging_area`
helpers: put the staging area in MCU SRAM (MCI + 0xC00000) and
write the payload there directly through the MCI MMIO window
without acquiring any mailbox lock. `ActivateFirmware` then DMAs
from MCU_STAGING_ADDRESS to the base of MCU SRAM, so
`AuthorizeAndStash(LoadAddress)` naturally hashes the DMA result.

On the emulator the test SRAM and MCU SRAM remain separate
regions, so keep seeding the load offset there.

---------

Co-authored-by: Zach Halvorsen <zhalvorsen@google.com>

rt-1.2.5

Choose a tag to compare

@github-actions github-actions released this 08 May 18:46
Immutable release. Only release title and notes can be modified.
b8d1f59

Release notes for changes introduced since fw-1.2.4

Features

  • Updated FIPS CMVP Test Suite
  • Included DPE Cert fixes
  • Various instruction memory optimizations

rom-2.1.1

Choose a tag to compare

@github-actions github-actions released this 31 Mar 23:26
Immutable release. Only release title and notes can be modified.
510a23a

Caliptra ROM 2.1.1 Release Notes

Release notes for changes introduced since ROM 2.1.0.

Fixes

  • rom: Seed ABR_ENTROPY on startup for SCA protection (#3507)
  • rom: Randomize AES ENTROPY_IF_SEED on reset (#3487)
  • drivers: Add MLDSA pairwise consistency test (#3547)
  • drivers: handle mailbox FSM error state and unexpected DataReady (#3393)
  • Consolidate ABR register usage across MLDSA and MLKEM drivers (#3447)
  • Remove duplicate CFI Git library to reduce code size (#3368)
  • [drivers]: Zeroize hardware on error (#3346)
  • [OCP-LOCK]: Add more CFI to ROM flow (#3265)
  • [OCP-LOCK]: Simplified HEK Seed States (#3541)

rom-2.0.2

Choose a tag to compare

@github-actions github-actions released this 31 Mar 23:30
Immutable release. Only release title and notes can be modified.

Caliptra ROM 2.0.2 Release Notes

Release notes for changes introduced since ROM 2.0.1 (3824083e) through 473ae255 on the caliptra-2.0 branch.

Fixes

  • Randomize AES ENTROPY_IF_SEED on reset (#3487, #3495)
  • Handle mailbox FSM error state and unexpected DataReady (#3393, #3516)
  • Add MLDSA pairwise consistency test (PCT) (#3555)
  • Refactor x509 TBS to be split around public key (#3555)

release_v20260319_0-2.0

Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Mar 22:01
Immutable release. Only release title and notes can be modified.
3b9102c
rom: Seed MLDSA_ENTROPY on startup for SCA (#3508)

ROM needs to seed these registers with random values for SCA protection.

rt-1.2.4

Choose a tag to compare

@github-actions github-actions released this 12 Mar 12:55
Immutable release. Only release title and notes can be modified.
84ca1a1

Caliptra Runtime/FMC 1.2.4 Release Notes

Release notes for changes introduced since rt-1.2.3

Features

  • Added GET_PCR_LOG command
  • RT journey measurement is now reported in DPE in addition to the current
  • Changed "MBVP" measurement to "CCIV" and added several fields from FW bundle manifest
  • Removed manifest hash from RT alias CDI
  • Corrected Integrity Registers TCB Info index to 11
  • Limited POPULATE_IDEV_ID to PL0 callers
  • Fixed issue with warm resets when debug unlocked