123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- .\" Automatically generated by Pandoc 1.19.2.4
- .\"
- .TH "tpm2_policycommandcode" "1" "" "tpm2\-tools" "General Commands Manual"
- .hy
- .SH NAME
- .PP
- \f[B]tpm2_policycommandcode\f[](1) \- Restrict TPM object authorization
- to specific TPM commands.
- .SH SYNOPSIS
- .PP
- \f[B]tpm2_policycommandcode\f[] [\f[I]OPTIONS\f[]] [\f[I]ARGUMENT\f[]]
- .SH DESCRIPTION
- .PP
- \f[B]tpm2_policycommandcode\f[](1) \- Restricts TPM object authorization
- to specific TPM commands.
- Useful when you want to allow only specific commands to interact with
- the TPM object.
- .PP
- As an argument it takes the command as an integer or friendly string
- value.
- Friendly string to COMMAND CODE mapping can be found in section
- \f[I]COMMAND CODE MAPPINGS\f[].
- .SH OPTIONS
- .IP \[bu] 2
- \f[B]\-S\f[], \f[B]\-\-session\f[]=\f[I]FILE\f[]:
- .RS 2
- .PP
- A session file from \f[B]tpm2_startauthsession\f[](1)\[aq]s \f[B]\-S\f[]
- option.
- .RE
- .IP \[bu] 2
- \f[B]\-L\f[], \f[B]\-\-policy\f[]=\f[I]FILE\f[]:
- .RS 2
- .PP
- File to save the policy digest.
- .RE
- .IP \[bu] 2
- \f[B]ARGUMENT\f[] the command line argument specifies TPM2 command code.
- .SS References
- .SH COMMON OPTIONS
- .PP
- This collection of options are common to many programs and provide
- information that many users may expect.
- .IP \[bu] 2
- \f[B]\-h\f[], \f[B]\-\-help=[man|no\-man]\f[]: Display the tools
- manpage.
- By default, it attempts to invoke the manpager for the tool, however, on
- failure will output a short tool summary.
- This is the same behavior if the "man" option argument is specified,
- however if explicit "man" is requested, the tool will provide errors
- from man on stderr.
- If the "no\-man" option if specified, or the manpager fails, the short
- options will be output to stdout.
- .RS 2
- .PP
- To successfully use the manpages feature requires the manpages to be
- installed or on \f[I]MANPATH\f[], See man(1) for more details.
- .RE
- .IP \[bu] 2
- \f[B]\-v\f[], \f[B]\-\-version\f[]: Display version information for this
- tool, supported tctis and exit.
- .IP \[bu] 2
- \f[B]\-V\f[], \f[B]\-\-verbose\f[]: Increase the information that the
- tool prints to the console during its execution.
- When using this option the file and line number are printed.
- .IP \[bu] 2
- \f[B]\-Q\f[], \f[B]\-\-quiet\f[]: Silence normal tool output to stdout.
- .IP \[bu] 2
- \f[B]\-Z\f[], \f[B]\-\-enable\-errata\f[]: Enable the application of
- errata fixups.
- Useful if an errata fixup needs to be applied to commands sent to the
- TPM.
- Defining the environment TPM2TOOLS_ENABLE_ERRATA is equivalent.
- information many users may expect.
- .SH TCTI Configuration
- .PP
- The TCTI or "Transmission Interface" is the communication mechanism with
- the TPM.
- TCTIs can be changed for communication with TPMs across different
- mediums.
- .PP
- To control the TCTI, the tools respect:
- .IP "1." 3
- The command line option \f[B]\-T\f[] or \f[B]\-\-tcti\f[]
- .IP "2." 3
- The environment variable: \f[I]TPM2TOOLS_TCTI\f[].
- .PP
- \f[B]Note:\f[] The command line option always overrides the environment
- variable.
- .PP
- The current known TCTIs are:
- .IP \[bu] 2
- tabrmd \- The resource manager, called
- tabrmd (https://github.com/tpm2-software/tpm2-abrmd).
- Note that tabrmd and abrmd as a tcti name are synonymous.
- .IP \[bu] 2
- mssim \- Typically used for communicating to the TPM software simulator.
- .IP \[bu] 2
- device \- Used when talking directly to a TPM device file.
- .IP \[bu] 2
- none \- Do not initalize 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 \f[I]ANY\f[] options and \f[I]MUST BE\f[] presented as
- the exact text of "none".
- .PP
- The arguments to either the command line option or the environment
- variable are in the form:
- .PP
- \f[C]<tcti\-name>:<tcti\-option\-config>\f[]
- .PP
- Specifying an empty string for either the \f[C]<tcti\-name>\f[] or
- \f[C]<tcti\-option\-config>\f[] results in the default being used for
- that portion respectively.
- .SS TCTI Defaults
- .PP
- When a TCTI is not specified, the default TCTI is searched for using
- \f[I]dlopen(3)\f[] semantics.
- The tools will search for \f[I]tabrmd\f[], \f[I]device\f[] and
- \f[I]mssim\f[] TCTIs \f[B]IN THAT ORDER\f[] and \f[B]USE THE FIRST ONE
- FOUND\f[].
- You can query what TCTI will be chosen as the default by using the
- \f[B]\-v\f[] option to print the version information.
- The "default\-tcti" key\-value pair will indicate which of the
- aforementioned TCTIs is the default.
- .SS Custom TCTIs
- .PP
- Any TCTI that implements the dynamic TCTI interface can be loaded.
- The tools internally use \f[I]dlopen(3)\f[], and the raw
- \f[I]tcti\-name\f[] value is used for the lookup.
- Thus, this could be a path to the shared library, or a library name as
- understood by \f[I]dlopen(3)\f[] semantics.
- .SH TCTI OPTIONS
- .PP
- This collection of options are used to configure the various known TCTI
- modules available:
- .IP \[bu] 2
- \f[B]device\f[]: For the device TCTI, the TPM character device file for
- use by the device TCTI can be specified.
- The default is \f[I]/dev/tpm0\f[].
- .RS 2
- .PP
- Example: \f[B]\-T device:/dev/tpm0\f[] or \f[B]export
- \f[I]TPM2TOOLS_TCTI\f[]="device:/dev/tpm0"\f[]
- .RE
- .IP \[bu] 2
- \f[B]mssim\f[]: For the mssim TCTI, the domain name or IP address and
- port number used by the simulator can be specified.
- The default are 127.0.0.1 and 2321.
- .RS 2
- .PP
- Example: \f[B]\-T mssim:host=localhost,port=2321\f[] or \f[B]export
- \f[I]TPM2TOOLS_TCTI\f[]="mssim:host=localhost,port=2321"\f[]
- .RE
- .IP \[bu] 2
- \f[B]abrmd\f[]: For the abrmd TCTI, the configuration string format is a
- series of simple key value pairs separated by a \[aq],\[aq] character.
- Each key and value string are separated by a \[aq]=\[aq] character.
- .RS 2
- .IP \[bu] 2
- TCTI abrmd supports two keys:
- .RS 2
- .IP "1." 3
- \[aq]bus_name\[aq] : The name of the tabrmd service on the bus (a
- string).
- .IP "2." 3
- \[aq]bus_type\[aq] : The type of the dbus instance (a string) limited to
- \[aq]session\[aq] and \[aq]system\[aq].
- .RE
- .PP
- Specify the tabrmd tcti name and a config string of
- \f[C]bus_name=com.example.FooBar\f[]:
- .PP
- \f[C]\\\-\-tcti=tabrmd:bus_name=com.example.FooBar\f[]
- .PP
- Specify the default (abrmd) tcti and a config string of
- \f[C]bus_type=session\f[]:
- .PP
- \f[C]\\\-\-tcti:bus_type=session\f[]
- .PP
- \f[B]NOTE\f[]: abrmd and tabrmd are synonymous.
- the various known TCTI modules.
- .RE
- .SH COMMAND CODE MAPPINGS
- .PP
- The friendly strings below can be used en lieu of the raw integer
- values.
- .PP
- \-TPM2_CC_AC_GetCapability: 0x194 \-TPM2_CC_AC_Send: 0x195
- \-TPM2_CC_ActivateCredential: 0x147 \-TPM2_CC_Certify: 0x148
- \-TPM2_CC_CertifyCreation: 0x14a \-TPM2_CC_ChangeEPS: 0x124
- \-TPM2_CC_ChangePPS: 0x125 \-TPM2_CC_Clear: 0x126
- \-TPM2_CC_ClearControl: 0x127 \-TPM2_CC_ClockRateAdjust: 0x130
- \-TPM2_CC_ClockSet: 0x128 \-TPM2_CC_Commit: 0x18b \-TPM2_CC_ContextLoad:
- 0x161 \-TPM2_CC_ContextSave: 0x162 \-TPM2_CC_Create: 0x153
- \-TPM2_CC_CreateLoaded: 0x191 \-TPM2_CC_CreatePrimary: 0x131
- \-TPM2_CC_DictionaryAttackLockReset: 0x139
- \-TPM2_CC_DictionaryAttackParameters: 0x13a \-TPM2_CC_Duplicate: 0x14b
- \-TPM2_CC_ECC_Parameters: 0x178 \-TPM2_CC_ECDH_KeyGen: 0x163
- \-TPM2_CC_ECDH_ZGen: 0x154 \-TPM2_CC_EC_Ephemeral: 0x18e
- \-TPM2_CC_EncryptDecrypt: 0x164 \-TPM2_CC_EncryptDecrypt2: 0x193
- \-TPM2_CC_EventSequenceComplete: 0x185 \-TPM2_CC_EvictControl: 0x120
- \-TPM2_CC_FieldUpgradeData: 0x141 \-TPM2_CC_FieldUpgradeStart: 0x12f
- \-TPM2_CC_FirmwareRead: 0x179 \-TPM2_CC_FlushContext: 0x165
- \-TPM2_CC_GetCapability: 0x17a \-TPM2_CC_GetCommandAuditDigest: 0x133
- \-TPM2_CC_GetRandom: 0x17b \-TPM2_CC_GetSessionAuditDigest: 0x14d
- \-TPM2_CC_GetTestResult: 0x17c \-TPM2_CC_GetTime: 0x14c \-TPM2_CC_Hash:
- 0x17d \-TPM2_CC_HashSequenceStart: 0x186 \-TPM2_CC_HierarchyChangeAuth:
- 0x129 \-TPM2_CC_HierarchyControl: 0x121 \-TPM2_CC_HMAC: 0x155
- \-TPM2_CC_HMAC_Start: 0x15b \-TPM2_CC_Import: 0x156
- \-TPM2_CC_IncrementalSelfTest: 0x142 \-TPM2_CC_Load: 0x157
- \-TPM2_CC_LoadExternal: 0x167 \-TPM2_CC_MakeCredential: 0x168
- \-TPM2_CC_NV_Certify: 0x184 \-TPM2_CC_NV_ChangeAuth: 0x13b
- \-TPM2_CC_NV_DefineSpace: 0x12a \-TPM2_CC_NV_Extend: 0x136
- \-TPM2_CC_NV_GlobalWriteLock: 0x132 \-TPM2_CC_NV_Increment: 0x134
- \-TPM2_CC_NV_Read: 0x14e \-TPM2_CC_NV_ReadLock: 0x14f
- \-TPM2_CC_NV_ReadPublic: 0x169 \-TPM2_CC_NV_SetBits: 0x135
- \-TPM2_CC_NV_UndefineSpace: 0x122 \-TPM2_CC_NV_UndefineSpaceSpecial:
- 0x11f \-TPM2_CC_NV_Write: 0x137 \-TPM2_CC_NV_WriteLock: 0x138
- \-TPM2_CC_ObjectChangeAuth: 0x150 \-TPM2_CC_PCR_Allocate: 0x12b
- \-TPM2_CC_PCR_Event: 0x13c \-TPM2_CC_PCR_Extend: 0x182
- \-TPM2_CC_PCR_Read: 0x17e \-TPM2_CC_PCR_Reset: 0x13d
- \-TPM2_CC_PCR_SetAuthPolicy: 0x12c \-TPM2_CC_PCR_SetAuthValue: 0x183
- \-TPM2_CC_Policy_AC_SendSelect: 0x196 \-TPM2_CC_PolicyAuthorize: 0x16a
- \-TPM2_CC_PolicyAuthorizeNV: 0x192 \-TPM2_CC_PolicyAuthValue: 0x16b
- \-TPM2_CC_PolicyCommandCode: 0x16c \-TPM2_CC_PolicyCounterTimer: 0x16d
- \-TPM2_CC_PolicyCpHash: 0x16e \-TPM2_CC_PolicyDuplicationSelect: 0x188
- \-TPM2_CC_PolicyGetDigest: 0x189 \-TPM2_CC_PolicyLocality: 0x16f
- \-TPM2_CC_PolicyNameHash: 0x170 \-TPM2_CC_PolicyNV: 0x149
- \-TPM2_CC_PolicyNvWritten: 0x18f \-TPM2_CC_PolicyOR: 0x171
- \-TPM2_CC_PolicyPassword: 0x18c \-TPM2_CC_PolicyPCR: 0x17f
- \-TPM2_CC_PolicyPhysicalPresence: 0x187 \-TPM2_CC_PolicyRestart: 0x180
- \-TPM2_CC_PolicySecret: 0x151 \-TPM2_CC_PolicySigned: 0x160
- \-TPM2_CC_PolicyTemplate: 0x190 \-TPM2_CC_PolicyTicket: 0x172
- \-TPM2_CC_PP_Commands: 0x12d \-TPM2_CC_Quote: 0x158 \-TPM2_CC_ReadClock:
- 0x181 \-TPM2_CC_ReadPublic: 0x173 \-TPM2_CC_Rewrap: 0x152
- \-TPM2_CC_RSA_Decrypt: 0x159 \-TPM2_CC_RSA_Encrypt: 0x174
- \-TPM2_CC_SelfTest: 0x143 \-TPM2_CC_SequenceComplete: 0x13e
- \-TPM2_CC_SequenceUpdate: 0x15c \-TPM2_CC_SetAlgorithmSet: 0x13f
- \-TPM2_CC_SetCommandCodeAuditStatus: 0x140 \-TPM2_CC_SetPrimaryPolicy:
- 0x12e \-TPM2_CC_Shutdown: 0x145 \-TPM2_CC_Sign: 0x15d
- \-TPM2_CC_StartAuthSession: 0x176 \-TPM2_CC_Startup: 0x144
- \-TPM2_CC_StirRandom: 0x146 \-TPM2_CC_TestParms: 0x18a \-TPM2_CC_Unseal:
- 0x15e \-TPM2_CC_Vendor_TCG_Test: 0x20000000 \-TPM2_CC_VerifySignature:
- 0x177 \-TPM2_CC_ZGen_2Phase: 0x18d
- .SH EXAMPLES
- .PP
- Start a \f[I]policy\f[] session and extend it with a specific command
- like unseal.
- Attempts to perform other operations would fail.
- .SS Create an unseal\-only policy
- .IP
- .nf
- \f[C]
- tpm2_startauthsession\ \-S\ session.dat
- tpm2_policycommandcode\ \-S\ session.dat\ \-L\ policy.dat\ TPM2_CC_Unseal
- tpm2_flushcontext\ session.dat
- \f[]
- .fi
- .SS Create the object with unseal\-only auth policy
- .IP
- .nf
- \f[C]
- tpm2_createprimary\ \-C\ o\ \-c\ prim.ctx
- tpm2_create\ \-C\ prim.ctx\ \-u\ sealkey.pub\ \-r\ sealkey.priv\ \-L\ policy.dat\ \\
- \ \ \-i\-\ <<<\ "SEALED\-SECRET"
- \f[]
- .fi
- .SS Try unseal operation
- .IP
- .nf
- \f[C]
- tpm2_load\ \-C\ prim.ctx\ \-u\ sealkey.pub\ \-r\ sealkey.priv\ \-n\ sealkey.name\ \\
- \ \ \-c\ sealkey.ctx
- tpm2_startauthsession\ \-\-policy\-session\ \-S\ session.dat
- tpm2_policycommandcode\ \-S\ session.dat\ \-L\ policy.dat\ TPM2_CC_Unseal
- tpm2_unseal\ \-p\ session:session.dat\ \-c\ sealkey.ctx
- SEALED\-SECRET
- tpm2_flushcontext\ session.dat
- \f[]
- .fi
- .SS Try any other operation
- .IP
- .nf
- \f[C]
- echo\ "Encrypt\ Me"\ >\ plain.txt
- tpm2_encryptdecrypt\ plain.txt\ \-o\ enc.txt\ \-c\ sealkey.ctx\ plain.txt
- ERROR:\ Esys_EncryptDecrypt2(0x12F)\ \-\ tpm:error(2.0):\ authValue\ or\ authPolicy\ is
- not\ available\ for\ selected\ entity
- \f[]
- .fi
- .SH Returns
- .PP
- Tools can return any of the following codes:
- .IP \[bu] 2
- 0 \- Success.
- .IP \[bu] 2
- 1 \- General non\-specific error.
- .IP \[bu] 2
- 2 \- Options handling error.
- .IP \[bu] 2
- 3 \- Authentication error.
- .IP \[bu] 2
- 4 \- TCTI related error.
- .IP \[bu] 2
- 5 \- Non supported scheme.
- Applicable to tpm2_testparams.
- .SH Limitations
- .PP
- It expects a session to be already established via
- \f[B]tpm2_startauthsession\f[](1) and requires one of the following:
- .IP \[bu] 2
- direct device access
- .IP \[bu] 2
- extended session support with \f[B]tpm2\-abrmd\f[].
- .PP
- Without it, most resource managers \f[B]will not\f[] save session state
- between command invocations.
- .SH BUGS
- .PP
- Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
- .SH HELP
- .PP
- See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
|