Skip to content

Commit d6409a6

Browse files
jwnrtmarnovandermaas
authored andcommitted
[doc] Remove Hugo-style heading IDs
The old Hugo documentation would set IDs for Markdown headings using {#id} syntax. Mdbook will assign IDs automatically from the heading text. Signed-off-by: James Wainwright <[email protected]>
1 parent 4f73246 commit d6409a6

File tree

24 files changed

+198
-196
lines changed

24 files changed

+198
-196
lines changed

doc/contributing/hw/comportability/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ By "care" an example would be to reset their value synchronously at a time after
163163

164164
Based upon this and the fact that much of the team history was with asynchronous active low reset, we chose that methodology with added requirements that special care be applied for security state, the details of which will come at a later date.
165165

166-
### Bus Interfaces {#bus-interfaces}
166+
### Bus Interfaces
167167

168168
Peripherals can connect to the chip bus.
169169
All peripherals are assumed to have registers, and are thus required to expose at least one device interface on the chip bus.
@@ -245,7 +245,7 @@ The connection between the modules are defined in the top-level configuration fi
245245

246246
See the section on [Inter Signal Handling](#inter-signal-handling) below for detailed data structure in the configuration file.
247247

248-
### Security countermeasures {#countermeasures}
248+
### Security countermeasures
249249

250250
If this IP block is considered security-critical, it will probably have design features that try to mitigate against attacks like fault injection or side channel analysis.
251251
These features can be loosely categorised and named with identifiers of the following form:
@@ -444,7 +444,7 @@ This is done with a list with key `countermeasures`.
444444
Each item is a dictionary with keys `name` and `desc`.
445445
The `desc` field is a human-readable description of the countermeasure.
446446
The `name` field should be either of the form `ASSET.CM_TYPE` or `INSTANCE.ASSET.CM_TYPE`.
447-
Here, `ASSET` and `CM_TYPE` should be one of the values given in the tables in the [Security countermeasures](#countermeasures) section.
447+
Here, `ASSET` and `CM_TYPE` should be one of the values given in the tables in the [Security countermeasures](#security-countermeasures) section.
448448
If specified, `INSTANCE` should name a submodule of the IP block holding the asset.
449449
It can be used to disambiguate in situations such as where there are two different keys that are protected with different countermeasures.
450450

doc/contributing/style_guides/c_cpp_coding_style.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,9 @@ X macros that are not part of a header's API should be `#undef`ed after they are
262262
Similarly, the arguments to an X macro, if they are defined in a header, should be `#undef`ed too.
263263
This is not necessary in a `.c` or `.cc` file, where this cannot cause downstream namespace pollution.
264264
265-
## C++ Style Guide {#cxx-style-guide}
265+
## C++ Style Guide
266266
267-
### C++ Version {#cxx-version}
267+
### C++ Version
268268
269269
C++ code should target C++14.
270270

doc/guides/getting_started/src/build_sw.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -300,15 +300,15 @@ riscv32-unknown-elf-objdump --disassemble-all --headers --line-numbers --source
300300

301301
Refer to the output of `riscv32-unknown-elf-objdump --help` for a full list of options.
302302

303-
## Troubleshooting {#troubleshooting}
303+
## Troubleshooting
304304

305-
### Check CI {#troubleshooting-check-ci}
305+
### Check CI
306306

307307
First, [check the GitHub repository](https://github.com/lowRISC/opentitan/commits/master) to make sure the CI check is succeeding for the commit you cloned.
308308
If there's an issue with that commit (it would have a red "X" next to it), check out the most recent commit that passed CI (indicated by a green check mark).
309309
We try to always keep the main branch healthy, but the project is in active development and we're not immune to temporary breaks.
310310

311-
### Debugging a failed verilator test {#troubleshooting-verilator-test-failure}
311+
### Debugging a failed verilator test
312312

313313
If your `bazelisk.sh` build failed trying to run a test on Verilator, the first step is to see if you can build the chip simulation on its own:
314314

doc/guides/getting_started/src/setup_fpga.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ You will then need to run this command to configure the board. You only need to
148148
bazel run //sw/host/opentitantool -- --interface=cw310 fpga set-pll
149149
```
150150

151-
Check that it's working by [running the demo](#hello-world-demo) or a test, such as the `uart_smoketest` below.
151+
Check that it's working by [running the demo](#bootstrapping-the-demo-software) or a test, such as the `uart_smoketest` below.
152152
```console
153153
cd $REPO_TOP
154154
bazel test --test_output=streamed //sw/device/tests:uart_smoketest_fpga_cw310_test_rom
@@ -245,7 +245,7 @@ I00001 test_rom.c:87] TestROM:6b2ca9a1
245245
I00002 test_rom.c:118] Test ROM complete, jumping to flash!
246246
```
247247

248-
#### Bootstrapping the demo software {#hello-world-demo}
248+
#### Bootstrapping the demo software
249249

250250
The `hello_world` demo software shows off some capabilities of the OpenTitan hardware.
251251
To load `hello_world` into the FPGA on the ChipWhisperer CW310 board follow the steps shown below.

doc/rust_for_c_devs.md

+48-48
Large diffs are not rendered by default.

doc/security/specs/attestation/README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Identity is used to attest the owner and BL0 configuration, as well as an
5656
attestation key used by the Kernel. This key is endorsed by the Creator Identity,
5757
but can also be endorsed by the Silicon Owner PKI. Endorsement of the Owner
5858
Identity with the Owner's PKI, is covered in detail in the
59-
[Owner Personalization](../device_provisioning/README.md#owner_personalization) process
59+
[Owner Personalization](../device_provisioning/README.md#owner-personalization) process
6060
described in the provisioning specification.
6161

6262
When using a Silicon Owner PKI, the Owner is expected to maintain a device
@@ -366,13 +366,13 @@ source with a security strength equivalent to the one supported by the key
366366
manager. The triggering mechanism for updating the value is covered in the
367367
[Attestation Updates](#attestation-updates) section.
368368

369-
## Asymmetric Keys {#asymmetric-keys}
369+
## Asymmetric Keys
370370

371371
OpenTitan uses ECDSA attestation keys conformant to
372372
[FIPS 186-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf). Future
373373
revisions of this specification may add support for other signature schemes.
374374

375-
### Key Identifiers {#key-identifiers}
375+
### Key Identifiers
376376

377377
Key identifiers are defined as follows, where `SALT_CKI`and `SALT_OKI` are 256b
378378
values defined in `ROM_EXT` and `BL0` respectively.
@@ -629,7 +629,7 @@ OpenTitan Creator Identity custom extension:
629629
</tr>
630630
</table>
631631

632-
#### Creator custom Extension {#creator-custom-extension}
632+
#### Creator custom extension
633633

634634
This extension is formatted as an ASN.1 SEQUENCE containing device identifiable
635635
information. See [Privacy Considerations](#privacy-considerations) for
@@ -829,7 +829,7 @@ custom extensions.
829829
The binary manifest format must be standardized at the OpenTitan project level
830830
to ensure interoperability between silicon and software layers.
831831

832-
## Privacy Considerations {#privacy-considerations}
832+
## Privacy Considerations
833833

834834
The Silicon Owner software must address any privacy concerns associated with the
835835
use of device identifiable information.
@@ -870,4 +870,4 @@ DICE terminology.
870870
[diversification-key]:../identities_and_root_keys/README.md#diversification-key
871871

872872
[device-provisioning]: ../device_provisioning/README.md
873-
[owner-personalization]: ../device_provisioning/README.md#owner_personalization
873+
[owner-personalization]: ../device_provisioning/README.md#owner-personalization

doc/security/specs/device_provisioning/README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ two stages:
1515
[Creator Identity][creator_identity], its endorsement certificate, as well
1616
as additional secrets required to configure defensive mechanisms. This
1717
occurs only at manufacturing time.
18-
* [Owner Personalization](#owner_personalization): Covers provisioning of
18+
* [Owner Personalization](#owner-personalization): Covers provisioning of
1919
owner secrets and endorsement of the Owner Identity by the Silicon Owner.
2020
This may occur either at manufacturing time or as part of a later in-field
2121
ownership transfer.
@@ -48,7 +48,7 @@ requirements:
4848

4949
## Device Lifecycle and Personalization Stages
5050

51-
### Unlock Tokens {#unlock_tokens}
51+
### Unlock Tokens
5252

5353
OpenTitan provides a set of lock/unlock tokens to control the state of the
5454
device in early manufacturing stages. See
@@ -104,7 +104,7 @@ personalization.
104104
* `PERSONALIZATION`: See [Personalization](#personalization) section for more
105105
* `LOAD FW IMAGE`: Load factory image payload.
106106

107-
## Personalization {#personalization}
107+
## Personalization
108108

109109
### Test Setup
110110

@@ -185,7 +185,7 @@ flow with emphasis on the personalization process.
185185
Steps:
186186

187187
1. [Device identifiers][device_id] (`device_id`) and
188-
[unlock tokens](#unlock_tokens) are programmed into the device's One Time
188+
[unlock tokens](#unlock-tokens) are programmed into the device's One Time
189189
Programmable (OTP) memory. The unlock tokens are delivered in cleartext form
190190
to each OpenTitan die.
191191
2. (Optional) A provisioning appliance collects all device identifiers and
@@ -203,15 +203,15 @@ Steps:
203203
generates `device_secrets` (in the injection case) and endorsement
204204
certificates. `appliance_secrets` are used to enable signing on
205205
endorsement certificates with Silicon Creator intermediate CA keys.
206-
2. [Self-Generated Process](#self_generated_process): The device
206+
2. [Self-Generated Process](#self-generated-process): The device
207207
generates its own `device_secrets` and the provisioning appliance is
208208
used to sign the endorsement certificate.
209209
6. At the end of a successful provisioning flow, the provisioning appliance
210210
sends the device certificates to a device registry. Silicon Owners can use
211211
the registry as part of identity ingestion flows.
212212
7. The devices are shipped with a factory image and a Silicon Creator
213213
endorsement certificate. The Silicon Creator may also provide
214-
[Owner Personalization](#owner_personalization) services. All shipped
214+
[Owner Personalization](#owner-personalization) services. All shipped
215215
devices have secure boot enabled, which provides a logical locking mechanism
216216
to restrict the use of open samples.
217217
8. The Silicon Creator may issue a Certificate Revocation List (CRL) to the
@@ -402,7 +402,7 @@ more details.
402402
The public portion of the Creator Identity is tested against the Creator
403403
Certificate. The result is reported to the TESTER via SPI.
404404

405-
### Self-Generated Process {#self_generated_process}
405+
### Self-Generated Process
406406

407407
This section describes the personalization self-generate mode in detail. In this
408408
mode, The device generates its own device secrets and the provisioning appliance
@@ -523,7 +523,7 @@ more details.
523523
The public portion of the Creator Identity is tested against the Creator
524524
Certificate. The result is reported to the TESTER via SPI.
525525

526-
## Owner Personalization {#owner_personalization}
526+
## Owner Personalization
527527

528528
OpenTitan provides a mechanism to enable provisioning of Silicon Owner secrets
529529
and endorsement certificates in manufacturing and post-manufacturing stages.

doc/security/specs/identities_and_root_keys/README.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ the
9393
[UICC EID Specification](https://www.gsma.com/newsroom/wp-content/uploads/SGP.02-v4.0.pdf)
9494
as an example.
9595

96-
## Creator Root Key (`CreatorRootKey`) {#creator-root-key}
96+
## Creator Root Key (`CreatorRootKey`)
9797

9898
The following sequence describes the creation of the `CreatorRootKey`. All
9999
inputs into the key manager can be locked down during ROM execution.
@@ -247,7 +247,7 @@ The `CreatorIdentitySeed` and the private portion of the Creator Identity shall
247247
be cleared before the ROM Extension hands over execution to the Silicon Owner
248248
first boot stage.
249249

250-
## OwnerIntermediateKey {#owner-intermediate-key}
250+
## OwnerIntermediateKey
251251

252252
The `OwnerIntermediateKey` is used as a root component of the Silicon Owner key
253253
hierarchy. It is used to establish a cryptographic link to the root secrets
@@ -338,7 +338,7 @@ Visibility: Hidden from software.
338338
The `OwnerIdentitySeed` and the private portion of the Owner Identity shall be
339339
cleared before the bootloader (BL0) hands over execution to the kernel.
340340

341-
## Owner Root Key and Versioned Keys {#owner-root-key}
341+
## Owner Root Key and Versioned Keys
342342

343343
The key manager supports the generation of versioned keys with lineage to the
344344
`OwnerRootKey` for software consumption and sideload operations.
@@ -439,7 +439,7 @@ charge of enforcing isolation.
439439
</tr>
440440
</table>
441441

442-
### Software Binding {#software-binding}
442+
### Software Binding
443443

444444
Software binding is used to ensure that the key derivation scheme is only
445445
reproducible for a trusted software configuration. This is achieved by having
@@ -453,7 +453,7 @@ implement binding with the application layer exclusively in software.
453453

454454
Each key manager binding stage shall provide at least 128b of data.
455455

456-
### Key Versioning {#key-versioning}
456+
### Key Versioning
457457

458458
Key versioning is the mechanism by which software implements key rotation
459459
triggered by security updates. Since there may be more than one updateable code
@@ -514,15 +514,15 @@ hardening.
514514

515515
## Recommendations for Programming Model Abstraction
516516

517-
### High Level Key Manager States {#high-level-key-manager-states}
517+
### High Level Key Manager States
518518

519519
The hardware may opt to implement a software interface with higher level one-way
520520
step functions to advance the internal state of the key manager. The following
521521
are the minimum set of steps required:
522522

523-
1 [CreatorRootKey](#creator-root-key)
524-
2 [OwnerIntermediateKey](#owner-intermediate-key)
525-
3 [OwnerRootKey](#owner-root-key)
523+
1 [CreatorRootKey](#creator-root-key-creatorrootkey)
524+
2 [OwnerIntermediateKey](#ownerintermediatekey)
525+
3 [OwnerRootKey](#owner-root-key-and-versioned-keys)
526526

527527
<table>
528528
<tr>

doc/security/specs/ownership_transfer/README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ They send it back in an `UNLOCKED_OWNERSHIP` state.
5454
(This unlocking step is vital, although the Silicon Creator can endorse a new owner, they cannot unlock ownership for a device that is in a `LOCKED_OWNERSHIP` state.)
5555
The Silicon Creator can later endorse the ownership transfer payload of whoever buys the device, without further involvement from the previous owner.
5656

57-
## Owner Keys {#owner-keys}
57+
## Owner Keys
5858

5959
The following keys are provisioned as part of this flow.
6060

@@ -104,7 +104,7 @@ Boot stages:
104104
* `BL0`: Bootloader. Signed by the Silicon Owner.
105105
* `KERNEL`: Signed by the Silicon Owner.
106106

107-
## Key Provisioning {#key-provisioning}
107+
## Key Provisioning
108108

109109
As part of the Ownership Transfer flow, the Silicon Owner keys are endorsed
110110
either by the Silicon Creator or by the Current Owner of the device. This is
@@ -290,7 +290,7 @@ However, there must be at least one mechanism available to perform ownership
290290
transfer at manufacturing time using an implementation compatible with ATE[^2]
291291
infrastructure.
292292

293-
### Unlock Ownership {#unlock-ownership}
293+
### Unlock Ownership
294294

295295
This flow implements transition from `LOCKED_OWNERSHIP` to `UNLOCKED_OWNERSHIP` states. It
296296
is used by the Silicon Owner to relinquish ownership of the device and enable
@@ -374,7 +374,7 @@ before propagating the result to the Host. The Host propagates the unlock result
374374
to the Device Registry. The Device Registry may opt to remove the device from
375375
its allow-list.
376376

377-
### Ownership Transfer {#ownership-transfer-device}
377+
### Ownership Transfer
378378

379379
An ownership transfer command sent by a host to OpenTitan, is serviced by the
380380
ROM extension (`ROM_EXT`) allowing the Silicon Owner to take ownership of the
@@ -525,7 +525,7 @@ Detailed steps:
525525
shared memory region and triggers a reset to perform ownership transfer on
526526
the next boot cycle.
527527
7. The `ROM_EXT` executes the ownership transfer flow described in the
528-
[Ownership Transfer](#ownership-transfer-device) section with the following
528+
[Ownership Transfer](#ownership-transfer) section with the following
529529
differences:
530530
1. Flash erase and flash image stages are not executed.
531531
2. The activate owner stage may be delayed and executed later depending on
@@ -545,7 +545,7 @@ implemented by storing the Silicon Owner BL0 verification keys in the `ROM_EXT`.
545545
The `ROM_EXT` is thus not required to implement ownership transfer in this
546546
configuration.
547547

548-
## Flash Layout {#flash-layout}
548+
## Flash Layout
549549

550550
To simplify the implementation, the flash layout implements fixed offset and
551551
size allocations for the `ROM_EXT` and the certificate storage regions. This

doc/security/specs/secure_boot/README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The diagram below summarizes the specific steps involved in the secure boot proc
1515

1616
<img src="secure_boot_flow.svg" style="width: 800px;">
1717

18-
## ROM {#rom}
18+
## ROM
1919

2020
The first stage of secure boot is called "ROM".
2121
ROM is a region of read-only memory that cannot be updated at all after an OpenTitan device is manufactured.
@@ -40,7 +40,7 @@ On boot, the ROM code does the following:
4040
5. Check the signature from the manifest against the digest and the selected Silicon Creator public key.
4141
* Unlock flash execution, configure ePMP so that the `ROM_EXT` region is executable, and jump to the start of `ROM_EXT`.
4242

43-
## `ROM_EXT` {#rom-ext}
43+
## `ROM_EXT`
4444

4545
The `ROM_EXT` ("ROM extension") stage is another region of read-only memory that is controlled by the Silicon Creator.
4646
However, unlike the ROM, it *can* be updated after the device is manufactured, as long as the new version is signed by the Silicon Creator.
@@ -69,7 +69,7 @@ Once the code has jumped into the Silicon Owner code at BL0, secure boot in its
6969
The Silicon Owner may choose to extend the secure boot process with multiple boot stages of their own; this will differ between device owners, while the stages described here are guaranteed by the Silicon Creator and will be shared by all OpenTitan implementations.
7070
If any signature verification in the above process fails, or there is any kind of unexpected error, the device will fail to boot.
7171

72-
# Silicon Creator Keys {#silicon-creator-keys}
72+
# Silicon Creator Keys
7373

7474
The Silicon Creator has multiple public keys.
7575
This redundancy partially protects against the scenario in which one of the keys is compromised; any OpenTitan devices produced after the key is known to be compromised can mark the compromised key invalid, without requiring a full new ROM implementation.
@@ -129,7 +129,7 @@ The Silicon Owner can change during the lifetime of the device, but the Silicon
129129
* `BL0`: Bootloader. Signed by the Silicon Owner.
130130
* `Kernel`: Post-bootloader code. Signed by the Silicon Owner.
131131

132-
# Boot Policy {#boot-policy}
132+
# Boot Policy
133133

134134
In order to provide a flexible boot mechanism the Boot Info page will store a
135135
structure called the Boot Policy. The boot policy dictates the boot flow,
@@ -138,7 +138,7 @@ the ROM code to decide when to mark a `ROM_EXT` good or bad. The boot policy
138138
also contains directions to `ROM_EXT` about which slot it loads silicon owner
139139
code from. TODO(gdk): Expand on policy.
140140

141-
# Memory Layout {#memory-layout}
141+
# Memory Layout
142142

143143
<img src="flash_layout.svg" style="width: 800px;">
144144

@@ -151,7 +151,7 @@ beginning of each physical flash bank. It is expected that a Silicon Owner might
151151
arbitrarily reserve space at the end of each flash bank to use as additional
152152
storage.
153153

154-
# Boot Services {#boot-services}
154+
# Boot Services
155155

156156
Boot Services refers to the functionality stored inside of `ROM`/`ROM_EXT` that
157157
can be controlled via specific messages passed between from Silicon Owner code

hw/ip/edn/doc/programmers_guide.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void edn_init(unsigned int enable) {
1515
}
1616
```
1717
18-
## Module enable and disable {#enable-disable}
18+
## Module enable and disable
1919
2020
EDN may only be enabled if CSRNG is enabled.
2121
Once disabled, EDN may only be re-enabled after CSRNG has been disabled and re-enabled.

hw/ip/edn/doc/theory_of_operation.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ CSRNG application commands will be sent immediately.
122122
Once these commands have completed, a status bit will be set.
123123
At this point, firmware can later come and reconfigure the EDN block for a different mode of operation.
124124

125-
The recommended write sequence for the entire entropy system is one configuration write to ENTROPY_SRC, then CSRNG, and finally to EDN (also see [Module enable and disable](#enable-disable)).
125+
The recommended write sequence for the entire entropy system is one configuration write to ENTROPY_SRC, then CSRNG, and finally to EDN (also see [Module enable and disable](./programmers_guide.md#module-enable-and-disable)).
126126

127127
### Interrupts
128128

0 commit comments

Comments
 (0)