tpm2_ticket(1)
okay bestie, welcome to tpm2_ticket(1) β the General Commands Manual page for this TPM2 tools moment. Grab your iced coffee, because we're doing policy authorization with tickets and it's lowkey iconic π
π NAME π
tpm2_ticket(1) β enables policy authorization by verifying a ticket that represents a validated authorization which had an expiration time associated with it. That's the whole point, and yes, it eats π
β¨ SYNOPSIS β¨
tpm2_ticket [OPTIONS]
πΈ DESCRIPTION πΈ
tpm2_ticket(1) β enables policy authorization by verifying a ticket that represents a validated authorization with an expiration time attached. It's giving βshow me the ticket, bestieβ energy β¨
π OPTIONS π
-L,--policy=FILEβ the file where you save the compounded policy digest. β¨-S,--session=FILEβ the policy session file generated via the-Soption totpm2_startauthsession(1).-n,--name=FILEβ name of the object that validated the authorization.--ticket=FILEβ the ticket file to record the authorization ticket structure.--timeout=FILEβ the file path to record the timeout structure returned.-q,--qualification=FILE_OR_HEX_STRβ optional; the policy qualifier data that the signer can choose to include in the signature. It can be either a hex string or a path. π
π References
Only the heading is here in the original, bestie β no reference list follows it. We move on π
π«Ά COMMON OPTIONS π«Ά
These are the common options that show up across lots of programs and give you info a lot of users expect.
-h,--help=[man|no-man]β display the tool's manpage. By default it tries to invoke the manpager for the tool, but on failure it outputs a short tool summary. Same behavior if themanoption argument is specified; however, if explicitmanis requested, the tool will provide errors from man on stderr. If theno-manoption is specified, or the manpager fails, the short options will be output to stdout.
To successfully use the manpages feature, the manpages need to be installed or on MANPATH; see man(1) for more details.
-v,--versionβ display version information for this tool, supported tctis, and exit.-V,--verboseβ increase the information that the tool prints to the console during its execution. When using this option, the file and line number are printed.-Q,--quietβ silence normal tool output to stdout.-Z,--enable-errataβ enable the application of errata fixups. Useful if an errata fixup needs to be applied to commands sent to the TPM. Defining the environment variableTPM2TOOLS_ENABLE_ERRATAis equivalent.-z,--pwd-sessionβ use a password session instead of a HMAC session for authentication. A clear text password is passed to the TPM to authorize the action. This option can be used to avoid problems when unsalted sessions are used in OpenSSL FIPS mode.
Careful, bestie: if auth values are used, a salted session should be used for authentication. π
-R,--autoflushβ enable autoflush for transient objects created by the command. If a parent object is loaded from a context file, also the transient parent object will be flushed. Autoflush can also be activated if the environment variableTPM2TOOLS_AUTOFLUSHis is set toyesortrue. And yes, the source has that doubledisplus the strayinformation many users may expectat the end of this bullet β we keep every detail, bestie π
π¦ TCTI Configuration π¦
The TCTI β aka βTransmission Interfaceβ β is the communication mechanism with the TPM. TCTIs can be changed for communication with TPMs across different mediums. π
To control the TCTI, the tools respect:
- The command line option
-Tor--tcti - The environment variable
TPM2TOOLS_TCTI.
Note: the command line option always overrides the environment variable. Periodt.
The current known TCTIs are:
tabrmdβ the resource manager, calledtabrmd. Note thattabrmdandabrmdas a tcti name are synonymous.mssimβ typically used for communicating to the TPM software simulator.deviceβ used when talking directly to a TPM device file.noneβ do not initialize a connection with the TPM. Some tools allow for off-tpm options and thus support not using a TCTI. Tools that do not support it will error when attempted to be used without a TCTI connection. Does not support ANY options and MUST BE presented as the exact text of"none".
The arguments to either the command line option or the environment variable are in the form:
<tcti-name>:<tcti-option-config>
Specifying an empty string for either the <tcti-name> or <tcti-option-config> results in the default being used for that portion respectively.
π TCTI Defaults π
When a TCTI is not specified, the default TCTI is searched for using dlopen(3) semantics. The tools search for tabrmd, device and mssim TCTIs IN THAT ORDER and USE THE FIRST ONE FOUND. You can query what TCTI will be chosen as the default by using the -v option to print the version information. The "default-tcti" key-value pair will indicate which of those TCTIs is the default. π
π§ Custom TCTIs π§
Any TCTI that implements the dynamic TCTI interface can be loaded. The tools internally use dlopen(3), and the raw tcti-name value is used for the lookup. So this could be a path to the shared library, or a library name as understood by dlopen(3) semantics. π¦
π₯ TCTI OPTIONS π₯
These options configure the various known TCTI modules available:
device: For thedeviceTCTI, you can specify the TPM character device file for use by the device TCTI. The default is/dev/tpm0.
Example: -T device:/dev/tpm0 or export TPM2TOOLS_TCTI=βdevice:/dev/tpm0β
mssim: For themssimTCTI, you can specify the domain name or IP address and port number used by the simulator. The default are127.0.0.1and2321.
Example: -T mssim:host=localhost,port=2321 or export TPM2TOOLS_TCTI=βmssim:host=localhost,port=2321β
abrmd: For theabrmdTCTI, the configuration string format is a series of simple key value pairs separated by a,character. Each key and value string are separated by a=character.- TCTI
abrmdsupports two keys:bus_name: The name of thetabrmdservice on the bus (a string).bus_type: The type of the dbus instance (a string) limited tosessionandsystem.
- Specify the
tabrmdtcti name and a config string ofbus_name=com.example.FooBar:
- TCTI
\--tcti=tabrmd:bus_name=com.example.FooBar
- Specify the default (
abrmd) tcti and a config string ofbus_type=session:
\--tcti:bus_type=session
- NOTE:
abrmdandtabrmdare synonymous. Also, the original section ends with βthe various known TCTI modules.β β a little stray phrase, but we keep it π«Ά
π EXAMPLES π
Authorize a TPM operation on an object whose authorization is bound to specific signing authority. Let's gooo π₯
π Create the signing authority and load the verification key
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
tpm2_loadexternal -C o -G rsa -u public.pem -c signing_key.ctx \
-n signing_key.name
β° Generate signature with the expiry time
EXPIRYTIME="FFFFFE0C"
echo $EXPIRYTIME | xxd -r -p | \
openssl dgst -sha256 -sign private.pem -out signature.dat
π Create the policy
tpm2_startauthsession -S session.ctx
tpm2_policysigned -S session.ctx -g sha256 -s signature.dat -f rsassa \
-c signing_key.ctx -L policy.signed
tpm2_flushcontext session.ctx
π¦ Create a sealing object
tpm2_createprimary -C o -c prim.ctx -Q
echo "plaintext" > secret.dat
tpm2_create -u sealing_key.pub -r sealing_key.priv -c sealing_key.ctx \
-C prim.ctx -i secret.dat -L policy.signed -Q
ποΈ Create ticket-able policy
tpm2_startauthsession -S session.ctx --nonce-tpm=nonce.test --policy-session
{ cat nonce.test & echo $EXPIRYTIME | xxd -r -p; } | \
openssl dgst -sha256 -sign private.pem -out signature.dat
tpm2_policysigned -S session.ctx -g sha256 -s signature.dat -f rsassa \
-c signing_key.ctx -x nonce.test --ticket tic.ket --timeout time.out \
-t 0xFFFFFE0C
tpm2_flushcontext session.ctx
π§ͺ Test with policyticket instead of policysigned
tpm2_startauthsession -S session.ctx --policy-session
tpm2_policyticket -S session.ctx -n signing_key.name --ticket tic.ket \
--timeout time.out
tpm2_unseal -p session:session.ctx -c sealing_key.ctx
β Returns β
Tools can return any of the following codes:
0β Success.1β General non-specific error.2β Options handling error.3β Authentication error.4β TCTI related error.5β Non supported scheme. Applicable totpm2_testparams.
π Limitations π
It expects a session to be already established via tpm2_startauthsession(1) and requires one of the following:
- direct device access
- extended session support with
tpm2-abrmd.
Without it, most resource managers will not save session state between command invocations. π
π BUGS π
Github Issues
π£ HELP π£
See the Mailing List
π License π
This work is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).
kisses and good vibes from the tpm2-tools source/version crew on the tpm2_ticket(1) page β footer date energy included, mwah π
π¦ where this page comes from
- arch rolling: tpm2-tools 5.8-1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms