parallaxsecond / parallaxsecond/rust-tss-esapi
Add missing ESAPI TPM commands
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 135
- Forks
- 80
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 5
Description
I here created this issue to track the implementation status of TPM 2.0 commands.
Currently, 80 of the 119 TPM commands have been implemented, while 39 remain unimplemented. The 38 functions, excluding the deprecated encrypt_decrypt() function, should be implemented.
Note that the *_Async and *_Finish functions are excluded.
Full list of the TPM commands
tcg_esapi_tpm_commands_rust_tss_esapi.ods
References
- TCG TSS 2.0 Enhanced System API (ESAPI) Specification, Version 1.00, Revision 14.
- Trusted Platform Module 2.0 Library Part 3: Commands, Version 185.
List of missing commands
The deprecated ESAPI Esys_EncryptDecrypt() is excluded.
-
Esys_IncrementalSelfTest():incremental_self_test()totesting.rs -
(deprecated in v184)Esys_CreateLoaded():create_load()toobject_commands.rs -
Esys_Rewrap():rewrap()toduplication_commands.rs -
Esys_MAC():mac()tosymmetric_primitives.rs -
Esys_MAC_Start():mac_start()tohash_hmac_event_sequences.rs -
Esys_EventSequenceComplete():event_sequence_complete()tohash_hmac_event_sequences.rs -
Esys_SetCommandCodeAuditStatus():set_command_audit_status()tocommand_audit.rs -
Esys_PCR_Event():pcr_event()tointegrity_collection_pcr.rs -
Esys_PCR_Allocate():pcr_allocate()tointegrity_collection_pcr.rs -
Esys_PCR_SetAuthPolicy():pcr_set_auth_policy()tointegrity_collection_pcr.rs -
Esys_PCR_SetAuthValue():pcr_set_auth_value()tointegrity_collection_pcr.rs -
Esys_PolicyTicket():policy_ticket()toenhanced_authorization_ea_commands.rs -
Esys_PolicyNV():policy_nv()toenhanced_authorization_ea_commands.rs -
Esys_PolicyCounterTimer():policy_count_timer()toenhanced_authorization_ea_commands.rs -
Esys_HierarchyControl():hierarchy_control()tohierarchy_commands.rs -
Esys_SetPrimaryPolicy():set_primary_policy()tohierarchy_commands.rs -
Esys_ChangePPS():change_pps()tohierarchy_commands.rs -
Esys_ChangeEPS():change_eps()tohierarchy_commands.rs -
Esys_DictionaryAttackLockReset():dictionary_attack_lock_reset()todictionary_attack_functions.rs -
Esys_DictionaryAttackParameters():dictionary_attack_parameter()todictionary_attack_functions.rs -
Esys_PP_Commands():pp_commands()tomiscellaneous_management_functions.rs -
Esys_SetAlgorithmSet():set_algorithm_set()tomiscellaneous_management_functions.rs -
Esys_FieldUpgradeStart():field_upgrade_start()tofield_upgrade.rs -
Esys_FieldUpgradeData():field_upgrade_data()tofield_upgrade.rs -
Esys_FirmwareRead():firmware_read()tofield_upgrade.rs -
Esys_ReadClock():read_clock()toclocks_and_timers.rs -
Esys_ClockSet():clock_set()toclocks_and_timers.rs -
Esys_ClockRateAdjust():clock_rate_adjust()toclocks_and_timers.rs -
Esys_NV_SetBits():nv_set_bits()tonon_volatile_storage.rs -
Esys_NV_WriteLock():nv_write_lock()tonon_volatile_storage.rs -
Esys_NV_GlobalWriteLock():global_write_lock()tonon_volatile_storage.rs -
Esys_NV_ReadLock():nv_read_lock()to tonon_volatile_storage.rs -
Esys_NV_ChangeAuth():nv_change_auth()to tonon_volatile_storage.rs -
Esys_NV_Certify():nv_certify()tonon_volatile_storage.rs -
Esys_ACT_SetTimeout():act_set_timeout()toauthenticated_countdown_timer.rs -
Esys_AC_GetCapability():get_capability()toattached_components.rs -
Esys_AC_Send():ac_send()toattached_components.rs -
Esys_Policy_AC_SendSelect():policy_ac_send_select()toattached_components.rs
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing command implementations in the referenced Rust modules and comparing the unchecked commands with the TCG ESAPI and TPM 2.0 specifications. Focus on testing.rs, symmetric_primitives.rs, hash_hmac_event_sequences.rs, dictionary_attack_functions.rs, miscellaneous_management_functions.rs, field_upgrade.rs, authenticated_countdown_timer.rs, and attached_components.rs. Done means implementing every remaining non-deprecated command while excluding *_Async and *_Finish functions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100