| @@ -1,5 +1,5 @@ |
| 1 | 1 | <div style="font-size: 0.85em; color: #656d76; margin-bottom: 1em; padding: 0.5em; background: #f6f8fa; border-radius: 4px;"> |
| 2 | | -📄 Source: <a href="https://github.com/chipsalliance/caliptra-sw/blob/8f13b41132ddd85c3c2fa2c8ce5a766758b20fd8/auth-manifest/README.md" target="_blank">chipsalliance/caliptra-sw/auth-manifest/README.md</a> @ <code>8f13b41</code> |
| 2 | +📄 Source: <a href="https://github.com/chipsalliance/caliptra-sw/blob/6980f7d09b351299e61d7242ac7a8c3c4e8cb695/auth-manifest/README.md" target="_blank">chipsalliance/caliptra-sw/auth-manifest/README.md</a> @ <code>6980f7d</code> |
| 3 | 3 | </div> |
| 4 | 4 | |
| 5 | 5 | ## SOC Manifest |
| @@ -13,7 +13,7 @@ |
| 13 | 13 | Those signatures are also stored in the Preamble. |
| 14 | 14 | The Caliptra firmware's ECC and PQC private keys endorse the manifest's public keys, and these endorsements (signatures) are part of the Preamble as well. |
| 15 | 15 | |
| 16 | | - *Note: All fields are little endian unless specified* |
| 16 | + *Note: Do not treat the entire manifest as little endian. Scalar `u32` fields use little-endian layout. ECC key and signature fields are stored as big-endian `u32` words. Raw byte-array fields, such as image hashes, use the exact byte sequence produced by standard tools like OpenSSL unless a field description explicitly says otherwise.* |
| 17 | 17 | |
| 18 | 18 | | Field | Size (bytes) | Description | |
| 19 | 19 | | ---------------------------------- | ------------ | ----------- | |
| @@ -39,18 +39,22 @@ |
| 39 | 39 | ### **Image Metadata Collection** |
| 40 | 40 | |
| 41 | 41 | The Image Metadata Collection (IMC) is a collection of Image Metadata Entries (IMEs). |
| 42 | | -Each IME has a hash that matches a SOC image. |
| 42 | +Each IME has a digest that matches a SOC image. |
| 43 | 43 | The manifest vendor and owner private keys sign the IMC. |
| 44 | 44 | The Preamble holds the IMC signatures. |
| 45 | 45 | The manifest IMC vendor signatures are optional and are validated only if the **Flags Bit 0 = 1**. |
| 46 | | -Up to 80 image hashes are supported. |
| 46 | +Up to 127 image metadata entries are supported. |
| 47 | 47 | |
| 48 | 48 | | Field | Size (bytes) | Description | |
| 49 | 49 | | -------------------------------- | ------------ | --------------------------------------- | |
| 50 | 50 | | **Image Metadata Entry (IME) Count** | 4 | Number of IME(s) in the IMC. | |
| 51 | | -| **Image Metadata Entry (N)** | Variable | List of Image Metadata Entry structures | |
| 51 | +| **Image Metadata Entry (N)** | Variable | List of 80-byte Image Metadata Entry structures | |
| 52 | 52 | |
| 53 | 53 | #### **Image Metadata Entry** |
| 54 | + |
| 55 | +The serialized IME layout follows `AuthManifestImageMetadata` in |
| 56 | +`auth-manifest/types/src/lib.rs`. Multi-word addresses are encoded as the low |
| 57 | +32-bit word followed by the high 32-bit word. |
| 54 | 58 | |
| 55 | 59 | | Field | Size (bytes) | Description | |
| 56 | 60 | | ----------------------- | ------------ | ----------- | |
| @@ -68,7 +72,7 @@ |
| 68 | 72 | ## Owner Authorization Manifest |
| 69 | 73 | |
| 70 | 74 | The Owner Authorization Manifest is a smaller, owner-only manifest loaded with |
| 71 | | -[`SET_OWNER_AUTH_MANIFEST`](../runtime/README.md#set_owner-auth-manifest). It |
| 75 | +[`SET_OWNER_AUTH_MANIFEST`](../runtime/README.md#set_owner_auth_manifest). It |
| 72 | 76 | carries owner public keys, owner signatures, and an owner-only Image Metadata |
| 73 | 77 | Collection. Runtime stores these entries separately from the vendor + owner |
| 74 | 78 | collection loaded by `SET_AUTH_MANIFEST` and searches the owner-only collection |