]> git.proxmox.com Git - libtpms.git/blame - README
bump version to 0.9.6+pve1
[libtpms.git] / README
CommitLineData
a0098eda
CB
1What is libtpms?
2----------------
3
4Libtpms is a library that targets the integration of TPM functionality
5into hypervisors, primarily into Qemu. Libtpms provides a very narrow
6public API for this purpose so that integration is possible. Only the
7minimum of necessary APIs are made publicly available.
8
9It is assumed that the user of libtpms is familiar with the concepts
10of the Trusted Platform Module (TPM). For the interaction with libtpms
11it is necessary to know how to construct valid TPM commands and to
12be able to parse their results. It is not within the scope of libtpms's
13documentation to provide background on this. See the section on references
14below.
15
16
17What files does the libtpms package provide?
18--------------------------------------------
19
20The main libtpms package provides the following files:
21
22/usr/lib64/libtpms.so.0
23/usr/lib64/libtpms.so.0.5.1
24/usr/share/doc/libtpms-0.5.1
25/usr/share/doc/libtpms-0.5.1/CHANGES
26/usr/share/doc/libtpms-0.5.1/LICENSE
27/usr/share/doc/libtpms-0.5.1/README
28
29Applications can link with -ltpms.
30
31
32What files does the libtpms development package provide?
33--------------------------------------------------------
34
35The libtpms development package (libtpms-devel) provides the following
36include files for applications to use:
37
38tpm_error.h
39tpm_library.h
40tpm_memory.h
41tpm_nvfilename.h
42tpm_tis.h
43tpm_types.h
44
45These files contain the data structures, data types and API calls supported
46by libtpms. It is recommended to not use any other API calls than those
47provided in these include files.
48
49All APIs are described in man pages. The man pages are part of the libtpms
50development package as well:
51
52TPMLIB_DecodeBlob
53TPMLIB_GetTPMProperty
54TPMLIB_GetVersion
55TPMLIB_MainInit
56TPMLIB_Process
57TPMLIB_RegisterCallbacks
58TPMLIB_Terminate
59TPMLIB_VolatileAll_Store
60TPM_Free
61TPM_IO_Hash_Data
62TPM_IO_Hash_End
63TPM_IO_Hash_Start
64TPM_IO_TpmEstablished_Get
65TPM_Malloc
66TPM_Realloc
67
68
a5a3e1cb
CB
69How to contribute?
70------------------
a2b246e2 71The mailing list for libtpms is libtpms@googlegroups.com.
a0098eda 72
a0eaeb89
SB
73For patch submissions, please use a Signed-off-by: <your email> to indicate
74agreement to the DCO1.1.txt.
75
a0098eda 76
48dabdbd
MAL
77Fuzzing
78-------
79Initial fuzzing is possible with clang & libfuzzer.
80
81You have to configure the project with --enable-fuzzer
82(--enable-sanitizer can also help spot more issues). Then you can
83build fuzz and run it with the testing corpus.
84
85Fuzz testing is known to work with Fedora 28 or later. It requires that the
86'clang' package is installed.
87
88Ex:
de7072ed
SB
89$ ./configure --with-openssl --with-tpm2 --enable-sanitizers --enable-fuzzer \
90 CC=clang CXX=clang++
48dabdbd 91$ make && make -C tests fuzz
ba56737b 92$ tests/run-fuzzer.sh
48dabdbd 93
b214dabf
MAL
94oss-fuzz builds with its own fuzzer flags, and set $LIB_FUZZING_ENGINE
95to be linked with. The script run by oss-fuzz is tests/oss-fuzz.sh.
96
a5a3e1cb
CB
97Maintainers
98-----------
7ccf4d97 99libtpms is currently being maintained by Stefan Berger <stefanb@us.ibm.com>.
a0098eda
CB
100
101References:
102-----------
103
104Documentation about the Trusted Platform Module (TPM) can be downloaded
105from the Trusted Computing Group's website at
106
107http://www.trustedcomputinggroup.org