Skip to content

Latest commit

 

History

History
270 lines (240 loc) · 13.5 KB

3.0.x-options-matrix.md

File metadata and controls

270 lines (240 loc) · 13.5 KB

NOTE: This is a work in progress, please see issue #957 to track status.


Current Conflicts as of a5d9f5

group: object:
	tools: ['tpm2_load', 'tpm2_createprimary', 'tpm2_unseal', 'tpm2_loadexternal', 'tpm2_makecredential', 'tpm2_readpublic', 'tpm2_activatecredential', 'tpm2_create', 'tpm2_changeauth']
	conflicts: set(['C', 'handle', 'H', 'object', 'P', 'sec', 'X', 'c', 'passwdInHex', 'item', 's', 'r', 'u', 'privfile', 'pubfile', 'Password'])

To fix:

  • X/passwdInHex they get removed.
  • r/u/pubfile/privfile are OK and thus added to the analyze.py tool to ignore
  • s/sec, the long option changes to secret
  • P/Password, P is fine but Password changes to auth-key.

On PR: tpm2-software/tpm2-tools#1008

What this leaves is:

group: symmetric:
	tools: ['tpm2_hmac', 'tpm2_encryptdecrypt', 'tpm2_hash']
	conflicts: set(['a', 'algorithm', 'hierarchy', 'decrypt', 't', 'halg', 'ticket', 'D'])

To Fix:

  • algorithm/halg - algorithm goes to halg, which is inline with out of group options and the man page.
  • D/decrypt - is fine, and added to analyze.py. This does conflict with D/digest, but it's out of group.
  • a/hierarchy is fine, and added to analyze.py. This aligns with out-of-group tools.
  • t/ticket is fine, and added to analyze.py. This aligns with out-of-group tools.

On PR: tpm2-software/tpm2-tools#1008

This closes group symmetric.

group: attestation:
	tools: ['tpm2_certify', 'tpm2_quote']
	conflicts: set(['s', 'halg', 'algorithm', 'signature', 'message', 'm'])

To Fix:

  • algorithm - (BUG) Drop g/algorithm from tpm2_quote as it has been replaced via PCR selection list -L and was removed (partially) from the tool.
  • g/halg - is fine, and added to analyze.py. This aligns with out-of-group tools.
  • m/message - is fine, and added to analyze.py. This aligns with in-group tools (only one).
  • s/signature - is fine, and added to analyze.py. This aligns with in-group tools (only one).

On PR: tpm2-software/tpm2-tools#1008

This closes group attestation.

group: signing:
	tools: ['tpm2_sign', 'tpm2_verifysignature']
	conflicts: set(['raw', 'r'])

To Fix:

  • r/raw - remove, unused argument.

On PR: tpm2-software/tpm2-tools#1008

This closes group signing.

group: integrity:
	tools: ['tpm2_pcrextend', 'tpm2_pcrlist', 'tpm2_pcrevent']
	conflicts: set(['algorithm', 'g', 'format', 'algs', 'f', 's'])

To Fix:

  • h/algorithm - algorithm goes to halg, which is inline with out of group options.
  • f/format - is fine, and added to analyze.py. This aligns with out-of-group tools.
  • s/algs - is fine, and added to analyze.py. This conflicts with out-of-group tools, but is fine in group.

The conflicts on f/format should be resolved in other tools, I added a check box to: tpm2-software/tpm2-tools#957

On PR: tpm2-software/tpm2-tools#1008

This closes group integrity.

group: ea:
	tools: ['tpm2_policypcr', 'tpm2_createpolicy']
	conflicts: set(['S', 'session'])

To Fix:

  • S/session - exempt. This is inline for what we want it to be in this group.

On PR: tpm2-software/tpm2-tools#1008

This closes group ea.

group: hierarchy:
	tools: ['tpm2_clear', 'tpm2_clearlock']
	conflicts: set(['c', 'clear'])

To Fix:

  • c/clear - exempt. This is inline for what we want it to be in this group.

On PR: tpm2-software/tpm2-tools#1008

This closes group hierarchy.

group: context:
	tools: ['tpm2_evictcontrol', 'tpm2_flushcontext']
	conflicts: set(['a', 'c', 'hierarchy', 'persistent', 'p', 'S', 'session', 'context'])

To Fix:

  • S/session - exempt. This is inline wiht out-of-group tools.
  • p/persistent - only used in one tool in group.
  • a/hierarchy - used out-of-group for hierarchy specification.

On PR: tpm2-software/tpm2-tools#1008

This DOES NOT close group ea, c/context is left.

group: nv:
	tools: ['tpm2_nvreadlock', 'tpm2_nvrelease', 'tpm2_nvdefine', 'tpm2_nvread', 'tpm2_nvwrite', 'tpm2_nvlist']
	conflicts: set(['a', 'index', 'hierarchy', 'attribute', 'S', 'session', 't', 'x'])

To Fix:

  • S/session - exempt. This is inline wiht out-of-group tools.
  • x/index - This is inline with in-group tools.
  • t/attribute - BUG: attribute should be attributes per man-page. This is consistent with out-of-group attribute specification
  • a/hierarchy - exempt. This is inline with out of group tools.

On PR: tpm2-software/tpm2-tools#1008

This closes group nv.

group: custom:
	tools: ['tpm2_createak', 'tpm2_send', 'tpm2_getmanufec', 'tpm2_createek', 'tpm2_listpersistent']
	conflicts: set(['algorithm', 'kalg', 'O', 'G', 'r', 'privfile', 'halg', 'offline'])

Note: We don't care about group custom.


Options in 3.0.3+

This table lists the options in use as of 60768ba.

short form long form used by argument type canonical
-a --attest-file tpm2_certify file path
-a --auth-policy-session tpm2_createpolicy TPM session policy
-a --auth-policy-session tpm2_startauthsession N/A
-a --auth-handle tpm2_nvdefine, tpm2_nvread, tpm2_nvreadlock, tpm2_nvrelease, tpm2_nvwrite char handle pretty name
-a --hierarchy tpm2_createprimary, tpm2_evictcontrol, tpm2_hash, tpm2_loadexternal hierarchy value
-c --context tpm2_evictcontrol, tpm2_createek file path
-c --ak-context tpm2_quote, tpm2_readpublic file path
-c --context-parent tpm2_create, tpm2_load file path
-c --key-context tpm2_certify, tpm2_encryptdecrypt, tpm2_hmac, tpm2_rsadecrypt, tpm2_rsaencrypt, tpm2_sign, tpm2_verifysignature file path
-c --item-context tpm2_unseal file path
-c --clear tpm2_clearlock. tpm2_startup N/A
-c --clear-lockout tpm2_dictionarylockout N/A
-e --auth-endorse tpm2_getmanufec auth value
-e --endorse-password tpm2_activatecredential password
-e --endorse-passwd tpm2_changeauth, tpm2_createak auth value
-e --auth-endorse tpm2_createek auth value
-e --enc-key tpm2_makecredential file path
-f --in-file tpm2_activatecredential, tpm2_certify file path
-f --policy-file tpm2_createpolicy, tpm2_policypcr file path
-f --format tpm2_certify, tpm2_quote, tpm2_sign signature format
-f --format pubkey options pub key format
-f --out-file tpm2_getmanufec, tpm2_nvread file path
-f --parent-key-public tpm2_import file path
-f --file tpm2_print file path
-g --halg tpm2_create, tpm2_createprimary, tpm2_hash, tpm2_hmac, tpm2_listpersistent, tpm2_sign, tpm2_verifysignature hash algorithm
-g --policy-digest-alg tpm2_createpolicy, tpm2_startauthsession hash algorithm
-g --algorithm tpm2_getmanufec, tpm2_createak, tpm2_createek, tpm2_pcrlist algorithm specifier
-h --help common option N/A
-i --pcr-index tpm2_pcrevent pcr index
-i --input tpm2_send file path
-k --key-handle tpm2_activatecredential, tpm2_encryptdecrypt, tpm2_hmac, tpm2_rsadecrypt, tpm2_rsaencrypt, tpm2_sign, tpm2_verifysignature hex handle id
-k --ak-handle tpm2_createak, tpm2_quote hex handle id
-k --input-key-file tpm2_import file path
-l --lockout-passwd tpm2_clear password
-l --loaded-session tpm2_flushcontext N/A
-l --list tpm2_getcap N/A
-l --id-list tpm2_quote (string) list of PCR IDs
-m --message tpm2_quote, tpm2_sign, tpm2_verifysignature file path
-n --name tpm2_load file path
-n --name tpm2_makecredential string
-o --out-file tpm2_activatecredential, tpm2_getrandom, tpm2_hash, tpm2_hmac, tpm2_makecredential, tpm2_pcrlist, tpm2_readpublic, tpm2_rsadecrypt, tpm2_rsaencrypt, tpm2_send, tpm2_unseal file path
-o --owner-passwd tpm2_changeauth auth value
-o --auth-owner tpm2_createak, tpm2_createek, tpm2_getmanufec auth value
-o --offset tpm2_nvread, tpm2_nvwrite offset within index
-p --persistent tpm2_evictcontrol hex handle id
-p --platform tpm2_clear, tpm2_clearlock N/A
-p --file tpm2_createek file path
-q --import-key-public tpm2_import file path
-q --qualify-data tpm2_quote hex string
-r --privfile tpm2_create, tpm2_load, tpm2_loadexternal file path
-r --import-key-private tpm2_import file path
-r --raw tpm2_verifysignature N/A
-s --saved-session tpm2_flushcontext N/A
-s --sig-file tpm2_certify file path
-s --signature tpm2_quote file path
-s --setup-parameters tpm2_dictionarylockout N/A
-s --sec tpm2_makecredential file path
-s --size tpm2_nvdefine, tpm2_nvread, tpm2_nvrelease size in bytes
-s --algs tpm2_pcrlist N/A
-s --sig tpm2_sign, tpm2_verifysignature file path
-t --transient-object tpm2_flushcontext N/A
-t --ticket tpm2_hash, tpm2_sign, tpm2_verifysignature file path
-t --attributes tpm2_nvdefine NV attributes
-t --type tpm2_print TPMS_ATTEST
-u --pubfile tpm2_create, tpm2_load, tpm2_loadexternal file path
-v --version common option N/A
-x --pcr-index
-x --nv-index tpm2_nvdefine index id
-x --index tpm2_nvread, tpm2_nvreadlock, tpm2_nvrelease, tpm2_nvwrite index id
-A --object-attributes tpm2_create, tpm2_createprimary object attributes
-C --key-context tpm2_activatecredential file path
-C --obj-context tpm2_certify file path
-C --context tpm2_createprimary, tpm2_load, tpm2_loadexternal file path
-C --capability tpm2_getcap capability name
-D --decrypt tpm2_encryptdecrypt N/A
-D --digest tpm2_sign, tpm2_verifysignature file path
-E --old-auth-endorse tpm2_changeauth auth value
-E --ec-cert tpm2_getmanufec file path
-E --ek-handle tpm2_getcreateak hex handle id
-F --pcr-input-file tpm2_createpolicy, tpm2_nvread, tpm2_nvwrite, tpm2_policypcr, tpm2_unseal file path
-G --kalg tpm2_create, tpm2_createprimary, tpm2_listpersistent key algorithm
-G --sig-hash-algorithm tpm2_quote hash algorithm
-H --handle tpm2_evictcontrol, tpm2_activatecredential, tpm2_flushcontext, tpm2_getmanufec, tpm2_createek hexadecimal handle id
-H --obj-handle tpm2_certify hex handle id
-H --object tpm2_readpublic hex handle id
-H --parent tpm2_create, tpm2_load hex handle id
-H --parent-key-handle tpm2_import hex handle id
-H --item tpm2_unseal hex handle id
-I --in-file tpm2_create, tpm2_encryptdecrypt, tpm2_rsadecrypt file path
-I --auth-index tpm2_nvdefine auth value
-K --auth-key tpm2_create auth value
-K --auth-object tpm2_createprimary auth value
-K --auth-key tpm2_certify auth value
-L --auth-lockout tpm2_clear, tpm2_clearlock auth value
-L --policy-file tpm2_create, tpm2_createprimary, tpm2_nvdefine file path
-L --old-auth-lockout tpm2_changeauth auth value
-L --set-list tpm2_createpolicy, tpm2_nvread, tpm2_nvwrite, tpm2_policypcr, tpm2_unseal (string) list of PCR IDs
-L --sel-list tpm2_pcrlist, tpm2_quote (string) list of PCR IDs
-N --non-persistent tpm2_getmanufec N/A
-O --old-auth-owner tpm2_changeauth auth value
-O --offline tpm2_getmanufec file path
-P --auth-XXX
-P --auth-key tpm2_rsadecrypt, tpm2_encryptdecrypt, tpm2_sign, tpm2_unseal, tpm2_hmac auth value Y
-P --auth-ak tpm2_quote, tpm2_createak auth value Y
-P --auth-ek tpm2_getmanufec auth value Y
-P --auth-pcr tpm2_pcrevent auth value Y
-P --auth-object tpm2_certify auth value
-P --auth-parent tpm2_create, tpm2_load auth value
-P --auth-hierarchy tpm2_createprimary, tpm2_evictcontrol, tpm2_nvdefine, tpm2_nvread, tpm2_nvwrite auth value
-P --auth-lockout tpm2_dictionarylockout auth value
-P --pwda tpm2_evictcontrol password
-P --password tpm2_activatecredential password
-P --handle-passwd tpm2_nvreadlock, tpm2_nvrelease auth value
-P --pwdk tpm2_rsaencrypt auth value
-P --auth-ek tpm2_createek auth value
-P --policy-pcr tpm2_createpolicy N/A
-Q --quiet common option
-S --session tpm2_evictcontrol, tpm2_create, tpm2_createprimary, tpm2_encryptdecrypt, tpm2_flushcontext, tpm2_getmanufec, tpm2_createek, tpm2_hmac, tpm2_load, tpm2_nvrelease, tpm2_nvwrite, tpm2_policypcr, tpm2_policyrestart, tpm2_quote, tpm2_rsadecrypt, tpm2_startauthsession file path
-S --input-session-handle tpm2_nvreadlock, tpm2_verifysignature file path
-T --tcti tcti options option string
-U --SSL_NO_VERIFY tpm2_getmanufec N/A
-V --verbose common option N/A
-Z --enable-errata common option N/A