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