Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# Specification

* [Introduction](./specification/README.md)
* [Use Cases](./specification/use_cases/README.md)
* [Threat Model](./specification/threat_model.md)
* [Firmware Resiliency](./specification/firmware_resiliency.md)
* [Middleware](./specification/middleware/README.md)
Expand Down
4 changes: 0 additions & 4 deletions docs/src/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ openprot/

## Components

### Main Application (`openprot/`)

The main application provides...

### Build System (`xtask/`)

The xtask system provides automated build tasks including:
Expand Down
11 changes: 10 additions & 1 deletion docs/src/contributing.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
# Contributing
# Contributing to OpenPRoT

## Contributor License Agreement

- Use of OpenPRoT requires no CLA.
- Contributions to OpenPRoT must have signed the [CHIPS CLA](https://github.com/chipsalliance/Caliptra/blob/main/CONTRIBUTING.md#contributor-license-agreement).

## Code of Conduct

The code of conduct can be found [here](https://github.com/OpenPRoT/.github/blob/main/CODE_OF_CONDUCT.md).

## Development Setup

Expand Down
18 changes: 17 additions & 1 deletion docs/src/design/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
# Design
# Design

This section contains design documents that provide a detailed overview of the
design and implementation of the OpenProt project. These documents are intended
to provide guidance to developers and anyone interested in the internal workings
of the project.

## Documents

- [**Generic Digest Server Design Document**](./driver-hubris-hash.md): This
document describes the design and architecture of a generic digest server
for Hubris OS that supports both SPDM and PLDM protocol implementations.

- [**Converting Rust HAL Traits to Idol Interfaces**](./rust-trait-to-idl-conversion.md):
A practical guide that explains how to transform Rust Hardware Abstraction
Layer (HAL) traits into Idol interface definitions for use in Hubris-based
systems.
83 changes: 77 additions & 6 deletions docs/src/introduction.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,91 @@
# Introduction

Welcome to the OpenProt documentation!
Welcome to the OpenPRoT documentation!

This documentation provides comprehensive information about the OpenProt project, including user guides, developer documentation, and API references.
This documentation provides comprehensive information about the OpenPRoT
project, including user guides, developer documentation, and API references.

## What is OpenProt?
## What is OpenPRoT?

OpenProt is a Rust-based project that provides...
OpenPRoT is an open-source, Rust-based project designed to provide a secure and
reliable foundation for platform security. It offers a flexible and extensible
framework for developing firmware and security-related applications for a
variety of platforms.

At its core, OpenPRoT provides a Hardware Abstraction Layer (HAL) that enables
platform-agnostic application development. On top of this HAL, it offers a suite
of services and protocols for platform security, including device attestation,
secure firmware updates, and more. The project is designed with a strong
emphasis on modern security protocols and standards, such as:

- **SPDM (Security Protocol and Data Model):** For secure communication and
attestation.
- **MCTP (Management Component Transport Protocol):** As a transport for
management and security protocols.
- **PLDM (Platform Level Data Model):** For modeling platform components and
their interactions.

## Project Goals

The primary goals of the OpenPRoT project are to:

- **Promote Security:** Provide a robust and secure foundation for platform
firmware, leveraging modern, industry-standard security protocols.
- **Ensure Reliability:** Offer a high-quality, well-tested, and reliable
codebase for critical platform services.
- **Enable Extensibility:** Design a modular and extensible architecture that
can be easily adapted to different hardware platforms and use cases.
- **Foster Collaboration:** Build an open and collaborative community around
platform security.

## Documentation Overview

This documentation is structured to help you understand and use OpenPRoT
effectively. Here’s a guide to the different sections:

- **[Getting Started](./getting-started.md):** A hands-on guide to setting up
your development environment and building your first OpenPRoT application.
- **[Specification](./specification/):** The OpenPRoT specification.
- **[Repo Structure](./architecture.md):** A high-level overview of the
OpenPRoT repository structure, including its major components and their
interactions.
- **[Usage](./usage.md):** Detailed instructions on how to use the OpenPRoT
framework and its various services.
- **[Design](./design/):** In-depth design documents and
specifications for the various components of OpenPRoT.
- **[Contributing](./contributing.md):** Guidelines for contributing to the
OpenPRoT project.

## Repositories

- https://github.com/OpenPRoT/openprot: Main OpenPRoT repository.
- https://github.com/OpenPRoT/mctp-rs: MCTP protocol support for Linux and
embedded platforms.

## Quick Start

To get started with OpenProt:
To get started with OpenPRoT, you can build and test the project using the
following commands:

```bash
cargo xtask build
cargo xtask test
```

For more detailed instructions, see the [Getting Started](./getting-started.md) guide.
For more detailed instructions, please refer to the
[Getting Started](./getting-started.md) guide.

## Governance

The OpenPRoT Technical Charter can be found at
[here](https://github.com/OpenPRoT/.github/blob/main/GOVERNANCE.md).

## Security Policy

Please refer to the [Security Policy](https://github.com/OpenPRoT/openprot/security/policy)
for more information.

## License

Unless otherwise noted, everything in this repository is covered by the [Apache
License, Version 2.0](https://github.com/OpenPRoT/openprot/blob/main/LICENSE).
6 changes: 3 additions & 3 deletions docs/src/specification/middleware/mctp.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# MCTP

Status: Draft.

MCTP OpenPRoT devices shall support MCTP as the transport for all DMTF
protocols.

Expand All @@ -13,7 +11,9 @@ The *minimum required* MCTP version is 1.3.1 (DSP0236.) Support for MCTP 2.0.0
## Required Bindings

Currently only one binding is *mandatory* in the OpenPRoT specification, though
this will change in future versions. 1. . MCTP over SMBus (DSP0237, 1.2.0)
this will change in future versions.

1. MCTP over SMBus (DSP0237, 1.2.0)

## Recommended Bindings

Expand Down
95 changes: 49 additions & 46 deletions docs/src/specification/middleware/pldm.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,72 @@
## PLDM
# PLDM

PLDM OpenPRoT devices will support Platform Level Data Model as a responder for
FW updates and platform monitoring. This means that OpenPRoT will respond to
Type 0, Type 2 and Type 5 as listed in Table 1\.
OpenPRoT devices support the Platform Level Data Model (PLDM) as a responder for
firmware updates and platform monitoring. This entails responding to messages of
Type 0 (Base), Type 2 (Platform Monitoring and Control), and Type 5 (Firmware
Update).

## PLDM Base Specifications for Supported Types {#pldm-base-specifications-for-supported-types}
## PLDM Base Specifications

### Type 0 - Base Specification

* Purpose: Base Specification and Initialization
* Version: 1.2.0
* [Platform Level Data Model (PLDM) Base Specification](https://www.dmtf.org/sites/default/files/standards/documents/DSP0240_1.2.0.pdf)
- **Purpose**: Base Specification and Initialization
- **Version**: 1.2.0
- **Specification**:
[PLDM Base Specification](https://www.dmtf.org/sites/default/files/standards/documents/DSP0240_1.2.0.pdf)

All responders shall implement the four (4) *spec mandatory* PLDM commands:
All responders must implement the following mandatory PLDM commands:

* `GetTID`
* `GetPLDMVersion`
* `GetPLDMTypes`
* `GetPLDMCommands`
- `GetTID`
- `GetPLDMVersion`
- `GetPLDMTypes`
- `GetPLDMCommands`

All responders shall implement the following *optional* commands
All responders must also implement the following optional command:

* `SetTID`
- `SetTID`

### Type 2 - Platform Monitoring and Control

* Purpose: Platform Monitoring and Control
* Version: 1.3.0
* [Platform Level Data Model (PLDM) for Platform Monitoring and Control
Specification](https://www.dmtf.org/sites/default/files/standards/documents/DSP0248_1.3.0.pdf)
- **Purpose**: Platform Monitoring and Control
- **Version**: 1.3.0
- **Specification**:
[PLDM for Platform Monitoring and Control](https://www.dmtf.org/sites/default/files/standards/documents/DSP0248_1.3.0.pdf)

OpenPRoT will support PLDM Monitoring and Control by providing a PDR, Platform
Descriptor Record, repository to a prospective PDLM Manageability Access Point
Discovery Agent’s primary PDR. These PDRs will be defined via Json files and
included into OpenPRoT at build time. OpenPRoT will not support any dynamic
adjustments to the PDR repository. These PDRs should be limited to security
features and as such, will only support PLDM sensors and not effectors. PLDM
Monitoring PDRs
OpenPRoT supports PLDM Monitoring and Control by providing a Platform Descriptor
Record (PDR) repository to a prospective PLDM manageability access point
discovery agent. These PDRs are defined in JSON files and included in OpenPRoT
at build time, with no support for dynamic adjustments. The PDRs are limited to
security features and will only support PLDM sensors, not effectors.

* Terminus Locator PDR
* Numeric Sensor PDR
#### PLDM Monitoring PDRs

- Terminus Locator PDR
- Numeric Sensor PDR

### Type 5 - Firmware Update

* Purpose: Firmware Update
* Version: 1.3.0
* [Platform Level Data Model (PLDM) for Firmware Update Specification](https://www.dmtf.org/sites/default/files/standards/documents/DSP0267_1.3.0.pdf)
- **Purpose**: Firmware Update
- **Version**: 1.3.0
- **Specification**:
[PLDM for Firmware Update](https://www.dmtf.org/sites/default/files/standards/documents/DSP0267_1.3.0.pdf)

Required Inventory Commands:
#### Required Inventory Commands

* `QueryDeviceIdentifiers`
* `GetFirmwareParameters`
- `QueryDeviceIdentifiers`
- `GetFirmwareParameters`

Required Update Commands:
#### Required Update Commands

* `RequestFirmwareUpdate`
* `PassComponentTable`
* `UpdateComponent`
* `TransferComplete`
* `VerifyComplete`
* `ApplyComplete`
* `ActivateFirmware`
* `GetStatus`
- `RequestFirmwareUpdate`
- `PassComponentTable`
- `UpdateComponent`
- `TransferComplete`
- `VerifyComplete`
- `ApplyComplete`
- `ActivateFirmware`
- `GetStatus`

All responders shall implement the following optional commands
All responders must also implement the following optional commands:

* `GetPackageData`
* `GetPackageMetaData`
- `GetPackageData`
- `GetPackageMetaData`
Loading
Loading