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       · --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

Context Object Format

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

Authorization Formatting

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

Signature Format Specifiers

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

PCR Bank Specifiers

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

COMMON OPTIONS

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

TCTI Configuration

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

TCTI OPTIONS

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

EXAMPLES

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

NOTES

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

Returns

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

BUGS

364       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
365

HELP

367       See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
368
369
370
371tpm2-tools                                                       tpm2_quote(1)
Impressum