Skip to content

tpm2-software/tpm2-software.github.io

Repository files navigation

This is the source for the community website of the tpm2-software namespace on
GitHub. It uses github pages (with Jekyl).

# Building (locally)

Note that github.io will automatically build this page, but you should probably
test it locally first.

## Prerequisits

Ubuntu

```console
$ sudo apt-get -y install ruby ruby-dev build-essential libz-dev
```

Fedora

```console
$ sudo dnf -y install ruby ruby-devel zlib-devel gcc g++ make redhat-rpm-config
```

Install bundler, which is used to install the dependencies specifically for
building this repo.

```console
$ gem install bundler
```

You may need to add the place gem's puts binaries to your `PATH`.

```console
$ export PATH="${HOME}/bin:${PATH}"
```

Make sure you're in the top level directory of this repo when you run the next
command.

```console
$ bundle install
```

## Build

```console
$ bundle exec jekyll serve --incremental
```

## TPM2 Software Stack Diagram

```mermaidjs
graph BT

tss[TSS: tpm2-tss]
tcti-mssim[Mssim TCTI: tpm2-tss: tcti-mssim]
tcti-device[Device TCTI: tpm2-tss: tcti-device]

simulator[TPM 2.0 Simulator]
hardware[TPM 2.0 Hardware]

uefi[UEFI]
tcti-uefi[UEFI TCTI: tpm2-tcti-uefi]

linux[Linux]
tpm0[Kernel Driver: /dev/tpm0]
tpmrm0[Kernel Resource Manager: /dev/tpmrm0]

abrmd[Userspace Resource Manager: tpm2-abrmd]
tcti-tabrmd[Userspace Resource Manager TCTI: tpm2-abrmd: tcti-tabrmd]

engine[OpenSSL Engine: tpm2-tss-engine]
totp[Device to Human attestation: tpm2-totp]
pkcs11[PKCS#11 Interface: tpm2-pkcs11]
tools[Command Line Tools: tpm2-tools]
swig[SWIG Interfaces: tpm2-swig]
pytss[TSS Python Bindings: tpm2-pytss]

subgraph Legend
legend-TPM[TPM]
legend-OS[Ring 0]
legend-RM[Resource Manager]
legend-TCTI[TCTI]
legend-Library[Library]
legend-Module[.so]
legend-EndUser[End User]
end

classDef TPM fill:#5ff,stroke:#333;
classDef OS fill:#f9f,stroke:#333;
classDef RM fill:#f85,stroke:#333;
classDef TCTI fill:#af6,stroke:#333;
classDef Library fill:#7da,stroke:#333;
classDef Module fill:#def,stroke:#333;
classDef EndUser fill:#ffa,stroke:#333;

class legend-TPM,simulator,hardware TPM;
class legend-OS,uefi,linux,tpm0 OS;
class legend-RM,tpmrm0,abrmd RM;
class legend-TCTI,tcti-uefi,tcti-mssim,tcti-device,tcti-tabrmd TCTI;
class legend-Library,tss,pytss Library;
class legend-Module,engine,pkcs11 Module;
class legend-EndUser,totp,tools EndUser;

simulator --> tcti-mssim
hardware --> uefi
hardware --> linux
linux --> tpm0
linux --> tpmrm0

uefi --> tcti-uefi
tpm0 --> tcti-device
tpmrm0 --> tcti-device

tcti-device--> abrmd
abrmd --> tcti-tabrmd

tcti-uefi --> tss
tcti-mssim --> tss
tcti-device --> tss
tcti-tabrmd --> tss

tss --> engine
tss --> totp
tss --> pkcs11
tss --> tools
tss --> swig
swig--> pytss
pytss --> pkcs11
```

Edit in Live editor: https://mermaidjs.github.io/mermaid-live-editor/

## LICENSE

All content of this repository is licensed under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/)

## CONTIBUTING

All changes should be introduced via github pull requests. This allows anyone to
comment and provide feedback in lieu of having a mailing list. For pull requests
opened by non-maintainers, any maintainer may review and merge that pull
request. For maintainers, they either must have their pull request reviewed by
another maintainer if possible, or leave the PR open for at least 24 hours, we
consider this the window for comments.

- All commits should adhere to the git commit message guidelines described here:
  https://chris.beams.io/posts/git-commit/ with the following exceptions.
- We allow commit subject lines up to 80 characters.
- All contributions must adhere to the Developers Certificate of Origin. The
  full text of the DCO is here: https://developercertificate.org/. Contributors
  must add a 'Signed-off-by' line to their commits. This indicates the
  submitters acceptance of the DCO.
- Changes must be merged with the "rebase" option on github to avoid merge
  commits. This provides for a clear linear history.