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-F, --pcrs_format=FORMAT:
49
50         Format selection for the binary blob in the PCR output  file.   `val‐
51         ues'  will output a binary blob of the PCR values.  `serialized' will
52         output a binary blob of the PCR values in the form of serialized data
53         structure  in  little  endian format.  Optional.  Default is `serial‐
54         ized'.
55
56-q, --qualification=HEX_STRING_OR_PATH:
57
58         Data given as a Hex string or binary file to qualify the  quote,  op‐
59         tional.   This  is  typically  used to add a nonce against replay at‐
60         tacks.
61
62-g, --hash-algorithm:
63
64         Hash algorithm for signature.  Defaults to sha256.
65
66--scheme=ALGORITHM:
67
68         The signing scheme used to  sign  the  message.   Optional.   Signing
69         schemes  should follow the “formatting standards”, see section “Algo‐
70         rithm Specifiers”.  Also, see section “Supported Signing Schemes” for
71         a  list  of supported signature schemes.  If specified, the signature
72         scheme must match the key type.  If left unspecified, a default  sig‐
73         nature scheme for the key type will be used.
74
75--cphash=FILE
76
77         File path to record the hash of the command parameters.  This is com‐
78         monly termed as cpHash.  NOTE: When this option is selected, The tool
79         will not actually execute the command, it simply returns a cpHash.
80
81   References

Context Object Format

83       The  type  of a context object, whether it is a handle or file name, is
84       determined according to the following logic in-order:
85
86       • If the argument is a file path, then the file is loaded as a restored
87         TPM transient object.
88
89       • If the argument is a prefix match on one of:
90
91         • owner: the owner hierarchy
92
93         • platform: the platform hierarchy
94
95         • endorsement: the endorsement hierarchy
96
97         • lockout: the lockout control persistent object
98
99       • If  the  argument argument can be loaded as a number it will be treat
100         as a handle, e.g. 0x81010013 and used directly._OBJECT_.
101

Authorization Formatting

103       Authorization for use of an object in TPM2.0 can come  in  3  different
104       forms: 1.  Password 2.  HMAC 3.  Sessions
105
106       NOTE:  “Authorizations  default  to  the EMPTY PASSWORD when not speci‐
107       fied”.
108
109   Passwords
110       Passwords are interpreted in the following  forms  below  using  prefix
111       identifiers.
112
113       Note:  By  default  passwords are assumed to be in the string form when
114       they do not have a prefix.
115
116   String
117       A string password, specified by prefix  “str:”  or  it’s  absence  (raw
118       string without prefix) is not interpreted, and is directly used for au‐
119       thorization.
120
121   Examples
122              foobar
123              str:foobar
124
125   Hex-string
126       A hex-string password, specified by prefix “hex:” is converted  from  a
127       hexidecimal  form  into a byte array form, thus allowing passwords with
128       non-printable and/or terminal un-friendly characters.
129
130   Example
131              hex:1122334455667788
132
133   File
134       A file based password, specified be prefix “file:” should be  the  path
135       of  a  file  containing the password to be read by the tool or a “-” to
136       use stdin.  Storing passwords in files  prevents  information  leakage,
137       passwords passed as options can be read from the process list or common
138       shell history features.
139
140   Examples
141              # to use stdin and be prompted
142              file:-
143
144              # to use a file from a path
145              file:path/to/password/file
146
147              # to echo a password via stdin:
148              echo foobar | tpm2_tool -p file:-
149
150              # to use a bash here-string via stdin:
151
152              tpm2_tool -p file:- <<< foobar
153
154   Sessions
155       When using a policy session to authorize the use of an  object,  prefix
156       the  option argument with the session keyword.  Then indicate a path to
157       a session file that was created with tpm2_startauthsession(1).  Option‐
158       ally, if the session requires an auth value to be sent with the session
159       handle (eg policy password), then append a + and a string as  described
160       in the Passwords section.
161
162   Examples
163       To use a session context file called session.ctx.
164
165              session:session.ctx
166
167       To use a session context file called session.ctx AND send the authvalue
168       mypassword.
169
170              session:session.ctx+mypassword
171
172       To use a session context file called session.ctx AND send the HEX auth‐
173       value 0x11223344.
174
175              session:session.ctx+hex:11223344
176
177   PCR Authorizations
178       You  can satisfy a PCR policy using the “pcr:” prefix and the PCR mini‐
179       language.      The     PCR     minilanguage     is     as      follows:
180       <pcr-spec>=<raw-pcr-file>
181
182       The PCR spec is documented in in the section “PCR bank specifiers”.
183
184       The  raw-pcr-file  is  an optional argument that contains the output of
185       the raw PCR contents as returned by tpm2_pcrread(1).
186
187       PCR bank specifiers (pcr.md)
188
189   Examples
190       To satisfy a PCR policy of sha256 on banks 0, 1, 2 and 3 use a specifi‐
191       er of:
192
193              pcr:sha256:0,1,2,3
194
195       specifying AUTH.
196

Signature Format Specifiers

198       Format selection for the signature output file.  tss (the default) will
199       output a binary blob according to the TPM 2.0 specification and any po‐
200       tential  compiler padding.  The option plain will output the plain sig‐
201       nature data as defined by the used cryptographic algorithm.   signature
202       FORMAT.
203

PCR Bank Specifiers

205       PCR Bank Selection lists follow the below specification:
206
207              <BANK>:<PCR>[,<PCR>] or <BANK>:all
208
209       multiple banks may be separated by `+'.
210
211       For example:
212
213              sha1:3,4+sha256:all
214
215       will  select  PCRs 3 and 4 from the SHA1 bank and PCRs 0 to 23 from the
216       SHA256 bank.
217
218   Note
219       PCR Selections allow for up to 5 hash to pcr selection mappings.   This
220       is  a limitation in design in the single call to the tpm to get the pcr
221       values.
222

COMMON OPTIONS

224       This collection of options are common to many programs and provide  in‐
225       formation that many users may expect.
226
227-h,  --help=[man|no-man]:  Display the tools manpage.  By default, it
228         attempts to invoke the manpager for the  tool,  however,  on  failure
229         will  output  a short tool summary.  This is the same behavior if the
230         “man” option argument is specified, however if explicit “man” is  re‐
231         quested,  the  tool  will  provide errors from man on stderr.  If the
232         “no-man” option if specified, or the manpager fails,  the  short  op‐
233         tions will be output to stdout.
234
235         To  successfully use the manpages feature requires the manpages to be
236         installed or on MANPATH, See man(1) for more details.
237
238-v, --version: Display version information for this  tool,  supported
239         tctis and exit.
240
241-V,  --verbose:  Increase the information that the tool prints to the
242         console during its execution.  When using this option  the  file  and
243         line number are printed.
244
245-Q, --quiet: Silence normal tool output to stdout.
246
247-Z, --enable-errata: Enable the application of errata fixups.  Useful
248         if an errata fixup needs to be applied to commands sent to  the  TPM.
249         Defining  the environment TPM2TOOLS_ENABLE_ERRATA is equivalent.  in‐
250         formation many users may expect.
251

TCTI Configuration

253       The TCTI or “Transmission Interface”  is  the  communication  mechanism
254       with  the TPM.  TCTIs can be changed for communication with TPMs across
255       different mediums.
256
257       To control the TCTI, the tools respect:
258
259       1. The command line option -T or --tcti
260
261       2. The environment variable: TPM2TOOLS_TCTI.
262
263       Note: The command line option always overrides  the  environment  vari‐
264       able.
265
266       The current known TCTIs are:
267
268       • tabrmd      -     The     resource     manager,     called     tabrmd
269         (https://github.com/tpm2-software/tpm2-abrmd).  Note that tabrmd  and
270         abrmd as a tcti name are synonymous.
271
272       • mssim  - Typically used for communicating to the TPM software simula‐
273         tor.
274
275       • device - Used when talking directly to a TPM device file.
276
277       • none - Do not initalize a connection with the TPM.  Some tools  allow
278         for off-tpm options and thus support not using a TCTI.  Tools that do
279         not support it will error when attempted to be used  without  a  TCTI
280         connection.   Does  not  support ANY options and MUST BE presented as
281         the exact text of “none”.
282
283       The arguments to either the command  line  option  or  the  environment
284       variable are in the form:
285
286       <tcti-name>:<tcti-option-config>
287
288       Specifying  an  empty  string  for  either the <tcti-name> or <tcti-op‐
289       tion-config> results in the default being used for that portion respec‐
290       tively.
291
292   TCTI Defaults
293       When  a  TCTI  is not specified, the default TCTI is searched for using
294       dlopen(3) semantics.  The tools will  search  for  tabrmd,  device  and
295       mssim  TCTIs  IN THAT ORDER and USE THE FIRST ONE FOUND.  You can query
296       what TCTI will be chosen as the default by using the -v option to print
297       the  version information.  The “default-tcti” key-value pair will indi‐
298       cate which of the aforementioned TCTIs is the default.
299
300   Custom TCTIs
301       Any TCTI that implements the dynamic TCTI interface can be loaded.  The
302       tools internally use dlopen(3), and the raw tcti-name value is used for
303       the lookup.  Thus, this could be a path to the shared library, or a li‐
304       brary name as understood by dlopen(3) semantics.
305

TCTI OPTIONS

307       This collection of options are used to configure the various known TCTI
308       modules available:
309
310device: For the device TCTI, the TPM character device file for use by
311         the device TCTI can be specified.  The default is /dev/tpm0.
312
313         Example:    -T   device:/dev/tpm0   or   export   TPM2TOOLS_TCTI=“de‐
314         vice:/dev/tpm0”
315
316mssim: For the mssim TCTI, the domain name or  IP  address  and  port
317         number  used  by  the  simulator  can  be specified.  The default are
318         127.0.0.1 and 2321.
319
320         Example: -T mssim:host=localhost,port=2321  or  export  TPM2TOOLS_TC‐
321         TI=“mssim:host=localhost,port=2321”
322
323abrmd:  For  the abrmd TCTI, the configuration string format is a se‐
324         ries of simple key value pairs separated by a  `,'  character.   Each
325         key and value string are separated by a `=' character.
326
327         • TCTI abrmd supports two keys:
328
329           1. `bus_name'  :  The  name  of  the  tabrmd  service on the bus (a
330              string).
331
332           2. `bus_type' : The type of the dbus instance (a string) limited to
333              `session' and `system'.
334
335         Specify  the tabrmd tcti name and a config string of bus_name=com.ex‐
336         ample.FooBar:
337
338                \--tcti=tabrmd:bus_name=com.example.FooBar
339
340         Specify the default (abrmd) tcti and a config string of bus_type=ses‐
341         sion:
342
343                \--tcti:bus_type=session
344
345         NOTE:  abrmd  and tabrmd are synonymous.  the various known TCTI mod‐
346         ules.
347

EXAMPLES

349              tpm2_createprimary -C e -c primary.ctx
350
351              tpm2_create -C primary.ctx -u key.pub -r key.priv
352
353              tpm2_load -C primary.ctx -u key.pub -r key.priv -c key.ctx
354
355              tpm2_quote -Q -c key.ctx -l 0x0004:16,17,18+0x000b:16,17,18
356

NOTES

358       The maximum number of PCR that can be quoted at once is associated with
359       the maximum length of a bank.
360
361       On most TPMs, it means that this tool can quote up to 24 PCRs at once.
362
363       That this performs a detached signature.
364

Returns

366       Tools can return any of the following codes:
367
368       • 0 - Success.
369
370       • 1 - General non-specific error.
371
372       • 2 - Options handling error.
373
374       • 3 - Authentication error.
375
376       • 4 - TCTI related error.
377
378       • 5 - Non supported scheme.  Applicable to tpm2_testparams.
379

BUGS

381       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
382

HELP

384       See the Mailing List (https://lists.linuxfoundation.org/mailman/listin
385       fo/tpm2)
386
387
388
389tpm2-tools                                                       tpm2_quote(1)
Impressum