blob: ba4310a039e10fef2bc8196689b5fdc496e27570 [file] [view] [edit]
# Common PinWeaver Code
This directory contains reference PinWeaver code that can be used across implementation platforms.
It consists of:
- **PinWeaver reference** code:
- `pinweaver.h` - PinWeaver embedded API definition
- `pinweaver.c` - implementation
- `pinweaver_eal.h` - API for Environment Abstraction Layer (EAL) used by PinWeaver
- note that some types used in this API are platform-specific and are defined
in `eal/**/pinweaver_eal_types.h`
- `pinweaver_types.h` - header that is shared by PinWeaver implementation and
PinWeaver clients that call it through platform-specific interface.
- **Environment Abstraction Layer (EAL)** implementations - in `eal/` folder
- `eal/cr50` - implementation for [cr50](https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab)
- `pinweaver_eal_types.h` - cr50-specific EAL API types
- `pinweaver_eal.c` - cr50 implementation of EAL
- `eal/tpm_storage` - implementation for platforms that use TPM as PinWeaver data storage
- `pinweaver_eal_types.h` - TPM-storage-specific EAL API types
- `pinweaver_eal_tpm.h` - additional EAL functions required by TPM storage
- `pinweaver_eal_linux.c` - implementation of non-storage EAL methods for Linux case
- `tpm_storage_stubs.c` - empty implementation of storage EAL methods
- `tpm_storage.c` - implementation of storage EAL methods on top of TSS
- `mini_trunks/` - **mini-TSS** (TPM client software stack) used by TPM storage implementation
- created from [trunks TSS](https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/main/trunks/) used by ChromeOS reduced to the minimal required
set of TPM commands and ported from C++ to C
- relies on `pinweaver_eal.h` + `pinweaver_eal_tpm.h` EAL methods
- TSS API is defined in `tss.h` + `*authorization_delegate.h`
A platform implementation that uses TPM storage EAL option needs to implement all EAL methods implemented
in `pinweaver_eal_linux.c` (or use it as-is, if Linux compatible).