summaryrefslogtreecommitdiff
path: root/src/include/tss/tspi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/tss/tspi.h')
-rw-r--r--src/include/tss/tspi.h1198
1 files changed, 1198 insertions, 0 deletions
diff --git a/src/include/tss/tspi.h b/src/include/tss/tspi.h
new file mode 100644
index 0000000..1d188f7
--- /dev/null
+++ b/src/include/tss/tspi.h
@@ -0,0 +1,1198 @@
+#if !defined(_TSPI_H_)
+#define _TSPI_H_
+
+#include <tss/tss_defines.h>
+#include <tss/tss_typedef.h>
+#include <tss/tss_structs.h>
+#include <tss/tss_error.h>
+#include <tss/tss_error_basics.h>
+
+#if !defined( TSPICALL )
+ #if !defined(WIN32) || defined (TSP_STATIC)
+ // Linux, or a Win32 static library
+ #define TSPICALL extern TSS_RESULT
+ #elif defined (TSPDLL_EXPORTS)
+ // Win32 DLL build
+ #define TSPICALL extern __declspec(dllexport) TSS_RESULT
+ #else
+ // Win32 DLL import
+ #define TSPICALL extern __declspec(dllimport) TSS_RESULT
+ #endif
+#endif /* TSPICALL */
+
+#if defined ( __cplusplus )
+extern "C" {
+#endif /* __cplusplus */
+
+
+// Class-independent ASN.1 conversion functions
+TSPICALL Tspi_EncodeDER_TssBlob
+(
+ UINT32 rawBlobSize, // in
+ BYTE* rawBlob, // in
+ UINT32 blobType, // in
+ UINT32* derBlobSize, // in, out
+ BYTE* derBlob // out
+);
+
+TSPICALL Tspi_DecodeBER_TssBlob
+(
+ UINT32 berBlobSize, // in
+ BYTE* berBlob, // in
+ UINT32* blobType, // out
+ UINT32* rawBlobSize, // in, out
+ BYTE* rawBlob // out
+);
+
+
+
+// Common Methods
+TSPICALL Tspi_SetAttribUint32
+(
+ TSS_HOBJECT hObject, // in
+ TSS_FLAG attribFlag, // in
+ TSS_FLAG subFlag, // in
+ UINT32 ulAttrib // in
+);
+
+TSPICALL Tspi_GetAttribUint32
+(
+ TSS_HOBJECT hObject, // in
+ TSS_FLAG attribFlag, // in
+ TSS_FLAG subFlag, // in
+ UINT32* pulAttrib // out
+);
+
+TSPICALL Tspi_SetAttribData
+(
+ TSS_HOBJECT hObject, // in
+ TSS_FLAG attribFlag, // in
+ TSS_FLAG subFlag, // in
+ UINT32 ulAttribDataSize, // in
+ BYTE* rgbAttribData // in
+);
+
+TSPICALL Tspi_GetAttribData
+(
+ TSS_HOBJECT hObject, // in
+ TSS_FLAG attribFlag, // in
+ TSS_FLAG subFlag, // in
+ UINT32* pulAttribDataSize, // out
+ BYTE** prgbAttribData // out
+);
+
+TSPICALL Tspi_ChangeAuth
+(
+ TSS_HOBJECT hObjectToChange, // in
+ TSS_HOBJECT hParentObject, // in
+ TSS_HPOLICY hNewPolicy // in
+);
+
+TSPICALL Tspi_ChangeAuthAsym
+(
+ TSS_HOBJECT hObjectToChange, // in
+ TSS_HOBJECT hParentObject, // in
+ TSS_HKEY hIdentKey, // in
+ TSS_HPOLICY hNewPolicy // in
+);
+
+TSPICALL Tspi_GetPolicyObject
+(
+ TSS_HOBJECT hObject, // in
+ TSS_FLAG policyType, // in
+ TSS_HPOLICY* phPolicy // out
+);
+
+
+
+// Tspi_Context Class Definitions
+TSPICALL Tspi_Context_Create
+(
+ TSS_HCONTEXT* phContext // out
+);
+
+TSPICALL Tspi_Context_Close
+(
+ TSS_HCONTEXT hContext // in
+);
+
+TSPICALL Tspi_Context_Connect
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_UNICODE* wszDestination // in
+);
+
+TSPICALL Tspi_Context_FreeMemory
+(
+ TSS_HCONTEXT hContext, // in
+ BYTE* rgbMemory // in
+);
+
+TSPICALL Tspi_Context_GetDefaultPolicy
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HPOLICY* phPolicy // out
+);
+
+TSPICALL Tspi_Context_CreateObject
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG objectType, // in
+ TSS_FLAG initFlags, // in
+ TSS_HOBJECT* phObject // out
+);
+
+TSPICALL Tspi_Context_CloseObject
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HOBJECT hObject // in
+);
+
+TSPICALL Tspi_Context_GetCapability
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG capArea, // in
+ UINT32 ulSubCapLength, // in
+ BYTE* rgbSubCap, // in
+ UINT32* pulRespDataLength, // out
+ BYTE** prgbRespData // out
+);
+
+TSPICALL Tspi_Context_GetTpmObject
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HTPM* phTPM // out
+);
+
+TSPICALL Tspi_Context_SetTransEncryptionKey
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HKEY hKey // in
+);
+
+TSPICALL Tspi_Context_CloseSignTransport
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HKEY hSigningKey, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_Context_LoadKeyByBlob
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HKEY hUnwrappingKey, // in
+ UINT32 ulBlobLength, // in
+ BYTE* rgbBlobData, // in
+ TSS_HKEY* phKey // out
+);
+
+TSPICALL Tspi_Context_LoadKeyByUUID
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_UUID uuidData, // in
+ TSS_HKEY* phKey // out
+);
+
+TSPICALL Tspi_Context_RegisterKey
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_HKEY hKey, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_UUID uuidKey, // in
+ TSS_FLAG persistentStorageTypeParent, // in
+ TSS_UUID uuidParentKey // in
+);
+
+TSPICALL Tspi_Context_UnregisterKey
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_UUID uuidKey, // in
+ TSS_HKEY* phkey // out
+);
+
+TSPICALL Tspi_Context_GetKeyByUUID
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_UUID uuidData, // in
+ TSS_HKEY* phKey // out
+);
+
+TSPICALL Tspi_Context_GetKeyByPublicInfo
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_ALGORITHM_ID algID, // in
+ UINT32 ulPublicInfoLength, // in
+ BYTE* rgbPublicInfo, // in
+ TSS_HKEY* phKey // out
+);
+
+TSPICALL Tspi_Context_GetRegisteredKeysByUUID
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_UUID* pUuidData, // in
+ UINT32* pulKeyHierarchySize, // out
+ TSS_KM_KEYINFO** ppKeyHierarchy // out
+);
+
+TSPICALL Tspi_Context_GetRegisteredKeysByUUID2
+(
+ TSS_HCONTEXT hContext, // in
+ TSS_FLAG persistentStorageType, // in
+ TSS_UUID* pUuidData, // in
+ UINT32* pulKeyHierarchySize, // out
+ TSS_KM_KEYINFO2** ppKeyHierarchy // out
+);
+
+
+// Policy class definitions
+TSPICALL Tspi_Policy_SetSecret
+(
+ TSS_HPOLICY hPolicy, // in
+ TSS_FLAG secretMode, // in
+ UINT32 ulSecretLength, // in
+ BYTE* rgbSecret // in
+);
+
+TSPICALL Tspi_Policy_FlushSecret
+(
+ TSS_HPOLICY hPolicy // in
+);
+
+TSPICALL Tspi_Policy_AssignToObject
+(
+ TSS_HPOLICY hPolicy, // in
+ TSS_HOBJECT hObject // in
+);
+
+
+
+// TPM Class Definitions
+TSPICALL Tspi_TPM_KeyControlOwner
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKey, // in
+ UINT32 attribName, // in
+ TSS_BOOL attribValue, // in
+ TSS_UUID* pUuidData // out
+);
+
+TSPICALL Tspi_TPM_CreateEndorsementKey
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKey, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_TPM_CreateRevocableEndorsementKey
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKey, // in
+ TSS_VALIDATION* pValidationData, // in, out
+ UINT32* pulEkResetDataLength, // in, out
+ BYTE** rgbEkResetData // in, out
+);
+
+TSPICALL Tspi_TPM_RevokeEndorsementKey
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulEkResetDataLength, // in
+ BYTE* rgbEkResetData // in
+);
+
+TSPICALL Tspi_TPM_GetPubEndorsementKey
+(
+ TSS_HTPM hTPM, // in
+ TSS_BOOL fOwnerAuthorized, // in
+ TSS_VALIDATION* pValidationData, // in, out
+ TSS_HKEY* phEndorsementPubKey // out
+);
+
+TSPICALL Tspi_TPM_OwnerGetSRKPubKey
+(
+ TSS_HTPM hTPM, // in
+ UINT32* pulPubKeyLength, // out
+ BYTE** prgbPubKey // out
+);
+
+TSPICALL Tspi_TPM_TakeOwnership
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKeySRK, // in
+ TSS_HKEY hEndorsementPubKey // in
+);
+
+TSPICALL Tspi_TPM_ClearOwner
+(
+ TSS_HTPM hTPM, // in
+ TSS_BOOL fForcedClear // in
+);
+
+TSPICALL Tspi_TPM_CollateIdentityRequest
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKeySRK, // in
+ TSS_HKEY hCAPubKey, // in
+ UINT32 ulIdentityLabelLength, // in
+ BYTE* rgbIdentityLabelData, // in
+ TSS_HKEY hIdentityKey, // in
+ TSS_ALGORITHM_ID algID, // in
+ UINT32* pulTCPAIdentityReqLength, // out
+ BYTE** prgbTCPAIdentityReq // out
+);
+
+TSPICALL Tspi_TPM_ActivateIdentity
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hIdentKey, // in
+ UINT32 ulAsymCAContentsBlobLength, // in
+ BYTE* rgbAsymCAContentsBlob, // in
+ UINT32 ulSymCAAttestationBlobLength, // in
+ BYTE* rgbSymCAAttestationBlob, // in
+ UINT32* pulCredentialLength, // out
+ BYTE** prgbCredential // out
+);
+
+TSPICALL Tspi_TPM_CreateMaintenanceArchive
+(
+ TSS_HTPM hTPM, // in
+ TSS_BOOL fGenerateRndNumber, // in
+ UINT32* pulRndNumberLength, // out
+ BYTE** prgbRndNumber, // out
+ UINT32* pulArchiveDataLength, // out
+ BYTE** prgbArchiveData // out
+);
+
+TSPICALL Tspi_TPM_KillMaintenanceFeature
+(
+ TSS_HTPM hTPM // in
+);
+
+TSPICALL Tspi_TPM_LoadMaintenancePubKey
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hMaintenanceKey, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_TPM_CheckMaintenancePubKey
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hMaintenanceKey, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_TPM_SetOperatorAuth
+(
+ TSS_HTPM hTPM, // in
+ TSS_HPOLICY hOperatorPolicy // in
+);
+
+TSPICALL Tspi_TPM_SetStatus
+(
+ TSS_HTPM hTPM, // in
+ TSS_FLAG statusFlag, // in
+ TSS_BOOL fTpmState // in
+);
+
+TSPICALL Tspi_TPM_GetStatus
+(
+ TSS_HTPM hTPM, // in
+ TSS_FLAG statusFlag, // in
+ TSS_BOOL* pfTpmState // out
+);
+
+TSPICALL Tspi_TPM_GetCapability
+(
+ TSS_HTPM hTPM, // in
+ TSS_FLAG capArea, // in
+ UINT32 ulSubCapLength, // in
+ BYTE* rgbSubCap, // in
+ UINT32* pulRespDataLength, // out
+ BYTE** prgbRespData // out
+);
+
+TSPICALL Tspi_TPM_GetCapabilitySigned
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKey, // in
+ TSS_FLAG capArea, // in
+ UINT32 ulSubCapLength, // in
+ BYTE* rgbSubCap, // in
+ TSS_VALIDATION* pValidationData, // in, out
+ UINT32* pulRespDataLength, // out
+ BYTE** prgbRespData // out
+);
+
+TSPICALL Tspi_TPM_SelfTestFull
+(
+ TSS_HTPM hTPM // in
+);
+
+TSPICALL Tspi_TPM_CertifySelfTest
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKey, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_TPM_GetTestResult
+(
+ TSS_HTPM hTPM, // in
+ UINT32* pulTestResultLength, // out
+ BYTE** prgbTestResult // out
+);
+
+TSPICALL Tspi_TPM_GetRandom
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulRandomDataLength, // in
+ BYTE** prgbRandomData // out
+);
+
+TSPICALL Tspi_TPM_StirRandom
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulEntropyDataLength, // in
+ BYTE* rgbEntropyData // in
+);
+
+TSPICALL Tspi_TPM_GetEvent
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulPcrIndex, // in
+ UINT32 ulEventNumber, // in
+ TSS_PCR_EVENT* pPcrEvent // out
+);
+
+TSPICALL Tspi_TPM_GetEvents
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulPcrIndex, // in
+ UINT32 ulStartNumber, // in
+ UINT32* pulEventNumber, // in, out
+ TSS_PCR_EVENT** prgPcrEvents // out
+);
+
+TSPICALL Tspi_TPM_GetEventLog
+(
+ TSS_HTPM hTPM, // in
+ UINT32* pulEventNumber, // out
+ TSS_PCR_EVENT** prgPcrEvents // out
+);
+
+TSPICALL Tspi_TPM_Quote
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hIdentKey, // in
+ TSS_HPCRS hPcrComposite, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_TPM_Quote2
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hIdentKey, // in
+ TSS_BOOL fAddVersion, // in
+ TSS_HPCRS hPcrComposite, // in
+ TSS_VALIDATION* pValidationData, // in, out
+ UINT32* versionInfoSize, // out
+ BYTE** versionInfo // out
+);
+
+TSPICALL Tspi_TPM_PcrExtend
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulPcrIndex, // in
+ UINT32 ulPcrDataLength, // in
+ BYTE* pbPcrData, // in
+ TSS_PCR_EVENT* pPcrEvent, // in
+ UINT32* pulPcrValueLength, // out
+ BYTE** prgbPcrValue // out
+);
+
+TSPICALL Tspi_TPM_PcrRead
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulPcrIndex, // in
+ UINT32* pulPcrValueLength, // out
+ BYTE** prgbPcrValue // out
+);
+
+TSPICALL Tspi_TPM_PcrReset
+(
+ TSS_HTPM hTPM, // in
+ TSS_HPCRS hPcrComposite // in
+);
+
+TSPICALL Tspi_TPM_AuthorizeMigrationTicket
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hMigrationKey, // in
+ TSS_MIGRATE_SCHEME migrationScheme, // in
+ UINT32* pulMigTicketLength, // out
+ BYTE** prgbMigTicket // out
+);
+
+TSPICALL Tspi_TPM_CMKSetRestrictions
+(
+ TSS_HTPM hTPM, // in
+ TSS_CMK_DELEGATE CmkDelegate // in
+);
+
+TSPICALL Tspi_TPM_CMKApproveMA
+(
+ TSS_HTPM hTPM, // in
+ TSS_HMIGDATA hMaAuthData // in
+);
+
+TSPICALL Tspi_TPM_CMKCreateTicket
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hVerifyKey, // in
+ TSS_HMIGDATA hSigData // in
+);
+
+TSPICALL Tspi_TPM_ReadCounter
+(
+ TSS_HTPM hTPM, // in
+ UINT32* counterValue // out
+);
+
+TSPICALL Tspi_TPM_ReadCurrentTicks
+(
+ TSS_HTPM hTPM, // in
+ TPM_CURRENT_TICKS* tickCount // out
+);
+
+TSPICALL Tspi_TPM_DirWrite
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulDirIndex, // in
+ UINT32 ulDirDataLength, // in
+ BYTE* rgbDirData // in
+);
+
+TSPICALL Tspi_TPM_DirRead
+(
+ TSS_HTPM hTPM, // in
+ UINT32 ulDirIndex, // in
+ UINT32* pulDirDataLength, // out
+ BYTE** prgbDirData // out
+);
+
+TSPICALL Tspi_TPM_Delegate_AddFamily
+(
+ TSS_HTPM hTPM, // in, must not be NULL
+ BYTE bLabel, // in
+ TSS_HDELFAMILY* phFamily // out
+);
+
+TSPICALL Tspi_TPM_Delegate_GetFamily
+(
+ TSS_HTPM hTPM, // in, must not NULL
+ UINT32 ulFamilyID, // in
+ TSS_HDELFAMILY* phFamily // out
+);
+
+TSPICALL Tspi_TPM_Delegate_InvalidateFamily
+(
+ TSS_HTPM hTPM, // in, must not be NULL
+ TSS_HDELFAMILY hFamily // in
+);
+
+TSPICALL Tspi_TPM_Delegate_CreateDelegation
+(
+ TSS_HOBJECT hObject, // in
+ BYTE bLabel, // in
+ UINT32 ulFlags, // in
+ TSS_HPCRS hPcr, // in, may be NULL
+ TSS_HDELFAMILY hFamily, // in
+ TSS_HPOLICY hDelegation // in, out
+);
+
+TSPICALL Tspi_TPM_Delegate_CacheOwnerDelegation
+(
+ TSS_HTPM hTPM, // in, must not be NULL
+ TSS_HPOLICY hDelegation, // in, out
+ UINT32 ulIndex, // in
+ UINT32 ulFlags // in
+);
+
+TSPICALL Tspi_TPM_Delegate_UpdateVerificationCount
+(
+ TSS_HTPM hTPM, // in
+ TSS_HPOLICY hDelegation // in, out
+);
+
+TSPICALL Tspi_TPM_Delegate_VerifyDelegation
+(
+ TSS_HPOLICY hDelegation // in, out
+);
+
+TSPICALL Tspi_TPM_Delegate_ReadTables
+(
+ TSS_HCONTEXT hContext, // in
+ UINT32* pulFamilyTableSize, // out
+ TSS_FAMILY_TABLE_ENTRY** ppFamilyTable, // out
+ UINT32* pulDelegateTableSize, // out
+ TSS_DELEGATION_TABLE_ENTRY** ppDelegateTable // out
+);
+
+TSPICALL Tspi_TPM_DAA_JoinInit
+(
+ TSS_HTPM hTPM, // in
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ UINT32 daaCounter, // in
+ UINT32 issuerAuthPKsLength, // in
+ TSS_HKEY* issuerAuthPKs, // in
+ UINT32 issuerAuthPKSignaturesLength, // in
+ UINT32 issuerAuthPKSignaturesLength2, // in
+ BYTE** issuerAuthPKSignatures, // in
+ UINT32* capitalUprimeLength, // out
+ BYTE** capitalUprime, // out
+ TSS_DAA_IDENTITY_PROOF** identityProof, // out
+ UINT32* joinSessionLength, // out
+ BYTE** joinSession // out
+);
+
+TSPICALL Tspi_TPM_DAA_JoinCreateDaaPubKey
+(
+ TSS_HTPM hTPM, // in
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ UINT32 authenticationChallengeLength, // in
+ BYTE* authenticationChallenge, // in
+ UINT32 nonceIssuerLength, // in
+ BYTE* nonceIssuer, // in
+ UINT32 attributesPlatformLength, // in
+ UINT32 attributesPlatformLength2, // in
+ BYTE** attributesPlatform, // in
+ UINT32 joinSessionLength, // in
+ BYTE* joinSession, // in
+ TSS_DAA_CREDENTIAL_REQUEST** credentialRequest // out
+);
+
+TSPICALL Tspi_TPM_DAA_JoinStoreCredential
+(
+ TSS_HTPM hTPM, // in
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ TSS_DAA_CRED_ISSUER* credIssuer, // in
+ UINT32 joinSessionLength, // in
+ BYTE* joinSession // in
+);
+
+TSPICALL Tspi_TPM_DAA_Sign
+(
+ TSS_HTPM hTPM, // in
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ TSS_HDAA_ARA_KEY hARAKey, // in
+ TSS_DAA_SELECTED_ATTRIB* revealAttributes, // in
+ UINT32 verifierNonceLength, // in
+ BYTE* verifierNonce, // in
+ UINT32 verifierBaseNameLength, // in
+ BYTE* verifierBaseName, // in
+ TSS_HOBJECT signData, // in
+ TSS_DAA_SIGNATURE** daaSignature // out
+);
+
+TSPICALL Tspi_TPM_GetAuditDigest
+(
+ TSS_HTPM hTPM, // in
+ TSS_HKEY hKey, // in
+ TSS_BOOL closeAudit, // in
+ UINT32* pulAuditDigestSize, // out
+ BYTE** prgbAuditDigest, // out
+ TPM_COUNTER_VALUE* pCounterValue, // out
+ TSS_VALIDATION* pValidationData, // out
+ UINT32* ordSize, // out
+ UINT32** ordList // out
+);
+
+
+
+// PcrComposite Class Definitions
+TSPICALL Tspi_PcrComposite_SelectPcrIndex
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32 ulPcrIndex // in
+);
+
+TSPICALL Tspi_PcrComposite_SelectPcrIndexEx
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32 ulPcrIndex, // in
+ UINT32 direction // in
+);
+
+TSPICALL Tspi_PcrComposite_SetPcrValue
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32 ulPcrIndex, // in
+ UINT32 ulPcrValueLength, // in
+ BYTE* rgbPcrValue // in
+);
+
+TSPICALL Tspi_PcrComposite_GetPcrValue
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32 ulPcrIndex, // in
+ UINT32* pulPcrValueLength, // out
+ BYTE** prgbPcrValue // out
+);
+
+TSPICALL Tspi_PcrComposite_SetPcrLocality
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32 LocalityValue // in
+);
+
+TSPICALL Tspi_PcrComposite_GetPcrLocality
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32* pLocalityValue // out
+);
+
+TSPICALL Tspi_PcrComposite_GetCompositeHash
+(
+ TSS_HPCRS hPcrComposite, // in
+ UINT32* pLen, // in
+ BYTE** ppbHashData // out
+);
+
+
+
+// Key Class Definition
+TSPICALL Tspi_Key_LoadKey
+(
+ TSS_HKEY hKey, // in
+ TSS_HKEY hUnwrappingKey // in
+);
+
+TSPICALL Tspi_Key_UnloadKey
+(
+ TSS_HKEY hKey // in
+);
+
+TSPICALL Tspi_Key_GetPubKey
+(
+ TSS_HKEY hKey, // in
+ UINT32* pulPubKeyLength, // out
+ BYTE** prgbPubKey // out
+);
+
+TSPICALL Tspi_Key_CertifyKey
+(
+ TSS_HKEY hKey, // in
+ TSS_HKEY hCertifyingKey, // in
+ TSS_VALIDATION* pValidationData // in, out
+);
+
+TSPICALL Tspi_Key_CreateKey
+(
+ TSS_HKEY hKey, // in
+ TSS_HKEY hWrappingKey, // in
+ TSS_HPCRS hPcrComposite // in, may be NULL
+);
+
+TSPICALL Tspi_Key_WrapKey
+(
+ TSS_HKEY hKey, // in
+ TSS_HKEY hWrappingKey, // in
+ TSS_HPCRS hPcrComposite // in, may be NULL
+);
+
+TSPICALL Tspi_Key_CreateMigrationBlob
+(
+ TSS_HKEY hKeyToMigrate, // in
+ TSS_HKEY hParentKey, // in
+ UINT32 ulMigTicketLength, // in
+ BYTE* rgbMigTicket, // in
+ UINT32* pulRandomLength, // out
+ BYTE** prgbRandom, // out
+ UINT32* pulMigrationBlobLength, // out
+ BYTE** prgbMigrationBlob // out
+);
+
+TSPICALL Tspi_Key_ConvertMigrationBlob
+(
+ TSS_HKEY hKeyToMigrate, // in
+ TSS_HKEY hParentKey, // in
+ UINT32 ulRandomLength, // in
+ BYTE* rgbRandom, // in
+ UINT32 ulMigrationBlobLength, // in
+ BYTE* rgbMigrationBlob // in
+);
+
+TSPICALL Tspi_Key_MigrateKey
+(
+ TSS_HKEY hMaKey, // in
+ TSS_HKEY hPublicKey, // in
+ TSS_HKEY hMigData // in
+);
+
+TSPICALL Tspi_Key_CMKCreateBlob
+(
+ TSS_HKEY hKeyToMigrate, // in
+ TSS_HKEY hParentKey, // in
+ TSS_HMIGDATA hMigrationData, // in
+ UINT32* pulRandomLength, // out
+ BYTE** prgbRandom // out
+);
+
+TSPICALL Tspi_Key_CMKConvertMigration
+(
+ TSS_HKEY hKeyToMigrate, // in
+ TSS_HKEY hParentKey, // in
+ TSS_HMIGDATA hMigrationData, // in
+ UINT32 ulRandomLength, // in
+ BYTE* rgbRandom // in
+);
+
+
+
+// Hash Class Definition
+TSPICALL Tspi_Hash_Sign
+(
+ TSS_HHASH hHash, // in
+ TSS_HKEY hKey, // in
+ UINT32* pulSignatureLength, // out
+ BYTE** prgbSignature // out
+);
+
+TSPICALL Tspi_Hash_VerifySignature
+(
+ TSS_HHASH hHash, // in
+ TSS_HKEY hKey, // in
+ UINT32 ulSignatureLength, // in
+ BYTE* rgbSignature // in
+);
+
+TSPICALL Tspi_Hash_SetHashValue
+(
+ TSS_HHASH hHash, // in
+ UINT32 ulHashValueLength, // in
+ BYTE* rgbHashValue // in
+);
+
+TSPICALL Tspi_Hash_GetHashValue
+(
+ TSS_HHASH hHash, // in
+ UINT32* pulHashValueLength, // out
+ BYTE** prgbHashValue // out
+);
+
+TSPICALL Tspi_Hash_UpdateHashValue
+(
+ TSS_HHASH hHash, // in
+ UINT32 ulDataLength, // in
+ BYTE* rgbData // in
+);
+
+TSPICALL Tspi_Hash_TickStampBlob
+(
+ TSS_HHASH hHash, // in
+ TSS_HKEY hIdentKey, // in
+ TSS_VALIDATION* pValidationData // in
+);
+
+
+
+// EncData Class Definition
+TSPICALL Tspi_Data_Bind
+(
+ TSS_HENCDATA hEncData, // in
+ TSS_HKEY hEncKey, // in
+ UINT32 ulDataLength, // in
+ BYTE* rgbDataToBind // in
+);
+
+TSPICALL Tspi_Data_Unbind
+(
+ TSS_HENCDATA hEncData, // in
+ TSS_HKEY hKey, // in
+ UINT32* pulUnboundDataLength, // out
+ BYTE** prgbUnboundData // out
+);
+
+TSPICALL Tspi_Data_Seal
+(
+ TSS_HENCDATA hEncData, // in
+ TSS_HKEY hEncKey, // in
+ UINT32 ulDataLength, // in
+ BYTE* rgbDataToSeal, // in
+ TSS_HPCRS hPcrComposite // in
+);
+
+TSPICALL Tspi_Data_Unseal
+(
+ TSS_HENCDATA hEncData, // in
+ TSS_HKEY hKey, // in
+ UINT32* pulUnsealedDataLength, // out
+ BYTE** prgbUnsealedData // out
+);
+
+
+
+// NV Class Definition
+TSPICALL Tspi_NV_DefineSpace
+(
+ TSS_HNVSTORE hNVStore, // in
+ TSS_HPCRS hReadPcrComposite, // in, may be NULL
+ TSS_HPCRS hWritePcrComposite // in, may be NULL
+);
+
+TSPICALL Tspi_NV_ReleaseSpace
+(
+ TSS_HNVSTORE hNVStore // in
+);
+
+TSPICALL Tspi_NV_WriteValue
+(
+ TSS_HNVSTORE hNVStore, // in
+ UINT32 offset, // in
+ UINT32 ulDataLength, // in
+ BYTE* rgbDataToWrite // in
+);
+
+TSPICALL Tspi_NV_ReadValue
+(
+ TSS_HNVSTORE hNVStore, // in
+ UINT32 offset, // in
+ UINT32* ulDataLength, // in, out
+ BYTE** rgbDataRead // out
+);
+
+
+// DAA Utility functions (optional, do not require a TPM or TCS)
+TSPICALL Tspi_DAA_IssuerKeyVerify
+(
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_BOOL* isCorrect // out
+);
+
+TSPICALL Tspi_DAA_Issuer_GenerateKey
+(
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ UINT32 issuerBaseNameLength, // in
+ BYTE* issuerBaseName // in
+);
+
+TSPICALL Tspi_DAA_Issuer_InitCredential
+(
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_HKEY issuerAuthPK, // in
+ TSS_DAA_IDENTITY_PROOF* identityProof, // in
+ UINT32 capitalUprimeLength, // in
+ BYTE* capitalUprime, // in
+ UINT32 daaCounter, // in
+ UINT32* nonceIssuerLength, // out
+ BYTE** nonceIssuer, // out
+ UINT32* authenticationChallengeLength, // out
+ BYTE** authenticationChallenge, // out
+ UINT32* joinSessionLength, // out
+ BYTE** joinSession // out
+);
+
+TSPICALL Tspi_DAA_Issuer_IssueCredential
+(
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_DAA_CREDENTIAL_REQUEST* credentialRequest, // in
+ UINT32 issuerJoinSessionLength, // in
+ BYTE* issuerJoinSession, // in
+ TSS_DAA_CRED_ISSUER** credIssuer // out
+);
+
+TSPICALL Tspi_DAA_Verifier_Init
+(
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ UINT32* nonceVerifierLength, // out
+ BYTE** nonceVerifier, // out
+ UINT32* baseNameLength, // out
+ BYTE** baseName // out
+);
+
+TSPICALL Tspi_DAA_VerifySignature
+(
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_HDAA_ARA_KEY hARAKey, // in
+ TSS_HHASH hARACondition, // in
+ UINT32 attributesLength, // in
+ UINT32 attributesLength2, // in
+ BYTE** attributes, // in
+ UINT32 verifierNonceLength, // in
+ BYTE* verifierNonce, // in
+ UINT32 verifierBaseNameLength, // in
+ BYTE* verifierBaseName, // in
+ TSS_HOBJECT signData, // in
+ TSS_DAA_SIGNATURE* daaSignature, // in
+ TSS_BOOL* isCorrect // out
+);
+
+TSPICALL Tspi_DAA_ARA_GenerateKey
+(
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_HDAA_ARA_KEY hARAKey // in
+);
+
+TSPICALL Tspi_DAA_ARA_RevokeAnonymity
+(
+ TSS_HDAA_ARA_KEY hARAKey, // in
+ TSS_HHASH hARACondition, // in
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_DAA_PSEUDONYM_ENCRYPTED* encryptedPseudonym, // in
+ TSS_DAA_PSEUDONYM_PLAIN** pseudonym // out
+);
+
+
+
+// Callback typedefs
+typedef TSS_RESULT (*Tspicb_CallbackHMACAuth)
+(
+ PVOID lpAppData, // in
+ TSS_HOBJECT hAuthorizedObject, // in
+ TSS_BOOL ReturnOrVerify, // in
+ UINT32 ulPendingFunction, // in
+ TSS_BOOL ContinueUse, // in
+ UINT32 ulSizeNonces, // in
+ BYTE* rgbNonceEven, // in
+ BYTE* rgbNonceOdd, // in
+ BYTE* rgbNonceEvenOSAP, // in
+ BYTE* rgbNonceOddOSAP, // in
+ UINT32 ulSizeDigestHmac, // in
+ BYTE* rgbParamDigest, // in
+ BYTE* rgbHmacData // in, out
+);
+
+typedef TSS_RESULT (*Tspicb_CallbackXorEnc)
+(
+ PVOID lpAppData, // in
+ TSS_HOBJECT hOSAPObject, // in
+ TSS_HOBJECT hObject, // in
+ TSS_FLAG PurposeSecret, // in
+ UINT32 ulSizeNonces, // in
+ BYTE* rgbNonceEven, // in
+ BYTE* rgbNonceOdd, // in
+ BYTE* rgbNonceEvenOSAP, // in
+ BYTE* rgbNonceOddOSAP, // in
+ UINT32 ulSizeEncAuth, // in
+ BYTE* rgbEncAuthUsage, // out
+ BYTE* rgbEncAuthMigration // out
+);
+
+typedef TSS_RESULT (*Tspicb_CallbackTakeOwnership)
+(
+ PVOID lpAppData, // in
+ TSS_HOBJECT hObject, // in
+ TSS_HKEY hObjectPubKey, // in
+ UINT32 ulSizeEncAuth, // in
+ BYTE* rgbEncAuth // out
+);
+
+typedef TSS_RESULT (*Tspicb_CallbackSealxMask)
+(
+ PVOID lpAppData, // in
+ TSS_HKEY hKey, // in
+ TSS_HENCDATA hEncData, // in
+ TSS_ALGORITHM_ID algID, // in
+ UINT32 ulSizeNonces, // in
+ BYTE* rgbNonceEven, // in
+ BYTE* rgbNonceOdd, // in
+ BYTE* rgbNonceEvenOSAP, // in
+ BYTE* rgbNonceOddOSAP, // in
+ UINT32 ulDataLength, // in
+ BYTE* rgbDataToMask, // in
+ BYTE* rgbMaskedData // out
+);
+
+typedef TSS_RESULT (*Tspicb_CallbackChangeAuthAsym)
+(
+ PVOID lpAppData, // in
+ TSS_HOBJECT hObject, // in
+ TSS_HKEY hObjectPubKey, // in
+ UINT32 ulSizeEncAuth, // in
+ UINT32 ulSizeAuthLink, // in
+ BYTE* rgbEncAuth, // out
+ BYTE* rgbAuthLink // out
+);
+
+typedef TSS_RESULT (*Tspicb_CollateIdentity)
+(
+ PVOID lpAppData, // in
+ UINT32 ulTCPAPlainIdentityProofLength, // in
+ BYTE* rgbTCPAPlainIdentityProof, // in
+ TSS_ALGORITHM_ID algID, // in
+ UINT32 ulSessionKeyLength, // out
+ BYTE* rgbSessionKey, // out
+ UINT32* pulTCPAIdentityProofLength, // out
+ BYTE* rgbTCPAIdentityProof // out
+);
+
+
+typedef TSS_RESULT (*Tspicb_ActivateIdentity)
+(
+ PVOID lpAppData, // in
+ UINT32 ulSessionKeyLength, // in
+ BYTE* rgbSessionKey, // in
+ UINT32 ulSymCAAttestationBlobLength, // in
+ BYTE* rgbSymCAAttestationBlob, // in
+ UINT32* pulCredentialLength, // out
+ BYTE* rgbCredential // out
+);
+
+
+typedef TSS_RESULT (*Tspicb_DAA_Sign)
+(
+ PVOID lpAppData, // in
+ TSS_HDAA_ISSUER_KEY daaPublicKey, // in
+ UINT32 gammasLength, // in
+ BYTE** gammas, // in
+ UINT32 attributesLength, // in
+ BYTE** attributes, // in
+ UINT32 randomAttributesLength, // in
+ BYTE** randomAttributes, // in
+ UINT32 attributeCommitmentsLength,// in
+ TSS_DAA_ATTRIB_COMMIT* attributeCommitments, // in
+ TSS_DAA_ATTRIB_COMMIT* attributeCommitmentsProof, // in
+ TSS_DAA_PSEUDONYM_PLAIN* pseudonym, // in
+ TSS_DAA_PSEUDONYM_PLAIN* pseudonymTilde, // in
+ TSS_DAA_PSEUDONYM_ENCRYPTED* pseudonymEncrypted, // in
+ TSS_DAA_PSEUDONYM_ENCRYPTED* pseudonymEncProof, // in
+ TSS_DAA_SIGN_CALLBACK** additionalProof // out
+);
+
+typedef TSS_RESULT (*Tspicb_DAA_VerifySignature)
+(
+ PVOID lpAppData, // in
+ UINT32 challengeLength, // in
+ BYTE* challenge, // in
+ TSS_DAA_SIGN_CALLBACK* additionalProof, // in
+ TSS_HDAA_ISSUER_KEY daaPublicKey, // in
+ UINT32 gammasLength, // in
+ BYTE** gammas, // in
+ UINT32 sAttributesLength, // in
+ BYTE** sAttributes, // in
+ UINT32 attributeCommitmentsLength,// in
+ TSS_DAA_ATTRIB_COMMIT* attributeCommitments, // in
+ TSS_DAA_ATTRIB_COMMIT* attributeCommitmentsProof, // in
+ UINT32 zetaLength, // in
+ BYTE* zeta, // in
+ UINT32 sFLength, // in
+ BYTE* sF, // in
+ TSS_DAA_PSEUDONYM* pseudonym, // in
+ TSS_DAA_PSEUDONYM* pseudonymProof, // in
+ TSS_BOOL* isCorrect // out
+);
+
+
+#if defined ( __cplusplus )
+}
+#endif /* __cplusplus */
+
+
+#endif /* _TSPI_H_ */