mirror of
https://github.com/stefanberger/libtpms
synced 2026-01-11 16:51:29 +00:00
Make sure that the NVRAM offsets and structure sizes are the same on all architectures so that we can fill up the NVRAM on one system and migrate the state to another architecture and it will fit into the NVRAM space there. We leave some space for the first few data structures in the NVRAM to grow. We do this by rounding up the NV_INDEX_RAM_DATA location to the next kb boundary. This moves it from offset 4356 to 5120 on x86_64 and from offset 4332 to 5120 on i386. This now leaves us with the same amount of space for user dynamic NVRAM, which starts beyond offset 5120. We also pad the OBJECT structure with 4 bytes so that it is the same size on 32 and 64 bit architectures. This is a data structure that is used in user dynamic NVRAM and should be the same size on all architectures so that a full NVRAM always fits. Also test the size of the NV_INDEX structure, which already has the same size on all tested architectures (x86_64, i386, arm32, ppc64). Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> |
||
|---|---|---|
| debian | ||
| dist | ||
| include | ||
| man | ||
| src | ||
| tests | ||
| .gitignore | ||
| .travis.yml | ||
| autogen.sh | ||
| bootstrap.sh | ||
| CHANGES | ||
| configure.ac | ||
| CREDITS | ||
| DCO1.1.txt | ||
| INSTALL | ||
| libtpms.pc.in | ||
| LICENSE | ||
| Makefile.am | ||
| README | ||
What is libtpms? ---------------- Libtpms is a library that targets the integration of TPM functionality into hypervisors, primarily into Qemu. Libtpms provides a very narrow public API for this purpose so that integration is possible. Only the minimum of necessary APIs are made publicly available. It is assumed that the user of libtpms is familiar with the concepts of the Trusted Platform Module (TPM). For the interaction with libtpms it is necessary to know how to construct valid TPM commands and to be able to parse their results. It is not within the scope of libtpms's documentation to provide background on this. See the section on references below. What files does the libtpms package provide? -------------------------------------------- The main libtpms package provides the following files: /usr/lib64/libtpms.so.0 /usr/lib64/libtpms.so.0.5.1 /usr/share/doc/libtpms-0.5.1 /usr/share/doc/libtpms-0.5.1/CHANGES /usr/share/doc/libtpms-0.5.1/LICENSE /usr/share/doc/libtpms-0.5.1/README Applications can link with -ltpms. What files does the libtpms development package provide? -------------------------------------------------------- The libtpms development package (libtpms-devel) provides the following include files for applications to use: tpm_error.h tpm_library.h tpm_memory.h tpm_nvfilename.h tpm_tis.h tpm_types.h These files contain the data structures, data types and API calls supported by libtpms. It is recommended to not use any other API calls than those provided in these include files. All APIs are described in man pages. The man pages are part of the libtpms development package as well: TPMLIB_DecodeBlob TPMLIB_GetTPMProperty TPMLIB_GetVersion TPMLIB_MainInit TPMLIB_Process TPMLIB_RegisterCallbacks TPMLIB_Terminate TPMLIB_VolatileAll_Store TPM_Free TPM_IO_Hash_Data TPM_IO_Hash_End TPM_IO_Hash_Start TPM_IO_TpmEstablished_Get TPM_Malloc TPM_Realloc How to contribute? ------------------ The mailing list for libtpms is libtpms@googlegroups.com. For patch submissions, please use a Signed-off-by: <your email> to indicate agreement to the DCO1.1.txt. Fuzzing ------- Initial fuzzing is possible with clang & libfuzzer. You have to configure the project with --enable-fuzzer (--enable-sanitizer can also help spot more issues). Then you can build fuzz and run it with the testing corpus. Fuzz testing is known to work with Fedora 28 or later. It requires that the 'clang' package is installed. Ex: $ ./configure --with-openssl --with-tpm2 --enable-sanitizers --enable-fuzzer CC=clang $ make && make -C tests fuzz $ tests/fuzz tests/corpus-execute-command Maintainers ----------- libtpms is currently being maintained by Stefan Berger <stefanb@us.ibm.com>. References: ----------- Documentation about the Trusted Platform Module (TPM) can be downloaded from the Trusted Computing Group's website at http://www.trustedcomputinggroup.org