Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" <jiewen.yao@intel.com> Reviewed-by: "Dong, Guo" <guo.dong@intel.com> Reviewed-by: "Long, Qin" <qin.long@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16548 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			975 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			975 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  This library is used by other modules to send TPM2 command.
 | 
						|
 | 
						|
Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved. <BR>
 | 
						|
This program and the accompanying materials
 | 
						|
are licensed and made available under the terms and conditions of the BSD License
 | 
						|
which accompanies this distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _TPM2_COMMAND_LIB_H_
 | 
						|
#define _TPM2_COMMAND_LIB_H_
 | 
						|
 | 
						|
#include <IndustryStandard/Tpm20.h>
 | 
						|
 | 
						|
/**
 | 
						|
  This command starts a hash or an Event sequence.
 | 
						|
  If hashAlg is an implemented hash, then a hash sequence is started.
 | 
						|
  If hashAlg is TPM_ALG_NULL, then an Event sequence is started.
 | 
						|
 | 
						|
  @param[in]  HashAlg           The hash algorithm to use for the hash sequence
 | 
						|
                                An Event sequence starts if this is TPM_ALG_NULL.
 | 
						|
  @param[out] SequenceHandle    A handle to reference the sequence
 | 
						|
 
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2HashSequenceStart (
 | 
						|
  IN TPMI_ALG_HASH   HashAlg,
 | 
						|
  OUT TPMI_DH_OBJECT *SequenceHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to add data to a hash or HMAC sequence.
 | 
						|
  The amount of data in buffer may be any size up to the limits of the TPM.
 | 
						|
  NOTE: In all TPM, a buffer size of 1,024 octets is allowed.
 | 
						|
 | 
						|
  @param[in] SequenceHandle    Handle for the sequence object
 | 
						|
  @param[in] Buffer            Data to be added to hash
 | 
						|
 
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2SequenceUpdate (
 | 
						|
  IN TPMI_DH_OBJECT   SequenceHandle,
 | 
						|
  IN TPM2B_MAX_BUFFER *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command adds the last part of data, if any, to an Event sequence and returns the result in a digest list.
 | 
						|
  If pcrHandle references a PCR and not TPM_RH_NULL, then the returned digest list is processed in
 | 
						|
  the same manner as the digest list input parameter to TPM2_PCR_Extend() with the pcrHandle in each
 | 
						|
  bank extended with the associated digest value.
 | 
						|
 | 
						|
  @param[in]  PcrHandle         PCR to be extended with the Event data
 | 
						|
  @param[in]  SequenceHandle    Authorization for the sequence
 | 
						|
  @param[in]  Buffer            Data to be added to the Event
 | 
						|
  @param[out] Results           List of digests computed for the PCR
 | 
						|
 
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2EventSequenceComplete (
 | 
						|
  IN TPMI_DH_PCR         PcrHandle,
 | 
						|
  IN TPMI_DH_OBJECT      SequenceHandle,
 | 
						|
  IN TPM2B_MAX_BUFFER    *Buffer,
 | 
						|
  OUT TPML_DIGEST_VALUES *Results
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command adds the last part of data, if any, to a hash/HMAC sequence and returns the result.
 | 
						|
 | 
						|
  @param[in]  SequenceHandle    Authorization for the sequence
 | 
						|
  @param[in]  Buffer            Data to be added to the hash/HMAC
 | 
						|
  @param[out] Result            The returned HMAC or digest in a sized buffer
 | 
						|
 
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2SequenceComplete (
 | 
						|
  IN TPMI_DH_OBJECT      SequenceHandle,
 | 
						|
  IN TPM2B_MAX_BUFFER    *Buffer,
 | 
						|
  OUT TPM2B_DIGEST       *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Send Startup command to TPM2.
 | 
						|
 | 
						|
  @param[in] StartupType           TPM_SU_CLEAR or TPM_SU_STATE
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2Startup (
 | 
						|
  IN      TPM_SU             StartupType
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Send Shutdown command to TPM2.
 | 
						|
 | 
						|
  @param[in] ShutdownType           TPM_SU_CLEAR or TPM_SU_STATE.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2Shutdown (
 | 
						|
  IN      TPM_SU             ShutdownType
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command causes the TPM to perform a test of its capabilities.
 | 
						|
  If the fullTest is YES, the TPM will test all functions.
 | 
						|
  If fullTest = NO, the TPM will only test those functions that have not previously been tested.
 | 
						|
 | 
						|
  @param[in] FullTest    YES if full test to be performed
 | 
						|
                         NO if only test of untested functions required
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2SelfTest (
 | 
						|
  IN TPMI_YES_NO          FullTest
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command allows setting of the authorization policy for the platform hierarchy (platformPolicy), the
 | 
						|
  storage hierarchy (ownerPolicy), and and the endorsement hierarchy (endorsementPolicy).
 | 
						|
 | 
						|
  @param[in]  AuthHandle            TPM_RH_ENDORSEMENT, TPM_RH_OWNER or TPM_RH_PLATFORM+{PP} parameters to be validated
 | 
						|
  @param[in]  AuthSession           Auth Session context
 | 
						|
  @param[in]  AuthPolicy            An authorization policy hash
 | 
						|
  @param[in]  HashAlg               The hash algorithm to use for the policy
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2SetPrimaryPolicy (
 | 
						|
  IN  TPMI_RH_HIERARCHY_AUTH    AuthHandle,
 | 
						|
  IN  TPMS_AUTH_COMMAND         *AuthSession,
 | 
						|
  IN  TPM2B_DIGEST              *AuthPolicy,
 | 
						|
  IN  TPMI_ALG_HASH             HashAlg
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command removes all TPM context associated with a specific Owner.
 | 
						|
 | 
						|
  @param[in] AuthHandle        TPM_RH_LOCKOUT or TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in] AuthSession       Auth Session context
 | 
						|
 
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2Clear (
 | 
						|
  IN TPMI_RH_CLEAR             AuthHandle,
 | 
						|
  IN TPMS_AUTH_COMMAND         *AuthSession OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Disables and enables the execution of TPM2_Clear().
 | 
						|
 | 
						|
  @param[in] AuthHandle        TPM_RH_LOCKOUT or TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in] AuthSession       Auth Session context
 | 
						|
  @param[in] Disable           YES if the disableOwnerClear flag is to be SET,
 | 
						|
                               NO if the flag is to be CLEAR.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2ClearControl (
 | 
						|
  IN TPMI_RH_CLEAR             AuthHandle,
 | 
						|
  IN TPMS_AUTH_COMMAND         *AuthSession, OPTIONAL
 | 
						|
  IN TPMI_YES_NO               Disable
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command allows the authorization secret for a hierarchy or lockout to be changed using the current
 | 
						|
  authorization value as the command authorization.
 | 
						|
 | 
						|
  @param[in] AuthHandle        TPM_RH_LOCKOUT, TPM_RH_ENDORSEMENT, TPM_RH_OWNER or TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in] AuthSession       Auth Session context
 | 
						|
  @param[in] NewAuth           New authorization secret
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2HierarchyChangeAuth (
 | 
						|
  IN TPMI_RH_HIERARCHY_AUTH    AuthHandle,
 | 
						|
  IN TPMS_AUTH_COMMAND         *AuthSession,
 | 
						|
  IN TPM2B_AUTH                *NewAuth
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This replaces the current EPS with a value from the RNG and sets the Endorsement hierarchy controls to
 | 
						|
  their default initialization values.
 | 
						|
 | 
						|
  @param[in] AuthHandle        TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in] AuthSession       Auth Session context
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2ChangeEPS (
 | 
						|
  IN TPMI_RH_PLATFORM          AuthHandle,
 | 
						|
  IN TPMS_AUTH_COMMAND         *AuthSession
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This replaces the current PPS with a value from the RNG and sets platformPolicy to the default
 | 
						|
  initialization value (the Empty Buffer).
 | 
						|
 | 
						|
  @param[in] AuthHandle        TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in] AuthSession       Auth Session context
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2ChangePPS (
 | 
						|
  IN TPMI_RH_PLATFORM          AuthHandle,
 | 
						|
  IN TPMS_AUTH_COMMAND         *AuthSession
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command enables and disables use of a hierarchy.
 | 
						|
 | 
						|
  @param[in] AuthHandle        TPM_RH_ENDORSEMENT, TPM_RH_OWNER or TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in] AuthSession       Auth Session context
 | 
						|
  @param[in] Hierarchy         Hierarchy of the enable being modified
 | 
						|
  @param[in] State             YES if the enable should be SET,
 | 
						|
                               NO if the enable should be CLEAR
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2HierarchyControl (
 | 
						|
  IN TPMI_RH_HIERARCHY         AuthHandle,
 | 
						|
  IN TPMS_AUTH_COMMAND         *AuthSession,
 | 
						|
  IN TPMI_RH_HIERARCHY         Hierarchy,
 | 
						|
  IN TPMI_YES_NO               State
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command cancels the effect of a TPM lockout due to a number of successive authorization failures.
 | 
						|
  If this command is properly authorized, the lockout counter is set to zero.
 | 
						|
 | 
						|
  @param[in]  LockHandle            LockHandle
 | 
						|
  @param[in]  AuthSession           Auth Session context
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2DictionaryAttackLockReset (
 | 
						|
  IN  TPMI_RH_LOCKOUT           LockHandle,
 | 
						|
  IN  TPMS_AUTH_COMMAND         *AuthSession
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command cancels the effect of a TPM lockout due to a number of successive authorization failures.
 | 
						|
  If this command is properly authorized, the lockout counter is set to zero.
 | 
						|
 | 
						|
  @param[in]  LockHandle            LockHandle
 | 
						|
  @param[in]  AuthSession           Auth Session context
 | 
						|
  @param[in]  NewMaxTries           Count of authorization failures before the lockout is imposed
 | 
						|
  @param[in]  NewRecoveryTime       Time in seconds before the authorization failure count is automatically decremented
 | 
						|
  @param[in]  LockoutRecovery       Time in seconds after a lockoutAuth failure before use of lockoutAuth is allowed
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2DictionaryAttackParameters (
 | 
						|
  IN  TPMI_RH_LOCKOUT           LockHandle,
 | 
						|
  IN  TPMS_AUTH_COMMAND         *AuthSession,
 | 
						|
  IN  UINT32                    NewMaxTries,
 | 
						|
  IN  UINT32                    NewRecoveryTime,
 | 
						|
  IN  UINT32                    LockoutRecovery
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to read the public area and Name of an NV Index.
 | 
						|
 | 
						|
  @param[in]  NvIndex            The NV Index.
 | 
						|
  @param[out] NvPublic           The public area of the index.
 | 
						|
  @param[out] NvName             The Name of the nvIndex.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvReadPublic (
 | 
						|
  IN      TPMI_RH_NV_INDEX          NvIndex,
 | 
						|
  OUT     TPM2B_NV_PUBLIC           *NvPublic,
 | 
						|
  OUT     TPM2B_NAME                *NvName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command defines the attributes of an NV Index and causes the TPM to
 | 
						|
  reserve space to hold the data associated with the index.
 | 
						|
  If a definition already exists at the index, the TPM will return TPM_RC_NV_DEFINED.
 | 
						|
 | 
						|
  @param[in]  AuthHandle         TPM_RH_OWNER or TPM_RH_PLATFORM+{PP}.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
  @param[in]  Auth               The authorization data.
 | 
						|
  @param[in]  NvPublic           The public area of the index.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_ALREADY_STARTED    The command was returned successfully, but NvIndex is already defined.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvDefineSpace (
 | 
						|
  IN      TPMI_RH_PROVISION         AuthHandle,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession, OPTIONAL
 | 
						|
  IN      TPM2B_AUTH                *Auth,
 | 
						|
  IN      TPM2B_NV_PUBLIC           *NvPublic
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command removes an index from the TPM.
 | 
						|
 | 
						|
  @param[in]  AuthHandle         TPM_RH_OWNER or TPM_RH_PLATFORM+{PP}.
 | 
						|
  @param[in]  NvIndex            The NV Index.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_NOT_FOUND          The command was returned successfully, but NvIndex is not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvUndefineSpace (
 | 
						|
  IN      TPMI_RH_PROVISION         AuthHandle,
 | 
						|
  IN      TPMI_RH_NV_INDEX          NvIndex,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command reads a value from an area in NV memory previously defined by TPM2_NV_DefineSpace().
 | 
						|
 | 
						|
  @param[in]     AuthHandle         the handle indicating the source of the authorization value.
 | 
						|
  @param[in]     NvIndex            The index to be read.
 | 
						|
  @param[in]     AuthSession        Auth Session context
 | 
						|
  @param[in]     Size               Number of bytes to read.
 | 
						|
  @param[in]     Offset             Byte offset into the area.
 | 
						|
  @param[in,out] OutData            The data read.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_NOT_FOUND          The command was returned successfully, but NvIndex is not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvRead (
 | 
						|
  IN      TPMI_RH_NV_AUTH           AuthHandle,
 | 
						|
  IN      TPMI_RH_NV_INDEX          NvIndex,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession, OPTIONAL
 | 
						|
  IN      UINT16                    Size,
 | 
						|
  IN      UINT16                    Offset,
 | 
						|
  IN OUT  TPM2B_MAX_BUFFER          *OutData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command writes a value to an area in NV memory that was previously defined by TPM2_NV_DefineSpace().
 | 
						|
 | 
						|
  @param[in]  AuthHandle         the handle indicating the source of the authorization value.
 | 
						|
  @param[in]  NvIndex            The NV Index of the area to write.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
  @param[in]  InData             The data to write.
 | 
						|
  @param[in]  Offset             The offset into the NV Area.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_NOT_FOUND          The command was returned successfully, but NvIndex is not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvWrite (
 | 
						|
  IN      TPMI_RH_NV_AUTH           AuthHandle,
 | 
						|
  IN      TPMI_RH_NV_INDEX          NvIndex,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession, OPTIONAL
 | 
						|
  IN      TPM2B_MAX_BUFFER          *InData,
 | 
						|
  IN      UINT16                    Offset
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command may be used to prevent further reads of the Index until the next TPM2_Startup (TPM_SU_CLEAR).
 | 
						|
 | 
						|
  @param[in]  AuthHandle         the handle indicating the source of the authorization value.
 | 
						|
  @param[in]  NvIndex            The NV Index of the area to lock.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_NOT_FOUND          The command was returned successfully, but NvIndex is not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvReadLock (
 | 
						|
  IN      TPMI_RH_NV_AUTH           AuthHandle,
 | 
						|
  IN      TPMI_RH_NV_INDEX          NvIndex,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command may be used to inhibit further writes of the Index.
 | 
						|
 | 
						|
  @param[in]  AuthHandle         the handle indicating the source of the authorization value.
 | 
						|
  @param[in]  NvIndex            The NV Index of the area to lock.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_NOT_FOUND          The command was returned successfully, but NvIndex is not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvWriteLock (
 | 
						|
  IN      TPMI_RH_NV_AUTH           AuthHandle,
 | 
						|
  IN      TPMI_RH_NV_INDEX          NvIndex,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The command will SET TPMA_NV_WRITELOCKED for all indexes that have their TPMA_NV_GLOBALLOCK attribute SET.
 | 
						|
 | 
						|
  @param[in]  AuthHandle         TPM_RH_OWNER or TPM_RH_PLATFORM+{PP}.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
  @retval EFI_NOT_FOUND          The command was returned successfully, but NvIndex is not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2NvGlobalWriteLock (
 | 
						|
  IN      TPMI_RH_PROVISION         AuthHandle,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to cause an update to the indicated PCR.
 | 
						|
  The digests parameter contains one or more tagged digest value identified by an algorithm ID.
 | 
						|
  For each digest, the PCR associated with pcrHandle is Extended into the bank identified by the tag (hashAlg).
 | 
						|
 | 
						|
  @param[in] PcrHandle   Handle of the PCR
 | 
						|
  @param[in] Digests     List of tagged digest values to be extended
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PcrExtend (
 | 
						|
  IN      TPMI_DH_PCR               PcrHandle,
 | 
						|
  IN      TPML_DIGEST_VALUES        *Digests
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to cause an update to the indicated PCR.
 | 
						|
  The data in eventData is hashed using the hash algorithm associated with each bank in which the
 | 
						|
  indicated PCR has been allocated. After the data is hashed, the digests list is returned. If the pcrHandle
 | 
						|
  references an implemented PCR and not TPM_ALG_NULL, digests list is processed as in
 | 
						|
  TPM2_PCR_Extend().
 | 
						|
  A TPM shall support an Event.size of zero through 1,024 inclusive.
 | 
						|
 | 
						|
  @param[in]  PcrHandle   Handle of the PCR
 | 
						|
  @param[in]  EventData   Event data in sized buffer
 | 
						|
  @param[out] Digests     List of digest
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PcrEvent (
 | 
						|
  IN      TPMI_DH_PCR               PcrHandle,
 | 
						|
  IN      TPM2B_EVENT               *EventData,
 | 
						|
     OUT  TPML_DIGEST_VALUES        *Digests
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the values of all PCR specified in pcrSelect.
 | 
						|
 | 
						|
  @param[in]  PcrSelectionIn     The selection of PCR to read.
 | 
						|
  @param[out] PcrUpdateCounter   The current value of the PCR update counter.
 | 
						|
  @param[out] PcrSelectionOut    The PCR in the returned list.
 | 
						|
  @param[out] PcrValues          The contents of the PCR indicated in pcrSelect.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PcrRead (
 | 
						|
  IN      TPML_PCR_SELECTION        *PcrSelectionIn,
 | 
						|
     OUT  UINT32                    *PcrUpdateCounter,
 | 
						|
     OUT  TPML_PCR_SELECTION        *PcrSelectionOut,
 | 
						|
     OUT  TPML_DIGEST               *PcrValues
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to set the desired PCR allocation of PCR and algorithms.
 | 
						|
 | 
						|
  @param[in]  AuthHandle         TPM_RH_PLATFORM+{PP}
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
  @param[in]  PcrAllocation      The requested allocation
 | 
						|
  @param[out] AllocationSuccess  YES if the allocation succeeded
 | 
						|
  @param[out] MaxPCR             maximum number of PCR that may be in a bank
 | 
						|
  @param[out] SizeNeeded         number of octets required to satisfy the request
 | 
						|
  @param[out] SizeAvailable      Number of octets available. Computed before the allocation
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PcrAllocate (
 | 
						|
  IN  TPMI_RH_PLATFORM          AuthHandle,
 | 
						|
  IN  TPMS_AUTH_COMMAND         *AuthSession,
 | 
						|
  IN  TPML_PCR_SELECTION        *PcrAllocation,
 | 
						|
  OUT TPMI_YES_NO               *AllocationSuccess,
 | 
						|
  OUT UINT32                    *MaxPCR,
 | 
						|
  OUT UINT32                    *SizeNeeded,
 | 
						|
  OUT UINT32                    *SizeAvailable
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns various information regarding the TPM and its current state.
 | 
						|
 | 
						|
  The capability parameter determines the category of data returned. The property parameter 
 | 
						|
  selects the first value of the selected category to be returned. If there is no property 
 | 
						|
  that corresponds to the value of property, the next higher value is returned, if it exists.
 | 
						|
  The moreData parameter will have a value of YES if there are more values of the requested 
 | 
						|
  type that were not returned.
 | 
						|
  If no next capability exists, the TPM will return a zero-length list and moreData will have 
 | 
						|
  a value of NO.
 | 
						|
 | 
						|
  NOTE: 
 | 
						|
  To simplify this function, leave returned CapabilityData for caller to unpack since there are 
 | 
						|
  many capability categories and only few categories will be used in firmware. It means the caller
 | 
						|
  need swap the byte order for the feilds in CapabilityData.
 | 
						|
 | 
						|
  @param[in]  Capability         Group selection; determines the format of the response.
 | 
						|
  @param[in]  Property           Further definition of information. 
 | 
						|
  @param[in]  PropertyCount      Number of properties of the indicated type to return.
 | 
						|
  @param[out] MoreData           Flag to indicate if there are more values of this type.
 | 
						|
  @param[out] CapabilityData     The capability data.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapability (
 | 
						|
  IN      TPM_CAP                   Capability,
 | 
						|
  IN      UINT32                    Property,
 | 
						|
  IN      UINT32                    PropertyCount,
 | 
						|
  OUT     TPMI_YES_NO               *MoreData,
 | 
						|
  OUT     TPMS_CAPABILITY_DATA      *CapabilityData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM Family.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the Family.
 | 
						|
 | 
						|
  @param[out] Family             The Family of TPM. (a 4-octet character string)
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityFamily (
 | 
						|
  OUT     CHAR8                     *Family
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM manufacture ID.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the TPM manufacture ID.
 | 
						|
 | 
						|
  @param[out] ManufactureId      The manufacture ID of TPM.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityManufactureID (
 | 
						|
  OUT     UINT32                    *ManufactureId
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM FirmwareVersion.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the TPM FirmwareVersion.
 | 
						|
 | 
						|
  @param[out] FirmwareVersion1   The FirmwareVersion1.
 | 
						|
  @param[out] FirmwareVersion2   The FirmwareVersion2.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityFirmwareVersion (
 | 
						|
  OUT     UINT32                    *FirmwareVersion1,
 | 
						|
  OUT     UINT32                    *FirmwareVersion2
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of the maximum value for commandSize and responseSize in a command.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the max command size and response size
 | 
						|
 | 
						|
  @param[out] MaxCommandSize     The maximum value for commandSize in a command.
 | 
						|
  @param[out] MaxResponseSize    The maximum value for responseSize in a command.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityMaxCommandResponseSize (
 | 
						|
  OUT UINT32                    *MaxCommandSize,
 | 
						|
  OUT UINT32                    *MaxResponseSize
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns Returns a list of TPMS_ALG_PROPERTIES. Each entry is an
 | 
						|
  algorithm ID and a set of properties of the algorithm. 
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the list.
 | 
						|
 | 
						|
  @param[out] AlgList      List of algorithm.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilitySupportedAlg (
 | 
						|
  OUT TPML_ALG_PROPERTY      *AlgList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM LockoutCounter.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the LockoutCounter.
 | 
						|
 | 
						|
  @param[out] LockoutCounter     The LockoutCounter of TPM.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityLockoutCounter (
 | 
						|
  OUT     UINT32                    *LockoutCounter
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM LockoutInterval.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the LockoutInterval.
 | 
						|
 | 
						|
  @param[out] LockoutInterval    The LockoutInterval of TPM.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityLockoutInterval (
 | 
						|
  OUT     UINT32                    *LockoutInterval
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM InputBufferSize.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the InputBufferSize.
 | 
						|
 | 
						|
  @param[out] InputBufferSize    The InputBufferSize of TPM.
 | 
						|
                                 the maximum size of a parameter (typically, a TPM2B_MAX_BUFFER)
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityInputBufferSize (
 | 
						|
  OUT     UINT32                    *InputBufferSize
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM PCRs.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the PcrSelection.
 | 
						|
 | 
						|
  @param[out] Pcrs    The Pcr Selection
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityPcrs (
 | 
						|
  OUT TPML_PCR_SELECTION      *Pcrs
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the information of TPM AlgorithmSet.
 | 
						|
 | 
						|
  This function parse the value got from TPM2_GetCapability and return the AlgorithmSet.
 | 
						|
 | 
						|
  @param[out] AlgorithmSet    The AlgorithmSet of TPM.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2GetCapabilityAlgorithmSet (
 | 
						|
  OUT     UINT32      *AlgorithmSet
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to check to see if specific combinations of algorithm parameters are supported.
 | 
						|
 | 
						|
  @param[in]  Parameters              Algorithm parameters to be validated
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2TestParms (
 | 
						|
  IN  TPMT_PUBLIC_PARMS           *Parameters
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command allows the platform to change the set of algorithms that are used by the TPM.
 | 
						|
  The algorithmSet setting is a vendor-dependent value.
 | 
						|
 | 
						|
  @param[in]  AuthHandle              TPM_RH_PLATFORM
 | 
						|
  @param[in]  AuthSession             Auth Session context
 | 
						|
  @param[in]  AlgorithmSet            A TPM vendor-dependent value indicating the
 | 
						|
                                      algorithm set selection
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR Unexpected device behavior.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2SetAlgorithmSet (
 | 
						|
  IN  TPMI_RH_PLATFORM          AuthHandle,
 | 
						|
  IN  TPMS_AUTH_COMMAND         *AuthSession,
 | 
						|
  IN  UINT32                    AlgorithmSet
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command is used to start an authorization session using alternative methods of
 | 
						|
  establishing the session key (sessionKey) that is used for authorization and encrypting value.
 | 
						|
 | 
						|
  @param[in]  TpmKey             Handle of a loaded decrypt key used to encrypt salt.
 | 
						|
  @param[in]  Bind               Entity providing the authValue.
 | 
						|
  @param[in]  NonceCaller        Initial nonceCaller, sets nonce size for the session.
 | 
						|
  @param[in]  Salt               Value encrypted according to the type of tpmKey.
 | 
						|
  @param[in]  SessionType        Indicates the type of the session.
 | 
						|
  @param[in]  Symmetric          The algorithm and key size for parameter encryption.
 | 
						|
  @param[in]  AuthHash           Hash algorithm to use for the session.
 | 
						|
  @param[out] SessionHandle      Handle for the newly created session.
 | 
						|
  @param[out] NonceTPM           The initial nonce from the TPM, used in the computation of the sessionKey.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2StartAuthSession (
 | 
						|
  IN      TPMI_DH_OBJECT            TpmKey,
 | 
						|
  IN      TPMI_DH_ENTITY            Bind,
 | 
						|
  IN      TPM2B_NONCE               *NonceCaller,
 | 
						|
  IN      TPM2B_ENCRYPTED_SECRET    *Salt,
 | 
						|
  IN      TPM_SE                    SessionType,
 | 
						|
  IN      TPMT_SYM_DEF              *Symmetric,
 | 
						|
  IN      TPMI_ALG_HASH             AuthHash,
 | 
						|
     OUT  TPMI_SH_AUTH_SESSION      *SessionHandle,
 | 
						|
     OUT  TPM2B_NONCE               *NonceTPM
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command causes all context associated with a loaded object or session to be removed from TPM memory.
 | 
						|
 | 
						|
  @param[in]  FlushHandle        The handle of the item to flush.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2FlushContext (
 | 
						|
  IN      TPMI_DH_CONTEXT           FlushHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command includes a secret-based authorization to a policy.
 | 
						|
  The caller proves knowledge of the secret value using an authorization
 | 
						|
  session using the authValue associated with authHandle.
 | 
						|
  
 | 
						|
  @param[in]  AuthHandle         Handle for an entity providing the authorization
 | 
						|
  @param[in]  PolicySession      Handle for the policy session being extended.
 | 
						|
  @param[in]  AuthSession        Auth Session context
 | 
						|
  @param[in]  NonceTPM           The policy nonce for the session.
 | 
						|
  @param[in]  CpHashA            Digest of the command parameters to which this authorization is limited.
 | 
						|
  @param[in]  PolicyRef          A reference to a policy relating to the authorization.
 | 
						|
  @param[in]  Expiration         Time when authorization will expire, measured in seconds from the time that nonceTPM was generated.
 | 
						|
  @param[out] Timeout            Time value used to indicate to the TPM when the ticket expires.
 | 
						|
  @param[out] PolicyTicket       A ticket that includes a value indicating when the authorization expires.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PolicySecret (
 | 
						|
  IN      TPMI_DH_ENTITY            AuthHandle,
 | 
						|
  IN      TPMI_SH_POLICY            PolicySession,
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSession, OPTIONAL
 | 
						|
  IN      TPM2B_NONCE               *NonceTPM,
 | 
						|
  IN      TPM2B_DIGEST              *CpHashA,
 | 
						|
  IN      TPM2B_NONCE               *PolicyRef,
 | 
						|
  IN      INT32                     Expiration,
 | 
						|
  OUT     TPM2B_TIMEOUT             *Timeout,
 | 
						|
  OUT     TPMT_TK_AUTH              *PolicyTicket
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command allows options in authorizations without requiring that the TPM evaluate all of the options.
 | 
						|
  If a policy may be satisfied by different sets of conditions, the TPM need only evaluate one set that
 | 
						|
  satisfies the policy. This command will indicate that one of the required sets of conditions has been
 | 
						|
  satisfied.
 | 
						|
 | 
						|
  @param[in] PolicySession      Handle for the policy session being extended.
 | 
						|
  @param[in] HashList           the list of hashes to check for a match.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PolicyOR (
 | 
						|
  IN TPMI_SH_POLICY           PolicySession,
 | 
						|
  IN TPML_DIGEST              *HashList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command indicates that the authorization will be limited to a specific command code.
 | 
						|
 | 
						|
  @param[in]  PolicySession      Handle for the policy session being extended.
 | 
						|
  @param[in]  Code               The allowed commandCode.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PolicyCommandCode (
 | 
						|
  IN      TPMI_SH_POLICY            PolicySession,
 | 
						|
  IN      TPM_CC                    Code
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This command returns the current policyDigest of the session. This command allows the TPM
 | 
						|
  to be used to perform the actions required to precompute the authPolicy for an object.
 | 
						|
 | 
						|
  @param[in]  PolicySession      Handle for the policy session.
 | 
						|
  @param[out] PolicyHash         the current value of the policyHash of policySession.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            Operation completed successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
Tpm2PolicyGetDigest (
 | 
						|
  IN      TPMI_SH_POLICY            PolicySession,
 | 
						|
     OUT  TPM2B_DIGEST              *PolicyHash
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Help function
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  Copy AuthSessionIn to TPM2 command buffer.
 | 
						|
 | 
						|
  @param [in]  AuthSessionIn   Input AuthSession data
 | 
						|
  @param [out] AuthSessionOut  Output AuthSession data in TPM2 command buffer
 | 
						|
 | 
						|
  @return AuthSession size
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
EFIAPI
 | 
						|
CopyAuthSessionCommand (
 | 
						|
  IN      TPMS_AUTH_COMMAND         *AuthSessionIn, OPTIONAL
 | 
						|
  OUT     UINT8                     *AuthSessionOut
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Copy AuthSessionIn from TPM2 response buffer.
 | 
						|
 | 
						|
  @param [in]  AuthSessionIn   Input AuthSession data in TPM2 response buffer
 | 
						|
  @param [out] AuthSessionOut  Output AuthSession data
 | 
						|
 | 
						|
  @return AuthSession size
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
EFIAPI
 | 
						|
CopyAuthSessionResponse (
 | 
						|
  IN      UINT8                      *AuthSessionIn,
 | 
						|
  OUT     TPMS_AUTH_RESPONSE         *AuthSessionOut OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Return size of digest.
 | 
						|
 | 
						|
  @param[in] HashAlgo  Hash algorithm
 | 
						|
 | 
						|
  @return size of digest
 | 
						|
**/
 | 
						|
UINT16
 | 
						|
EFIAPI
 | 
						|
GetHashSizeFromAlgo (
 | 
						|
  IN TPMI_ALG_HASH    HashAlgo
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |