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

NAME

6       tpm2_certifycreation(1)  - Attest the association between a loaded pub‐
7       lic area and the provided hash of the creation data.
8

SYNOPSIS

10       tpm2_certifycreation [OPTIONS]
11

DESCRIPTION

13       tpm2_certifycreation(1) - Attest the association between a loaded  pub‐
14       lic area and the provided hash of the creation data.  The creation data
15       and the creation ticket is produced when creating the object.  The  ob‐
16       ject  itself  is  created with either TPM2_CreatePrimary or TPM2_Create
17       commands.
18

OPTIONS

20       · -C, --signingkey-context=OBJECT:
21
22         Context object pointing to the key used that signs the attestation.
23
24       · -P, --signingkey-authAUTH:
25
26         Optional authorization value to use for the key specified by -C.
27
28       · -c, --certifiedkey-context=OBJECT:
29
30         Context object pointing to the key that has to be certified.
31
32       · -g, --hash-algorithm=ALGORITHM:
33
34         The hash algorithm used to digest the creation data.
35
36       · -s, --scheme=ALGORITHM:
37
38         The signing scheme used to sign the attestation data.
39
40       · -d, --creation-hash=FILE
41
42         File containing the digest of the creation data.
43
44       · -t, --ticket=FILE:
45
46         The ticket file to validate that the creation data  was  produced  by
47         the TPM.
48
49       · -o, --signature=FILE:
50
51         File  containing the signature of the attestation data for the certi‐
52         fied key.
53
54       · -f, --format=FORMAT:
55
56         Output signature format selection.
57
58       · --attestation=FILE:
59
60         The attestation data of the type TPM2_CREATION_INFO signed with sign‐
61         ing key.
62
63       · -q, --qualification=FILE_OR_HEX:
64
65         Optional, the policy qualifier data that the signer can choose to in‐
66         clude in the signature.  Can either be a path or hex string.
67
68   References

Context Object Format

70       The type of a context object, whether it is a handle or file  name,  is
71       determined according to the following logic in-order:
72
73       · If the argument is a file path, then the file is loaded as a restored
74         TPM transient object.
75
76       · If the argument is a prefix match on one of:
77
78         · owner: the owner hierarchy
79
80         · platform: the platform hierarchy
81
82         · endorsement: the endorsement hierarchy
83
84         · lockout: the lockout control persistent object
85
86       · If the argument argument can be loaded as a number it will  be  treat
87         as a handle, e.g.  0x81010013 and used directly.OBJECT.
88

Authorization Formatting

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

Algorithm Specifiers

185       Options that take algorithms support "nice-names".
186
187       There are two major algorithm specification string classes, simple  and
188       complex.  Only certain algorithms will be accepted by the TPM, based on
189       usage and conditions.
190
191   Simple specifiers
192       These are strings with no additional specification data.  When creating
193       objects,  non-specified  portions of an object are assumed to defaults.
194       You can find the list of known "Simple Specifiers Below".
195
196   Asymmetric
197       · rsa
198
199       · ecc
200
201   Symmetric
202       · aes
203
204       · camellia
205
206   Hashing Algorithms
207       · sha1
208
209       · sha256
210
211       · sha384
212
213       · sha512
214
215       · sm3_256
216
217       · sha3_256
218
219       · sha3_384
220
221       · sha3_512
222
223   Keyed Hash
224       · hmac
225
226       · xor
227
228   Signing Schemes
229       · rsassa
230
231       · rsapss
232
233       · ecdsa
234
235       · ecdaa
236
237       · ecschnorr
238
239   Asymmetric Encryption Schemes
240       · oaep
241
242       · rsaes
243
244       · ecdh
245
246   Modes
247       · ctr
248
249       · ofb
250
251       · cbc
252
253       · cfb
254
255       · ecb
256
257   Misc
258       · null
259
260   Complex Specifiers
261       Objects, when specified for creation by the TPM,  have  numerous  algo‐
262       rithms  to  populate  in the public data.  Things like type, scheme and
263       asymmetric details, key size, etc.  Below is  the  general  format  for
264       specifying this data: <type>:<scheme>:<symmetric-details>
265
266   Type Specifiers
267       This  portion  of the complex algorithm specifier is required.  The re‐
268       maining scheme and symmetric details will default  based  on  the  type
269       specified and the type of the object being created.
270
271       · aes - Default AES: aes128
272
273       · aes128<mode>  - 128 bit AES with optional mode (ctr|ofb|cbc|cfb|ecb).
274         If mode is not specified, defaults to null.
275
276       · aes192<mode> - Same as aes128<mode>, except for a 192 bit key size.
277
278       · aes256<mode> - Same as aes128<mode>, except for a 256 bit key size.
279
280       · ecc - Elliptical Curve, defaults to ecc256.
281
282       · ecc192 - 192 bit ECC
283
284       · ecc224 - 224 bit ECC
285
286       · ecc256 - 256 bit ECC
287
288       · ecc384 - 384 bit ECC
289
290       · ecc521 - 521 bit ECC
291
292       · rsa - Default RSA: rsa2048
293
294       · rsa1024 - RSA with 1024 bit keysize.
295
296       · rsa2048 - RSA with 2048 bit keysize.
297
298       · rsa4096 - RSA with 4096 bit keysize.
299
300   Scheme Specifiers
301       Next, is an optional field, it can be skipped.
302
303       Schemes are usually Signing Schemes or Asymmetric  Encryption  Schemes.
304       Most signing schemes take a hash algorithm directly following the sign‐
305       ing scheme.  If the hash algorithm is missing, it defaults  to  sha256.
306       Some take no arguments, and some take multiple arguments.
307
308   Hash Optional Scheme Specifiers
309       These  scheme  specifiers are followed by a dash and a valid hash algo‐
310       rithm, For example: oaep-sha256.
311
312       · oaep
313
314       · ecdh
315
316       · rsassa
317
318       · rsapss
319
320       · ecdsa
321
322       · ecschnorr
323
324   Multiple Option Scheme Specifiers
325       This scheme specifier is followed by a count  (max  size  UINT16)  then
326       folloed  by a dash(-) and a valid hash algorithm.  * ecdaa For example,
327       ecdaa4-sha256.  If no count is specified, it defaults to 4.
328
329   No Option Scheme Specifiers
330       This scheme specifier takes NO arguments.  * rsaes
331
332   Symmetric Details Specifiers
333       This field is optional, and defaults based on the type of object  being
334       created  and it's attributes.  Generally, any valid Symmetric specifier
335       from the Type Specifiers list should work.  If not specified, an  asym‐
336       metric objects symmetric details defaults to aes128cfb.
337
338   Examples
339   Create an rsa2048 key with an rsaes asymmetric encryption scheme
340       tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv
341
342   Create an ecc256 key with an ecdaa signing scheme with a count of 4
343       and sha384 hash
344
345       /tpm2_create -C parent.ctx -G ecc256:ec‐
346       daa4-sha384 -u key.pub -r key.priv cryptographic algorithms ALGORITHM.
347

COMMON OPTIONS

349       This collection of options are common to many programs and provide  in‐
350       formation that many users may expect.
351
352       · -h,  --help=[man|no-man]:  Display the tools manpage.  By default, it
353         attempts to invoke the manpager for the  tool,  however,  on  failure
354         will  output  a short tool summary.  This is the same behavior if the
355         "man" option argument is specified, however if explicit "man" is  re‐
356         quested,  the  tool  will  provide errors from man on stderr.  If the
357         "no-man" option if specified, or the manpager fails,  the  short  op‐
358         tions will be output to stdout.
359
360         To  successfully use the manpages feature requires the manpages to be
361         installed or on MANPATH, See man(1) for more details.
362
363       · -v, --version: Display version information for this  tool,  supported
364         tctis and exit.
365
366       · -V,  --verbose:  Increase the information that the tool prints to the
367         console during its execution.  When using this option  the  file  and
368         line number are printed.
369
370       · -Q, --quiet: Silence normal tool output to stdout.
371
372       · -Z, --enable-errata: Enable the application of errata fixups.  Useful
373         if an errata fixup needs to be applied to commands sent to  the  TPM.
374         Defining  the environment TPM2TOOLS_ENABLE_ERRATA is equivalent.  in‐
375         formation many users may expect.
376

TCTI Configuration

378       The TCTI or "Transmission Interface"  is  the  communication  mechanism
379       with  the TPM.  TCTIs can be changed for communication with TPMs across
380       different mediums.
381
382       To control the TCTI, the tools respect:
383
384       1. The command line option -T or --tcti
385
386       2. The environment variable: TPM2TOOLS_TCTI.
387
388       Note: The command line option always overrides  the  environment  vari‐
389       able.
390
391       The current known TCTIs are:
392
393       · tabrmd      -     The     resource     manager,     called     tabrmd
394         (https://github.com/tpm2-software/tpm2-abrmd).  Note that tabrmd  and
395         abrmd as a tcti name are synonymous.
396
397       · mssim  - Typically used for communicating to the TPM software simula‐
398         tor.
399
400       · device - Used when talking directly to a TPM device file.
401
402       · none - Do not initalize a connection with the TPM.  Some tools  allow
403         for off-tpm options and thus support not using a TCTI.  Tools that do
404         not support it will error when attempted to be used  without  a  TCTI
405         connection.   Does  not  support ANY options and MUST BE presented as
406         the exact text of "none".
407
408       The arguments to either the command  line  option  or  the  environment
409       variable are in the form:
410
411       <tcti-name>:<tcti-option-config>
412
413       Specifying  an  empty  string  for  either the <tcti-name> or <tcti-op‐
414       tion-config> results in the default being used for that portion respec‐
415       tively.
416
417   TCTI Defaults
418       When  a  TCTI  is not specified, the default TCTI is searched for using
419       dlopen(3) semantics.  The tools will  search  for  tabrmd,  device  and
420       mssim  TCTIs  IN THAT ORDER and USE THE FIRST ONE FOUND.  You can query
421       what TCTI will be chosen as the default by using the -v option to print
422       the  version information.  The "default-tcti" key-value pair will indi‐
423       cate which of the aforementioned TCTIs is the default.
424
425   Custom TCTIs
426       Any TCTI that implements the dynamic TCTI interface can be loaded.  The
427       tools internally use dlopen(3), and the raw tcti-name value is used for
428       the lookup.  Thus, this could be a path to the shared library, or a li‐
429       brary name as understood by dlopen(3) semantics.
430

TCTI OPTIONS

432       This collection of options are used to configure the various known TCTI
433       modules available:
434
435       · device: For the device TCTI, the TPM character device file for use by
436         the device TCTI can be specified.  The default is /dev/tpm0.
437
438         Example:    -T   device:/dev/tpm0   or   export   TPM2TOOLS_TCTI="de‐
439         vice:/dev/tpm0"
440
441       · mssim: For the mssim TCTI, the domain name or  IP  address  and  port
442         number  used  by  the  simulator  can  be specified.  The default are
443         127.0.0.1 and 2321.
444
445         Example: -T mssim:host=localhost,port=2321  or  export  TPM2TOOLS_TC‐
446         TI="mssim:host=localhost,port=2321"
447
448       · abrmd:  For  the abrmd TCTI, the configuration string format is a se‐
449         ries of simple key value pairs separated by a  ','  character.   Each
450         key and value string are separated by a '=' character.
451
452         · TCTI abrmd supports two keys:
453
454           1. 'bus_name'  :  The  name  of  the  tabrmd  service on the bus (a
455              string).
456
457           2. 'bus_type' : The type of the dbus instance (a string) limited to
458              'session' and 'system'.
459
460         Specify  the tabrmd tcti name and a config string of bus_name=com.ex‐
461         ample.FooBar:
462
463         \--tcti=tabrmd:bus_name=com.example.FooBar
464
465         Specify the default (abrmd) tcti and a config string of bus_type=ses‐
466         sion:
467
468         \--tcti:bus_type=session
469
470         NOTE:  abrmd  and tabrmd are synonymous.  the various known TCTI mod‐
471         ules.  # Signature Format Specifiers
472
473       Format selection for the signature output file.  tss (the default) will
474       output a binary blob according to the TPM 2.0 specification and any po‐
475       tential compiler padding.  The option plain will output the plain  sig‐
476       nature data as defined by the used cryptographic algorithm.
477

EXAMPLES

479   Certify creation data of a primary key.
480              tpm2_createprimary -C o -c prim.ctx --creation-data create.dat \
481              -d create.dig -t create.ticket
482
483              tpm2_create -G rsa -u rsa.pub -r rsa.priv -C prim.ctx -c signing_key.ctx
484
485              tpm2_certifycreation -C signing_key.ctx -c prim.ctx -d create.dig \
486              -t create.ticket -g sha256 -o sig.nature --attestation attestat.ion -f plain \
487              -s rsassa
488

Returns

490       Tools can return any of the following codes:
491
492       · 0 - Success.
493
494       · 1 - General non-specific error.
495
496       · 2 - Options handling error.
497
498       · 3 - Authentication error.
499
500       · 4 - TCTI related error.
501
502       · 5 - Non supported scheme.  Applicable to tpm2_testparams.
503

BUGS

505       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
506

HELP

508       See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
509
510
511
512tpm2-tools                                             tpm2_certifycreation(1)
Impressum