pinweaver: Separate error codes in PK generation In tests it will be more convenient if the client can distinguish different reasons of failing to generate the pairing secret. Especially we want to distinguish the case where the PK can't be established because a user has logged in, and the case that the PK has been established already. Other than that, switch the sequence of checking those constraints because "whether Pk generation is blocked by user login" is a piece of information inferior to "whether Pk has already been established". These 2 changes don't affect production logic and don't introduce compatibility problems because production code doesn't act differently on different Pk generation error codes now. The main effect is that this can save many unnecessary reboots in tests (to ensure that Pk establishment isn't blocked by user login) after landing. BUG=b:294473939 TEST=build ok Change-Id: I0ef4a2f908f10dca27076c5ba46c7ec01df6fa98 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/pinweaver/+/5261342 Reviewed-by: Yi Chou <yich@google.com> Tested-by: Howard Yang <hcyang@google.com>
This directory contains reference PinWeaver code that can be used across implementation platforms.
It consists of:
pinweaver.h - PinWeaver embedded API definitionpinweaver.c - implementationpinweaver_eal.h - API for Environment Abstraction Layer (EAL) used by PinWeavereal/**/pinweaver_eal_types.hpinweaver_types.h - header that is shared by PinWeaver implementation and PinWeaver clients that call it through platform-specific interface.eal/ foldereal/cr50 - implementation for cr50pinweaver_eal_types.h - cr50-specific EAL API typespinweaver_eal.c - cr50 implementation of EALeal/tpm_storage - implementation for platforms that use TPM as PinWeaver data storagepinweaver_eal_types.h - TPM-storage-specific EAL API typespinweaver_eal_tpm.h - additional EAL functions required by TPM storagepinweaver_eal_linux.c - implementation of non-storage EAL methods for Linux casetpm_storage_stubs.c - empty implementation of storage EAL methodstpm_storage.c - implementation of storage EAL methods on top of TSSmini_trunks/ - mini-TSS (TPM client software stack) used by TPM storage implementationpinweaver_eal.h + pinweaver_eal_tpm.h EAL methodstss.h + *authorization_delegate.hA 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).