1tpm2_quote(1) General Commands Manual tpm2_quote(1)
2
3
4
6 tpm2_quote(1) - Provide a quote and signature from the TPM.
7
9 tpm2_quote [OPTIONS]
10
12 tpm2_quote(1) - Provide quote and signature for given list of PCRs in
13 given algorithm/banks.
14
16 · -c, --key-context=OBJECT:
17
18 Context object for the quote signing key.
19
20 · -p, --auth=AUTH:
21
22 Specifies the authorization value for AK specified by option -C.
23
24 · -l, --pcr-list=PCR:
25
26 The list of PCR banks and selected PCRs' ids for each bank. Also see
27 NOTES section below.
28
29 · -m, --message=FILE:
30
31 Message output file, records the quote message that makes up the data
32 that is signed by the TPM.
33
34 · -s, --signature=FILE:
35
36 Signature output file, records the signature in the format specified
37 via the -f option.
38
39 · -f, --format=FORMAT:
40
41 Format selection for the signature output file.
42
43 · -o, --pcr=FILE.
44
45 PCR output file, optional, records the list of PCR values as defined
46 by -l.
47
48 · -q, --qualification=HEX_STRING_OR_PATH:
49
50 Data given as a Hex string or binary file to qualify the quote, op‐
51 tional. This is typically used to add a nonce against replay at‐
52 tacks.
53
54 · -g, --hash-algorithm:
55
56 Hash algorithm for signature. Defaults to sha256.
57
58 References
60 The type of a context object, whether it is a handle or file name, is
61 determined according to the following logic in-order:
62
63 · If the argument is a file path, then the file is loaded as a restored
64 TPM transient object.
65
66 · If the argument is a prefix match on one of:
67
68 · owner: the owner hierarchy
69
70 · platform: the platform hierarchy
71
72 · endorsement: the endorsement hierarchy
73
74 · lockout: the lockout control persistent object
75
76 · If the argument argument can be loaded as a number it will be treat
77 as a handle, e.g. 0x81010013 and used directly.OBJECT.
78
80 Authorization for use of an object in TPM2.0 can come in 3 different
81 forms: 1. Password 2. HMAC 3. Sessions
82
83 NOTE: "Authorizations default to the EMPTY PASSWORD when not speci‐
84 fied".
85
86 Passwords
87 Passwords are interpreted in the following forms below using prefix
88 identifiers.
89
90 Note: By default passwords are assumed to be in the string form when
91 they do not have a prefix.
92
93 String
94 A string password, specified by prefix "str:" or it's absence (raw
95 string without prefix) is not interpreted, and is directly used for au‐
96 thorization.
97
98 Examples
99 foobar
100 str:foobar
101
102 Hex-string
103 A hex-string password, specified by prefix "hex:" is converted from a
104 hexidecimal form into a byte array form, thus allowing passwords with
105 non-printable and/or terminal un-friendly characters.
106
107 Example
108 hex:0x1122334455667788
109
110 File
111 A file based password, specified be prefix "file:" should be the path
112 of a file containing the password to be read by the tool or a "-" to
113 use stdin. Storing passwords in files prevents information leakage,
114 passwords passed as options can be read from the process list or common
115 shell history features.
116
117 Examples
118 # to use stdin and be prompted
119 file:-
120
121 # to use a file from a path
122 file:path/to/password/file
123
124 # to echo a password via stdin:
125 echo foobar | tpm2_tool -p file:-
126
127 # to use a bash here-string via stdin:
128
129 tpm2_tool -p file:- <<< foobar
130
131 Sessions
132 When using a policy session to authorize the use of an object, prefix
133 the option argument with the session keyword. Then indicate a path to
134 a session file that was created with tpm2_startauthsession(1). Option‐
135 ally, if the session requires an auth value to be sent with the session
136 handle (eg policy password), then append a + and a string as described
137 in the Passwords section.
138
139 Examples
140 To use a session context file called session.ctx.
141
142 session:session.ctx
143
144 To use a session context file called session.ctx AND send the authvalue
145 mypassword.
146
147 session:session.ctx+mypassword
148
149 To use a session context file called session.ctx AND send the HEX auth‐
150 value 0x11223344.
151
152 session:session.ctx+hex:11223344
153
154 PCR Authorizations
155 You can satisfy a PCR policy using the "pcr:" prefix and the PCR mini‐
156 language. The PCR minilanguage is as follows:
157 <pcr-spec>=<raw-pcr-file>
158
159 The PCR spec is documented in in the section "PCR bank specifiers".
160
161 The raw-pcr-file is an optional the output of the raw PCR contents as
162 returned by tpm2_pcrread(1).
163
164 PCR bank specifiers (common/pcr.md)
165
166 Examples
167 To satisfy a PCR policy of sha256 on banks 0, 1, 2 and 3 use a specifi‐
168 er of:
169
170 pcr:sha256:0,1,2,3
171
172 specifying AUTH.
173
175 Format selection for the signature output file. tss (the default) will
176 output a binary blob according to the TPM 2.0 specification and any po‐
177 tential compiler padding. The option plain will output the plain sig‐
178 nature data as defined by the used cryptographic algorithm. signature
179 FORMAT.
180
182 PCR Bank Selection lists follow the below specification:
183
184 <BANK>:<PCR>[,<PCR>] or <BANK>:all
185
186 multiple banks may be separated by '+'.
187
188 For example:
189
190 sha1:3,4+sha256:all
191
192 will select PCRs 3 and 4 from the SHA1 bank and PCRs 0 to 23 from the
193 SHA256 bank.
194
195 Note
196 PCR Selections allow for up to 5 hash to pcr selection mappings. This
197 is a limitation in design in the single call to the tpm to get the pcr
198 values.
199
201 This collection of options are common to many programs and provide in‐
202 formation that many users may expect.
203
204 · -h, --help=[man|no-man]: Display the tools manpage. By default, it
205 attempts to invoke the manpager for the tool, however, on failure
206 will output a short tool summary. This is the same behavior if the
207 "man" option argument is specified, however if explicit "man" is re‐
208 quested, the tool will provide errors from man on stderr. If the
209 "no-man" option if specified, or the manpager fails, the short op‐
210 tions will be output to stdout.
211
212 To successfully use the manpages feature requires the manpages to be
213 installed or on MANPATH, See man(1) for more details.
214
215 · -v, --version: Display version information for this tool, supported
216 tctis and exit.
217
218 · -V, --verbose: Increase the information that the tool prints to the
219 console during its execution. When using this option the file and
220 line number are printed.
221
222 · -Q, --quiet: Silence normal tool output to stdout.
223
224 · -Z, --enable-errata: Enable the application of errata fixups. Useful
225 if an errata fixup needs to be applied to commands sent to the TPM.
226 Defining the environment TPM2TOOLS_ENABLE_ERRATA is equivalent. in‐
227 formation many users may expect.
228
230 The TCTI or "Transmission Interface" is the communication mechanism
231 with the TPM. TCTIs can be changed for communication with TPMs across
232 different mediums.
233
234 To control the TCTI, the tools respect:
235
236 1. The command line option -T or --tcti
237
238 2. The environment variable: TPM2TOOLS_TCTI.
239
240 Note: The command line option always overrides the environment vari‐
241 able.
242
243 The current known TCTIs are:
244
245 · tabrmd - The resource manager, called tabrmd
246 (https://github.com/tpm2-software/tpm2-abrmd). Note that tabrmd and
247 abrmd as a tcti name are synonymous.
248
249 · mssim - Typically used for communicating to the TPM software simula‐
250 tor.
251
252 · device - Used when talking directly to a TPM device file.
253
254 · none - Do not initalize a connection with the TPM. Some tools allow
255 for off-tpm options and thus support not using a TCTI. Tools that do
256 not support it will error when attempted to be used without a TCTI
257 connection. Does not support ANY options and MUST BE presented as
258 the exact text of "none".
259
260 The arguments to either the command line option or the environment
261 variable are in the form:
262
263 <tcti-name>:<tcti-option-config>
264
265 Specifying an empty string for either the <tcti-name> or <tcti-op‐
266 tion-config> results in the default being used for that portion respec‐
267 tively.
268
269 TCTI Defaults
270 When a TCTI is not specified, the default TCTI is searched for using
271 dlopen(3) semantics. The tools will search for tabrmd, device and
272 mssim TCTIs IN THAT ORDER and USE THE FIRST ONE FOUND. You can query
273 what TCTI will be chosen as the default by using the -v option to print
274 the version information. The "default-tcti" key-value pair will indi‐
275 cate which of the aforementioned TCTIs is the default.
276
277 Custom TCTIs
278 Any TCTI that implements the dynamic TCTI interface can be loaded. The
279 tools internally use dlopen(3), and the raw tcti-name value is used for
280 the lookup. Thus, this could be a path to the shared library, or a li‐
281 brary name as understood by dlopen(3) semantics.
282
284 This collection of options are used to configure the various known TCTI
285 modules available:
286
287 · device: For the device TCTI, the TPM character device file for use by
288 the device TCTI can be specified. The default is /dev/tpm0.
289
290 Example: -T device:/dev/tpm0 or export TPM2TOOLS_TCTI="de‐
291 vice:/dev/tpm0"
292
293 · mssim: For the mssim TCTI, the domain name or IP address and port
294 number used by the simulator can be specified. The default are
295 127.0.0.1 and 2321.
296
297 Example: -T mssim:host=localhost,port=2321 or export TPM2TOOLS_TC‐
298 TI="mssim:host=localhost,port=2321"
299
300 · abrmd: For the abrmd TCTI, the configuration string format is a se‐
301 ries of simple key value pairs separated by a ',' character. Each
302 key and value string are separated by a '=' character.
303
304 · TCTI abrmd supports two keys:
305
306 1. 'bus_name' : The name of the tabrmd service on the bus (a
307 string).
308
309 2. 'bus_type' : The type of the dbus instance (a string) limited to
310 'session' and 'system'.
311
312 Specify the tabrmd tcti name and a config string of bus_name=com.ex‐
313 ample.FooBar:
314
315 \--tcti=tabrmd:bus_name=com.example.FooBar
316
317 Specify the default (abrmd) tcti and a config string of bus_type=ses‐
318 sion:
319
320 \--tcti:bus_type=session
321
322 NOTE: abrmd and tabrmd are synonymous. the various known TCTI mod‐
323 ules.
324
326 tpm2_createprimary -C e -c primary.ctx
327
328 tpm2_create -C primary.ctx -u key.pub -r key.priv
329
330 tpm2_load -C primary.ctx -u key.pub -r key.priv -c key.ctx
331
332 tpm2_quote -Q -c key.ctx -l 0x0004:16,17,18+0x000b:16,17,18
333
335 The maximum number of PCR that can be quoted at once is associated with
336 the maximum length of a bank.
337
338 On most TPMs, it means that this tool can quote up to 24 PCRs at once.
339
340 That this performs a detached signature.
341
343 Tools can return any of the following codes:
344
345 · 0 - Success.
346
347 · 1 - General non-specific error.
348
349 · 2 - Options handling error.
350
351 · 3 - Authentication error.
352
353 · 4 - TCTI related error.
354
355 · 5 - Non supported scheme. Applicable to tpm2_testparams.
356
358 Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
359
361 See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
362
363
364
365tpm2-tools tpm2_quote(1)