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

NAME

6       tpm2_create(1) - Create a child object.
7

SYNOPSIS

9       tpm2_create [OPTIONS]
10

DESCRIPTION

12       tpm2_create(1) - Create a child object.  The object can either be a key
13       or a sealing object.  A sealing object allows to seal user data to  the
14       TPM,  with  a maximum size of 256 bytes.  Additionally it will load the
15       created object if the -o is specified.
16

OPTIONS

18       These options for creating the TPM entity:
19
20       · -C, --parent-context=OBJECT:
21
22         The parent of the object to be created.
23
24       · -P, --parent-auth=AUTH:
25
26         The authorization value of the parent object specified with -C.
27
28       · -p, --key-auth=AUTH:
29
30         The authorization value for the created object.
31
32       · -g, --hash-algorithm=ALGORITHM:
33
34         The hash algorithm for generating the objects name.  This is optional
35         and defaults to sha256 when not specified.
36
37       · -G, --key-algorithm=ALGORITHM:
38
39         The  key algorithm associated with this object.  It defaults to "rsa"
40         if not specified.
41
42       · -a, --attributes=ATTRIBUTES:
43
44         The object attributes, optional.  The default for created objects is:
45
46         TPMA_OBJECT_SIGN_ENCRYPT|TPMA_OBJECT_DECRYPT|TPMA_OB‐
47         JECT_FIXEDTPM|  TPMA_OBJECT_FIXEDPARENT|TPMA_OBJECT_SENSITIVEDATAORI‐
48         GIN|  TPMA_OBJECT_USERWITHAUTH
49
50         When -i is specified for sealing,  TPMA_OBJECT_SIGN_ENCRYPT  and  TP‐
51         MA_OBJECT_DECRYPT  are  removed  from the default attribute set.  The
52         algorithm is set in a way where the the object is only good for seal‐
53         ing  and  unsealing.   I.e.  one cannot use an object for sealing and
54         cryptography operations.
55
56       · -i, --sealing-input=FILE or STDIN:
57
58         The data file to be sealed, optional.  If file is -, read from stdin.
59         When  sealing  data  only the TPM_ALG_KEYEDHASH algorithm with a NULL
60         scheme is allowed.  Thus, -G cannot be specified.
61
62       · -L, --policy=FILE:
63
64         The input policy file, optional.
65
66       · -u, --public=FILE:
67
68         The output file which contains the public portion of the created  ob‐
69         ject, optional.
70
71       · -r, --private=FILE:
72
73         The  output  file which contains the sensitive portion of the object,
74         optional.
75
76       · -c, --key-context=FILE:
77
78         The output file which contains the key context,  optional.   The  key
79         context  is  analogous  to the context file produced by tpm2_load(1),
80         however is generated via a tpm2_createloaded(1) command.  This option
81         can  be used to avoid the normal tpm2_create(1) and tpm2_load(1) com‐
82         mand sequences and do it all in one command, atomically.
83
84   References

Context Object Format

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

Authorization Formatting

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

Algorithm Specifiers

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

Object Attributes

365       Object Attributes are used to control various properties of created ob‐
366       jects.   When  specified  as an option, either the raw bitfield mask or
367       "nice-names" may be used.  The values can be found in Table 31  Part  2
368       of the TPM2.0 specification, which can be found here:
369
370       <https://trustedcomputinggroup.org/wp-content/uploads/TPM-
371       Rev-2.0-Part-2-Structures-01.38.pdf>
372
373       Nice names are calculated by taking the name field of table 31 and  re‐
374       moving  the  prefix TPMA_OBJECT_ and lowercasing the result.  Thus, TP‐
375       MA_OBJECT_FIXEDTPM becomes fixedtpm.  Nice names can  be  joined  using
376       the bitwise or "|" symbol.
377
378       For instance, to set The fields TPMA_OBJECT_FIXEDTPM, TPMA_OBJECT_NODA,
379       and TPMA_OBJECT_SIGN_ENCRYPT, the argument would be:
380
381       fixedtpm|noda|sign specifying the object attributes ATTRIBUTES.
382

COMMON OPTIONS

384       This collection of options are common to many programs and provide  in‐
385       formation that many users may expect.
386
387       · -h,  --help=[man|no-man]:  Display the tools manpage.  By default, it
388         attempts to invoke the manpager for the  tool,  however,  on  failure
389         will  output  a short tool summary.  This is the same behavior if the
390         "man" option argument is specified, however if explicit "man" is  re‐
391         quested,  the  tool  will  provide errors from man on stderr.  If the
392         "no-man" option if specified, or the manpager fails,  the  short  op‐
393         tions will be output to stdout.
394
395         To  successfully use the manpages feature requires the manpages to be
396         installed or on MANPATH, See man(1) for more details.
397
398       · -v, --version: Display version information for this  tool,  supported
399         tctis and exit.
400
401       · -V,  --verbose:  Increase the information that the tool prints to the
402         console during its execution.  When using this option  the  file  and
403         line number are printed.
404
405       · -Q, --quiet: Silence normal tool output to stdout.
406
407       · -Z, --enable-errata: Enable the application of errata fixups.  Useful
408         if an errata fixup needs to be applied to commands sent to  the  TPM.
409         Defining  the environment TPM2TOOLS_ENABLE_ERRATA is equivalent.  in‐
410         formation many users may expect.
411

TCTI Configuration

413       The TCTI or "Transmission Interface"  is  the  communication  mechanism
414       with  the TPM.  TCTIs can be changed for communication with TPMs across
415       different mediums.
416
417       To control the TCTI, the tools respect:
418
419       1. The command line option -T or --tcti
420
421       2. The environment variable: TPM2TOOLS_TCTI.
422
423       Note: The command line option always overrides  the  environment  vari‐
424       able.
425
426       The current known TCTIs are:
427
428       · tabrmd      -     The     resource     manager,     called     tabrmd
429         (https://github.com/tpm2-software/tpm2-abrmd).  Note that tabrmd  and
430         abrmd as a tcti name are synonymous.
431
432       · mssim  - Typically used for communicating to the TPM software simula‐
433         tor.
434
435       · device - Used when talking directly to a TPM device file.
436
437       · none - Do not initalize a connection with the TPM.  Some tools  allow
438         for off-tpm options and thus support not using a TCTI.  Tools that do
439         not support it will error when attempted to be used  without  a  TCTI
440         connection.   Does  not  support ANY options and MUST BE presented as
441         the exact text of "none".
442
443       The arguments to either the command  line  option  or  the  environment
444       variable are in the form:
445
446       <tcti-name>:<tcti-option-config>
447
448       Specifying  an  empty  string  for  either the <tcti-name> or <tcti-op‐
449       tion-config> results in the default being used for that portion respec‐
450       tively.
451
452   TCTI Defaults
453       When  a  TCTI  is not specified, the default TCTI is searched for using
454       dlopen(3) semantics.  The tools will  search  for  tabrmd,  device  and
455       mssim  TCTIs  IN THAT ORDER and USE THE FIRST ONE FOUND.  You can query
456       what TCTI will be chosen as the default by using the -v option to print
457       the  version information.  The "default-tcti" key-value pair will indi‐
458       cate which of the aforementioned TCTIs is the default.
459
460   Custom TCTIs
461       Any TCTI that implements the dynamic TCTI interface can be loaded.  The
462       tools internally use dlopen(3), and the raw tcti-name value is used for
463       the lookup.  Thus, this could be a path to the shared library, or a li‐
464       brary name as understood by dlopen(3) semantics.
465

TCTI OPTIONS

467       This collection of options are used to configure the various known TCTI
468       modules available:
469
470       · device: For the device TCTI, the TPM character device file for use by
471         the device TCTI can be specified.  The default is /dev/tpm0.
472
473         Example:    -T   device:/dev/tpm0   or   export   TPM2TOOLS_TCTI="de‐
474         vice:/dev/tpm0"
475
476       · mssim: For the mssim TCTI, the domain name or  IP  address  and  port
477         number  used  by  the  simulator  can  be specified.  The default are
478         127.0.0.1 and 2321.
479
480         Example: -T mssim:host=localhost,port=2321  or  export  TPM2TOOLS_TC‐
481         TI="mssim:host=localhost,port=2321"
482
483       · abrmd:  For  the abrmd TCTI, the configuration string format is a se‐
484         ries of simple key value pairs separated by a  ','  character.   Each
485         key and value string are separated by a '=' character.
486
487         · TCTI abrmd supports two keys:
488
489           1. 'bus_name'  :  The  name  of  the  tabrmd  service on the bus (a
490              string).
491
492           2. 'bus_type' : The type of the dbus instance (a string) limited to
493              'session' and 'system'.
494
495         Specify  the tabrmd tcti name and a config string of bus_name=com.ex‐
496         ample.FooBar:
497
498         \--tcti=tabrmd:bus_name=com.example.FooBar
499
500         Specify the default (abrmd) tcti and a config string of bus_type=ses‐
501         sion:
502
503         \--tcti:bus_type=session
504
505         NOTE:  abrmd  and tabrmd are synonymous.  the various known TCTI mod‐
506         ules.
507

EXAMPLES

509   Setup
510       In order to create an object, we must first create  a  primary  key  as
511       it's parent.
512
513              tpm2_createprimary -c primary.ctx
514
515   Create an Object
516       This  will  create an object using all the default values and store the
517       TPM sealed private and public portions to the paths  specified  via  -u
518       and -r respectively.  The tool defaults to an RSA key.
519
520              tpm2_create -C primary.ctx -u obj.pub -r obj.priv
521
522   Seal Data to the TPM
523       Outside of key objects, the TPM allows for small amounts of user speci‐
524       fied data to be sealed to the TPM.
525
526              echo "my sealed data" > seal.dat
527              tpm2_create -C primary.ctx -i seal.dat -u obj.pub -r obj.priv
528
529   Create an EC Key Object and Load it to the TPM
530       Normally, when creating an object, only the public and private portions
531       of  the object are returned and the caller needs to use tpm2_load(1) to
532       load those public and private portions to the TPM before being able  to
533       use  the object.  However, this can be accomplished within this command
534       as well.
535
536              tpm2_create -C primary.ctx -G ecc -u obj.pub -r obj.priv -c ecc.ctx
537

Returns

539       Tools can return any of the following codes:
540
541       · 0 - Success.
542
543       · 1 - General non-specific error.
544
545       · 2 - Options handling error.
546
547       · 3 - Authentication error.
548
549       · 4 - TCTI related error.
550
551       · 5 - Non supported scheme.  Applicable to tpm2_testparams.
552

BUGS

554       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
555

HELP

557       See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
558
559
560
561tpm2-tools                                                      tpm2_create(1)
Impressum