Clone this repo:
  1. fc39c8b pinweaver: Add initial BUILD.gn by Yi Chou · 6 months ago factory-14778.B factory-brya-14517.B factory-cherry-14455.B factory-firmware-ti50-guc-14778.B factory-guybrush-14600.B firmware-brya-14505.B firmware-cherry-14454.B firmware-guybrush-14500.B main release-R100-14526.B release-R101-14588.B release-R102-14695.B release-R103-14816.B release-R98-14388.B release-R99-14469.B stabilize-14385.B stabilize-14388.52.B stabilize-14388.61.B stabilize-14388.62.B stabilize-14395.B stabilize-14396.B stabilize-14411.B stabilize-14438.B stabilize-14442.B stabilize-14469.41.B stabilize-14469.58.B stabilize-14469.8.B stabilize-14469.9.B stabilize-14477.B stabilize-14496.B stabilize-14498.B stabilize-14526.57.B stabilize-14526.67.B stabilize-14526.73.B stabilize-14526.84.B stabilize-14526.89.B stabilize-14528.B stabilize-14532.B stabilize-14536.B stabilize-14588.14.B stabilize-14588.98.B stabilize-14589.B stabilize-14616.B stabilize-14633.B stabilize-14682.B stabilize-14771.B stabilize-14790.B stabilize-14803.B stabilize-14839.B stabilize-quickfix-14526.91.B stabilize-voshyr-14637.B stabilize-wristpin-14469.59.B
  2. 71a1265 pinweaver: add fuzzer by Yi Chou · 9 months ago factory-ambassador-14265.B factory-kukui-14374.B firmware-chameleon-14280.B firmware-cr50-stab-14294.B firmware-cr50-stab-mp-14300.B release-R96-14268.B release-R97-14324.B stabilize-14178.B stabilize-14179.B stabilize-14189.B stabilize-14217.B stabilize-14235.B stabilize-14238.B stabilize-14249.B stabilize-14267.B stabilize-14268.51.B stabilize-14268.52.B stabilize-14268.67.B stabilize-14285.B stabilize-14312.B stabilize-14321.B stabilize-14324.13.B stabilize-14324.41.B stabilize-14324.62.B stabilize-14324.72.B stabilize-14333.B stabilize-14336.B stabilize-14345.B stabilize-ambassador-14268.43.B stabilize-rust-14220.B stabilize-rust-14224.B stabilize-rust-14225.B
  3. 659963b tpm_storage: add fuzzer by Andrey Pronin · 9 months ago
  4. 53f80e7 tpm_storage: add unit tests by Andrey Pronin · 9 months ago stabilize-14163.B
  5. 0158fa0 pinweaver: add license by Andrey Pronin · 9 months ago factory-14162.B factory-keeby-14162.B

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
      • 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 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).