1tpm2_quote(1)               General Commands Manual              tpm2_quote(1)
2
3
4

NAME

6       tpm2_quote(1) - Provide a quote and signature from the TPM.
7

SYNOPSIS

9       tpm2_quote [OPTIONS]
10

DESCRIPTION

12       tpm2_quote(1)  -  Provide quote and signature for given list of PCRs in
13       given algorithm/banks.
14

OPTIONS

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

Context Object Format

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

Authorization Formatting

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

Signature Format Specifiers

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

PCR Bank Specifiers

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

COMMON OPTIONS

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

TCTI Configuration

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

TCTI OPTIONS

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

EXAMPLES

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

NOTES

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

Returns

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

BUGS

358       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
359

HELP

361       See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
362
363
364
365tpm2-tools                                                       tpm2_quote(1)
Impressum