This is a small project that explores several ideas for construction of Schnorr multi-signatures for TPMs.
Required dependencies: TPM2-TSS, TPM2-PyTSS, SWTPM, and SageMath.
On Fedora, all dependencies are available from the package manager, see the setup in the CI workflow file.
Start the TPM emulator using the provided script run-swtpm.sh:
sh run-swtpm.sh
In a separate window, run the tests in playground.sage:
sage playground.sage
Warning: When a test fails, it may not clean up after itself properly. Subsequent tests are likely to raise an "out of memory for object contexts" exception. In that case, restart the emulator by terminating the scipt and launching it again.
- TPM 2.0 Library Specification (Part 1: Architecture and Part 3: Commands)
- TPM2-PyTSS API documentation
- TPM2-PyTSS tests: example usage of the API
- tss2_tpm2_types.h: helpful reference for constructing nested structures required by the API