Update TSS 1.2 headers so they may be installed in tss/ ,

TSS headers provided by TrouSerS is installed in tss/ . This CL modifies
the TSS 1.2 headers provided by Trunks such that they may be installed in tss/ .

Minor change: changing CRLF->LF.

BUG=chromium:254742
TEST=Compiles and tests successfully.

Change-Id: Ia9e510778eac18e14241240b287a0370758cefcf
Reviewed-on: https://gerrit.chromium.org/gerrit/60678
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
Tested-by: Sarah Harvey <saharvey@chromium.org>
Commit-Queue: Sarah Harvey <saharvey@chromium.org>
diff --git a/tss/include/tss/TCS.idl b/tss/include/tss/TCS.idl
index dd881b1..d9642b4 100644
--- a/tss/include/tss/TCS.idl
+++ b/tss/include/tss/TCS.idl
@@ -1,786 +1,786 @@
-/*++

-

-+++TCS.idl

-

-Interface declarations for the TSS Core Service - COM interface for Windows based platforms 

-    

---*/

-/*

-Missing:

-TCS_OpenContext

-TCPA_RESULT TCS_CloseContext

-TCPA_RESULT TCS_FreeMemory

-*/

-

-

-import "oaidl.idl";

-import "ocidl.idl";

-// header file for the basic tcpa data types

-import "tcs_structs.h";

-

-[

-    object,

-    uuid(FBCD9C02-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSBase Interface"),

-    pointer_default(unique)

-]

-interface ITCSBase : IUnknown

-{

-    [helpstring("method TCSP_GetRandom")] 

-    HRESULT TCSP_GetRandom(	[in, out] UINT32* bytesRequested,

-                            [out, size_is(,*bytesRequested)] BYTE** randomBytes);	

-

-    [helpstring("method TCSP_StirRandom")] 

-    HRESULT TCSP_StirRandom([in] UINT32 PunInDataSize,

-                            [in, size_is(PunInDataSize)] BYTE* PrgbInData);

-

-    [helpstring("method TCS_GetCapability")] 

-    HRESULT TCS_GetCapability(	[in] TPM_CAPABILITY_AREA capArea,

-                                [in] UINT32 subCapSize,

-                                [in, ptr, size_is(subCapSize)] BYTE* subCap,

-                                [out] UINT32* respSize,

-                                [out, size_is(, *respSize)] BYTE** resp);

-};

-

-[

-    object,

-    uuid(FBCD9C03-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSKey Interface"),

-    pointer_default(unique)

-]

-interface ITCSKey1 : IUnknown

-{

-    [helpstring("method TCSP_LoadKeyByBlob")] 

-    HRESULT TCSP_LoadKeyByBlob(		[in] TCS_KEY_HANDLE	hUnwrappingKey,

-                            [in] UINT32		cWrappedKeyBlobSize,

-                            [in, size_is(cWrappedKeyBlobSize)] BYTE* rgbWrappedKeyBlob,

-                            [in, out, ptr] TPM_AUTH*	pAuth,

-                            [out] TCS_KEY_HANDLE*	phKeyTCSI,

-                            [out] TCS_KEY_HANDLE*	phKeyHMAC);

-

-    [helpstring("method TCSP_CreateWrapKey")] 

-    HRESULT TCSP_CreateWrapKey(		[in] TCS_KEY_HANDLE hWrappingKey,		

-                            [in] TCG_ENCAUTH KeyUsageAuth,

-                            [in] TCG_ENCAUTH KeyMigrationAuth,

-                            [in, out] UINT32* pcKeySize,

-                            [in, out, size_is(, *pcKeySize)] BYTE** prgbKey,

-                            [in, out, ptr] TPM_AUTH* pAuth);

-

-    [helpstring("method TCSP_GetPubKey")] 

-    HRESULT TCSP_GetPubKey(	[in] TCS_KEY_HANDLE hKey,

-                            [in, out, ptr] TPM_AUTH* pAuth,

-                            [out] UINT32* pcPubKeySize,

-                            [out, size_is(, *pcPubKeySize)] BYTE** prgbPubKey);	

-                             

-    [helpstring("method TCSP_EvictKey")] 

-    HRESULT TCSP_EvictKey([in] TCS_KEY_HANDLE hKey);

-};

-

-[

-    object,

-    uuid(FBCD9C0D-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSKey Interface"),

-    pointer_default(unique)

-]

-interface ITCSKey : ITCSKey1  

-{

-    [helpstring("method TCSP_CertifyKey")]

-    HRESULT TCSP_CertifyKey([in] TCS_KEY_HANDLE	hCertHandle,

-                            [in] TCS_KEY_HANDLE	hKeyHandle,

-                            [in] TCG_NONCE	AntiReplay,

-                            [in, out, ptr] TCS_AUTH*	pCertAuth,

-                            [in, out, ptr] TCS_AUTH*	pKeyAuth,

-                            [out] UINT32* pcCertifyInfoSize,

-                            [out, size_is(, *pcCertifyInfoSize)] BYTE** ppCertifyInfo,

-                            [out] UINT32* pcOutDataSize,

-                            [out, size_is(, *pcOutDataSize)] BYTE** ppOutData);

-};

-

-[

-    object,

-    uuid(FBCD9C11-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSKey2 Interface"),

-    pointer_default(unique)

-]

-interface ITCSKey2 : ITCSKey  

-{

-    [helpstring("method TCSP_LoadKey2ByBlob")] 

-    HRESULT TCSP_LoadKey2ByBlob([in] TPM_KEY_HANDLE		hUnwrappingKey,

-                                [in] UINT32				cWrappedKeyBlobSize,

-                                [in, size_is(cWrappedKeyBlobSize)] BYTE* rgbWrappedKeyBlob,

-                                [in, out, ptr] TPM_AUTH*	pAuth,

-                                [out] TPM_KEY_HANDLE*		phKeyTCSI);

-

-    [helpstring("method TCSP_MigrateKey")]

-    HRESULT TCSP_MigrateKey([in] TPM_KEY_HANDLE	hMaKeyHandle,

-                            [in] UINT32		cPubKeyDataSize,

-                            [in, size_is(cPubKeyDataSize)] BYTE* pPubKeyData,

-                            [in] UINT32		cInDataSize,

-                            [in, size_is(cInDataSize)] BYTE* pInData,

-                            [in, out, ptr] TPM_AUTH*	pKeyAuth,

-                            [out] UINT32*		pcOutDataSize,

-                            [out, size_is(, *pcOutDataSize)] BYTE** ppOutData);

-

-};	// end of interface ITCSKeyInterim1

-[

-    object,

-    uuid(FBCD9C14-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSNonVolatileStorage Interface"),

-    pointer_default(unique)

-]

-interface ITCSNonVolatileStorage : IUnknown

-{

-    [helpstring("method TCSP_DefineOrReleaseSpace")]	

-    HRESULT TCSP_DefineOrReleaseSpace([in] UINT32 cPubInfoSize,

-                            [in, size_is(cPubInfoSize)] BYTE*	pPubInfo,

-                            [in] TPM_ENCAUTH EncAuth,

-                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);

-

-    [helpstring("method TCSP_ReadValue")]

-    HRESULT TCSP_ReadValue( [in] TPM_NV_INDEX	NVStore,

-                            [in] UINT32	Offset,

-                            [in,out] UINT32*	pcDataSize,

-                            [in, out, ptr] TPM_AUTH*	pOwnerAuth,

-                            [out, size_is(,*pcDataSize)] BYTE**	ppData);

-

-    [helpstring("method TCSP_ReadValueAuth")]

-    HRESULT TCSP_ReadValueAuth( [in] TPM_NV_INDEX	NVStore,

-                                [in] UINT32	Offset,

-                                [in,out] UINT32*	pcDataSize,

-                                [in, out, ptr] TPM_AUTH*	pNVAuth,

-                                [out, size_is(,*pcDataSize)] BYTE**	ppData);

-

-    [helpstring("method TCSP_WriteValue")]

-    HRESULT TCSP_WriteValue([in] TPM_NV_INDEX	NVStore,

-                            [in] UINT32	Offset,

-                            [in] UINT32	cDataSize,

-                            [in, size_is(cDataSize)] BYTE*	pData,

-                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);

-

-    [helpstring("method TCSP_WriteValueAuth")]

-    HRESULT TCSP_WriteValueAuth([in] TPM_NV_INDEX	NVStore,

-                            [in] UINT32	Offset,

-                            [in] UINT32	cDataSize,

-                            [in, size_is(cDataSize)] BYTE*	pData,

-                            [in, out, ptr] TPM_AUTH*	pNVAuth);

-

-};	// end of interface ITCSNonVolatileStorage

-

-[

-    object,

-    uuid(FBCD9C15-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSTransportProtection Interface"),

-    pointer_default(unique)

-]

-interface ITCSTransportProtection : IUnknown

-{

-    [helpstring("method TCSP_EstablishTransport")]	

-    HRESULT TCSP_EstablishTransport([in] UINT32	 TransControlFlags,

-                            [in] TPM_KEY_HANDLE	hEncKey,

-                            [in] UINT32	cTransSessionInfoSize,

-                            [in, size_is(cTransSessionInfoSize)] BYTE*	pTransSessionInfo,

-                            [in] UINT32	cSecretSize,

-                            [in, size_is(cSecretSize)] BYTE* pSecret,	

-                            [in, out, ptr] TPM_AUTH*	pEncKeyAuth,	

-                            [out] TPM_MODIFIER_INDICATOR*	pbLocality,

-                            [out] TCS_HANDLE* phTransSession,

-                            [out] UINT32*	pcCurrentTicks,

-                            [out, size_is(, *pcCurrentTicks)] BYTE** ppCurrentTicks,

-                            [out] TPM_NONCE* pTransNonce);

-

-    [helpstring("method TCSP_ExecuteTransport")]

-    HRESULT TCSP_ExecuteTransport([in] TPM_COMMAND_CODE	unWrappedCommandOrdinal,	

-                            [in] UINT32	cWrappedCmdDataInSize,

-                            [in, size_is(cWrappedCmdDataInSize)] BYTE* 	pWrappedCmdDataIn,	

-                            [in, out] UINT32* pcHandleListSize,

-                            [in, out, size_is(, *pcHandleListSize)] TPM_HANDLE** pphHandles,

-                            [in, out, ptr] TPM_AUTH* pWrappedCmdAuth1,	

-                            [in, out, ptr] TPM_AUTH* pWrappedCmdAuth2,	

-                            [in, out, ptr] TPM_AUTH* pTransAuth,

-                            [out] UINT64* pCurrentTicks,

-                            [out] TPM_MODIFIER_INDICATOR* pbLocality,

-                            [out] TPM_RESULT*	pWrappedCmdReturnCode,

-                            [out] UINT32* pcWrappedCmdDataOutSize,

-                            [out, size_is(, *pcWrappedCmdDataOutSize)] BYTE** 	ppWrappedCmdParamOut);

-

-    [helpstring("method TCSP_ReleaseTransportSigned")]

-    HRESULT TCSP_ReleaseTransportSigned([in] TPM_KEY_HANDLE hSignatureKey,

-                            [in] TPM_NONCE	AntiReplayNonce,

-                            [in, out, ptr] TPM_AUTH*	pKeyAuth,

-                            [in, out, ptr] TPM_AUTH*	pTransAuth,

-                            [out] TPM_MODIFIER_INDICATOR* pbLocality,

-                            [out] UINT32*	pcCurrentTicksSize,

-                            [out, size_is(, *pcCurrentTicksSize)] BYTE**	ppCurrentTicks,

-                            [out] UINT32*	pcSignatureSize,

-                            [out, size_is(, *pcSignatureSize)] BYTE**	ppSignature);

-

-};	// end of interface ITCSTransportProtection

-

-[

-    object,

-    uuid(FBCD9C16-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSCertifiedMigration Interface"),

-    pointer_default(unique)

-]

-interface ITCSCertifiedMigration : IUnknown

-{

-    [helpstring("method TCSP_CMK_SetRestrictions")]

-    HRESULT TCSP_SetRestrictions([in] TPM_CMK_DELEGATE		Restriction,

-                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);

-

-    [helpstring("method TCSP_CMK_ApproveMA")]

-    HRESULT TCSP_ApproveMA([in] TPM_DIGEST MigAuthorityDigest,

-                            [in, out, ptr] TPM_AUTH*	pOwnerAuth,

-                            [out] TPM_HMAC* pHmacMigAuthDigest);

-

-    [helpstring("method TCSP_CMK_CreateKey")]

-    HRESULT TCSP_CreateKey([in] TPM_KEY_HANDLE	hMaKeyHandle,

-                            [in] TPM_ENCAUTH KeyUsageAuth,

-                            [in] TPM_HMAC	MigAuthApproval,

-                            [in] TPM_DIGEST MigAuthorityDigest,

-                            [in, out] UINT32* pckeyDataSize,

-                            [in, out, size_is(, *pckeyDataSize)] BYTE** ppKeyData,

-                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);

-

-    [helpstring("method TCSP_CMK_CreateTicket")]	

-    HRESULT TCSP_CreateTicket([in] UINT32	cPublicVerifyKeySize,

-                            [in, size_is(cPublicVerifyKeySize)] BYTE*	pPublicVerifyKey,

-                            [in] TPM_DIGEST	SignedData,

-                            [in] UINT32	cSigValueSize,

-                            [in, size_is(cSigValueSize)] BYTE*	SigValue,

-                            [in, out, ptr] TPM_AUTH*	pOwnertAuth,

-                            [out] TPM_HMAC*	pSigTicket);

-

-    [helpstring("method TCSP_CMK_CreateBlob")]

-    HRESULT TCSP_CreateBlob([in] TPM_KEY_HANDLE hParentHandle,

-                            [in] TPM_MIGRATE_SCHEME	MigrationType,

-                            [in] UINT32	cMigrationKeyAuthSize,

-                            [in, size_is(cMigrationKeyAuthSize)] BYTE*	pMigrationKeyAuth,

-                            [in] TPM_DIGEST	PubSourecKeyDigest,

-                            [in] UINT32	cMsaListSize,

-                            [in, size_is(cMsaListSize)]	BYTE* pMsaList,

-                            [in] UINT32	cRestrictTicketSize,

-                            [in, size_is(cRestrictTicketSize)]	BYTE* pRestrictTicket,

-                            [in] UINT32	cSigTicketSize,

-                            [in, size_is(cSigTicketSize)]	BYTE* pSigTicket,

-                            [in] UINT32	cEncDataSize,

-                            [in, size_is(cEncDataSize)]	BYTE* pEncData,

-                            [in, out] TPM_AUTH*	pParentAuth,

-                            [out] UINT32*	pcRandomSize,

-                            [out, size_is(, *pcRandomSize)] BYTE**	ppRandom,

-                            [out] UINT32*	pcOutDataSize,

-                            [out, size_is(, *pcOutDataSize)] BYTE**	ppOutData);

-

-    [helpstring("method TCSP_CMK_ConvertMigration")]

-    HRESULT TCSP_ConvertMigration([in] TPM_KEY_HANDLE hParentHandle,

-                            [in] TPM_CMK_AUTH	RestrictTicket,

-                            [in] TPM_HMAC	SigTicket,

-                            [in] UINT32	cKeyDataSize,

-                            [in, size_is(cKeyDataSize)] BYTE* pKeyData,

-                            [in] UINT32	cMsaListSize,

-                            [in, size_is(cMsaListSize)]	BYTE* pMsaList,

-                            [in] UINT32	cRandomSize,

-                            [in, size_is(cRandomSize)] BYTE*	pRandom,

-                            [in, out, ptr] TPM_AUTH*	pParentAuth,

-                            [out] UINT32*	pcOutDataSize,

-                            [out, size_is(, *pcOutDataSize)] BYTE**	ppOutData);

-}// end of interface ITCSCertifiedMirgation

-

-[

-    object,

-    uuid(FBCD9C04-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSKeyManage Interface"),

-    pointer_default(unique)

-]

-interface ITCSKeyManage : IUnknown

-{

-    [helpstring("method TCSP_LoadKeyByUUID")] 

-    HRESULT TCSP_LoadKeyByUUID(	[in] TSS_UUID KeyUUID,

-                                [in, out, ptr] TCS_LOADKEY_INFO* pLoadKeyInfo,

-                                [out] TCS_KEY_HANDLE* phKeyTCSI);

-

-    [helpstring("method TCS_RegisterKey")] 

-    HRESULT TCS_RegisterKey([in] TSS_UUID WrappingKeyUUID,

-                            [in] TSS_UUID KeyUUID,

-                            [in] UINT32 cKeySize,

-                            [in, size_is(cKeySize)] BYTE* rgbKey,				

-                            [in, defaultvalue(0)] UINT32 cVendorData,

-                            [in, ptr, size_is(cVendorData), defaultvalue(0)] BYTE* rgbVendorData);

-

-    [helpstring("method TCS_UnregisterKey")] 

-    HRESULT TCS_UnregisterKey([in] TSS_UUID KeyUUID);

-

-

-    [helpstring("method TCS_EnumRegisteredKeys")] 

-    HRESULT TCS_EnumRegisteredKeys(	[in, ptr] TSS_UUID* pKeyUUID,

-                            [out] UINT32* pcKeyHierarchySize,

-                            [out, size_is(, *pcKeyHierarchySize)] TSS_KM_KEYINFO** ppKeyHierarchy);

-

-    [helpstring("method TCS_GetRegisteredKey")] 

-    HRESULT TCS_GetRegisteredKey([in] TSS_UUID KeyUUID,

-                                 [out] TSS_KM_KEYINFO** ppKeyInfo);

-

-    [helpstring("method TCS_GetRegisteredKeyBlob")] 

-    HRESULT TCS_GetRegisteredKeyBlob([in] TSS_UUID KeyUUID,

-                                     [out] UINT32* pcKeySize,

-                                     [out, size_is(, *pcKeySize)] BYTE** prgbKey);

-

-// HRESULT TCSP_GetRegisteredKeyByPublicInfo

-};

-

-[

-    object,

-    uuid(FBCD9C05-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSCryptography Interface"),

-    pointer_default(unique)

-]

-interface ITCSCryptography : IUnknown

-{	

-    [helpstring("method TCSP_Sign")] 

-    HRESULT TCSP_Sign(	[in] TCS_KEY_HANDLE keyHandle,

-                        [in] UINT32 areaToSignSize,	

-                        [in, size_is(areaToSignSize)] BYTE* areaToSign,

-                        [in, out, ptr] TCS_AUTH* privAuth,

-                        [out] UINT32* sigSize,

-                        [out, size_is(, *sigSize)] BYTE** sig);

-

-    [helpstring("method TCSP_Unbind")] 

-    HRESULT TCSP_Unbind([in] TCS_KEY_HANDLE keyHandle,

-                        [in] UINT32 inDataSize,

-                        [in, size_is(inDataSize)] BYTE* inData,

-                        [in, out, ptr] TCS_AUTH* privAuth,

-                        [out] UINT32* outDataSize,

-                        [out, size_is(, *outDataSize)] BYTE** outData);

-                            

-    [helpstring("method TCSP_Seal")] 

-    HRESULT TCSP_Seal(	[in] TCS_KEY_HANDLE keyHandle,

-                        [in] TCG_ENCAUTH encAuth,

-                        [in] UINT32 pcrInfoSize,

-                        [in, ptr, size_is(pcrInfoSize)] BYTE* PcrInfo,

-                        [in] UINT32 inDataSize,

-                        [in, size_is(inDataSize)] BYTE* inData,

-                        [in, out, ptr] TCS_AUTH* pAuth,

-                        [out] UINT32* SealedDataSize,

-                        [out, size_is(, *SealedDataSize)] BYTE** SealedData);	

-

-    [helpstring("method TCSP_Unseal")] 

-    HRESULT TCSP_Unseal([in] TCS_KEY_HANDLE parentHandle,

-                        [in] UINT32 SealedDataSize,

-                        [in, size_is(SealedDataSize)] BYTE* SealedData,

-                        [in, out, ptr] TCS_AUTH* parentAuth,

-                        [in, out, ptr] TCS_AUTH* dataAuth,

-                        [out] UINT32* DataSize,

-                        [out, size_is(, *DataSize)] BYTE** Data);

-

-};

-

-[

-    object,

-    uuid(FBCD9C06-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSAuthorization Interface"),

-    pointer_default(unique)

-]

-interface ITCSAuthorization : IUnknown

-{	

-    [helpstring("method TCSP_ChangeAuth")] 

-    HRESULT TCSP_ChangeAuth([in] TCS_KEY_HANDLE parentHandle,

-                            [in] TPM_PROTOCOL_ID protocolID,

-                            [in] TCG_ENCAUTH newAuth,

-                            [in] TCG_ENTITY_TYPE entityType,

-                            [in] UINT32 encDataSize,

-                            [in, size_is(encDataSize)] BYTE* encData,

-                            [in, out, ptr] TCS_AUTH* ownerAuth,

-                            [in, out, ptr] TCS_AUTH* entityAuth,

-                            [out] UINT32* outDataSize,

-                            [out, size_is(, *outDataSize)] BYTE** outData);

-

-    [helpstring("method TCSP_ChangeAuthOwner")] 

-    HRESULT TCSP_ChangeAuthOwner(	[in] TPM_PROTOCOL_ID protocolID,

-                                    [in] TCG_ENCAUTH newAuth,

-                                    [in] TCG_ENTITY_TYPE entityType,

-                                    [in, out, ptr] TCS_AUTH* ownerAuth);

-

-// HRESULT TCSP_ChangeAuthAsymStart

-// HRESULT TCSP_ChangeAuthAsymFinish

-    

-    [helpstring("method TCSP_OIAP")] 

-    HRESULT TCSP_OIAP(	[out] TCS_AUTHHANDLE* authHandle,

-                        [out] TCG_NONCE* nonce0);

-

-    [helpstring("method TCSP_OSAP")] 

-    HRESULT TCSP_OSAP(	[in] TCG_ENTITY_TYPE entityType,

-                        [in] UINT32 entityValue,

-                        [in] TCG_NONCE nonceOddOSAP,

-                        [out] TCS_AUTHHANDLE* authHandle,

-                        [out] TCG_NONCE* nonceEven,

-                        [out] TCG_NONCE* nonceEvenOSAP);

-

-    [helpstring("method TCSP_TerminateHandle")] 

-    HRESULT TCSP_TerminateHandle([in] TCS_AUTHHANDLE handle);

-};

-

-

-[

-    object,

-    uuid(FBCD9C07-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSIntegrity Interface"),

-    pointer_default(unique)

-]

-interface ITCSIntegrity : IUnknown

-{

-    [helpstring("method TCSP_Extend")] 

-    HRESULT TCSP_Extend(	[in] TCG_PCRINDEX pcrNum,

-                            [in] TCG_DIGEST inDigest,		

-                            [out] TCG_PCRVALUE* outDigest);

-

-    [helpstring("method TCSP_PcrRead")] 

-    HRESULT TCSP_PcrRead(	[in] TCG_PCRINDEX pcrNum,

-                            [out] TCG_PCRVALUE* outDigest);

-

-    [helpstring("method TCSP_DirWriteAuth")] 

-    HRESULT TCSP_DirWriteAuth(	[in] TCG_DIRINDEX dirIndex,

-                                [in] TCG_DIRVALUE newContents,

-                                [in, out, ptr] TCS_AUTH* ownerAuth);

-

-    [helpstring("method TCSP_DirRead")] 

-    HRESULT TCSP_DirRead(	[in] TCG_DIRINDEX dirIndex,

-                            [out] TCG_DIRVALUE* dirValue);

-

-    [helpstring("method TCSP_Quote")] 

-    HRESULT TCSP_Quote(	[in] TCS_KEY_HANDLE hKey,

-                        [in] TCG_NONCE Nonce,

-                        [in, out] UINT32* PcrDataSize,

-                        [in, out, size_is(, *PcrDataSize)] BYTE** PcrData,

-                        [in, out, ptr] TCS_AUTH* pAuth,

-                        [out] UINT32* pcSignatureSize,

-                        [out, size_is(, *pcSignatureSize)] BYTE** ppSignature);

-};

-

-[

-    object,

-    uuid(FBCD9C08-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSTpm Interface"),

-    pointer_default(unique)

-]

-interface ITCSTpm : IUnknown

-{

-    [helpstring("method TCSP_CreateEndorsementKeyPair")] 

-    HRESULT TCSP_CreateEndorsementKeyPair([in] TCG_NONCE antiReplay,

-                    [in, out] UINT32* pPubEndorsementKeySize,

-                    [in, out, size_is(, *pPubEndorsementKeySize)] BYTE** ppPubEndorsementKey,

-                    [out] TCG_DIGEST* pChecksum);

-

-    [helpstring("method TCSP_DisableForceClear")] 

-    HRESULT TCSP_DisableForceClear();

-

-    [helpstring("method TCSP_DisablePubekRead")] 

-    HRESULT TCSP_DisablePubekRead([in, out, ptr] TCS_AUTH* ownerAuth);

-

-    [helpstring("method TCSP_DisableOwnerClear")] 

-    HRESULT TCSP_DisableOwnerClear([in, out, ptr] TCS_AUTH* ownerAuth);

-

-    [helpstring("method TCSP_ForceClear")] 

-    HRESULT TCSP_ForceClear();

-

-    [helpstring("method TCSP_GetCapability")] 

-    HRESULT TCSP_GetCapability([in] TPM_CAPABILITY_AREA capArea,

-                       [in] UINT32 subCapSize,

-                       [in, ptr, size_is(subCapSize)] BYTE* subCap,

-                       [out] UINT32* respSize,

-                       [out, size_is(, *respSize)] BYTE** resp);

-

-    [helpstring("method TCSP_GetCapabilityOwner")] 

-    HRESULT TCSP_GetCapabilityOwner([in, out, ptr] TCS_AUTH* pOwnerAuth,

-                          [out] TPM_VERSION* pVersion,

-                          [out] UINT32* pNonVolatileFlags,

-                          [out] UINT32* pVolatileFlags);

-

-// HRESULT TCSP_GetCapabilitySigned

-

-    [helpstring("method TCSP_GetTestResult")] 

-    HRESULT TCSP_GetTestResult([out] UINT32* outDataSize,

-                       [out, size_is(, *outDataSize)] BYTE** outData);

-

-    [helpstring("method TCSP_OwnerClear")] 

-    HRESULT TCSP_OwnerClear([in, out, ptr] TCS_AUTH* ownerAuth);

-

-    [helpstring("method TCSP_OwnerReadPubek")] 

-    HRESULT TCSP_OwnerReadPubek([in, out, ptr] TCS_AUTH* ownerAuth,

-                        [out] UINT32* pubEndorsementKeySize,

-                        [out, size_is(, *pubEndorsementKeySize)] BYTE** pubEndorsementKey);

-

-    [helpstring("method TCSP_OwnerSetDisable")] 

-    HRESULT TCSP_OwnerSetDisable([in] TSS_BOOL disableState,

-                         [in, out, ptr] TCS_AUTH* ownerAuth);

-

-    [helpstring("method TCSP_PhysicalDisable")] 

-    HRESULT TCSP_PhysicalDisable();

-

-    [helpstring("method TCSP_PhysicalEnable")] 

-    HRESULT TCSP_PhysicalEnable();

-

-    [helpstring("method TCSP_PhysicalPresence")] 

-    HRESULT TCSP_PhysicalPresence([in] TPM_PHYSICAL_PRESENCE fPhysicalPresence);

-

-    [helpstring("method TCSP_PhysicalSetDeactivated")] 

-    HRESULT TCSP_PhysicalSetDeactivated([in] TSS_BOOL state);

-

-    [helpstring("method TCSP_ReadPubek")] 

-    HRESULT TCSP_ReadPubek([in] TCG_NONCE antiReplay,

-                     [out] UINT32* pubEndorsementKeySize,

-                     [out, size_is(, *pubEndorsementKeySize)] BYTE** pubEndorsementKey,

-                     [out] TCG_DIGEST* checksum);

-

-    [helpstring("method TCSP_SelfTestFull")] 

-    HRESULT TCSP_SelfTestFull();

-

-// HRESULT TCSP_CertifySelfTest

-// HRESULT TCSP_ContinueSelfTest

-

-    [helpstring("method TCSP_SetOwnerInstall")] 

-    HRESULT TCSP_SetOwnerInstall([in] TSS_BOOL state);

-

-    [helpstring("method TCSP_SetTempDeactivated")] 

-    HRESULT TCSP_SetTempDeactivated();

-

-    [helpstring("method TCSP_TakeOwnership")] 

-    HRESULT TCSP_TakeOwnership([in] UINT32 protocolID, 

-                       [in] UINT32 encOwnerAuthSize,

-                       [in, size_is(encOwnerAuthSize)] BYTE* encOwnerAuth,

-                       [in] UINT32 encSrkAuthSize,

-                       [in, ptr, size_is(encSrkAuthSize)] BYTE* encSrkAuth,

-                       [in, out] UINT32* pSrkSize,

-                       [in, out, size_is(, *pSrkSize)] BYTE** ppSrk,

-                       [in, out, ptr] TCS_AUTH* pOwnerAuth);

-

-    [helpstring("method TCSP_FieldUpgrade")]

-    HRESULT TCSP_FieldUpgrade([in] UINT32 dataInSize,

-                      [in, ptr, size_is(dataInSize)] BYTE* dataIn,

-                      [in, out, ptr] TCS_AUTH* ownerAuth,

-                      [out] UINT32* dataOutSize,

-                      [out, size_is(, *dataOutSize)] BYTE** dataOut);

-

-// HRESULT TCSP_SetRedirection

-

-};

-

-[

-    object,

-    uuid(FBCD9C12-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSTpm2 Interface"),

-    pointer_default(unique)

-]

-interface ITCSTpm2 : ITCSTpm

-{

-    [helpstring("method TCSP_OwnerReadInternalPub")]

-    HRESULT TCSP_OwnerReadInternalPub([in] TCS_KEY_HANDLE hKey,

-                                      [in, out, ptr] TCS_AUTH* pAuth,

-                                      [out] UINT32* pcPubKeySize,

-                                      [out, size_is(, *pcPubKeySize)] BYTE** ppPubKey);	

-

-    [helpstring("method TCSP_KeyControlOwner")]

-    HRESULT TCSP_KeyControlOwner([in] TCS_KEY_HANDLE hKey,

-                                 [in] UINT32 cPubKeyDataSize,

-                                 [in, size_is(cPubKeyDataSize)] BYTE* pPubKeyData,

-                                 [in] TPM_KEY_CONTROL KeyAttribBit,

-                                 [in] TSS_BOOL BitValue,

-                                 [in, out, ptr] TCS_AUTH* pAuth);

-        

-    [helpstring("method TCSP_SetCapability")] 

-    HRESULT TCSP_SetCapability([in] TPM_CAPABILITY_AREA CapArea,

-                               [in] UINT32 cSubCapSize,

-                               [in, size_is(cSubCapSize)] BYTE* pSubCap,

-                               [in] UINT32 cSetValueSize,

-                               [in, size_is(cSetValueSize)] BYTE* pSetValue,

-                               [in, out, ptr] TCS_AUTH* pAuth);

-

-    [helpstring("method TCSP_CreateRevocableEndorsementKeyPair")]

-    HRESULT TCSP_CreateRevocableEndorsementKeyPair([in] TCG_NONCE AntiReplay,

-                            [in] UINT32 cEndorsementKeyInfoSize,

-                            [in, size_is(cEndorsementKeyInfoSize)] BYTE* pEndorsementKeyInfo,

-                            [in] TSS_BOOL GenRestAuth,

-                            [in, out, ptr] TCG_DIGEST* EKResetAuth,

-                            [out] UINT32*	cEndorsementKeySize,

-                            [out, size_is(, *cEndorsementKeySize )]BYTE** ppEndorsementKey,

-                            [out] TCG_DIGEST* pChecksum);

-

-    [helpstring("method TCSP_RevokeEndorsementKeyPair")]

-    HRESULT TCSP_RevokeEndorsementKeyPair([in] TCG_DIGEST EKResetAuth);

-

-    [helpstring("method TCSP_SetOwnerPointer")]

-    HRESULT TCSP_SetOwnerPointer([in] TCG_ENTITY_TYPE EntityType,

-                                 [in] UINT32 EntityValue);

-

-};	// end of interface ITCSTpmInterim1

-

-[

-    object,

-    uuid(FBCD9C09-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSIdentityKey Interface"),

-    pointer_default(unique)

-]

-interface ITCSIdentityKey : IUnknown

-{

-    [helpstring("method TCSP_MakeIdentity")] 

-    HRESULT TCSP_MakeIdentity([in] TCG_ENCAUTH IdentityAuth,

-                      [in] TPM_CHOSENID_HASH	IDLabel_PrivCAHash,

-                      [in, out] UINT32* pcIdentityKeySize,

-                      [in, out, size_is(, *pcIdentityKeySize)] BYTE** prgbIdentityKey,

-                      [in, out, ptr] TCS_AUTH* pSrkAuth,

-                      [in, out, ptr] TCS_AUTH* pOwnerAuth,

-                      [out] UINT32* pcIdentityBindingSize,

-                      [out, size_is(, *pcIdentityBindingSize)] BYTE** prgbIdentityBinding,

-                      [out] UINT32* pcEndorsementCredentialSize,

-                      [out, size_is(, *pcEndorsementCredentialSize)] BYTE** prgbEndorsementCredential,

-                      [out] UINT32* pcPlatformCredentialSize,

-                      [out, size_is(, *pcPlatformCredentialSize)] BYTE** prgbPlatformCredential,

-                      [out] UINT32* pcConformanceCredentialSize,

-                      [out, size_is(, *pcConformanceCredentialSize)] BYTE** prgbConformanceCredential);

-

-    [helpstring("method TCSP_ActivateTPMIdentity")] 

-    HRESULT TCSP_ActivateTPMIdentity([in] TCS_KEY_HANDLE hIdKey,

-                                     [in] UINT32 unBlobSize,

-                                     [in, size_is(unBlobSize)] BYTE* pbBlob,

-                                     [in, out, ptr] TCS_AUTH* pIdKeyAuth,

-                                     [in, out, ptr] TCS_AUTH* pOwnerAuth,

-                                     [out] UINT32* punSymmetricKeySize,

-                                     [out, size_is(, *punSymmetricKeySize)] BYTE** ppSymmetricKey);

-};

-

-

-[

-    object,

-    uuid(FBCD9C0A-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSMigration Interface"),

-    pointer_default(unique)

-]

-interface ITCSMigration : IUnknown

-{

-    [helpstring("method TCSP_AuthorizeMigrationKey")] 

-    HRESULT TCSP_AuthorizeMigrationKey([in] TPM_MIGRATE_SCHEME migrateScheme,

-                             [in] UINT32 MigrationKeySize,

-                             [in, size_is(MigrationKeySize)] BYTE* MigrationKey,

-                             [in, out, ptr] TCS_AUTH* ownerAuth,

-                             [out] UINT32* MigrationKeyAuthSize,

-                             [out, size_is(, *MigrationKeyAuthSize)] BYTE** MigrationKeyAuth);

-

-    [helpstring("method TCSP_ConvertMigrationBlob")]

-    HRESULT TCSP_ConvertMigrationBlob([in] TCS_KEY_HANDLE parentHandle,

-                            [in] UINT32 inDataSize,

-                            [in, size_is(inDataSize)] BYTE* inData,

-                            [in] UINT32 randomSize,

-                            [in, size_is(randomSize)] BYTE* rgbRandom,

-                            [in, out, ptr] TCS_AUTH* parentAuth,

-                            [out] UINT32* outDataSize,

-                            [out, size_is(, *outDataSize)] BYTE**	outData);

-

-    [helpstring("method TCSP_CreateMigrationBlob")]

-    HRESULT TCSP_CreateMigrationBlob([in] TCS_KEY_HANDLE parentHandle,

-                           [in] TPM_MIGRATE_SCHEME migrationType,

-                           [in] UINT32 migrationKeyAuthSize,

-                           [in, size_is(migrationKeyAuthSize)] BYTE* MigrationKeyAuth,

-                           [in] UINT32 encDataSize,

-                           [in, size_is(encDataSize)]	BYTE* encData,

-                           [in, out, ptr] TCS_AUTH* parentAuth,

-                           [in, out, ptr] TCS_AUTH* entityAuth,

-                           [out] UINT32* randomSize,

-                           [out, size_is(, *randomSize)] BYTE** random,

-                           [out] UINT32* outDataSize,

-                           [out, size_is(, *outDataSize)] BYTE**	outData);

-};

-

-[

-    object,

-    uuid(FBCD9C13-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSTpmManagement Interface"),

-    pointer_default(unique)

-]

-interface ITCSTpmManagement : IUnknown

-{

-    [helpstring("method TCSP_SetOperatorAuth")] 

-    HRESULT TCSP_SetOperatorAuth([in] TPM_SECRET OperatorAuth);

-

-    [helpstring("method TCSP_SetTempDeactivated2")] 

-    HRESULT TCSP_SetTempDeactivated2([in, out, ptr] TCS_AUTH* pOperatorAuth);

-    

-    [helpstring("method TCSP_ResetEstablishmentBit")] 

-    HRESULT TCSP_ResetEstablishmentBit();

-

-    [helpstring("method TCSP_FlushSpecific")] 

-    HRESULT TCSP_FlushSpecific([in] TCS_HANDLE hResHandle,

-                               [in] TPM_RESOURCE_TYPE ResourceType);

-

-    [helpstring("method TCSP_ResetLockValue")] 

-    HRESULT TCSP_ResetLockValue([in, out, ptr] TCS_AUTH* pOwnerAuth);

-

-};	// end of interface ITCSTpmManagement

-

-[

-    object,

-    uuid(FBCD9C0B-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSEventManager Interface"),

-    pointer_default(unique)

-]

-interface ITCSEventManager : IUnknown

-{

-

-// HRESULT TCS_LogPcrEvent 

-// HRESULT TCS_GetPcrEvent

-// HRESULT TCS_GetPcrEventsByPcr

-// HRESULT TCS_GetPcrEventLog

-

-};

-

-

-[

-    object,

-    uuid(FBCD9C0C-72CB-47BB-99DD-2317551491DE),

-    helpstring("ITCSMaintenance Interface"),

-    pointer_default(unique)

-]

-interface ITCSMaintenance : IUnknown

-{

-// HRESULT TCSP_CreateMaintenanceArchive

-// HRESULT TCSP_LoadMaintenanceArchive

-// HRESULT TCSP_KillMaintenanceFeature

-// HRESULT TCSP_LoadManuMaintPub

-// HRESULT TCSP_ReadManuMaintPub

-};

-

-

-// TSSCORELib

-[

-    uuid(FBCD9C00-72CB-47BB-99DD-2317551491DE),

-    version(1.0),

-    helpstring("TSSCore 1.0 Type Library")

-]

-library TSSCORELib

-{

-    importlib("stdole32.tlb");

-    importlib("stdole2.tlb");

-    [

-        uuid(FBCD9C01-72CB-47BB-99DD-2317551491DE),

-        helpstring("TSSCoreService Class")

-    ]

-    coclass TSSCoreService

-    {

-        [default] interface ITCSBase;

-        interface ITCSTransportProtection;

-        interface ITCSNonVolatileStorage;

-        interface ITCSCertifiedMigration;

-        interface ITCSKey1;

-        interface ITCSKey2;

-        interface ITCSKey;

-        interface ITCSKeyManage;

-        interface ITCSCryptography;

-        interface ITCSAuthorization;

-        interface ITCSIntegrity;

-        interface ITCSTpm2;

-        interface ITCSTpm;

-        interface ITCSIdentityKey;

-        interface ITCSTpmManagement;

-        interface ITCSMigration;

-        interface ITCSEventManager;

-        interface ITCSMaintenance;

-    };

-};

+/*++
+
++++TCS.idl
+
+Interface declarations for the TSS Core Service - COM interface for Windows based platforms 
+    
+--*/
+/*
+Missing:
+TCS_OpenContext
+TCPA_RESULT TCS_CloseContext
+TCPA_RESULT TCS_FreeMemory
+*/
+
+
+import "oaidl.idl";
+import "ocidl.idl";
+// header file for the basic tcpa data types
+import "tcs_structs.h";
+
+[
+    object,
+    uuid(FBCD9C02-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSBase Interface"),
+    pointer_default(unique)
+]
+interface ITCSBase : IUnknown
+{
+    [helpstring("method TCSP_GetRandom")] 
+    HRESULT TCSP_GetRandom(	[in, out] UINT32* bytesRequested,
+                            [out, size_is(,*bytesRequested)] BYTE** randomBytes);	
+
+    [helpstring("method TCSP_StirRandom")] 
+    HRESULT TCSP_StirRandom([in] UINT32 PunInDataSize,
+                            [in, size_is(PunInDataSize)] BYTE* PrgbInData);
+
+    [helpstring("method TCS_GetCapability")] 
+    HRESULT TCS_GetCapability(	[in] TPM_CAPABILITY_AREA capArea,
+                                [in] UINT32 subCapSize,
+                                [in, ptr, size_is(subCapSize)] BYTE* subCap,
+                                [out] UINT32* respSize,
+                                [out, size_is(, *respSize)] BYTE** resp);
+};
+
+[
+    object,
+    uuid(FBCD9C03-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSKey Interface"),
+    pointer_default(unique)
+]
+interface ITCSKey1 : IUnknown
+{
+    [helpstring("method TCSP_LoadKeyByBlob")] 
+    HRESULT TCSP_LoadKeyByBlob(		[in] TCS_KEY_HANDLE	hUnwrappingKey,
+                            [in] UINT32		cWrappedKeyBlobSize,
+                            [in, size_is(cWrappedKeyBlobSize)] BYTE* rgbWrappedKeyBlob,
+                            [in, out, ptr] TPM_AUTH*	pAuth,
+                            [out] TCS_KEY_HANDLE*	phKeyTCSI,
+                            [out] TCS_KEY_HANDLE*	phKeyHMAC);
+
+    [helpstring("method TCSP_CreateWrapKey")] 
+    HRESULT TCSP_CreateWrapKey(		[in] TCS_KEY_HANDLE hWrappingKey,		
+                            [in] TCG_ENCAUTH KeyUsageAuth,
+                            [in] TCG_ENCAUTH KeyMigrationAuth,
+                            [in, out] UINT32* pcKeySize,
+                            [in, out, size_is(, *pcKeySize)] BYTE** prgbKey,
+                            [in, out, ptr] TPM_AUTH* pAuth);
+
+    [helpstring("method TCSP_GetPubKey")] 
+    HRESULT TCSP_GetPubKey(	[in] TCS_KEY_HANDLE hKey,
+                            [in, out, ptr] TPM_AUTH* pAuth,
+                            [out] UINT32* pcPubKeySize,
+                            [out, size_is(, *pcPubKeySize)] BYTE** prgbPubKey);	
+                             
+    [helpstring("method TCSP_EvictKey")] 
+    HRESULT TCSP_EvictKey([in] TCS_KEY_HANDLE hKey);
+};
+
+[
+    object,
+    uuid(FBCD9C0D-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSKey Interface"),
+    pointer_default(unique)
+]
+interface ITCSKey : ITCSKey1  
+{
+    [helpstring("method TCSP_CertifyKey")]
+    HRESULT TCSP_CertifyKey([in] TCS_KEY_HANDLE	hCertHandle,
+                            [in] TCS_KEY_HANDLE	hKeyHandle,
+                            [in] TCG_NONCE	AntiReplay,
+                            [in, out, ptr] TCS_AUTH*	pCertAuth,
+                            [in, out, ptr] TCS_AUTH*	pKeyAuth,
+                            [out] UINT32* pcCertifyInfoSize,
+                            [out, size_is(, *pcCertifyInfoSize)] BYTE** ppCertifyInfo,
+                            [out] UINT32* pcOutDataSize,
+                            [out, size_is(, *pcOutDataSize)] BYTE** ppOutData);
+};
+
+[
+    object,
+    uuid(FBCD9C11-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSKey2 Interface"),
+    pointer_default(unique)
+]
+interface ITCSKey2 : ITCSKey  
+{
+    [helpstring("method TCSP_LoadKey2ByBlob")] 
+    HRESULT TCSP_LoadKey2ByBlob([in] TPM_KEY_HANDLE		hUnwrappingKey,
+                                [in] UINT32				cWrappedKeyBlobSize,
+                                [in, size_is(cWrappedKeyBlobSize)] BYTE* rgbWrappedKeyBlob,
+                                [in, out, ptr] TPM_AUTH*	pAuth,
+                                [out] TPM_KEY_HANDLE*		phKeyTCSI);
+
+    [helpstring("method TCSP_MigrateKey")]
+    HRESULT TCSP_MigrateKey([in] TPM_KEY_HANDLE	hMaKeyHandle,
+                            [in] UINT32		cPubKeyDataSize,
+                            [in, size_is(cPubKeyDataSize)] BYTE* pPubKeyData,
+                            [in] UINT32		cInDataSize,
+                            [in, size_is(cInDataSize)] BYTE* pInData,
+                            [in, out, ptr] TPM_AUTH*	pKeyAuth,
+                            [out] UINT32*		pcOutDataSize,
+                            [out, size_is(, *pcOutDataSize)] BYTE** ppOutData);
+
+};	// end of interface ITCSKeyInterim1
+[
+    object,
+    uuid(FBCD9C14-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSNonVolatileStorage Interface"),
+    pointer_default(unique)
+]
+interface ITCSNonVolatileStorage : IUnknown
+{
+    [helpstring("method TCSP_DefineOrReleaseSpace")]	
+    HRESULT TCSP_DefineOrReleaseSpace([in] UINT32 cPubInfoSize,
+                            [in, size_is(cPubInfoSize)] BYTE*	pPubInfo,
+                            [in] TPM_ENCAUTH EncAuth,
+                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);
+
+    [helpstring("method TCSP_ReadValue")]
+    HRESULT TCSP_ReadValue( [in] TPM_NV_INDEX	NVStore,
+                            [in] UINT32	Offset,
+                            [in,out] UINT32*	pcDataSize,
+                            [in, out, ptr] TPM_AUTH*	pOwnerAuth,
+                            [out, size_is(,*pcDataSize)] BYTE**	ppData);
+
+    [helpstring("method TCSP_ReadValueAuth")]
+    HRESULT TCSP_ReadValueAuth( [in] TPM_NV_INDEX	NVStore,
+                                [in] UINT32	Offset,
+                                [in,out] UINT32*	pcDataSize,
+                                [in, out, ptr] TPM_AUTH*	pNVAuth,
+                                [out, size_is(,*pcDataSize)] BYTE**	ppData);
+
+    [helpstring("method TCSP_WriteValue")]
+    HRESULT TCSP_WriteValue([in] TPM_NV_INDEX	NVStore,
+                            [in] UINT32	Offset,
+                            [in] UINT32	cDataSize,
+                            [in, size_is(cDataSize)] BYTE*	pData,
+                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);
+
+    [helpstring("method TCSP_WriteValueAuth")]
+    HRESULT TCSP_WriteValueAuth([in] TPM_NV_INDEX	NVStore,
+                            [in] UINT32	Offset,
+                            [in] UINT32	cDataSize,
+                            [in, size_is(cDataSize)] BYTE*	pData,
+                            [in, out, ptr] TPM_AUTH*	pNVAuth);
+
+};	// end of interface ITCSNonVolatileStorage
+
+[
+    object,
+    uuid(FBCD9C15-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSTransportProtection Interface"),
+    pointer_default(unique)
+]
+interface ITCSTransportProtection : IUnknown
+{
+    [helpstring("method TCSP_EstablishTransport")]	
+    HRESULT TCSP_EstablishTransport([in] UINT32	 TransControlFlags,
+                            [in] TPM_KEY_HANDLE	hEncKey,
+                            [in] UINT32	cTransSessionInfoSize,
+                            [in, size_is(cTransSessionInfoSize)] BYTE*	pTransSessionInfo,
+                            [in] UINT32	cSecretSize,
+                            [in, size_is(cSecretSize)] BYTE* pSecret,	
+                            [in, out, ptr] TPM_AUTH*	pEncKeyAuth,	
+                            [out] TPM_MODIFIER_INDICATOR*	pbLocality,
+                            [out] TCS_HANDLE* phTransSession,
+                            [out] UINT32*	pcCurrentTicks,
+                            [out, size_is(, *pcCurrentTicks)] BYTE** ppCurrentTicks,
+                            [out] TPM_NONCE* pTransNonce);
+
+    [helpstring("method TCSP_ExecuteTransport")]
+    HRESULT TCSP_ExecuteTransport([in] TPM_COMMAND_CODE	unWrappedCommandOrdinal,	
+                            [in] UINT32	cWrappedCmdDataInSize,
+                            [in, size_is(cWrappedCmdDataInSize)] BYTE* 	pWrappedCmdDataIn,	
+                            [in, out] UINT32* pcHandleListSize,
+                            [in, out, size_is(, *pcHandleListSize)] TPM_HANDLE** pphHandles,
+                            [in, out, ptr] TPM_AUTH* pWrappedCmdAuth1,	
+                            [in, out, ptr] TPM_AUTH* pWrappedCmdAuth2,	
+                            [in, out, ptr] TPM_AUTH* pTransAuth,
+                            [out] UINT64* pCurrentTicks,
+                            [out] TPM_MODIFIER_INDICATOR* pbLocality,
+                            [out] TPM_RESULT*	pWrappedCmdReturnCode,
+                            [out] UINT32* pcWrappedCmdDataOutSize,
+                            [out, size_is(, *pcWrappedCmdDataOutSize)] BYTE** 	ppWrappedCmdParamOut);
+
+    [helpstring("method TCSP_ReleaseTransportSigned")]
+    HRESULT TCSP_ReleaseTransportSigned([in] TPM_KEY_HANDLE hSignatureKey,
+                            [in] TPM_NONCE	AntiReplayNonce,
+                            [in, out, ptr] TPM_AUTH*	pKeyAuth,
+                            [in, out, ptr] TPM_AUTH*	pTransAuth,
+                            [out] TPM_MODIFIER_INDICATOR* pbLocality,
+                            [out] UINT32*	pcCurrentTicksSize,
+                            [out, size_is(, *pcCurrentTicksSize)] BYTE**	ppCurrentTicks,
+                            [out] UINT32*	pcSignatureSize,
+                            [out, size_is(, *pcSignatureSize)] BYTE**	ppSignature);
+
+};	// end of interface ITCSTransportProtection
+
+[
+    object,
+    uuid(FBCD9C16-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSCertifiedMigration Interface"),
+    pointer_default(unique)
+]
+interface ITCSCertifiedMigration : IUnknown
+{
+    [helpstring("method TCSP_CMK_SetRestrictions")]
+    HRESULT TCSP_SetRestrictions([in] TPM_CMK_DELEGATE		Restriction,
+                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);
+
+    [helpstring("method TCSP_CMK_ApproveMA")]
+    HRESULT TCSP_ApproveMA([in] TPM_DIGEST MigAuthorityDigest,
+                            [in, out, ptr] TPM_AUTH*	pOwnerAuth,
+                            [out] TPM_HMAC* pHmacMigAuthDigest);
+
+    [helpstring("method TCSP_CMK_CreateKey")]
+    HRESULT TCSP_CreateKey([in] TPM_KEY_HANDLE	hMaKeyHandle,
+                            [in] TPM_ENCAUTH KeyUsageAuth,
+                            [in] TPM_HMAC	MigAuthApproval,
+                            [in] TPM_DIGEST MigAuthorityDigest,
+                            [in, out] UINT32* pckeyDataSize,
+                            [in, out, size_is(, *pckeyDataSize)] BYTE** ppKeyData,
+                            [in, out, ptr] TPM_AUTH*	pOwnerAuth);
+
+    [helpstring("method TCSP_CMK_CreateTicket")]	
+    HRESULT TCSP_CreateTicket([in] UINT32	cPublicVerifyKeySize,
+                            [in, size_is(cPublicVerifyKeySize)] BYTE*	pPublicVerifyKey,
+                            [in] TPM_DIGEST	SignedData,
+                            [in] UINT32	cSigValueSize,
+                            [in, size_is(cSigValueSize)] BYTE*	SigValue,
+                            [in, out, ptr] TPM_AUTH*	pOwnertAuth,
+                            [out] TPM_HMAC*	pSigTicket);
+
+    [helpstring("method TCSP_CMK_CreateBlob")]
+    HRESULT TCSP_CreateBlob([in] TPM_KEY_HANDLE hParentHandle,
+                            [in] TPM_MIGRATE_SCHEME	MigrationType,
+                            [in] UINT32	cMigrationKeyAuthSize,
+                            [in, size_is(cMigrationKeyAuthSize)] BYTE*	pMigrationKeyAuth,
+                            [in] TPM_DIGEST	PubSourecKeyDigest,
+                            [in] UINT32	cMsaListSize,
+                            [in, size_is(cMsaListSize)]	BYTE* pMsaList,
+                            [in] UINT32	cRestrictTicketSize,
+                            [in, size_is(cRestrictTicketSize)]	BYTE* pRestrictTicket,
+                            [in] UINT32	cSigTicketSize,
+                            [in, size_is(cSigTicketSize)]	BYTE* pSigTicket,
+                            [in] UINT32	cEncDataSize,
+                            [in, size_is(cEncDataSize)]	BYTE* pEncData,
+                            [in, out] TPM_AUTH*	pParentAuth,
+                            [out] UINT32*	pcRandomSize,
+                            [out, size_is(, *pcRandomSize)] BYTE**	ppRandom,
+                            [out] UINT32*	pcOutDataSize,
+                            [out, size_is(, *pcOutDataSize)] BYTE**	ppOutData);
+
+    [helpstring("method TCSP_CMK_ConvertMigration")]
+    HRESULT TCSP_ConvertMigration([in] TPM_KEY_HANDLE hParentHandle,
+                            [in] TPM_CMK_AUTH	RestrictTicket,
+                            [in] TPM_HMAC	SigTicket,
+                            [in] UINT32	cKeyDataSize,
+                            [in, size_is(cKeyDataSize)] BYTE* pKeyData,
+                            [in] UINT32	cMsaListSize,
+                            [in, size_is(cMsaListSize)]	BYTE* pMsaList,
+                            [in] UINT32	cRandomSize,
+                            [in, size_is(cRandomSize)] BYTE*	pRandom,
+                            [in, out, ptr] TPM_AUTH*	pParentAuth,
+                            [out] UINT32*	pcOutDataSize,
+                            [out, size_is(, *pcOutDataSize)] BYTE**	ppOutData);
+}// end of interface ITCSCertifiedMirgation
+
+[
+    object,
+    uuid(FBCD9C04-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSKeyManage Interface"),
+    pointer_default(unique)
+]
+interface ITCSKeyManage : IUnknown
+{
+    [helpstring("method TCSP_LoadKeyByUUID")] 
+    HRESULT TCSP_LoadKeyByUUID(	[in] TSS_UUID KeyUUID,
+                                [in, out, ptr] TCS_LOADKEY_INFO* pLoadKeyInfo,
+                                [out] TCS_KEY_HANDLE* phKeyTCSI);
+
+    [helpstring("method TCS_RegisterKey")] 
+    HRESULT TCS_RegisterKey([in] TSS_UUID WrappingKeyUUID,
+                            [in] TSS_UUID KeyUUID,
+                            [in] UINT32 cKeySize,
+                            [in, size_is(cKeySize)] BYTE* rgbKey,				
+                            [in, defaultvalue(0)] UINT32 cVendorData,
+                            [in, ptr, size_is(cVendorData), defaultvalue(0)] BYTE* rgbVendorData);
+
+    [helpstring("method TCS_UnregisterKey")] 
+    HRESULT TCS_UnregisterKey([in] TSS_UUID KeyUUID);
+
+
+    [helpstring("method TCS_EnumRegisteredKeys")] 
+    HRESULT TCS_EnumRegisteredKeys(	[in, ptr] TSS_UUID* pKeyUUID,
+                            [out] UINT32* pcKeyHierarchySize,
+                            [out, size_is(, *pcKeyHierarchySize)] TSS_KM_KEYINFO** ppKeyHierarchy);
+
+    [helpstring("method TCS_GetRegisteredKey")] 
+    HRESULT TCS_GetRegisteredKey([in] TSS_UUID KeyUUID,
+                                 [out] TSS_KM_KEYINFO** ppKeyInfo);
+
+    [helpstring("method TCS_GetRegisteredKeyBlob")] 
+    HRESULT TCS_GetRegisteredKeyBlob([in] TSS_UUID KeyUUID,
+                                     [out] UINT32* pcKeySize,
+                                     [out, size_is(, *pcKeySize)] BYTE** prgbKey);
+
+// HRESULT TCSP_GetRegisteredKeyByPublicInfo
+};
+
+[
+    object,
+    uuid(FBCD9C05-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSCryptography Interface"),
+    pointer_default(unique)
+]
+interface ITCSCryptography : IUnknown
+{	
+    [helpstring("method TCSP_Sign")] 
+    HRESULT TCSP_Sign(	[in] TCS_KEY_HANDLE keyHandle,
+                        [in] UINT32 areaToSignSize,	
+                        [in, size_is(areaToSignSize)] BYTE* areaToSign,
+                        [in, out, ptr] TCS_AUTH* privAuth,
+                        [out] UINT32* sigSize,
+                        [out, size_is(, *sigSize)] BYTE** sig);
+
+    [helpstring("method TCSP_Unbind")] 
+    HRESULT TCSP_Unbind([in] TCS_KEY_HANDLE keyHandle,
+                        [in] UINT32 inDataSize,
+                        [in, size_is(inDataSize)] BYTE* inData,
+                        [in, out, ptr] TCS_AUTH* privAuth,
+                        [out] UINT32* outDataSize,
+                        [out, size_is(, *outDataSize)] BYTE** outData);
+                            
+    [helpstring("method TCSP_Seal")] 
+    HRESULT TCSP_Seal(	[in] TCS_KEY_HANDLE keyHandle,
+                        [in] TCG_ENCAUTH encAuth,
+                        [in] UINT32 pcrInfoSize,
+                        [in, ptr, size_is(pcrInfoSize)] BYTE* PcrInfo,
+                        [in] UINT32 inDataSize,
+                        [in, size_is(inDataSize)] BYTE* inData,
+                        [in, out, ptr] TCS_AUTH* pAuth,
+                        [out] UINT32* SealedDataSize,
+                        [out, size_is(, *SealedDataSize)] BYTE** SealedData);	
+
+    [helpstring("method TCSP_Unseal")] 
+    HRESULT TCSP_Unseal([in] TCS_KEY_HANDLE parentHandle,
+                        [in] UINT32 SealedDataSize,
+                        [in, size_is(SealedDataSize)] BYTE* SealedData,
+                        [in, out, ptr] TCS_AUTH* parentAuth,
+                        [in, out, ptr] TCS_AUTH* dataAuth,
+                        [out] UINT32* DataSize,
+                        [out, size_is(, *DataSize)] BYTE** Data);
+
+};
+
+[
+    object,
+    uuid(FBCD9C06-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSAuthorization Interface"),
+    pointer_default(unique)
+]
+interface ITCSAuthorization : IUnknown
+{	
+    [helpstring("method TCSP_ChangeAuth")] 
+    HRESULT TCSP_ChangeAuth([in] TCS_KEY_HANDLE parentHandle,
+                            [in] TPM_PROTOCOL_ID protocolID,
+                            [in] TCG_ENCAUTH newAuth,
+                            [in] TCG_ENTITY_TYPE entityType,
+                            [in] UINT32 encDataSize,
+                            [in, size_is(encDataSize)] BYTE* encData,
+                            [in, out, ptr] TCS_AUTH* ownerAuth,
+                            [in, out, ptr] TCS_AUTH* entityAuth,
+                            [out] UINT32* outDataSize,
+                            [out, size_is(, *outDataSize)] BYTE** outData);
+
+    [helpstring("method TCSP_ChangeAuthOwner")] 
+    HRESULT TCSP_ChangeAuthOwner(	[in] TPM_PROTOCOL_ID protocolID,
+                                    [in] TCG_ENCAUTH newAuth,
+                                    [in] TCG_ENTITY_TYPE entityType,
+                                    [in, out, ptr] TCS_AUTH* ownerAuth);
+
+// HRESULT TCSP_ChangeAuthAsymStart
+// HRESULT TCSP_ChangeAuthAsymFinish
+    
+    [helpstring("method TCSP_OIAP")] 
+    HRESULT TCSP_OIAP(	[out] TCS_AUTHHANDLE* authHandle,
+                        [out] TCG_NONCE* nonce0);
+
+    [helpstring("method TCSP_OSAP")] 
+    HRESULT TCSP_OSAP(	[in] TCG_ENTITY_TYPE entityType,
+                        [in] UINT32 entityValue,
+                        [in] TCG_NONCE nonceOddOSAP,
+                        [out] TCS_AUTHHANDLE* authHandle,
+                        [out] TCG_NONCE* nonceEven,
+                        [out] TCG_NONCE* nonceEvenOSAP);
+
+    [helpstring("method TCSP_TerminateHandle")] 
+    HRESULT TCSP_TerminateHandle([in] TCS_AUTHHANDLE handle);
+};
+
+
+[
+    object,
+    uuid(FBCD9C07-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSIntegrity Interface"),
+    pointer_default(unique)
+]
+interface ITCSIntegrity : IUnknown
+{
+    [helpstring("method TCSP_Extend")] 
+    HRESULT TCSP_Extend(	[in] TCG_PCRINDEX pcrNum,
+                            [in] TCG_DIGEST inDigest,		
+                            [out] TCG_PCRVALUE* outDigest);
+
+    [helpstring("method TCSP_PcrRead")] 
+    HRESULT TCSP_PcrRead(	[in] TCG_PCRINDEX pcrNum,
+                            [out] TCG_PCRVALUE* outDigest);
+
+    [helpstring("method TCSP_DirWriteAuth")] 
+    HRESULT TCSP_DirWriteAuth(	[in] TCG_DIRINDEX dirIndex,
+                                [in] TCG_DIRVALUE newContents,
+                                [in, out, ptr] TCS_AUTH* ownerAuth);
+
+    [helpstring("method TCSP_DirRead")] 
+    HRESULT TCSP_DirRead(	[in] TCG_DIRINDEX dirIndex,
+                            [out] TCG_DIRVALUE* dirValue);
+
+    [helpstring("method TCSP_Quote")] 
+    HRESULT TCSP_Quote(	[in] TCS_KEY_HANDLE hKey,
+                        [in] TCG_NONCE Nonce,
+                        [in, out] UINT32* PcrDataSize,
+                        [in, out, size_is(, *PcrDataSize)] BYTE** PcrData,
+                        [in, out, ptr] TCS_AUTH* pAuth,
+                        [out] UINT32* pcSignatureSize,
+                        [out, size_is(, *pcSignatureSize)] BYTE** ppSignature);
+};
+
+[
+    object,
+    uuid(FBCD9C08-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSTpm Interface"),
+    pointer_default(unique)
+]
+interface ITCSTpm : IUnknown
+{
+    [helpstring("method TCSP_CreateEndorsementKeyPair")] 
+    HRESULT TCSP_CreateEndorsementKeyPair([in] TCG_NONCE antiReplay,
+                    [in, out] UINT32* pPubEndorsementKeySize,
+                    [in, out, size_is(, *pPubEndorsementKeySize)] BYTE** ppPubEndorsementKey,
+                    [out] TCG_DIGEST* pChecksum);
+
+    [helpstring("method TCSP_DisableForceClear")] 
+    HRESULT TCSP_DisableForceClear();
+
+    [helpstring("method TCSP_DisablePubekRead")] 
+    HRESULT TCSP_DisablePubekRead([in, out, ptr] TCS_AUTH* ownerAuth);
+
+    [helpstring("method TCSP_DisableOwnerClear")] 
+    HRESULT TCSP_DisableOwnerClear([in, out, ptr] TCS_AUTH* ownerAuth);
+
+    [helpstring("method TCSP_ForceClear")] 
+    HRESULT TCSP_ForceClear();
+
+    [helpstring("method TCSP_GetCapability")] 
+    HRESULT TCSP_GetCapability([in] TPM_CAPABILITY_AREA capArea,
+                       [in] UINT32 subCapSize,
+                       [in, ptr, size_is(subCapSize)] BYTE* subCap,
+                       [out] UINT32* respSize,
+                       [out, size_is(, *respSize)] BYTE** resp);
+
+    [helpstring("method TCSP_GetCapabilityOwner")] 
+    HRESULT TCSP_GetCapabilityOwner([in, out, ptr] TCS_AUTH* pOwnerAuth,
+                          [out] TPM_VERSION* pVersion,
+                          [out] UINT32* pNonVolatileFlags,
+                          [out] UINT32* pVolatileFlags);
+
+// HRESULT TCSP_GetCapabilitySigned
+
+    [helpstring("method TCSP_GetTestResult")] 
+    HRESULT TCSP_GetTestResult([out] UINT32* outDataSize,
+                       [out, size_is(, *outDataSize)] BYTE** outData);
+
+    [helpstring("method TCSP_OwnerClear")] 
+    HRESULT TCSP_OwnerClear([in, out, ptr] TCS_AUTH* ownerAuth);
+
+    [helpstring("method TCSP_OwnerReadPubek")] 
+    HRESULT TCSP_OwnerReadPubek([in, out, ptr] TCS_AUTH* ownerAuth,
+                        [out] UINT32* pubEndorsementKeySize,
+                        [out, size_is(, *pubEndorsementKeySize)] BYTE** pubEndorsementKey);
+
+    [helpstring("method TCSP_OwnerSetDisable")] 
+    HRESULT TCSP_OwnerSetDisable([in] TSS_BOOL disableState,
+                         [in, out, ptr] TCS_AUTH* ownerAuth);
+
+    [helpstring("method TCSP_PhysicalDisable")] 
+    HRESULT TCSP_PhysicalDisable();
+
+    [helpstring("method TCSP_PhysicalEnable")] 
+    HRESULT TCSP_PhysicalEnable();
+
+    [helpstring("method TCSP_PhysicalPresence")] 
+    HRESULT TCSP_PhysicalPresence([in] TPM_PHYSICAL_PRESENCE fPhysicalPresence);
+
+    [helpstring("method TCSP_PhysicalSetDeactivated")] 
+    HRESULT TCSP_PhysicalSetDeactivated([in] TSS_BOOL state);
+
+    [helpstring("method TCSP_ReadPubek")] 
+    HRESULT TCSP_ReadPubek([in] TCG_NONCE antiReplay,
+                     [out] UINT32* pubEndorsementKeySize,
+                     [out, size_is(, *pubEndorsementKeySize)] BYTE** pubEndorsementKey,
+                     [out] TCG_DIGEST* checksum);
+
+    [helpstring("method TCSP_SelfTestFull")] 
+    HRESULT TCSP_SelfTestFull();
+
+// HRESULT TCSP_CertifySelfTest
+// HRESULT TCSP_ContinueSelfTest
+
+    [helpstring("method TCSP_SetOwnerInstall")] 
+    HRESULT TCSP_SetOwnerInstall([in] TSS_BOOL state);
+
+    [helpstring("method TCSP_SetTempDeactivated")] 
+    HRESULT TCSP_SetTempDeactivated();
+
+    [helpstring("method TCSP_TakeOwnership")] 
+    HRESULT TCSP_TakeOwnership([in] UINT32 protocolID, 
+                       [in] UINT32 encOwnerAuthSize,
+                       [in, size_is(encOwnerAuthSize)] BYTE* encOwnerAuth,
+                       [in] UINT32 encSrkAuthSize,
+                       [in, ptr, size_is(encSrkAuthSize)] BYTE* encSrkAuth,
+                       [in, out] UINT32* pSrkSize,
+                       [in, out, size_is(, *pSrkSize)] BYTE** ppSrk,
+                       [in, out, ptr] TCS_AUTH* pOwnerAuth);
+
+    [helpstring("method TCSP_FieldUpgrade")]
+    HRESULT TCSP_FieldUpgrade([in] UINT32 dataInSize,
+                      [in, ptr, size_is(dataInSize)] BYTE* dataIn,
+                      [in, out, ptr] TCS_AUTH* ownerAuth,
+                      [out] UINT32* dataOutSize,
+                      [out, size_is(, *dataOutSize)] BYTE** dataOut);
+
+// HRESULT TCSP_SetRedirection
+
+};
+
+[
+    object,
+    uuid(FBCD9C12-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSTpm2 Interface"),
+    pointer_default(unique)
+]
+interface ITCSTpm2 : ITCSTpm
+{
+    [helpstring("method TCSP_OwnerReadInternalPub")]
+    HRESULT TCSP_OwnerReadInternalPub([in] TCS_KEY_HANDLE hKey,
+                                      [in, out, ptr] TCS_AUTH* pAuth,
+                                      [out] UINT32* pcPubKeySize,
+                                      [out, size_is(, *pcPubKeySize)] BYTE** ppPubKey);	
+
+    [helpstring("method TCSP_KeyControlOwner")]
+    HRESULT TCSP_KeyControlOwner([in] TCS_KEY_HANDLE hKey,
+                                 [in] UINT32 cPubKeyDataSize,
+                                 [in, size_is(cPubKeyDataSize)] BYTE* pPubKeyData,
+                                 [in] TPM_KEY_CONTROL KeyAttribBit,
+                                 [in] TSS_BOOL BitValue,
+                                 [in, out, ptr] TCS_AUTH* pAuth);
+        
+    [helpstring("method TCSP_SetCapability")] 
+    HRESULT TCSP_SetCapability([in] TPM_CAPABILITY_AREA CapArea,
+                               [in] UINT32 cSubCapSize,
+                               [in, size_is(cSubCapSize)] BYTE* pSubCap,
+                               [in] UINT32 cSetValueSize,
+                               [in, size_is(cSetValueSize)] BYTE* pSetValue,
+                               [in, out, ptr] TCS_AUTH* pAuth);
+
+    [helpstring("method TCSP_CreateRevocableEndorsementKeyPair")]
+    HRESULT TCSP_CreateRevocableEndorsementKeyPair([in] TCG_NONCE AntiReplay,
+                            [in] UINT32 cEndorsementKeyInfoSize,
+                            [in, size_is(cEndorsementKeyInfoSize)] BYTE* pEndorsementKeyInfo,
+                            [in] TSS_BOOL GenRestAuth,
+                            [in, out, ptr] TCG_DIGEST* EKResetAuth,
+                            [out] UINT32*	cEndorsementKeySize,
+                            [out, size_is(, *cEndorsementKeySize )]BYTE** ppEndorsementKey,
+                            [out] TCG_DIGEST* pChecksum);
+
+    [helpstring("method TCSP_RevokeEndorsementKeyPair")]
+    HRESULT TCSP_RevokeEndorsementKeyPair([in] TCG_DIGEST EKResetAuth);
+
+    [helpstring("method TCSP_SetOwnerPointer")]
+    HRESULT TCSP_SetOwnerPointer([in] TCG_ENTITY_TYPE EntityType,
+                                 [in] UINT32 EntityValue);
+
+};	// end of interface ITCSTpmInterim1
+
+[
+    object,
+    uuid(FBCD9C09-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSIdentityKey Interface"),
+    pointer_default(unique)
+]
+interface ITCSIdentityKey : IUnknown
+{
+    [helpstring("method TCSP_MakeIdentity")] 
+    HRESULT TCSP_MakeIdentity([in] TCG_ENCAUTH IdentityAuth,
+                      [in] TPM_CHOSENID_HASH	IDLabel_PrivCAHash,
+                      [in, out] UINT32* pcIdentityKeySize,
+                      [in, out, size_is(, *pcIdentityKeySize)] BYTE** prgbIdentityKey,
+                      [in, out, ptr] TCS_AUTH* pSrkAuth,
+                      [in, out, ptr] TCS_AUTH* pOwnerAuth,
+                      [out] UINT32* pcIdentityBindingSize,
+                      [out, size_is(, *pcIdentityBindingSize)] BYTE** prgbIdentityBinding,
+                      [out] UINT32* pcEndorsementCredentialSize,
+                      [out, size_is(, *pcEndorsementCredentialSize)] BYTE** prgbEndorsementCredential,
+                      [out] UINT32* pcPlatformCredentialSize,
+                      [out, size_is(, *pcPlatformCredentialSize)] BYTE** prgbPlatformCredential,
+                      [out] UINT32* pcConformanceCredentialSize,
+                      [out, size_is(, *pcConformanceCredentialSize)] BYTE** prgbConformanceCredential);
+
+    [helpstring("method TCSP_ActivateTPMIdentity")] 
+    HRESULT TCSP_ActivateTPMIdentity([in] TCS_KEY_HANDLE hIdKey,
+                                     [in] UINT32 unBlobSize,
+                                     [in, size_is(unBlobSize)] BYTE* pbBlob,
+                                     [in, out, ptr] TCS_AUTH* pIdKeyAuth,
+                                     [in, out, ptr] TCS_AUTH* pOwnerAuth,
+                                     [out] UINT32* punSymmetricKeySize,
+                                     [out, size_is(, *punSymmetricKeySize)] BYTE** ppSymmetricKey);
+};
+
+
+[
+    object,
+    uuid(FBCD9C0A-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSMigration Interface"),
+    pointer_default(unique)
+]
+interface ITCSMigration : IUnknown
+{
+    [helpstring("method TCSP_AuthorizeMigrationKey")] 
+    HRESULT TCSP_AuthorizeMigrationKey([in] TPM_MIGRATE_SCHEME migrateScheme,
+                             [in] UINT32 MigrationKeySize,
+                             [in, size_is(MigrationKeySize)] BYTE* MigrationKey,
+                             [in, out, ptr] TCS_AUTH* ownerAuth,
+                             [out] UINT32* MigrationKeyAuthSize,
+                             [out, size_is(, *MigrationKeyAuthSize)] BYTE** MigrationKeyAuth);
+
+    [helpstring("method TCSP_ConvertMigrationBlob")]
+    HRESULT TCSP_ConvertMigrationBlob([in] TCS_KEY_HANDLE parentHandle,
+                            [in] UINT32 inDataSize,
+                            [in, size_is(inDataSize)] BYTE* inData,
+                            [in] UINT32 randomSize,
+                            [in, size_is(randomSize)] BYTE* rgbRandom,
+                            [in, out, ptr] TCS_AUTH* parentAuth,
+                            [out] UINT32* outDataSize,
+                            [out, size_is(, *outDataSize)] BYTE**	outData);
+
+    [helpstring("method TCSP_CreateMigrationBlob")]
+    HRESULT TCSP_CreateMigrationBlob([in] TCS_KEY_HANDLE parentHandle,
+                           [in] TPM_MIGRATE_SCHEME migrationType,
+                           [in] UINT32 migrationKeyAuthSize,
+                           [in, size_is(migrationKeyAuthSize)] BYTE* MigrationKeyAuth,
+                           [in] UINT32 encDataSize,
+                           [in, size_is(encDataSize)]	BYTE* encData,
+                           [in, out, ptr] TCS_AUTH* parentAuth,
+                           [in, out, ptr] TCS_AUTH* entityAuth,
+                           [out] UINT32* randomSize,
+                           [out, size_is(, *randomSize)] BYTE** random,
+                           [out] UINT32* outDataSize,
+                           [out, size_is(, *outDataSize)] BYTE**	outData);
+};
+
+[
+    object,
+    uuid(FBCD9C13-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSTpmManagement Interface"),
+    pointer_default(unique)
+]
+interface ITCSTpmManagement : IUnknown
+{
+    [helpstring("method TCSP_SetOperatorAuth")] 
+    HRESULT TCSP_SetOperatorAuth([in] TPM_SECRET OperatorAuth);
+
+    [helpstring("method TCSP_SetTempDeactivated2")] 
+    HRESULT TCSP_SetTempDeactivated2([in, out, ptr] TCS_AUTH* pOperatorAuth);
+    
+    [helpstring("method TCSP_ResetEstablishmentBit")] 
+    HRESULT TCSP_ResetEstablishmentBit();
+
+    [helpstring("method TCSP_FlushSpecific")] 
+    HRESULT TCSP_FlushSpecific([in] TCS_HANDLE hResHandle,
+                               [in] TPM_RESOURCE_TYPE ResourceType);
+
+    [helpstring("method TCSP_ResetLockValue")] 
+    HRESULT TCSP_ResetLockValue([in, out, ptr] TCS_AUTH* pOwnerAuth);
+
+};	// end of interface ITCSTpmManagement
+
+[
+    object,
+    uuid(FBCD9C0B-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSEventManager Interface"),
+    pointer_default(unique)
+]
+interface ITCSEventManager : IUnknown
+{
+
+// HRESULT TCS_LogPcrEvent 
+// HRESULT TCS_GetPcrEvent
+// HRESULT TCS_GetPcrEventsByPcr
+// HRESULT TCS_GetPcrEventLog
+
+};
+
+
+[
+    object,
+    uuid(FBCD9C0C-72CB-47BB-99DD-2317551491DE),
+    helpstring("ITCSMaintenance Interface"),
+    pointer_default(unique)
+]
+interface ITCSMaintenance : IUnknown
+{
+// HRESULT TCSP_CreateMaintenanceArchive
+// HRESULT TCSP_LoadMaintenanceArchive
+// HRESULT TCSP_KillMaintenanceFeature
+// HRESULT TCSP_LoadManuMaintPub
+// HRESULT TCSP_ReadManuMaintPub
+};
+
+
+// TSSCORELib
+[
+    uuid(FBCD9C00-72CB-47BB-99DD-2317551491DE),
+    version(1.0),
+    helpstring("TSSCore 1.0 Type Library")
+]
+library TSSCORELib
+{
+    importlib("stdole32.tlb");
+    importlib("stdole2.tlb");
+    [
+        uuid(FBCD9C01-72CB-47BB-99DD-2317551491DE),
+        helpstring("TSSCoreService Class")
+    ]
+    coclass TSSCoreService
+    {
+        [default] interface ITCSBase;
+        interface ITCSTransportProtection;
+        interface ITCSNonVolatileStorage;
+        interface ITCSCertifiedMigration;
+        interface ITCSKey1;
+        interface ITCSKey2;
+        interface ITCSKey;
+        interface ITCSKeyManage;
+        interface ITCSCryptography;
+        interface ITCSAuthorization;
+        interface ITCSIntegrity;
+        interface ITCSTpm2;
+        interface ITCSTpm;
+        interface ITCSIdentityKey;
+        interface ITCSTpmManagement;
+        interface ITCSMigration;
+        interface ITCSEventManager;
+        interface ITCSMaintenance;
+    };
+};
diff --git a/tss/include/tss/TSP.idl b/tss/include/tss/TSP.idl
index 40f95b7..7dc5fd3 100644
--- a/tss/include/tss/TSP.idl
+++ b/tss/include/tss/TSP.idl
@@ -1,762 +1,762 @@
-/*++

-

-+++TSP.idl

-

-    Interface declarations for the TSS Service Provider 

-    - COM interface for Windows based platforms

-      

---*/

-import "oaidl.idl";		// include ODL base types 

-import "ocidl.idl";

-

-//import the header files from TSS v1.2

-import "tss_typedef.h";

-import "tss_structs.h";

-

-// forward declaration

-interface ITCPAPolicy;

-interface ITCPAKey;

-

-/*

-Missing:

-TSS_RESULT Tspi_Context_Create

-TSS_RESULT Tspi_Context_Close

-TSS_RESULT Tspi_Context_FreeMemory

-*/

-

-    //ITCPAAttrib Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C2E-72CB-47BB-99DD-2317551491DE),

-

-        helpstring("ITCPAAttrib Interface"),

-        pointer_default(unique)

-    ]	

-    interface ITCPAAttrib : IUnknown

-    {

-        [helpstring("method SetAttribUint32")]

-        HRESULT SetAttribUint32([in] TSS_FLAG attribFlag, 

-                                [in] TSS_FLAG subFlags,

-                                [in] UINT32 ulAttrib);

-

-        [helpstring("method GetAttribUint32")]

-        HRESULT GetAttribUint32([in] TSS_FLAG attribFlag, 

-                                [in] TSS_FLAG subFlags,

-                                [out] UINT32* pulAttrib);

-

-        [helpstring("method SetAttribData")]

-        HRESULT SetAttribData([in] TSS_FLAG attribFlag, 

-                              [in] TSS_FLAG subFlags, 

-                              [in] UINT32 ulAttribDataSize, 

-                              [in, ptr, size_is(ulAttribDataSize)] BYTE* pbAttribData);

-

-        [helpstring("method GetAttribData")]

-        HRESULT GetAttribData([in] TSS_FLAG attribFlag, 

-                              [in] TSS_FLAG subFlags, 

-                              [out] UINT32* pulAttribDataSize,

-                              [out, size_is(, *pulAttribDataSize)] BYTE** ppbAttribData);

-    }

-

-    //ITCPAAuth Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C2F-72CB-47BB-99DD-2317551491DE),

-

-        helpstring("ITCPAAuth Interface"),

-        pointer_default(unique)

-    ]	

-    interface ITCPAAuth : IUnknown

-    {

-        [helpstring("method GetPolicyObject")]

-        HRESULT GetPolicyObject([in] TSS_FLAG PolicyType, 

-                                [out] ITCPAPolicy** ppPolicyObject);

-

-        [helpstring("method ChangeAuth")]

-        HRESULT ChangeAuth([in] IUnknown* PpParentObject, 

-                           [in] ITCPAPolicy* PpNewPolicy);

-

-// HRESULT ChangeAuthAsym

-

-    };

-

-    [

-        object,

-        uuid(FBCD9C2D-72CB-47BB-99DD-2317551491DE),

-        helpstring("ITCPAPcrs Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAPcrs : IUnknown

-    {

-        [helpstring("method SetPcrValue")]

-        HRESULT SetPcrValue([in] UINT32 ulPCRIndex,

-                            [in] UINT32 ulPcrValueLength,

-                            [in, size_is(ulPcrValueLength)] BYTE* pbPcrValue);

-

-        [helpstring("method GetPcrValue")]

-        HRESULT GetPcrValue([in] UINT32 ulPCRIndex,

-                            [out] UINT32* pulPcrValueLength,

-                            [out, size_is(, *pulPcrValueLength)] BYTE** ppbPcrValue);

-

-        [helpstring("method SelectPcrIndex")]

-        HRESULT SelectPcrIndex([in] UINT32 ulPCRIndex);

-

-    };

-

-    //ITCPAKey Interface

-    [

-        object,

-        uuid(FBCD9C27-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAKey Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAKey : IUnknown

-    {

-        [helpstring("method LoadKey")] 

-        HRESULT LoadKey([in] ITCPAKey* pUnwrappingKey);

-

-        [helpstring("method CreateKey")]

-        HRESULT CreateKey([in] ITCPAKey* pUnwrappingKey, 

-                          [in] ITCPAPcrs* pPcrComosite);

-

-        [helpstring("method WrapKey")] 

-        HRESULT WrapKey([in] ITCPAKey* pWrappinKey, 

-                        [in] ITCPAPcrs* pPcrComposite);

-        

-        [helpstring("method CertifyKey")] 

-        HRESULT CertifyKey([in] ITCPAKey* pCertifyingKey,

-                           [in, out, ptr] TSS_VALIDATION* pValidation);

-

-        [helpstring("method GetPubKey")]

-        HRESULT GetPubKey([out] UINT32* pulPubKeyLength,

-                          [out, size_is(, *pulPubKeyLength)] BYTE** ppbPubKey);

-

-        [helpstring("method UnLoadKey")] 

-        HRESULT UnLoadKey();

-    };

-

-    // ITCPAMigration

-    [

-        local,

-        object,

-        uuid(FBCD9C30-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAMigration Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAMigration : IUnknown

-    {

-        [helpstring("method CreateMigrationBlob")] 

-        HRESULT CreateMigrationBlob([in] ITCPAKey *pParentKey, 

-                                    [in] UINT32 ulMigTicketLength, 

-                                    [in, size_is(ulMigTicketLength)] BYTE* rgbMigTicket, 

-                                    [out] UINT32 *pulRandomLength, 

-                                    [out, size_is(, *pulRandomLength)] BYTE **prgbRandom, 

-                                    [out] UINT32 *pulMigrationBlobLength, 

-                                    [out, size_is(, *pulMigrationBlobLength)] BYTE **prgbMigBlob);

-

-        [helpstring("method ConvertMigrationBlob")] 

-        HRESULT ConvertMigrationBlob([in] ITCPAKey *pParentKey, 

-                                     [in] UINT32 ulRandomLength, 

-                                     [in, size_is(ulRandomLength)] BYTE *rgbRandom, 

-                                     [in] UINT32 ulMigrationBlobLength, 

-                                     [in, size_is(ulMigrationBlobLength)] BYTE *rgbMigBlob);

-    };

-

-    //ITCPAEncData Interface

-    [

-        uuid(FBCD9C29-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAEncData Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAEncData : IUnknown

-    {

-        [helpstring("method Seal")]

-        HRESULT Seal([in] ITCPAKey* pEncKey,

-                     [in] UINT32 ulDataLength, 

-                     [in, size_is(ulDataLength)] BYTE* pbData, 

-                     [in] ITCPAPcrs* pPcrComposite);

-

-        [helpstring("method Unseal")] 

-        HRESULT Unseal([in] ITCPAKey* pKey, 

-                       [out] UINT32* pulUnsealedDataLength, 

-                       [out, size_is(, *pulUnsealedDataLength)] BYTE** ppbData);

-

-        [helpstring("method Bind")] 

-        HRESULT Bind([in] ITCPAKey* pEncKey, 

-                     [in] UINT32 ulDataLength, 

-                     [in, size_is(ulDataLength)] BYTE* pbData);

-

-        [helpstring("method Unbind")] 

-        HRESULT Unbind([in] ITCPAKey* pKey, 

-                       [out] UINT32* pulUnboundDataLength, 

-                       [out, size_is(, *pulUnboundDataLength)] BYTE** ppbData);

-

-    };

-

-    //ITCPAHash Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C2B-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAHash Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAHash : IUnknown

-    {

-        [helpstring("method SetHashValue")] 

-        HRESULT SetHashValue([in] UINT32 ulHashValueLength, 

-                             [in, size_is(ulHashValueLength)] BYTE* pbHash);

-

-        [helpstring("method GetHashValue")] 

-        HRESULT GetHashValue([out] UINT32* pulHashValueLength, 

-                             [out, size_is(, *pulHashValueLength)] BYTE** ppbHash);

-

-        [helpstring("method UpdateHashValue")] 

-        HRESULT UpdateHashValue([in] UINT32 ulDataLength, 

-                                [in, size_is(ulDataLength)] BYTE* pbData);

-

-        [helpstring("method Sign")] 

-        HRESULT Sign([in] ITCPAKey* pKey, 

-                     [out] UINT32* pulSignatureLength, 

-                     [out, size_is(, *pulSignatureLength)] BYTE** ppbSignature);

-

-        [helpstring("method VerifySignature")] 

-        HRESULT VerifySignature([in] ITCPAKey* pKey, 

-                                [in] UINT32 ulSignatureLength, 

-                                [in, size_is(ulSignatureLength)] BYTE* pbSignature);

-

-    };

-

-    //ITCPAPolicy Interface

-    [

-        uuid(FBCD9C1E-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAPolicy Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAPolicy : IUnknown

-    { 

-        [helpstring("method SetSecret")] 

-        HRESULT SetSecret([in] TSS_FLAG SecretMode, 

-                          [in] UINT32 ulSecretLength, 

-                          [in, ptr, size_is(ulSecretLength)] BYTE* pbSecret);

-

-        [helpstring("method FlushSecret")] 

-        HRESULT FlushSecret();

-        

-        [helpstring("method AssignToObject")] 

-        HRESULT AssignToObject([in] IUnknown* pUnkObject);

-

-    };

-

-    //ITCPAAdministration Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C24-72CB-47BB-99DD-2317551491DE),

-

-        helpstring("ITCPAAdministration Interface"),

-        pointer_default(unique)

-    ]	

-    interface ITCPAAdministration : IUnknown

-    {

-        [helpstring("method SelfTestFull")]

-        HRESULT SelfTestFull();

-

-        [helpstring("method GetTestResult")]

-        HRESULT GetTestResult([out] UINT32* pulTestResultLength,

-                              [out, size_is(, *pulTestResultLength)] BYTE** ppbTestResult);

-

-        [helpstring("method CertifySelfTest")]

-        HRESULT CertifySelfTest([in] ITCPAKey* phKey,

-                                [in, out, ptr] TSS_VALIDATION* pValidationData);

-

-        [helpstring("method CreateEndorsementKey")] 

-        HRESULT CreateEndorsementKey([in] ITCPAKey* pEndorsementKey,

-                                     [in, out, ptr] TSS_VALIDATION* pValidation);

-

-        [helpstring("method GetPubEndorsementKey")] 

-        HRESULT GetPubEndorsementKey([in] BOOL fOwnerAuthorized,

-                                     [in, out, ptr] TSS_VALIDATION* pValidation,

-                                     [out] ITCPAKey** ppEndorsementKey);

-

-        [helpstring("method TakeOwnerShip")] 

-        HRESULT TakeOwnerShip([in] ITCPAKey* pKeySRK,

-                              [in] ITCPAKey* pEndorsementKeyPubKey);

-

-        [helpstring("method ClearOwner")] 

-        HRESULT ClearOwner([in] BOOL fForcedClear);

-

-        [helpstring("method SetStatus")] 

-        HRESULT SetStatus([in] TSS_FLAG statusFlag, 

-                          [in] BOOL fTpmState);

-

-        [helpstring("method GetStatus")] 

-        HRESULT GetStatus([in] TSS_FLAG statusFlag, 

-                          [out] BOOL* pfTpmState);

-

-        [helpstring("method AuthorizeMigrationTicket")] 

-        HRESULT AuthorizeMigrationTicket([in] ITCPAKey* pMigrationKey,

-                                         [in] UINT32 MigrationScheme,

-                                         [out] UINT32* pulMigTicketLength,

-                                         [out, size_is(, *pulMigTicketLength)] BYTE** ppbMigTicket);

-    }

-

-    //ITCPAIntegrity Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C22-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAIntegrity Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAIntegrity : IUnknown

-    {

-        [helpstring("method PcrExtend")] 

-        HRESULT PcrExtend([in] UINT32 ulPcrIndex,

-                          [in] UINT32 ulPcrDataLength,

-                          [in, size_is(ulPcrDataLength)] BYTE* pbPcrData,

-                          [in, ptr] TSS_PCR_EVENT* pEventInfo,

-                          [out] UINT32* pulPcrValueLength,

-                          [out, size_is(, *pulPcrValueLength)] BYTE** ppbPcrValue);

-

-        [helpstring("method PcrRead")] 

-        HRESULT PcrRead([in] UINT32 ulPcrIndex,

-                        [out] UINT32* pulPcrValueLength,

-                        [out, size_is(, *pulPcrValueLength)] BYTE** ppbPcrValue);

-

-        [helpstring("method DirWrite")] 

-        HRESULT DirWrite([in] UINT32 ulDirIndex, 

-                         [in] UINT32 ulDirDataLength,

-                         [in, size_is(ulDirDataLength)] BYTE* pbDirData);

-

-        [helpstring("method DirRead")] 

-        HRESULT DirRead([in] UINT32 ulDirIndex,

-                        [out] UINT32* pulDirDataLength,

-                        [out, size_is(, *pulDirDataLength)] BYTE** pbDirData);

-

-        [helpstring("method Quote")] 

-        HRESULT Quote([in] ITCPAKey* pIdentKey, 

-                      [in] ITCPAPcrs* pPcrComposite, 

-                      [in, out, ptr] TSS_VALIDATION* pValidation);

-    };

-

-    //ITCPAIdentityCreation Interface

-    [

-      object,

-      uuid(FBCD9C23-72CB-47BB-99DD-2317551491DE),

-

-      helpstring("ITCPAIdentityCreation Interface"),

-      pointer_default(unique)

-    ]   

-    interface ITCPAIdentityCreation: IUnknown

-    {

-        [helpstring("method CollateIdentityRequest")]

-        HRESULT CollateIdentityRequest([in] ITCPAKey* pKeySRK,

-                                       [in] ITCPAKey* pCAPubKey,

-                                       [in] UINT32 ulIdentityLabelLength, 

-                                       [in, size_is(ulIdentityLabelLength)] BYTE* rgbIdentityLabelData,

-                                       [in] ITCPAKey* pIdentityKey,

-                                       [in] TSS_ALGORITHM_ID algID,

-                                       [out] UINT32* pulTCPAIdentityReqLength,

-                                       [out, size_is(, *pulTCPAIdentityReqLength)] BYTE** prgbTCPAIdentityReq);

-

-        [helpstring("method ActivateIdentity")] 

-        HRESULT ActivateIdentity([in] ITCPAKey* pIdentityKey, 

-                                 [in] UINT32 ulAsymCAContentsBlobLength,

-                                 [in, size_is(ulAsymCAContentsBlobLength)] BYTE* rgbAsymCAContentsBlob,

-                                 [in] UINT32 ulSymCAAttestationBlobLength,

-                                 [in, size_is(ulSymCAAttestationBlobLength)] BYTE* rgbSymCAAttestationBlob,

-                                 [out] UINT32* pulCredentialLength,

-                                 [out, size_is(, *pulCredentialLength)] BYTE** prgbCredential);

-    

-    };	// end of ITCPAIdentityCreation

-

-    //ITCPAMaintenance Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C25-72CB-47BB-99DD-2317551491DE),

-

-        helpstring("ITCPAMaintenance Interface"),

-        pointer_default(unique)

-    ]	

-    interface ITCPAMaintenance: IUnknown

-    {

-

-// HRESULT CreateMaintenanceArchive

-// HRESULT KillMaintenanceFeature

-// HRESULT LoadMaintenancePubKey

-// HRESULT CheckMaintenancePubKey

-

-    };

-

-    //ITCPATpm Interface

-    [

-        uuid(FBCD9C21-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPATpm Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPATpm : IUnknown

-    {

-        [helpstring("method GetRandom")] 

-        HRESULT GetRandom([in] UINT32 ulRandomDataLength, 

-                          [out, size_is(, ulRandomDataLength)] BYTE** ppbData);

-

-        [helpstring("method StirRandom")] 

-        HRESULT StirRandom([in] UINT32 ulEntropyDataLength, 

-                           [in, size_is(ulEntropyDataLength)] BYTE* pbData);

-

-        [helpstring("method GetCapability")] 

-        HRESULT GetCapability([in] TSS_FLAG CapArea,

-                              [in] UINT32 ulSubCapLength,

-                              [in, ptr, size_is(ulSubCapLength)] BYTE* pbSubCap,

-                              [out] UINT32* pulRespDataLength,

-                              [out, size_is(, *pulRespDataLength)] BYTE** ppbRespData);

-                               

-        [helpstring("method GetCapabilitySigned")] 

-        HRESULT GetCapabilitySigned([in] ITCPAKey* pKey,

-                            [in] TSS_FLAG CapArea,

-                            [in] UINT32 ulSubCapLength,

-                            [in, ptr, size_is(ulSubCapLength)] BYTE* pbSubCap,

-                            [in, out, ptr] TSS_VALIDATION *pValidation,

-                            [out] UINT32* pulRespDataLength,

-                            [out, size_is(, *pulRespDataLength)] BYTE** ppbRespData);

-

-// HRESULT GetEvent

-// HRESULT GetEvents

-// HRESULT GetEventLog

-

-    };

-

-    //ITCPAPersistentStorage Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C1C-72CB-47BB-99DD-2317551491DE),

-

-        helpstring("ITCPAPersistentStorage Interface"),

-        pointer_default(unique)

-    ]	

-    interface ITCPAPersistentStorage: IUnknown

-    {

-        [helpstring("method LoadKeyByUUID")]

-        HRESULT LoadKeyByUUID([in] TSS_FLAG persistentStorageType,

-                        [in] TSS_UUID uuidData,

-                        [out] ITCPAKey** ppKey);

-

-        [helpstring("method RegisterKey")] 

-        HRESULT RegisterKey([in] ITCPAKey* pKey,

-                      [in] TSS_FLAG persistentStorageType,

-                      [in] TSS_UUID uuidKey, 

-                      [in] TSS_FLAG persistentStorageTypeParent,

-                      [in] TSS_UUID uuidParentKey); 

-

-        [helpstring("method UnregisterKey")]

-        HRESULT UnregisterKey([in] TSS_FLAG persistentStorageType,

-                        [in] TSS_UUID uuidKey,

-                        [out] ITCPAKey** ppKey);

-

-        [helpstring("method DeleteKeyByUUID")] 

-        HRESULT DeleteKeyByUUID([in] TSS_FLAG persistentStorageType,

-                                [in] TSS_UUID uuidData);

-

-        [helpstring("method GetKeyByUUID")] 

-        HRESULT GetKeyByUUID([in] TSS_FLAG persistentStorageType,

-                       [in] TSS_UUID uuidData,

-                       [out] ITCPAKey** ppKey);

-

-        [helpstring("method GetKeyByPublicInfo")] 

-        HRESULT GetKeyByPublicInfo([in] TSS_FLAG persistentStorageType,

-                             [in] TSS_ALGORITHM_ID  ulAlgId,

-                             [in] UINT32 ulPublicInfoLength,

-                             [in, size_is(ulPublicInfoLength)] BYTE* pbPublicInfo,

-                             [out] ITCPAKey** ppKey);

-

-        [helpstring("method GetRegisteredKeysByUUID")] 

-        HRESULT GetRegisteredKeysByUUID([in] TSS_FLAG ulPersistentStorageType,

-                                        [in] LPOLESTR wszKeyGuid,

-                                        [out] UINT32* pulKeyHierarchySize,

-                                        [out, size_is(, *pulKeyHierarchySize)] TSS_KM_KEYINFO** ppKeyHierarchy);

-    }

-

-    //ITCPAContext Interface

-    [

-        local,

-        object,

-        uuid(FBCD9C1B-72CB-47BB-99DD-2317551491DE),

-    

-        helpstring("ITCPAContext Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPAContext : IUnknown

-    {

-        [helpstring("method Connect")] 

-        HRESULT Connect([in, ptr] LPOLESTR wszRemoteMachine);

-

-        [helpstring("method CreateObject")] 

-        HRESULT CreateObject([in] UINT32 ulObjectType, 

-                             [in] UINT32 ulInitFlags,

-                             [out] IUnknown** ppUnkObject);

-

-// HRESULT CloseObject

-

-

-        [helpstring("method LoadKeyByBlob")]

-        HRESULT LoadKeyByBlob([in] ITCPAKey* pUnwrappingKey,

-                              [in] UINT32 ulBlobLength,

-                              [in, size_is(ulBlobLength)] BYTE* pbBlobData,

-                              [out] ITCPAKey** ppKey);

-

-        [helpstring("method GetTPMObject")] 

-        HRESULT GetTPMObject([out] ITCPATpm** ppTPMObject);

-

-        [helpstring("method GetDefaultPolicy")] 

-        HRESULT GetDefaultPolicy([out] ITCPAPolicy** ppPolicyObject);

-

-        [helpstring("method GetCapability")] 

-        HRESULT GetCapability([in] TSS_FLAG ulCapArea,

-                              [in] UINT32 ulSubCapLength,

-                              [in, ptr, size_is(ulSubCapLength)] BYTE* pbSubCap,

-                              [out] UINT32* pulRespDataLength,

-                              [out, size_is(, *pulRespDataLength)] BYTE** ppbRespData);

-    };

-

-    //ITCPANonVolatileStorage Interface

-    [

-        object,

-        uuid(4730c51b-8998-43f6-993b-80befea1d404),

-    

-        helpstring("ITCPANonVolatileStorage Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPANonVolatileStorage : IUnknown

-    {

-        [helpstring("method DefineSpace")]

-        HRESULT DefineSpace([in] ITCPAPcrs* pPCRsRead,

-                            [in] ITCPAPcrs* pPCRsWrite);

-

-        [helpstring("method ReleaseSpace")] 

-        HRESULT ReleaseSpace();

-

-        [helpstring("method WriteValue")] 

-        HRESULT WriteValue([in] UINT32 ulOffset,

-                           [in] UINT32 ulDataLength,

-                           [in, size_is(ulDataLength)] BYTE* rgbData);

-

-        [helpstring("method ReadValue")] 

-        HRESULT ReadValue([in] UINT32 ulOffset,

-                          [in, out] UINT32* pulDataLength,

-                          [out, size_is(, *pulDataLength)] BYTE** prgbData);

-    };

-

-    //ITCPATransport Interface

-    [

-        object,

-        uuid(4730c51d-8998-43f6-993b-80befea1d404),

-    

-        helpstring("ITCPATransport Interface"),

-        pointer_default(unique)

-    ]

-    interface ITCPATransport : IUnknown

-    {

-        [helpstring("method SetTransEncryptionKey")]

-        HRESULT SetTransEncryptionKey([in] ITCPAKey* pKey);

-

-        [helpstring("method CloseSignTransport")] 

-        HRESULT CloseSignTransport([in] ITCPAKey* pSigningKey,

-                                   [in, out, ptr] TSS_VALIDATION* pValidationData);

-    };

-

-[

-    uuid(FBCD9C19-72CB-47BB-99DD-2317551491DE),

-    version(1.0),

-    helpstring("TSS Service Provider 1.0 Type Library")

-]

-library TSPLib

-{

-    importlib("stdole32.tlb");

-    importlib("stdole2.tlb");

-

-    interface ITCPAContext;

-    //TCPAContext Class

-    [

-        uuid(FBCD9C1A-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPAContext Class")

-    ]

-    coclass TCPAContext

-    {

-        [default] interface ITCPAContext;

-        interface ITCPAAttrib;

-        interface ITCPAPersistentStorage;

-    };

-

-    //TCPAContext2 Class extensions for TSS v1.2

-    [

-        uuid(4730C51E-8998-43F6-993B-80BEFEA1D404),

-        helpstring("TCPAContext2 Class")

-    ]

-    coclass TCPAContext2

-    {

-        [default] interface ITCPAContext;

-        interface ITCPAAttrib;

-        interface ITCPAPersistentStorage;

-        interface ITCPATransport;

-    };

-

-    // _ITCPACallback Interface for TCPAPolicy Class

-    [

-        uuid(FBCD9C1F-72CB-47BB-99DD-2317551491DE),

-        helpstring("_ITCPACallback Interface"),

-        pointer_default(unique)

-    ]

-    interface _ITCPACallback : IUnknown

-    {

-        [helpstring("method Tspicb_CallbackHMACAuth"), callback] 

-        HRESULT Tspicb_CallbackHMACAuth([in] UINT32 PulAppData,

-                                        [in] IUnknown *PpAuthorizedObject,

-                                        [in] BOOL PfReturnOrVerify,

-                                        [in] UINT32 PulPendingFunction,

-                                        [in] BOOL PfContinueUse,

-                                        [in] UINT32 PulSizeNonces,

-                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEven,

-                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOdd,

-                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEvenOSAP,

-                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOddOSAP,

-                                        [in] UINT32 PulSizeDigestHmac,

-                                        [in, size_is(PulSizeDigestHmac)] BYTE* PrgbParamDigest,

-                                        [in, out, size_is(PulSizeDigestHmac)] BYTE* PrgbHmacData);

-

-        [helpstring("method Tspicb_CallbackXorEnc"), callback] 

-        HRESULT Tspicb_CallbackXorEnc([in] UINT32 PulAppData,

-                                      [in] IUnknown *PpOSAPObject,

-                                      [in] IUnknown *PpObject,

-                                      [in] BOOL PfPurposeSecret,

-                                      [in] UINT32 PulSizeNonces,

-                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEven,

-                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOdd,

-                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEvenOSAP,

-                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOddOSAP,

-                                      [in] UINT32 PulSizeEncAuth,

-                                      [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuthUsage,

-                                      [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuthMigration);

-

-        [helpstring("method Tspicb_CallbackTakeOwnership"), callback] 

-        HRESULT Tspicb_CallbackTakeOwnership([in] UINT32 PulAppData,

-                                             [in] IUnknown *PpObject,

-                                             [in] IUnknown *PpObjectPubKey,

-                                             [in] UINT32 PulSizeEncAuth,

-                                             [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuth );

-

-        [helpstring("method Tspicb_CallbackChangeAuthAsym"), callback] 

-        HRESULT Tspicb_CallbackChangeAuthAsym([in] UINT32 PulAppData,

-                                              [in] IUnknown *PpObject,

-                                              [in] IUnknown *PpObjectPubKey,

-                                              [in] UINT32 PulSizeEncAuth,

-                                              [in] UINT32 PulSizeAuthLink,

-                                              [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuth,

-                                              [out, size_is(PulSizeAuthLink)] BYTE* PrgbAuthLink);

-    };   // end of _ITCPACallback

-

-    //TCPAPolicy Class

-    [

-        uuid(FBCD9C1D-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPAPolicy Class"),

-        noncreatable

-    ]

-

-    coclass TCPAPolicy

-    {

-        [default] interface ITCPAPolicy;

-        interface ITCPAAttrib;

-        [default, source] interface _ITCPACallback;

-    };

-

-    //TCPATpm Class

-    [

-        uuid(FBCD9C20-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPATpm Class"),

-        noncreatable

-    ]

-    coclass TCPATpm

-    {

-        [default] interface ITCPATpm;

-        interface ITCPAAttrib;

-        interface ITCPAAuth;

-        interface ITCPAIntegrity;

-        interface ITCPAAdministration;

-        interface ITCPAIdentityCreation;

-        interface ITCPAMaintenance;

-    };

-

-    //TCPAKey Class

-    [

-        uuid(FBCD9C26-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPAKey Class"),

-        noncreatable

-    ]

-    coclass TCPAKey

-    {

-        [default] interface ITCPAKey;

-        interface ITCPAAttrib;

-        interface ITCPAAuth;

-        interface ITCPAMigration;

-    };

-

-    //TCPAEncData Class

-    [

-        uuid(FBCD9C28-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPAEncData Class"),

-        noncreatable

-    ]

-    coclass TCPAEncData

-    {

-        [default] interface ITCPAEncData;

-        interface ITCPAAttrib;

-        interface ITCPAAuth;

-    };

-

-    //TCPAHash Class

-    [

-        uuid(FBCD9C2A-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPAHash Class"),

-        noncreatable

-    ]

-    coclass TCPAHash

-    {

-        [default] interface ITCPAHash;

-        interface ITCPAAttrib;

-    };

-

-    //TCPAPcrs Class

-    [

-        uuid(FBCD9C2C-72CB-47BB-99DD-2317551491DE),

-        helpstring("TCPAPcrs Class"),

-        noncreatable

-    ]

-    coclass TCPAPcrs

-    {

-        [default] interface ITCPAPcrs;

-    };

-

-    //TCPANonVolatileStorage Class

-    [

-        uuid(4730c51c-8998-43f6-993b-80befea1d404),

-        helpstring("TCPANonVolatileStorage Class"),

-        noncreatable

-    ]

-    coclass TCPANonVolatileStorage

-    {

-        [default] interface ITCPANonVolatileStorage;

-        interface ITCPAAttrib;

-        interface ITCPAAuth;

-    };

-

-};	// end of library TSPLib

+/*++
+
++++TSP.idl
+
+    Interface declarations for the TSS Service Provider 
+    - COM interface for Windows based platforms
+      
+--*/
+import "oaidl.idl";		// include ODL base types 
+import "ocidl.idl";
+
+//import the header files from TSS v1.2
+import "tss_typedef.h";
+import "tss_structs.h";
+
+// forward declaration
+interface ITCPAPolicy;
+interface ITCPAKey;
+
+/*
+Missing:
+TSS_RESULT Tspi_Context_Create
+TSS_RESULT Tspi_Context_Close
+TSS_RESULT Tspi_Context_FreeMemory
+*/
+
+    //ITCPAAttrib Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C2E-72CB-47BB-99DD-2317551491DE),
+
+        helpstring("ITCPAAttrib Interface"),
+        pointer_default(unique)
+    ]	
+    interface ITCPAAttrib : IUnknown
+    {
+        [helpstring("method SetAttribUint32")]
+        HRESULT SetAttribUint32([in] TSS_FLAG attribFlag, 
+                                [in] TSS_FLAG subFlags,
+                                [in] UINT32 ulAttrib);
+
+        [helpstring("method GetAttribUint32")]
+        HRESULT GetAttribUint32([in] TSS_FLAG attribFlag, 
+                                [in] TSS_FLAG subFlags,
+                                [out] UINT32* pulAttrib);
+
+        [helpstring("method SetAttribData")]
+        HRESULT SetAttribData([in] TSS_FLAG attribFlag, 
+                              [in] TSS_FLAG subFlags, 
+                              [in] UINT32 ulAttribDataSize, 
+                              [in, ptr, size_is(ulAttribDataSize)] BYTE* pbAttribData);
+
+        [helpstring("method GetAttribData")]
+        HRESULT GetAttribData([in] TSS_FLAG attribFlag, 
+                              [in] TSS_FLAG subFlags, 
+                              [out] UINT32* pulAttribDataSize,
+                              [out, size_is(, *pulAttribDataSize)] BYTE** ppbAttribData);
+    }
+
+    //ITCPAAuth Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C2F-72CB-47BB-99DD-2317551491DE),
+
+        helpstring("ITCPAAuth Interface"),
+        pointer_default(unique)
+    ]	
+    interface ITCPAAuth : IUnknown
+    {
+        [helpstring("method GetPolicyObject")]
+        HRESULT GetPolicyObject([in] TSS_FLAG PolicyType, 
+                                [out] ITCPAPolicy** ppPolicyObject);
+
+        [helpstring("method ChangeAuth")]
+        HRESULT ChangeAuth([in] IUnknown* PpParentObject, 
+                           [in] ITCPAPolicy* PpNewPolicy);
+
+// HRESULT ChangeAuthAsym
+
+    };
+
+    [
+        object,
+        uuid(FBCD9C2D-72CB-47BB-99DD-2317551491DE),
+        helpstring("ITCPAPcrs Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAPcrs : IUnknown
+    {
+        [helpstring("method SetPcrValue")]
+        HRESULT SetPcrValue([in] UINT32 ulPCRIndex,
+                            [in] UINT32 ulPcrValueLength,
+                            [in, size_is(ulPcrValueLength)] BYTE* pbPcrValue);
+
+        [helpstring("method GetPcrValue")]
+        HRESULT GetPcrValue([in] UINT32 ulPCRIndex,
+                            [out] UINT32* pulPcrValueLength,
+                            [out, size_is(, *pulPcrValueLength)] BYTE** ppbPcrValue);
+
+        [helpstring("method SelectPcrIndex")]
+        HRESULT SelectPcrIndex([in] UINT32 ulPCRIndex);
+
+    };
+
+    //ITCPAKey Interface
+    [
+        object,
+        uuid(FBCD9C27-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAKey Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAKey : IUnknown
+    {
+        [helpstring("method LoadKey")] 
+        HRESULT LoadKey([in] ITCPAKey* pUnwrappingKey);
+
+        [helpstring("method CreateKey")]
+        HRESULT CreateKey([in] ITCPAKey* pUnwrappingKey, 
+                          [in] ITCPAPcrs* pPcrComosite);
+
+        [helpstring("method WrapKey")] 
+        HRESULT WrapKey([in] ITCPAKey* pWrappinKey, 
+                        [in] ITCPAPcrs* pPcrComposite);
+        
+        [helpstring("method CertifyKey")] 
+        HRESULT CertifyKey([in] ITCPAKey* pCertifyingKey,
+                           [in, out, ptr] TSS_VALIDATION* pValidation);
+
+        [helpstring("method GetPubKey")]
+        HRESULT GetPubKey([out] UINT32* pulPubKeyLength,
+                          [out, size_is(, *pulPubKeyLength)] BYTE** ppbPubKey);
+
+        [helpstring("method UnLoadKey")] 
+        HRESULT UnLoadKey();
+    };
+
+    // ITCPAMigration
+    [
+        local,
+        object,
+        uuid(FBCD9C30-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAMigration Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAMigration : IUnknown
+    {
+        [helpstring("method CreateMigrationBlob")] 
+        HRESULT CreateMigrationBlob([in] ITCPAKey *pParentKey, 
+                                    [in] UINT32 ulMigTicketLength, 
+                                    [in, size_is(ulMigTicketLength)] BYTE* rgbMigTicket, 
+                                    [out] UINT32 *pulRandomLength, 
+                                    [out, size_is(, *pulRandomLength)] BYTE **prgbRandom, 
+                                    [out] UINT32 *pulMigrationBlobLength, 
+                                    [out, size_is(, *pulMigrationBlobLength)] BYTE **prgbMigBlob);
+
+        [helpstring("method ConvertMigrationBlob")] 
+        HRESULT ConvertMigrationBlob([in] ITCPAKey *pParentKey, 
+                                     [in] UINT32 ulRandomLength, 
+                                     [in, size_is(ulRandomLength)] BYTE *rgbRandom, 
+                                     [in] UINT32 ulMigrationBlobLength, 
+                                     [in, size_is(ulMigrationBlobLength)] BYTE *rgbMigBlob);
+    };
+
+    //ITCPAEncData Interface
+    [
+        uuid(FBCD9C29-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAEncData Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAEncData : IUnknown
+    {
+        [helpstring("method Seal")]
+        HRESULT Seal([in] ITCPAKey* pEncKey,
+                     [in] UINT32 ulDataLength, 
+                     [in, size_is(ulDataLength)] BYTE* pbData, 
+                     [in] ITCPAPcrs* pPcrComposite);
+
+        [helpstring("method Unseal")] 
+        HRESULT Unseal([in] ITCPAKey* pKey, 
+                       [out] UINT32* pulUnsealedDataLength, 
+                       [out, size_is(, *pulUnsealedDataLength)] BYTE** ppbData);
+
+        [helpstring("method Bind")] 
+        HRESULT Bind([in] ITCPAKey* pEncKey, 
+                     [in] UINT32 ulDataLength, 
+                     [in, size_is(ulDataLength)] BYTE* pbData);
+
+        [helpstring("method Unbind")] 
+        HRESULT Unbind([in] ITCPAKey* pKey, 
+                       [out] UINT32* pulUnboundDataLength, 
+                       [out, size_is(, *pulUnboundDataLength)] BYTE** ppbData);
+
+    };
+
+    //ITCPAHash Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C2B-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAHash Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAHash : IUnknown
+    {
+        [helpstring("method SetHashValue")] 
+        HRESULT SetHashValue([in] UINT32 ulHashValueLength, 
+                             [in, size_is(ulHashValueLength)] BYTE* pbHash);
+
+        [helpstring("method GetHashValue")] 
+        HRESULT GetHashValue([out] UINT32* pulHashValueLength, 
+                             [out, size_is(, *pulHashValueLength)] BYTE** ppbHash);
+
+        [helpstring("method UpdateHashValue")] 
+        HRESULT UpdateHashValue([in] UINT32 ulDataLength, 
+                                [in, size_is(ulDataLength)] BYTE* pbData);
+
+        [helpstring("method Sign")] 
+        HRESULT Sign([in] ITCPAKey* pKey, 
+                     [out] UINT32* pulSignatureLength, 
+                     [out, size_is(, *pulSignatureLength)] BYTE** ppbSignature);
+
+        [helpstring("method VerifySignature")] 
+        HRESULT VerifySignature([in] ITCPAKey* pKey, 
+                                [in] UINT32 ulSignatureLength, 
+                                [in, size_is(ulSignatureLength)] BYTE* pbSignature);
+
+    };
+
+    //ITCPAPolicy Interface
+    [
+        uuid(FBCD9C1E-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAPolicy Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAPolicy : IUnknown
+    { 
+        [helpstring("method SetSecret")] 
+        HRESULT SetSecret([in] TSS_FLAG SecretMode, 
+                          [in] UINT32 ulSecretLength, 
+                          [in, ptr, size_is(ulSecretLength)] BYTE* pbSecret);
+
+        [helpstring("method FlushSecret")] 
+        HRESULT FlushSecret();
+        
+        [helpstring("method AssignToObject")] 
+        HRESULT AssignToObject([in] IUnknown* pUnkObject);
+
+    };
+
+    //ITCPAAdministration Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C24-72CB-47BB-99DD-2317551491DE),
+
+        helpstring("ITCPAAdministration Interface"),
+        pointer_default(unique)
+    ]	
+    interface ITCPAAdministration : IUnknown
+    {
+        [helpstring("method SelfTestFull")]
+        HRESULT SelfTestFull();
+
+        [helpstring("method GetTestResult")]
+        HRESULT GetTestResult([out] UINT32* pulTestResultLength,
+                              [out, size_is(, *pulTestResultLength)] BYTE** ppbTestResult);
+
+        [helpstring("method CertifySelfTest")]
+        HRESULT CertifySelfTest([in] ITCPAKey* phKey,
+                                [in, out, ptr] TSS_VALIDATION* pValidationData);
+
+        [helpstring("method CreateEndorsementKey")] 
+        HRESULT CreateEndorsementKey([in] ITCPAKey* pEndorsementKey,
+                                     [in, out, ptr] TSS_VALIDATION* pValidation);
+
+        [helpstring("method GetPubEndorsementKey")] 
+        HRESULT GetPubEndorsementKey([in] BOOL fOwnerAuthorized,
+                                     [in, out, ptr] TSS_VALIDATION* pValidation,
+                                     [out] ITCPAKey** ppEndorsementKey);
+
+        [helpstring("method TakeOwnerShip")] 
+        HRESULT TakeOwnerShip([in] ITCPAKey* pKeySRK,
+                              [in] ITCPAKey* pEndorsementKeyPubKey);
+
+        [helpstring("method ClearOwner")] 
+        HRESULT ClearOwner([in] BOOL fForcedClear);
+
+        [helpstring("method SetStatus")] 
+        HRESULT SetStatus([in] TSS_FLAG statusFlag, 
+                          [in] BOOL fTpmState);
+
+        [helpstring("method GetStatus")] 
+        HRESULT GetStatus([in] TSS_FLAG statusFlag, 
+                          [out] BOOL* pfTpmState);
+
+        [helpstring("method AuthorizeMigrationTicket")] 
+        HRESULT AuthorizeMigrationTicket([in] ITCPAKey* pMigrationKey,
+                                         [in] UINT32 MigrationScheme,
+                                         [out] UINT32* pulMigTicketLength,
+                                         [out, size_is(, *pulMigTicketLength)] BYTE** ppbMigTicket);
+    }
+
+    //ITCPAIntegrity Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C22-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAIntegrity Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAIntegrity : IUnknown
+    {
+        [helpstring("method PcrExtend")] 
+        HRESULT PcrExtend([in] UINT32 ulPcrIndex,
+                          [in] UINT32 ulPcrDataLength,
+                          [in, size_is(ulPcrDataLength)] BYTE* pbPcrData,
+                          [in, ptr] TSS_PCR_EVENT* pEventInfo,
+                          [out] UINT32* pulPcrValueLength,
+                          [out, size_is(, *pulPcrValueLength)] BYTE** ppbPcrValue);
+
+        [helpstring("method PcrRead")] 
+        HRESULT PcrRead([in] UINT32 ulPcrIndex,
+                        [out] UINT32* pulPcrValueLength,
+                        [out, size_is(, *pulPcrValueLength)] BYTE** ppbPcrValue);
+
+        [helpstring("method DirWrite")] 
+        HRESULT DirWrite([in] UINT32 ulDirIndex, 
+                         [in] UINT32 ulDirDataLength,
+                         [in, size_is(ulDirDataLength)] BYTE* pbDirData);
+
+        [helpstring("method DirRead")] 
+        HRESULT DirRead([in] UINT32 ulDirIndex,
+                        [out] UINT32* pulDirDataLength,
+                        [out, size_is(, *pulDirDataLength)] BYTE** pbDirData);
+
+        [helpstring("method Quote")] 
+        HRESULT Quote([in] ITCPAKey* pIdentKey, 
+                      [in] ITCPAPcrs* pPcrComposite, 
+                      [in, out, ptr] TSS_VALIDATION* pValidation);
+    };
+
+    //ITCPAIdentityCreation Interface
+    [
+      object,
+      uuid(FBCD9C23-72CB-47BB-99DD-2317551491DE),
+
+      helpstring("ITCPAIdentityCreation Interface"),
+      pointer_default(unique)
+    ]   
+    interface ITCPAIdentityCreation: IUnknown
+    {
+        [helpstring("method CollateIdentityRequest")]
+        HRESULT CollateIdentityRequest([in] ITCPAKey* pKeySRK,
+                                       [in] ITCPAKey* pCAPubKey,
+                                       [in] UINT32 ulIdentityLabelLength, 
+                                       [in, size_is(ulIdentityLabelLength)] BYTE* rgbIdentityLabelData,
+                                       [in] ITCPAKey* pIdentityKey,
+                                       [in] TSS_ALGORITHM_ID algID,
+                                       [out] UINT32* pulTCPAIdentityReqLength,
+                                       [out, size_is(, *pulTCPAIdentityReqLength)] BYTE** prgbTCPAIdentityReq);
+
+        [helpstring("method ActivateIdentity")] 
+        HRESULT ActivateIdentity([in] ITCPAKey* pIdentityKey, 
+                                 [in] UINT32 ulAsymCAContentsBlobLength,
+                                 [in, size_is(ulAsymCAContentsBlobLength)] BYTE* rgbAsymCAContentsBlob,
+                                 [in] UINT32 ulSymCAAttestationBlobLength,
+                                 [in, size_is(ulSymCAAttestationBlobLength)] BYTE* rgbSymCAAttestationBlob,
+                                 [out] UINT32* pulCredentialLength,
+                                 [out, size_is(, *pulCredentialLength)] BYTE** prgbCredential);
+    
+    };	// end of ITCPAIdentityCreation
+
+    //ITCPAMaintenance Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C25-72CB-47BB-99DD-2317551491DE),
+
+        helpstring("ITCPAMaintenance Interface"),
+        pointer_default(unique)
+    ]	
+    interface ITCPAMaintenance: IUnknown
+    {
+
+// HRESULT CreateMaintenanceArchive
+// HRESULT KillMaintenanceFeature
+// HRESULT LoadMaintenancePubKey
+// HRESULT CheckMaintenancePubKey
+
+    };
+
+    //ITCPATpm Interface
+    [
+        uuid(FBCD9C21-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPATpm Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPATpm : IUnknown
+    {
+        [helpstring("method GetRandom")] 
+        HRESULT GetRandom([in] UINT32 ulRandomDataLength, 
+                          [out, size_is(, ulRandomDataLength)] BYTE** ppbData);
+
+        [helpstring("method StirRandom")] 
+        HRESULT StirRandom([in] UINT32 ulEntropyDataLength, 
+                           [in, size_is(ulEntropyDataLength)] BYTE* pbData);
+
+        [helpstring("method GetCapability")] 
+        HRESULT GetCapability([in] TSS_FLAG CapArea,
+                              [in] UINT32 ulSubCapLength,
+                              [in, ptr, size_is(ulSubCapLength)] BYTE* pbSubCap,
+                              [out] UINT32* pulRespDataLength,
+                              [out, size_is(, *pulRespDataLength)] BYTE** ppbRespData);
+                               
+        [helpstring("method GetCapabilitySigned")] 
+        HRESULT GetCapabilitySigned([in] ITCPAKey* pKey,
+                            [in] TSS_FLAG CapArea,
+                            [in] UINT32 ulSubCapLength,
+                            [in, ptr, size_is(ulSubCapLength)] BYTE* pbSubCap,
+                            [in, out, ptr] TSS_VALIDATION *pValidation,
+                            [out] UINT32* pulRespDataLength,
+                            [out, size_is(, *pulRespDataLength)] BYTE** ppbRespData);
+
+// HRESULT GetEvent
+// HRESULT GetEvents
+// HRESULT GetEventLog
+
+    };
+
+    //ITCPAPersistentStorage Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C1C-72CB-47BB-99DD-2317551491DE),
+
+        helpstring("ITCPAPersistentStorage Interface"),
+        pointer_default(unique)
+    ]	
+    interface ITCPAPersistentStorage: IUnknown
+    {
+        [helpstring("method LoadKeyByUUID")]
+        HRESULT LoadKeyByUUID([in] TSS_FLAG persistentStorageType,
+                        [in] TSS_UUID uuidData,
+                        [out] ITCPAKey** ppKey);
+
+        [helpstring("method RegisterKey")] 
+        HRESULT RegisterKey([in] ITCPAKey* pKey,
+                      [in] TSS_FLAG persistentStorageType,
+                      [in] TSS_UUID uuidKey, 
+                      [in] TSS_FLAG persistentStorageTypeParent,
+                      [in] TSS_UUID uuidParentKey); 
+
+        [helpstring("method UnregisterKey")]
+        HRESULT UnregisterKey([in] TSS_FLAG persistentStorageType,
+                        [in] TSS_UUID uuidKey,
+                        [out] ITCPAKey** ppKey);
+
+        [helpstring("method DeleteKeyByUUID")] 
+        HRESULT DeleteKeyByUUID([in] TSS_FLAG persistentStorageType,
+                                [in] TSS_UUID uuidData);
+
+        [helpstring("method GetKeyByUUID")] 
+        HRESULT GetKeyByUUID([in] TSS_FLAG persistentStorageType,
+                       [in] TSS_UUID uuidData,
+                       [out] ITCPAKey** ppKey);
+
+        [helpstring("method GetKeyByPublicInfo")] 
+        HRESULT GetKeyByPublicInfo([in] TSS_FLAG persistentStorageType,
+                             [in] TSS_ALGORITHM_ID  ulAlgId,
+                             [in] UINT32 ulPublicInfoLength,
+                             [in, size_is(ulPublicInfoLength)] BYTE* pbPublicInfo,
+                             [out] ITCPAKey** ppKey);
+
+        [helpstring("method GetRegisteredKeysByUUID")] 
+        HRESULT GetRegisteredKeysByUUID([in] TSS_FLAG ulPersistentStorageType,
+                                        [in] LPOLESTR wszKeyGuid,
+                                        [out] UINT32* pulKeyHierarchySize,
+                                        [out, size_is(, *pulKeyHierarchySize)] TSS_KM_KEYINFO** ppKeyHierarchy);
+    }
+
+    //ITCPAContext Interface
+    [
+        local,
+        object,
+        uuid(FBCD9C1B-72CB-47BB-99DD-2317551491DE),
+    
+        helpstring("ITCPAContext Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPAContext : IUnknown
+    {
+        [helpstring("method Connect")] 
+        HRESULT Connect([in, ptr] LPOLESTR wszRemoteMachine);
+
+        [helpstring("method CreateObject")] 
+        HRESULT CreateObject([in] UINT32 ulObjectType, 
+                             [in] UINT32 ulInitFlags,
+                             [out] IUnknown** ppUnkObject);
+
+// HRESULT CloseObject
+
+
+        [helpstring("method LoadKeyByBlob")]
+        HRESULT LoadKeyByBlob([in] ITCPAKey* pUnwrappingKey,
+                              [in] UINT32 ulBlobLength,
+                              [in, size_is(ulBlobLength)] BYTE* pbBlobData,
+                              [out] ITCPAKey** ppKey);
+
+        [helpstring("method GetTPMObject")] 
+        HRESULT GetTPMObject([out] ITCPATpm** ppTPMObject);
+
+        [helpstring("method GetDefaultPolicy")] 
+        HRESULT GetDefaultPolicy([out] ITCPAPolicy** ppPolicyObject);
+
+        [helpstring("method GetCapability")] 
+        HRESULT GetCapability([in] TSS_FLAG ulCapArea,
+                              [in] UINT32 ulSubCapLength,
+                              [in, ptr, size_is(ulSubCapLength)] BYTE* pbSubCap,
+                              [out] UINT32* pulRespDataLength,
+                              [out, size_is(, *pulRespDataLength)] BYTE** ppbRespData);
+    };
+
+    //ITCPANonVolatileStorage Interface
+    [
+        object,
+        uuid(4730c51b-8998-43f6-993b-80befea1d404),
+    
+        helpstring("ITCPANonVolatileStorage Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPANonVolatileStorage : IUnknown
+    {
+        [helpstring("method DefineSpace")]
+        HRESULT DefineSpace([in] ITCPAPcrs* pPCRsRead,
+                            [in] ITCPAPcrs* pPCRsWrite);
+
+        [helpstring("method ReleaseSpace")] 
+        HRESULT ReleaseSpace();
+
+        [helpstring("method WriteValue")] 
+        HRESULT WriteValue([in] UINT32 ulOffset,
+                           [in] UINT32 ulDataLength,
+                           [in, size_is(ulDataLength)] BYTE* rgbData);
+
+        [helpstring("method ReadValue")] 
+        HRESULT ReadValue([in] UINT32 ulOffset,
+                          [in, out] UINT32* pulDataLength,
+                          [out, size_is(, *pulDataLength)] BYTE** prgbData);
+    };
+
+    //ITCPATransport Interface
+    [
+        object,
+        uuid(4730c51d-8998-43f6-993b-80befea1d404),
+    
+        helpstring("ITCPATransport Interface"),
+        pointer_default(unique)
+    ]
+    interface ITCPATransport : IUnknown
+    {
+        [helpstring("method SetTransEncryptionKey")]
+        HRESULT SetTransEncryptionKey([in] ITCPAKey* pKey);
+
+        [helpstring("method CloseSignTransport")] 
+        HRESULT CloseSignTransport([in] ITCPAKey* pSigningKey,
+                                   [in, out, ptr] TSS_VALIDATION* pValidationData);
+    };
+
+[
+    uuid(FBCD9C19-72CB-47BB-99DD-2317551491DE),
+    version(1.0),
+    helpstring("TSS Service Provider 1.0 Type Library")
+]
+library TSPLib
+{
+    importlib("stdole32.tlb");
+    importlib("stdole2.tlb");
+
+    interface ITCPAContext;
+    //TCPAContext Class
+    [
+        uuid(FBCD9C1A-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPAContext Class")
+    ]
+    coclass TCPAContext
+    {
+        [default] interface ITCPAContext;
+        interface ITCPAAttrib;
+        interface ITCPAPersistentStorage;
+    };
+
+    //TCPAContext2 Class extensions for TSS v1.2
+    [
+        uuid(4730C51E-8998-43F6-993B-80BEFEA1D404),
+        helpstring("TCPAContext2 Class")
+    ]
+    coclass TCPAContext2
+    {
+        [default] interface ITCPAContext;
+        interface ITCPAAttrib;
+        interface ITCPAPersistentStorage;
+        interface ITCPATransport;
+    };
+
+    // _ITCPACallback Interface for TCPAPolicy Class
+    [
+        uuid(FBCD9C1F-72CB-47BB-99DD-2317551491DE),
+        helpstring("_ITCPACallback Interface"),
+        pointer_default(unique)
+    ]
+    interface _ITCPACallback : IUnknown
+    {
+        [helpstring("method Tspicb_CallbackHMACAuth"), callback] 
+        HRESULT Tspicb_CallbackHMACAuth([in] UINT32 PulAppData,
+                                        [in] IUnknown *PpAuthorizedObject,
+                                        [in] BOOL PfReturnOrVerify,
+                                        [in] UINT32 PulPendingFunction,
+                                        [in] BOOL PfContinueUse,
+                                        [in] UINT32 PulSizeNonces,
+                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEven,
+                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOdd,
+                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEvenOSAP,
+                                        [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOddOSAP,
+                                        [in] UINT32 PulSizeDigestHmac,
+                                        [in, size_is(PulSizeDigestHmac)] BYTE* PrgbParamDigest,
+                                        [in, out, size_is(PulSizeDigestHmac)] BYTE* PrgbHmacData);
+
+        [helpstring("method Tspicb_CallbackXorEnc"), callback] 
+        HRESULT Tspicb_CallbackXorEnc([in] UINT32 PulAppData,
+                                      [in] IUnknown *PpOSAPObject,
+                                      [in] IUnknown *PpObject,
+                                      [in] BOOL PfPurposeSecret,
+                                      [in] UINT32 PulSizeNonces,
+                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEven,
+                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOdd,
+                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceEvenOSAP,
+                                      [in, size_is(PulSizeNonces)] BYTE* PrgbNonceOddOSAP,
+                                      [in] UINT32 PulSizeEncAuth,
+                                      [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuthUsage,
+                                      [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuthMigration);
+
+        [helpstring("method Tspicb_CallbackTakeOwnership"), callback] 
+        HRESULT Tspicb_CallbackTakeOwnership([in] UINT32 PulAppData,
+                                             [in] IUnknown *PpObject,
+                                             [in] IUnknown *PpObjectPubKey,
+                                             [in] UINT32 PulSizeEncAuth,
+                                             [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuth );
+
+        [helpstring("method Tspicb_CallbackChangeAuthAsym"), callback] 
+        HRESULT Tspicb_CallbackChangeAuthAsym([in] UINT32 PulAppData,
+                                              [in] IUnknown *PpObject,
+                                              [in] IUnknown *PpObjectPubKey,
+                                              [in] UINT32 PulSizeEncAuth,
+                                              [in] UINT32 PulSizeAuthLink,
+                                              [out, size_is(PulSizeEncAuth)] BYTE* PrgbEncAuth,
+                                              [out, size_is(PulSizeAuthLink)] BYTE* PrgbAuthLink);
+    };   // end of _ITCPACallback
+
+    //TCPAPolicy Class
+    [
+        uuid(FBCD9C1D-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPAPolicy Class"),
+        noncreatable
+    ]
+
+    coclass TCPAPolicy
+    {
+        [default] interface ITCPAPolicy;
+        interface ITCPAAttrib;
+        [default, source] interface _ITCPACallback;
+    };
+
+    //TCPATpm Class
+    [
+        uuid(FBCD9C20-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPATpm Class"),
+        noncreatable
+    ]
+    coclass TCPATpm
+    {
+        [default] interface ITCPATpm;
+        interface ITCPAAttrib;
+        interface ITCPAAuth;
+        interface ITCPAIntegrity;
+        interface ITCPAAdministration;
+        interface ITCPAIdentityCreation;
+        interface ITCPAMaintenance;
+    };
+
+    //TCPAKey Class
+    [
+        uuid(FBCD9C26-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPAKey Class"),
+        noncreatable
+    ]
+    coclass TCPAKey
+    {
+        [default] interface ITCPAKey;
+        interface ITCPAAttrib;
+        interface ITCPAAuth;
+        interface ITCPAMigration;
+    };
+
+    //TCPAEncData Class
+    [
+        uuid(FBCD9C28-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPAEncData Class"),
+        noncreatable
+    ]
+    coclass TCPAEncData
+    {
+        [default] interface ITCPAEncData;
+        interface ITCPAAttrib;
+        interface ITCPAAuth;
+    };
+
+    //TCPAHash Class
+    [
+        uuid(FBCD9C2A-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPAHash Class"),
+        noncreatable
+    ]
+    coclass TCPAHash
+    {
+        [default] interface ITCPAHash;
+        interface ITCPAAttrib;
+    };
+
+    //TCPAPcrs Class
+    [
+        uuid(FBCD9C2C-72CB-47BB-99DD-2317551491DE),
+        helpstring("TCPAPcrs Class"),
+        noncreatable
+    ]
+    coclass TCPAPcrs
+    {
+        [default] interface ITCPAPcrs;
+    };
+
+    //TCPANonVolatileStorage Class
+    [
+        uuid(4730c51c-8998-43f6-993b-80befea1d404),
+        helpstring("TCPANonVolatileStorage Class"),
+        noncreatable
+    ]
+    coclass TCPANonVolatileStorage
+    {
+        [default] interface ITCPANonVolatileStorage;
+        interface ITCPAAttrib;
+        interface ITCPAAuth;
+    };
+
+};	// end of library TSPLib
diff --git a/tss/include/tss/TSS_CHANGELOG b/tss/include/tss/TSS_CHANGELOG
index e91a312..b00f27b 100644
--- a/tss/include/tss/TSS_CHANGELOG
+++ b/tss/include/tss/TSS_CHANGELOG
@@ -1,294 +1,294 @@
--------------------------------------------------------------------

-Wed Jun 13 2007

-

-tss12 include final no wsdl

-

-* Removed TSS-WSDL.txt

-

--------------------------------------------------------------------

-Wed Jun 6 2007

-

-tss12 include final

-

-* in tpm.h, added TPM_CAP_DA_LOGIC definition

-

-* in tss_defines.h added TSS_TPMCAP_DA_LOGIC as a new capability area.

-The subCap should be one of the TPM_ET_* entity types.

-

--------------------------------------------------------------------

-Wed May 30 2007

-

-tss12 include GC Errata 11

-

-* In tcs.h, include tcs_defines.h

-

-* In tcs_defines.h, changed TCS_TCSATTRIB_* to TSS_TCSATTRIB_*

-

-* In tss_defines.h, added TSS_TPMCAP_PROP_MIN_COUNTER as 0x27

-

-* Removed two temp files hanging around in the archive

-

--------------------------------------------------------------------

-Tue Mar 27 2007

-

-tss12 include GC Errata 11

-

-* In tspi.h, added Tspi_TPM_OwnerGetSRKPubKey.

-

-* In tspi.h, fixed type of "daaPubKey" parameter in DAA callback

-typedefs, removed #ifdefs that disabled those definitions.

-

--------------------------------------------------------------------

-Wed Jan 10 2007

-

-tss12 include GC Errata 10

-

-* In tspi.h, fix several structs which had commas after their final

-parameters.  Changed Tspi_DAA_IssueGenerateKey to

-Tspi_DAA_Issuer_GenerateKey to match the spec.  Added a missing

-comma in one struct definition. Commented out the DAA callback

-definitions until a final function prototype is agreed upon.

-

-* In tss_structs.h, moved the definition of TSS_DAA_ATTRIB_COMMIT

-higher in the file, to allow other structures that reference it

-to compile.  Fixed a type-o, changing TSS_DAA_ATTRIB_CCOMMIT to

-TSS_DAA_ATTRIB_COMMIT.

-

--------------------------------------------------------------------

-tss12 include GC Errata 9

--------------------------------------------------------------------

-Thu Oct 12 2006

-

-tss12 include GC Errata 8

-

-* In compat11b.h, #define of TCPA_ET_OWNER from TPM_ET_KEY to TPM_ET_OWNER.

-

-* In tpm.h, changed TPM_SET_PERMFLAGS to TPM_SET_PERM_FLAGS to match TPM spec.

-

-* In tcs.h, added Tcsip_OwnerReadInternalPub and Tcsip_FlushSpecific.

-

-* In tss_defines.h, tss_structs.h, and tss_typedef.h, changed DAA

-definitions to match new spec 

-Published Level 1 with Errata A Golden Candidate 2-KEY-061027.pdf

-

--------------------------------------------------------------------

-Thu Oct 12 2006

-

-tss12 include GC Errata 8

-

-* in tspi.h, altered DAA APIs to match TSS 1.2 Errata A Golden

-Candidate 3.

-

-* in tss_defines.h, added the TSS_OBJECT_TYPE_DAA_DATA object type

-flag. Also added TSS_TSPATTRIB_DAA_DATA flag and subFlags for each

-DAADATA data type.

-

-* in tss_typedef.h, added TSS_HDAA_DATA object handle definition.

-

-* in tss_structs.h, added TSS_HDAA_DATA handles in the

-TSS_DAA_JOIN_SESSION and TSS_DAA_JOIN_ISSUER_SESSION structures.

-

--------------------------------------------------------------------

-Wed Sep  6 2006

-

-tss12 include GC Errata 7

-

-* In compat11b.h, changed #defines <TCPA_TYPE> <TPM_TYPE> into

-typedef <TPM_TYPE> <TCPA_TYPE>

-

-* In tcs.h, changed name of length field from ulCurrentTicks to

-ulCurrentTicksSize in Tcsip_EstablishTransport. In

-Tcsip_ReleaseTransportSigned changed name of length field from

-pulCurrentTicks to pulCurrentTicksSize.

-

-* In tcs.h, added Tcsip_ResetLockValue.

-

-* In tcs.h, added Tcsi_GetCredential.

-

-* In tcs_defines.h, added macros to support Tcsi_GetCredential.

-

-* In tcs_structs.h, changed name of structure from TPM_AUTH to

-TCS_AUTH, since it is used only in the TCS API. Added typedef for

-TPM_AUTH for backward compatibility.

-

-* In tcs_typedef.h, added #include <tpm.h> because some of the typedefs

-in this file require definitions from tpm.h.

-

-* In tpm.h, moved definition of TPM_SYM_MODE to the end of the file,

-and added definitions for its valid values.

-

-* In tpm_ordinal.h, added TPM_ORD_ResetLockValue.

-

-* In tspi.h, added #includes so header is self-contained.

-

-* In tspi.h, removed Tspi_TPM_SetOrdinalAuditStatus. This is now

-controlled via attributes of the TPM object.

-

-* In tspi.h, added missing nonces to Tspicb_CallbackSealxMask.

-

-* In tspi.h, minor reformatting by changing whitespace.

-

-* In tss_defines.h, added TSS_KEY_TYPE_MIGRATE.

-

-* In tss_defines.h, added TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS.

-

-* In tss_defines.h, added attribute flags for setting certificate

-blobs via Tspi_SetAttribData.

-

-* In  tss_defines.h, added policy attribute for Sealx callback.

-

-* In tss_defines.h, added TSS_ALG_DEFAULT and TSS_ALG_DEFAULT_SIZE

-for use with Tspi_Context_GetCapability.

-

-* In tss_defines.h, added TPM status flag for ResetLock.

-

-* In tss_defines.h, removed deleted TPM capability flags:

-TSS_TPMCAP_PROP_MINCOUNTERSIZE, TSS_TPMCAP_PROP_ORD_AUDITED,

-and TSS_TPMCAP_PROP_ORD_FAMILY_TABLE.

-

-* In tss_defines.h, added TSS_RT_* values, for use with

-Tspi_TPM_GetCapability(TSS_TPMCAP_HANDLE).

-

-* In tss_defines.h, added missing TCS subcap flags:

-TSS_TCSCAP_PLATFORM_INFO, TSS_TCSCAP_PROP_HOST_PLATFORM,

-and TSS_TCSCAP_PROP_ALL_PLATFORMS.

-

-* In tss_defines.h, added flags for TSP returnvalue capabilities:

-TSS_TSPCAP_RETURNVALUE_INFO and TSS_TSPCAP_PROP_RETURNVALUE_INFO.

-

-* In tss_error.h, added TSS_E_NO_ACTIVE_COUNTER and

-TSS_E_TSP_TRANS_NO_PUBKEY.

-

-* In tss_structs.h, minor reformatting with whitespace.

-

-* In tss_structs.h, added TSS_DAA_KEY_PAIR,

-TSS_DAA_ATTRIB_COMMIT_PARAM, and TSS_PLATFORM_CLASS.

-

--------------------------------------------------------------------

-Wed Mar 15 2006

-

-tss12 include GC Errata 6

-

-* In tss_structs.h, remove "selector" field from TSS_DAA_SIGN_DATA

-

-* In tss_defines.h, add macros for TSS_FLAG_DAA_SIGN_IDENTITY_KEY,

-TSS_FLAG_DAA_SIGN_MESSAGE_HASH, TSS_FLAG_DAA_PSEUDONYM_PLAIN,

-and TSS_FLAG_DAA_PSEUDONYM_ENCRYPTED.

-

--------------------------------------------------------------------

-Mon Feb 13 2006

-

-tss12 include GC Errata 5

-

-* In tss_structs.h, removed #ifndef __midl around "#include tpm.h".

-That is, make the tpm definitions available when midl is active.

-

-* In tss_structs.h, Changed fields in TSS_VALIDATION structure

-to match written spec.

-

-* In tss_defines.h, #include tpm.h because the DAA definitions depend

-on the constants defined in that file

-

-* In tpm.h, disabled definition of TPM_NV_DATA_SENSITIVE.

-

-* In tddli.h, added power management functions, applying comments

-from LinYang@lenovo.com

-

--------------------------------------------------------------------

-Thu Feb 09 2006

-

-* Changed tss_structs.h according to email #37371

-  -removed macro TSS_DAA_SIZE

-  -added length to specify second dimension of 2-dim arrays of DAA structures

-

-* Changed tss_defines.h accroding to email #37366

-  -added constants for DAA

-

-* Changed compat11b.h according to email #37225

-  -added

-  #define TCPA_SYM_CA_ATTESTATION TPM_SYM_CA_ATTESTATION

-  #define TCPA_ASYM_CA_CONTENTS   TPM_ASYM_CA_CONTENTS

-  #define TCPA_IDENTITY_REQ       TPM_IDENTITY_REQ

-  #define TCPA_IDENTITY_PROOF     TPM_IDENTITY_PROOF

-

-

--------------------------------------------------------------------

-Wed Dec 14 2005

-

-tss12 include GC Errata 3

-

-* Added buffer for public key to Tcsip_KeyControlOwner. 

-Based on discussion in WG on Dec 14. See also email #36406.

-

-* Added baseNameLength and baseName to Tspi_DAA_VerifyInit.

-See email #36432.

-

-* Changed nonceVerifierLength, nonceVerifier, baseNameLength,

-and baseName parameters from 'out' to 'in' in Tspi_DAA_VerifySignature.

-Also removed one level of indirection from those parameters.

-See email #36432.

-

-* Added daaCounter field to TSS_DAA_JOIN_SESSION.

-See email #36432.

-

-* Changed definitions of TSS_CMK_DELEGATE_* values in tss_defines.h

-so that they do not depend on the TPM_CMK_DELEGATE_* macros. This

-reduces header file dependencies.

-

--------------------------------------------------------------------

-Tue Dec 13 2005

-

-tss12 include GC Errata 2

-

-* Changed Tspi_TPM_GetAuditDigest to output the audit digest as a

-UINT32*/BYTE** instead of a TPM_DIGEST*. See email #36029 and 36077.

-

-* Added TSS_TPMCAP_SET_PERM_FLAGS and TSS_TPMCAP_SET_VENDOR.

-See email #36077.

-

-* Added midl definitions for multi-dimensional DAA structures.

-See emails #36029 and 36042. During the WG call on Nov 

-30 it was agreed to not add new fields, but have the array

-lengths be constants dictated by the VersionInfo field.

-

-* Added TSS_CMK_DELEGATE_* macros. See email #36042.

-

-

--------------------------------------------------------------------

-Wed Nov 16 2005 

-

-tss12 include GC Errata 1

-

-Applied changes proposed by Infineon in emails archived as #35490,

-35507, 35541, 35584, 35964:

-* Hid definition of UINT16 on Windows to allow to compile on Win32

-  systems.

-* Added bitmask definitions to extract key initflags fields.

-* Added #defines for TSS_KEYUSAGE_AUTHCHANGE, TSS_KEYUSAGE_MIGRATE,

-  TSS_KEYFLAG_CERTIFIED_MIGRATABLE, TSS_ALG_MGF1,

-  TSS_MS_RESTRICT_APPROVE_DOUBLE, TSS_MS_RESTRICT_MIGRATE_EXTERNAL.

-* Eliminated hole in enum values for TSS_KEYUSAGE.

-* Added #defines for ASN.1 version and blob types.

-* Added missing midl size_is declarations identified by Infineon.

-

-Additions/Corrections/Changes beyond those emails

-* Added TSP.idl posted by Infineon.

-* Added TSS-WSDL.txt file posted by IBM.

-* Certain TSS_TPMCAP values were not defined based on

-  working-group email exchange from Dave Challener.

-* Instead of accepting the RSA_*_BITMASK proposed by Infineon

-  for the key initflags masks, the masks were named TSS_*_BITMASK

-  so that the mask name corresponds to the bitfield names.

-  RSAKEY_USAGE_BITMASK    --> TSS_KEY_TYPE_BITMASK

-  RSAKEY_SIZE_BITMASK     --> TSS_KEY_SIZE_BITMASK

-  RSAKEY_TEMPLATE_BITMASK --> TSS_KEY_TEMPLATE_BITMASK

-* TSS_TPMCAP_SET_PERM_FLAGS/TSS_TPMCAP_PF_READSRKPUB were not added

-  This functionality is already provided by 

-  Tspi_TPM_SetStatus(TSS_TPMSTATUS_DISABLEPUBSRKREAD)

-* MIDL size_is definitions were added for DAA structures in

-  tss_structs.h. These are incomplete.

-* In tpm.h, TPM_PERMANENT_FLAGS.operator was renamed

-  TPM_PERMANENT_FLAGS.Operator because 'operator' is a

-  reserved word in C++.

-

-

+-------------------------------------------------------------------
+Wed Jun 13 2007
+
+tss12 include final no wsdl
+
+* Removed TSS-WSDL.txt
+
+-------------------------------------------------------------------
+Wed Jun 6 2007
+
+tss12 include final
+
+* in tpm.h, added TPM_CAP_DA_LOGIC definition
+
+* in tss_defines.h added TSS_TPMCAP_DA_LOGIC as a new capability area.
+The subCap should be one of the TPM_ET_* entity types.
+
+-------------------------------------------------------------------
+Wed May 30 2007
+
+tss12 include GC Errata 11
+
+* In tcs.h, include tcs_defines.h
+
+* In tcs_defines.h, changed TCS_TCSATTRIB_* to TSS_TCSATTRIB_*
+
+* In tss_defines.h, added TSS_TPMCAP_PROP_MIN_COUNTER as 0x27
+
+* Removed two temp files hanging around in the archive
+
+-------------------------------------------------------------------
+Tue Mar 27 2007
+
+tss12 include GC Errata 11
+
+* In tspi.h, added Tspi_TPM_OwnerGetSRKPubKey.
+
+* In tspi.h, fixed type of "daaPubKey" parameter in DAA callback
+typedefs, removed #ifdefs that disabled those definitions.
+
+-------------------------------------------------------------------
+Wed Jan 10 2007
+
+tss12 include GC Errata 10
+
+* In tspi.h, fix several structs which had commas after their final
+parameters.  Changed Tspi_DAA_IssueGenerateKey to
+Tspi_DAA_Issuer_GenerateKey to match the spec.  Added a missing
+comma in one struct definition. Commented out the DAA callback
+definitions until a final function prototype is agreed upon.
+
+* In tss_structs.h, moved the definition of TSS_DAA_ATTRIB_COMMIT
+higher in the file, to allow other structures that reference it
+to compile.  Fixed a type-o, changing TSS_DAA_ATTRIB_CCOMMIT to
+TSS_DAA_ATTRIB_COMMIT.
+
+-------------------------------------------------------------------
+tss12 include GC Errata 9
+-------------------------------------------------------------------
+Thu Oct 12 2006
+
+tss12 include GC Errata 8
+
+* In compat11b.h, #define of TCPA_ET_OWNER from TPM_ET_KEY to TPM_ET_OWNER.
+
+* In tpm.h, changed TPM_SET_PERMFLAGS to TPM_SET_PERM_FLAGS to match TPM spec.
+
+* In tcs.h, added Tcsip_OwnerReadInternalPub and Tcsip_FlushSpecific.
+
+* In tss_defines.h, tss_structs.h, and tss_typedef.h, changed DAA
+definitions to match new spec 
+Published Level 1 with Errata A Golden Candidate 2-KEY-061027.pdf
+
+-------------------------------------------------------------------
+Thu Oct 12 2006
+
+tss12 include GC Errata 8
+
+* in tspi.h, altered DAA APIs to match TSS 1.2 Errata A Golden
+Candidate 3.
+
+* in tss_defines.h, added the TSS_OBJECT_TYPE_DAA_DATA object type
+flag. Also added TSS_TSPATTRIB_DAA_DATA flag and subFlags for each
+DAADATA data type.
+
+* in tss_typedef.h, added TSS_HDAA_DATA object handle definition.
+
+* in tss_structs.h, added TSS_HDAA_DATA handles in the
+TSS_DAA_JOIN_SESSION and TSS_DAA_JOIN_ISSUER_SESSION structures.
+
+-------------------------------------------------------------------
+Wed Sep  6 2006
+
+tss12 include GC Errata 7
+
+* In compat11b.h, changed #defines <TCPA_TYPE> <TPM_TYPE> into
+typedef <TPM_TYPE> <TCPA_TYPE>
+
+* In tcs.h, changed name of length field from ulCurrentTicks to
+ulCurrentTicksSize in Tcsip_EstablishTransport. In
+Tcsip_ReleaseTransportSigned changed name of length field from
+pulCurrentTicks to pulCurrentTicksSize.
+
+* In tcs.h, added Tcsip_ResetLockValue.
+
+* In tcs.h, added Tcsi_GetCredential.
+
+* In tcs_defines.h, added macros to support Tcsi_GetCredential.
+
+* In tcs_structs.h, changed name of structure from TPM_AUTH to
+TCS_AUTH, since it is used only in the TCS API. Added typedef for
+TPM_AUTH for backward compatibility.
+
+* In tcs_typedef.h, added #include <tpm.h> because some of the typedefs
+in this file require definitions from tpm.h.
+
+* In tpm.h, moved definition of TPM_SYM_MODE to the end of the file,
+and added definitions for its valid values.
+
+* In tpm_ordinal.h, added TPM_ORD_ResetLockValue.
+
+* In tspi.h, added #includes so header is self-contained.
+
+* In tspi.h, removed Tspi_TPM_SetOrdinalAuditStatus. This is now
+controlled via attributes of the TPM object.
+
+* In tspi.h, added missing nonces to Tspicb_CallbackSealxMask.
+
+* In tspi.h, minor reformatting by changing whitespace.
+
+* In tss_defines.h, added TSS_KEY_TYPE_MIGRATE.
+
+* In tss_defines.h, added TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS.
+
+* In tss_defines.h, added attribute flags for setting certificate
+blobs via Tspi_SetAttribData.
+
+* In  tss_defines.h, added policy attribute for Sealx callback.
+
+* In tss_defines.h, added TSS_ALG_DEFAULT and TSS_ALG_DEFAULT_SIZE
+for use with Tspi_Context_GetCapability.
+
+* In tss_defines.h, added TPM status flag for ResetLock.
+
+* In tss_defines.h, removed deleted TPM capability flags:
+TSS_TPMCAP_PROP_MINCOUNTERSIZE, TSS_TPMCAP_PROP_ORD_AUDITED,
+and TSS_TPMCAP_PROP_ORD_FAMILY_TABLE.
+
+* In tss_defines.h, added TSS_RT_* values, for use with
+Tspi_TPM_GetCapability(TSS_TPMCAP_HANDLE).
+
+* In tss_defines.h, added missing TCS subcap flags:
+TSS_TCSCAP_PLATFORM_INFO, TSS_TCSCAP_PROP_HOST_PLATFORM,
+and TSS_TCSCAP_PROP_ALL_PLATFORMS.
+
+* In tss_defines.h, added flags for TSP returnvalue capabilities:
+TSS_TSPCAP_RETURNVALUE_INFO and TSS_TSPCAP_PROP_RETURNVALUE_INFO.
+
+* In tss_error.h, added TSS_E_NO_ACTIVE_COUNTER and
+TSS_E_TSP_TRANS_NO_PUBKEY.
+
+* In tss_structs.h, minor reformatting with whitespace.
+
+* In tss_structs.h, added TSS_DAA_KEY_PAIR,
+TSS_DAA_ATTRIB_COMMIT_PARAM, and TSS_PLATFORM_CLASS.
+
+-------------------------------------------------------------------
+Wed Mar 15 2006
+
+tss12 include GC Errata 6
+
+* In tss_structs.h, remove "selector" field from TSS_DAA_SIGN_DATA
+
+* In tss_defines.h, add macros for TSS_FLAG_DAA_SIGN_IDENTITY_KEY,
+TSS_FLAG_DAA_SIGN_MESSAGE_HASH, TSS_FLAG_DAA_PSEUDONYM_PLAIN,
+and TSS_FLAG_DAA_PSEUDONYM_ENCRYPTED.
+
+-------------------------------------------------------------------
+Mon Feb 13 2006
+
+tss12 include GC Errata 5
+
+* In tss_structs.h, removed #ifndef __midl around "#include tpm.h".
+That is, make the tpm definitions available when midl is active.
+
+* In tss_structs.h, Changed fields in TSS_VALIDATION structure
+to match written spec.
+
+* In tss_defines.h, #include tpm.h because the DAA definitions depend
+on the constants defined in that file
+
+* In tpm.h, disabled definition of TPM_NV_DATA_SENSITIVE.
+
+* In tddli.h, added power management functions, applying comments
+from LinYang@lenovo.com
+
+-------------------------------------------------------------------
+Thu Feb 09 2006
+
+* Changed tss_structs.h according to email #37371
+  -removed macro TSS_DAA_SIZE
+  -added length to specify second dimension of 2-dim arrays of DAA structures
+
+* Changed tss_defines.h accroding to email #37366
+  -added constants for DAA
+
+* Changed compat11b.h according to email #37225
+  -added
+  #define TCPA_SYM_CA_ATTESTATION TPM_SYM_CA_ATTESTATION
+  #define TCPA_ASYM_CA_CONTENTS   TPM_ASYM_CA_CONTENTS
+  #define TCPA_IDENTITY_REQ       TPM_IDENTITY_REQ
+  #define TCPA_IDENTITY_PROOF     TPM_IDENTITY_PROOF
+
+
+-------------------------------------------------------------------
+Wed Dec 14 2005
+
+tss12 include GC Errata 3
+
+* Added buffer for public key to Tcsip_KeyControlOwner. 
+Based on discussion in WG on Dec 14. See also email #36406.
+
+* Added baseNameLength and baseName to Tspi_DAA_VerifyInit.
+See email #36432.
+
+* Changed nonceVerifierLength, nonceVerifier, baseNameLength,
+and baseName parameters from 'out' to 'in' in Tspi_DAA_VerifySignature.
+Also removed one level of indirection from those parameters.
+See email #36432.
+
+* Added daaCounter field to TSS_DAA_JOIN_SESSION.
+See email #36432.
+
+* Changed definitions of TSS_CMK_DELEGATE_* values in tss_defines.h
+so that they do not depend on the TPM_CMK_DELEGATE_* macros. This
+reduces header file dependencies.
+
+-------------------------------------------------------------------
+Tue Dec 13 2005
+
+tss12 include GC Errata 2
+
+* Changed Tspi_TPM_GetAuditDigest to output the audit digest as a
+UINT32*/BYTE** instead of a TPM_DIGEST*. See email #36029 and 36077.
+
+* Added TSS_TPMCAP_SET_PERM_FLAGS and TSS_TPMCAP_SET_VENDOR.
+See email #36077.
+
+* Added midl definitions for multi-dimensional DAA structures.
+See emails #36029 and 36042. During the WG call on Nov 
+30 it was agreed to not add new fields, but have the array
+lengths be constants dictated by the VersionInfo field.
+
+* Added TSS_CMK_DELEGATE_* macros. See email #36042.
+
+
+-------------------------------------------------------------------
+Wed Nov 16 2005 
+
+tss12 include GC Errata 1
+
+Applied changes proposed by Infineon in emails archived as #35490,
+35507, 35541, 35584, 35964:
+* Hid definition of UINT16 on Windows to allow to compile on Win32
+  systems.
+* Added bitmask definitions to extract key initflags fields.
+* Added #defines for TSS_KEYUSAGE_AUTHCHANGE, TSS_KEYUSAGE_MIGRATE,
+  TSS_KEYFLAG_CERTIFIED_MIGRATABLE, TSS_ALG_MGF1,
+  TSS_MS_RESTRICT_APPROVE_DOUBLE, TSS_MS_RESTRICT_MIGRATE_EXTERNAL.
+* Eliminated hole in enum values for TSS_KEYUSAGE.
+* Added #defines for ASN.1 version and blob types.
+* Added missing midl size_is declarations identified by Infineon.
+
+Additions/Corrections/Changes beyond those emails
+* Added TSP.idl posted by Infineon.
+* Added TSS-WSDL.txt file posted by IBM.
+* Certain TSS_TPMCAP values were not defined based on
+  working-group email exchange from Dave Challener.
+* Instead of accepting the RSA_*_BITMASK proposed by Infineon
+  for the key initflags masks, the masks were named TSS_*_BITMASK
+  so that the mask name corresponds to the bitfield names.
+  RSAKEY_USAGE_BITMASK    --> TSS_KEY_TYPE_BITMASK
+  RSAKEY_SIZE_BITMASK     --> TSS_KEY_SIZE_BITMASK
+  RSAKEY_TEMPLATE_BITMASK --> TSS_KEY_TEMPLATE_BITMASK
+* TSS_TPMCAP_SET_PERM_FLAGS/TSS_TPMCAP_PF_READSRKPUB were not added
+  This functionality is already provided by 
+  Tspi_TPM_SetStatus(TSS_TPMSTATUS_DISABLEPUBSRKREAD)
+* MIDL size_is definitions were added for DAA structures in
+  tss_structs.h. These are incomplete.
+* In tpm.h, TPM_PERMANENT_FLAGS.operator was renamed
+  TPM_PERMANENT_FLAGS.Operator because 'operator' is a
+  reserved word in C++.
+
+
diff --git a/tss/include/tss/compat11b.h b/tss/include/tss/compat11b.h
index 2caa95d..a665697 100644
--- a/tss/include/tss/compat11b.h
+++ b/tss/include/tss/compat11b.h
@@ -1,199 +1,199 @@
-

-#ifndef __COMPAT11B_H__

-#define __COMPAT11B_H__

-

-#include <tpm.h>

-

-#define TCPA_Vendor_Specific32  TPM_Vendor_Specific32

-#define TCPA_Vendor_Specific8   TPM_Vendor_Specific8

-

-typedef TSS_UNICODE             UNICODE;

-typedef TPM_DIGEST              TCPA_DIGEST;

-typedef TPM_NONCE               TCPA_NONCE;

-typedef TPM_NONCE               TCPA_SALT_NONCE;

-typedef TPM_PUBKEY              TCPA_PUBKEY;

-typedef TPM_SECRET              TCPA_SECRET;

-typedef TPM_KEY                 TCPA_KEY;

-typedef TPM_DIRVALUE            TCPA_DIRVALUE;

-typedef TPM_COMMAND_CODE        TCPA_COMMAND_CODE;

-typedef TPM_BOUND_DATA          TCPA_BOUND_DATA;

-typedef TPM_STRUCT_VER          TCPA_VERSION;

-typedef TPM_RESULT              TCPA_RESULT;

-typedef TPM_PAYLOAD_TYPE        TCPA_PAYLOAD_TYPE;

-typedef TPM_STORE_PRIVKEY       TCPA_STORE_PRIVKEY;

-typedef TPM_CHOSENID_HASH       TCPA_CHOSENID_HASH;

-typedef TPM_SYMMETRIC_KEY       TCPA_SYMMETRIC_KEY;

-typedef TPM_PCR_INFO            TCPA_PCR_INFO;

-typedef TPM_PCR_SELECTION       TCPA_PCR_SELECTION;

-typedef TPM_STORED_DATA         TCPA_STORED_DATA;

-typedef TPM_SEALED_DATA         TCPA_SEALED_DATA;

-typedef TPM_KEY_FLAGS           TCPA_KEY_FLAGS;

-typedef TPM_KEY_PARMS           TCPA_KEY_PARMS;

-typedef TPM_STORE_PUBKEY        TCPA_STORE_PUBKEY;

-typedef TPM_MIGRATIONKEYAUTH    TCPA_MIGRATIONKEYAUTH;

-typedef TPM_RSA_KEY_PARMS       TCPA_RSA_KEY_PARMS;

-typedef TPM_CERTIFY_INFO        TCPA_CERTIFY_INFO;

-typedef TPM_STORE_ASYMKEY       TCPA_STORE_ASYMKEY;

-typedef TPM_ENCAUTH             TCPA_ENCAUTH;

-typedef TPM_PCRINDEX            TCPA_PCRINDEX;

-typedef TPM_PCRVALUE            TCPA_PCRVALUE;

-typedef TPM_DIRINDEX            TCPA_DIRINDEX;

-typedef TPM_PROTOCOL_ID         TCPA_PROTOCOL_ID;

-typedef TPM_ALGORITHM_ID        TCPA_ALGORITHM_ID;

-typedef TPM_ENTITY_TYPE         TCPA_ENTITY_TYPE;

-typedef TPM_CAPABILITY_AREA     TCPA_CAPABILITY_AREA;

-typedef TPM_HMAC                TCPA_HMAC;

-typedef TPM_MIGRATE_SCHEME      TCPA_MIGRATE_SCHEME;

-typedef TPM_PHYSICAL_PRESENCE   TCPA_PHYSICAL_PRESENCE;

-typedef TPM_KEY_HANDLE          TCPA_KEY_HANDLE;

-typedef TPM_KEY_HANDLE_LIST     TCPA_KEY_HANDLE_LIST;

-typedef TPM_PCR_COMPOSITE       TCPA_PCR_COMPOSITE;

-typedef TPM_AUTH_DATA_USAGE     TCPA_AUTH_DATA_USAGE;

-typedef TPM_AUTHDATA            TCPA_AUTHDATA;

-typedef TPM_KEY_USAGE           TCPA_KEY_USAGE;

-typedef TPM_COMPOSITE_HASH      TCPA_COMPOSITE_HASH;

-typedef TPM_QUOTE_INFO          TCPA_QUOTE_INFO;

-typedef TPM_TAG                 TCPA_TAG;

-typedef TPM_ENC_SCHEME          TCPA_ENC_SCHEME;

-typedef TPM_SIG_SCHEME          TCPA_SIG_SCHEME;

-typedef TPM_STARTUP_TYPE        TCPA_STARTUP_TYPE;

-typedef TPM_AUTHHANDLE          TCPA_AUTHHANDLE;

-typedef TPM_SYM_CA_ATTESTATION  TCPA_SYM_CA_ATTESTATION;

-typedef TPM_ASYM_CA_CONTENTS    TCPA_ASYM_CA_CONTENTS;

-typedef TPM_IDENTITY_REQ        TCPA_IDENTITY_REQ;

-typedef TPM_IDENTITY_PROOF      TCPA_IDENTITY_PROOF;

-

-// These were removed from the 1.2 TPM spec

-typedef UINT32                  TCPA_ENCHANDLE;

-typedef UINT32                  TCPA_EVENTTYPE;

-typedef struct tdTCPA_AUDIT_EVENT {

-    TCPA_COMMAND_CODE ordinal;

-    TCPA_RESULT       returncode;

-} TCPA_AUDIT_EVENT;

-

-#define TCPA_SHA1_160_HASH_LEN          TPM_SHA1_160_HASH_LEN

-#define TCPA_SHA1BASED_NONCE_LEN        TPM_SHA1BASED_NONCE_LEN

-

-#define redirection             TSS_KEYFLAG_REDIRECTION

-#define migratable              TSS_KEYFLAG_MIGRATABLE

-#define volatileKey             TSS_KEYFLAG_VOLATILEKEY

-

-#define TCPA_ET_KEYHANDLE       TPM_ET_KEYHANDLE

-#define TCPA_ET_KEY             TPM_ET_KEY

-#define TCPA_ET_OWNER           TPM_ET_OWNER

-#define TCPA_ET_SRK             TPM_ET_SRK

-#define TCPA_ET_DATA            TPM_ET_DATA

-

-#define TCPA_PID_OIAP           TPM_PID_OIAP

-#define TCPA_PID_OSAP           TPM_PID_OSAP

-#define TCPA_PID_ADIP           TPM_PID_ADIP

-#define TCPA_PID_ADCP           TPM_PID_ADCP

-#define TCPA_PID_OWNER          TPM_PID_OWNER

-

-#define TCPA_PT_ASYM            TPM_PT_ASYM

-#define TCPA_PT_BIND            TPM_PT_BIND

-#define TCPA_PT_MIGRATE         TPM_PT_MIGRATE

-#define TCPA_PT_MAINT           TPM_PT_MAINT

-#define TCPA_PT_SEAL            TPM_PT_SEAL

-

-#define TCPA_CAP_ALG            TPM_CAP_ALG

-#define TCPA_CAP_ORD            TPM_CAP_ORD

-#define TCPA_CAP_PID            TPM_CAP_PID

-#define TCPA_CAP_FLAG           TPM_CAP_FLAG

-#define TCPA_CAP_VERSION        TPM_CAP_VERSION

-#define TCPA_CAP_PROPERTY       TPM_CAP_PROPERTY

-#define TCPA_CAP_KEY_HANDLE     TPM_CAP_KEY_HANDLE

-#define TCPA_CAP_CHECK_LOADED   TPM_CAP_CHECK_LOADED

-

-#define TCPA_ALG_RSA            TPM_ALG_RSA

-#define TCPA_ALG_DES            TPM_ALG_DES

-#define TCPA_ALG_3DES           TPM_ALG_3DES

-#define TCPA_ALG_SHA            TPM_ALG_SHA

-#define TCPA_ALG_HMAC           TPM_ALG_HMAC

-#define TCPA_ALG_AES            TPM_ALG_AES

-

-#define TCPA_PROTECTED_ORDINAL          TPM_PROTECTED_ORDINAL

-#define TCPA_UNPROTECTED_ORDINAL        TPM_UNPROTECTED_ORDINAL

-#define TCPA_CONNECTION_ORDINAL         TPM_CONNECTION_ORDINAL

-

-#define TCPA_PROTECTED_COMMAND          TPM_PROTECTED_COMMAND

-#define TCPA_UNPROTECTED_COMMAND        TPM_UNPROTECTED_COMMAND

-#define TCPA_CONNECTION_COMMAND         TPM_CONNECTION_COMMAND

-#define TCPA_VENDOR_COMMAND             TPM_VENDOR_COMMAND

-

-#define TCPA_MAIN               TPM_MAIN

-#define TCPA_PC                 TPM_PC

-#define TCPA_PDA                TPM_PDA

-#define TCPA_CELL_PHONE         TPM_CELL_PHONE

-

-#define TCPA_MS_MIGRATE                 TPM_MS_MIGRATE

-#define TCPA_MS_REWRAP                  TPM_MS_REWRAP

-#define TCPA_MS_MAINT                   TPM_MS_MAINT

-

-#define TCPA_ES_NONE                    TPM_ES_NONE

-#define TCPA_ES_RSAESPKCSv15            TPM_ES_RSAESPKCSv15

-#define TCPA_ES_RSAESOAEP_SHA1_MGF1     TPM_ES_RSAESOAEP_SHA1_MGF1

-

-#define TCPA_SS_NONE                    TPM_SS_NONE

-#define TCPA_SS_RSASSAPKCS1v15_SHA1     TPM_SS_RSASSAPKCS1v15_SHA1

-#define TCPA_SS_RSASSAPKCS1v15_DER      TPM_SS_RSASSAPKCS1v15_DER

-

-#define TCPA_PHYSICAL_PRESENCE_LIFETIME_LOCK    TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK

-#define TCPA_PHYSICAL_PRESENCE_HW_ENABLE        TPM_PHYSICAL_PRESENCE_HW_ENABLE

-#define TCPA_PHYSICAL_PRESENCE_CMD_ENABLE       TPM_PHYSICAL_PRESENCE_CMD_ENABLE

-#define TCPA_PHYSICAL_PRESENCE_LOCK             TPM_PHYSICAL_PRESENCE_LOCK

-#define TCPA_PHYSICAL_PRESENCE_PRESENT          TPM_PHYSICAL_PRESENCE_PRESENT

-#define TCPA_PHYSICAL_PRESENCE_NOTPRESENT       TPM_PHYSICAL_PRESENCE_NOTPRESENT

-

-#define TCPA_SUCCESS                    TPM_SUCCESS

-#define TCPA_E_BASE                     TPM_E_BASE

-#define TCPA_E_NON_FATAL                TPM_E_NON_FATAL

-#define TCPA_E_AUTHFAIL                 TPM_E_AUTHFAIL

-#define TCPA_E_BAD_PARAMETER            TPM_E_BAD_PARAMETER

-#define TCPA_E_BADINDEX                 TPM_E_BADINDEX

-#define TCPA_E_AUDITFAILURE             TPM_E_AUDITFAILURE

-#define TCPA_E_CLEAR_DISABLED           TPM_E_CLEAR_DISABLED

-#define TCPA_E_DEACTIVATED              TPM_E_DEACTIVATED

-#define TCPA_E_DISABLED                 TPM_E_DISABLED

-#define TCPA_E_DISABLED_CMD             TPM_E_DISABLED_CMD

-#define TCPA_E_FAIL                     TPM_E_FAIL

-#define TCPA_E_INACTIVE                 TPM_E_BAD_ORDINAL

-#define TCPA_E_INSTALL_DISABLED         TPM_E_INSTALL_DISABLED

-#define TCPA_E_INVALID_KEYHANDLE        TPM_E_INVALID_KEYHANDLE

-#define TCPA_E_KEYNOTFOUND              TPM_E_KEYNOTFOUND

-#define TCPA_E_NEED_SELFTEST            TPM_E_INAPPROPRIATE_ENC

-#define TCPA_E_MIGRATEFAIL              TPM_E_MIGRATEFAIL

-#define TCPA_E_NO_PCR_INFO              TPM_E_INVALID_PCR_INFO

-#define TCPA_E_NOSPACE                  TPM_E_NOSPACE

-#define TCPA_E_NOSRK                    TPM_E_NOSRK

-#define TCPA_E_NOTSEALED_BLOB           TPM_E_NOTSEALED_BLOB

-#define TCPA_E_OWNER_SET                TPM_E_OWNER_SET

-#define TCPA_E_RESOURCES                TPM_E_RESOURCES

-#define TCPA_E_SHORTRANDOM              TPM_E_SHORTRANDOM

-#define TCPA_E_SIZE                     TPM_E_SIZE

-#define TCPA_E_WRONGPCRVAL              TPM_E_WRONGPCRVAL

-#define TCPA_E_BAD_PARAM_SIZE           TPM_E_BAD_PARAM_SIZE

-#define TCPA_E_SHA_THREAD               TPM_E_SHA_THREAD

-#define TCPA_E_SHA_ERROR                TPM_E_SHA_ERROR

-#define TCPA_E_FAILEDSELFTEST           TPM_E_FAILEDSELFTEST

-#define TCPA_E_AUTH2FAIL                TPM_E_AUTH2FAIL

-#define TCPA_E_BADTAG                   TPM_E_BADTAG

-#define TCPA_E_IOERROR                  TPM_E_IOERROR

-#define TCPA_E_ENCRYPT_ERROR            TPM_E_ENCRYPT_ERROR

-#define TCPA_E_DECRYPT_ERROR            TPM_E_DECRYPT_ERROR

-#define TCPA_E_INVALID_AUTHHANDLE       TPM_E_INVALID_AUTHHANDLE

-#define TCPA_E_NO_ENDORSEMENT           TPM_E_NO_ENDORSEMENT

-#define TCPA_E_INVALID_KEYUSAGE         TPM_E_INVALID_KEYUSAGE

-#define TCPA_E_WRONG_ENTITYTYPE         TPM_E_WRONG_ENTITYTYPE

-#define TCPA_E_INVALID_POSTINIT         TPM_E_INVALID_POSTINIT

-#define TCPA_E_INAPPROPRIATE_SIG        TPM_E_INAPPROPRIATE_SIG

-#define TCPA_E_BAD_KEY_PROPERTY         TPM_E_BAD_KEY_PROPERTY

-#define TCPA_E_BAD_MIGRATION            TPM_E_BAD_MIGRATION

-#define TCPA_E_BAD_SCHEME               TPM_E_BAD_SCHEME

-#define TCPA_E_BAD_DATASIZE             TPM_E_BAD_DATASIZE

-#define TCPA_E_BAD_MODE                 TPM_E_BAD_MODE

-#define TCPA_E_BAD_PRESENCE             TPM_E_BAD_PRESENCE

-#define TCPA_E_BAD_VERSION              TPM_E_BAD_VERSION

-#define TCPA_E_RETRY                    TPM_E_RETRY

-

-#endif

+
+#ifndef __COMPAT11B_H__
+#define __COMPAT11B_H__
+
+#include <tss/tpm.h>
+
+#define TCPA_Vendor_Specific32  TPM_Vendor_Specific32
+#define TCPA_Vendor_Specific8   TPM_Vendor_Specific8
+
+typedef TSS_UNICODE             UNICODE;
+typedef TPM_DIGEST              TCPA_DIGEST;
+typedef TPM_NONCE               TCPA_NONCE;
+typedef TPM_NONCE               TCPA_SALT_NONCE;
+typedef TPM_PUBKEY              TCPA_PUBKEY;
+typedef TPM_SECRET              TCPA_SECRET;
+typedef TPM_KEY                 TCPA_KEY;
+typedef TPM_DIRVALUE            TCPA_DIRVALUE;
+typedef TPM_COMMAND_CODE        TCPA_COMMAND_CODE;
+typedef TPM_BOUND_DATA          TCPA_BOUND_DATA;
+typedef TPM_STRUCT_VER          TCPA_VERSION;
+typedef TPM_RESULT              TCPA_RESULT;
+typedef TPM_PAYLOAD_TYPE        TCPA_PAYLOAD_TYPE;
+typedef TPM_STORE_PRIVKEY       TCPA_STORE_PRIVKEY;
+typedef TPM_CHOSENID_HASH       TCPA_CHOSENID_HASH;
+typedef TPM_SYMMETRIC_KEY       TCPA_SYMMETRIC_KEY;
+typedef TPM_PCR_INFO            TCPA_PCR_INFO;
+typedef TPM_PCR_SELECTION       TCPA_PCR_SELECTION;
+typedef TPM_STORED_DATA         TCPA_STORED_DATA;
+typedef TPM_SEALED_DATA         TCPA_SEALED_DATA;
+typedef TPM_KEY_FLAGS           TCPA_KEY_FLAGS;
+typedef TPM_KEY_PARMS           TCPA_KEY_PARMS;
+typedef TPM_STORE_PUBKEY        TCPA_STORE_PUBKEY;
+typedef TPM_MIGRATIONKEYAUTH    TCPA_MIGRATIONKEYAUTH;
+typedef TPM_RSA_KEY_PARMS       TCPA_RSA_KEY_PARMS;
+typedef TPM_CERTIFY_INFO        TCPA_CERTIFY_INFO;
+typedef TPM_STORE_ASYMKEY       TCPA_STORE_ASYMKEY;
+typedef TPM_ENCAUTH             TCPA_ENCAUTH;
+typedef TPM_PCRINDEX            TCPA_PCRINDEX;
+typedef TPM_PCRVALUE            TCPA_PCRVALUE;
+typedef TPM_DIRINDEX            TCPA_DIRINDEX;
+typedef TPM_PROTOCOL_ID         TCPA_PROTOCOL_ID;
+typedef TPM_ALGORITHM_ID        TCPA_ALGORITHM_ID;
+typedef TPM_ENTITY_TYPE         TCPA_ENTITY_TYPE;
+typedef TPM_CAPABILITY_AREA     TCPA_CAPABILITY_AREA;
+typedef TPM_HMAC                TCPA_HMAC;
+typedef TPM_MIGRATE_SCHEME      TCPA_MIGRATE_SCHEME;
+typedef TPM_PHYSICAL_PRESENCE   TCPA_PHYSICAL_PRESENCE;
+typedef TPM_KEY_HANDLE          TCPA_KEY_HANDLE;
+typedef TPM_KEY_HANDLE_LIST     TCPA_KEY_HANDLE_LIST;
+typedef TPM_PCR_COMPOSITE       TCPA_PCR_COMPOSITE;
+typedef TPM_AUTH_DATA_USAGE     TCPA_AUTH_DATA_USAGE;
+typedef TPM_AUTHDATA            TCPA_AUTHDATA;
+typedef TPM_KEY_USAGE           TCPA_KEY_USAGE;
+typedef TPM_COMPOSITE_HASH      TCPA_COMPOSITE_HASH;
+typedef TPM_QUOTE_INFO          TCPA_QUOTE_INFO;
+typedef TPM_TAG                 TCPA_TAG;
+typedef TPM_ENC_SCHEME          TCPA_ENC_SCHEME;
+typedef TPM_SIG_SCHEME          TCPA_SIG_SCHEME;
+typedef TPM_STARTUP_TYPE        TCPA_STARTUP_TYPE;
+typedef TPM_AUTHHANDLE          TCPA_AUTHHANDLE;
+typedef TPM_SYM_CA_ATTESTATION  TCPA_SYM_CA_ATTESTATION;
+typedef TPM_ASYM_CA_CONTENTS    TCPA_ASYM_CA_CONTENTS;
+typedef TPM_IDENTITY_REQ        TCPA_IDENTITY_REQ;
+typedef TPM_IDENTITY_PROOF      TCPA_IDENTITY_PROOF;
+
+// These were removed from the 1.2 TPM spec
+typedef UINT32                  TCPA_ENCHANDLE;
+typedef UINT32                  TCPA_EVENTTYPE;
+typedef struct tdTCPA_AUDIT_EVENT {
+    TCPA_COMMAND_CODE ordinal;
+    TCPA_RESULT       returncode;
+} TCPA_AUDIT_EVENT;
+
+#define TCPA_SHA1_160_HASH_LEN          TPM_SHA1_160_HASH_LEN
+#define TCPA_SHA1BASED_NONCE_LEN        TPM_SHA1BASED_NONCE_LEN
+
+#define redirection             TSS_KEYFLAG_REDIRECTION
+#define migratable              TSS_KEYFLAG_MIGRATABLE
+#define volatileKey             TSS_KEYFLAG_VOLATILEKEY
+
+#define TCPA_ET_KEYHANDLE       TPM_ET_KEYHANDLE
+#define TCPA_ET_KEY             TPM_ET_KEY
+#define TCPA_ET_OWNER           TPM_ET_OWNER
+#define TCPA_ET_SRK             TPM_ET_SRK
+#define TCPA_ET_DATA            TPM_ET_DATA
+
+#define TCPA_PID_OIAP           TPM_PID_OIAP
+#define TCPA_PID_OSAP           TPM_PID_OSAP
+#define TCPA_PID_ADIP           TPM_PID_ADIP
+#define TCPA_PID_ADCP           TPM_PID_ADCP
+#define TCPA_PID_OWNER          TPM_PID_OWNER
+
+#define TCPA_PT_ASYM            TPM_PT_ASYM
+#define TCPA_PT_BIND            TPM_PT_BIND
+#define TCPA_PT_MIGRATE         TPM_PT_MIGRATE
+#define TCPA_PT_MAINT           TPM_PT_MAINT
+#define TCPA_PT_SEAL            TPM_PT_SEAL
+
+#define TCPA_CAP_ALG            TPM_CAP_ALG
+#define TCPA_CAP_ORD            TPM_CAP_ORD
+#define TCPA_CAP_PID            TPM_CAP_PID
+#define TCPA_CAP_FLAG           TPM_CAP_FLAG
+#define TCPA_CAP_VERSION        TPM_CAP_VERSION
+#define TCPA_CAP_PROPERTY       TPM_CAP_PROPERTY
+#define TCPA_CAP_KEY_HANDLE     TPM_CAP_KEY_HANDLE
+#define TCPA_CAP_CHECK_LOADED   TPM_CAP_CHECK_LOADED
+
+#define TCPA_ALG_RSA            TPM_ALG_RSA
+#define TCPA_ALG_DES            TPM_ALG_DES
+#define TCPA_ALG_3DES           TPM_ALG_3DES
+#define TCPA_ALG_SHA            TPM_ALG_SHA
+#define TCPA_ALG_HMAC           TPM_ALG_HMAC
+#define TCPA_ALG_AES            TPM_ALG_AES
+
+#define TCPA_PROTECTED_ORDINAL          TPM_PROTECTED_ORDINAL
+#define TCPA_UNPROTECTED_ORDINAL        TPM_UNPROTECTED_ORDINAL
+#define TCPA_CONNECTION_ORDINAL         TPM_CONNECTION_ORDINAL
+
+#define TCPA_PROTECTED_COMMAND          TPM_PROTECTED_COMMAND
+#define TCPA_UNPROTECTED_COMMAND        TPM_UNPROTECTED_COMMAND
+#define TCPA_CONNECTION_COMMAND         TPM_CONNECTION_COMMAND
+#define TCPA_VENDOR_COMMAND             TPM_VENDOR_COMMAND
+
+#define TCPA_MAIN               TPM_MAIN
+#define TCPA_PC                 TPM_PC
+#define TCPA_PDA                TPM_PDA
+#define TCPA_CELL_PHONE         TPM_CELL_PHONE
+
+#define TCPA_MS_MIGRATE                 TPM_MS_MIGRATE
+#define TCPA_MS_REWRAP                  TPM_MS_REWRAP
+#define TCPA_MS_MAINT                   TPM_MS_MAINT
+
+#define TCPA_ES_NONE                    TPM_ES_NONE
+#define TCPA_ES_RSAESPKCSv15            TPM_ES_RSAESPKCSv15
+#define TCPA_ES_RSAESOAEP_SHA1_MGF1     TPM_ES_RSAESOAEP_SHA1_MGF1
+
+#define TCPA_SS_NONE                    TPM_SS_NONE
+#define TCPA_SS_RSASSAPKCS1v15_SHA1     TPM_SS_RSASSAPKCS1v15_SHA1
+#define TCPA_SS_RSASSAPKCS1v15_DER      TPM_SS_RSASSAPKCS1v15_DER
+
+#define TCPA_PHYSICAL_PRESENCE_LIFETIME_LOCK    TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK
+#define TCPA_PHYSICAL_PRESENCE_HW_ENABLE        TPM_PHYSICAL_PRESENCE_HW_ENABLE
+#define TCPA_PHYSICAL_PRESENCE_CMD_ENABLE       TPM_PHYSICAL_PRESENCE_CMD_ENABLE
+#define TCPA_PHYSICAL_PRESENCE_LOCK             TPM_PHYSICAL_PRESENCE_LOCK
+#define TCPA_PHYSICAL_PRESENCE_PRESENT          TPM_PHYSICAL_PRESENCE_PRESENT
+#define TCPA_PHYSICAL_PRESENCE_NOTPRESENT       TPM_PHYSICAL_PRESENCE_NOTPRESENT
+
+#define TCPA_SUCCESS                    TPM_SUCCESS
+#define TCPA_E_BASE                     TPM_E_BASE
+#define TCPA_E_NON_FATAL                TPM_E_NON_FATAL
+#define TCPA_E_AUTHFAIL                 TPM_E_AUTHFAIL
+#define TCPA_E_BAD_PARAMETER            TPM_E_BAD_PARAMETER
+#define TCPA_E_BADINDEX                 TPM_E_BADINDEX
+#define TCPA_E_AUDITFAILURE             TPM_E_AUDITFAILURE
+#define TCPA_E_CLEAR_DISABLED           TPM_E_CLEAR_DISABLED
+#define TCPA_E_DEACTIVATED              TPM_E_DEACTIVATED
+#define TCPA_E_DISABLED                 TPM_E_DISABLED
+#define TCPA_E_DISABLED_CMD             TPM_E_DISABLED_CMD
+#define TCPA_E_FAIL                     TPM_E_FAIL
+#define TCPA_E_INACTIVE                 TPM_E_BAD_ORDINAL
+#define TCPA_E_INSTALL_DISABLED         TPM_E_INSTALL_DISABLED
+#define TCPA_E_INVALID_KEYHANDLE        TPM_E_INVALID_KEYHANDLE
+#define TCPA_E_KEYNOTFOUND              TPM_E_KEYNOTFOUND
+#define TCPA_E_NEED_SELFTEST            TPM_E_INAPPROPRIATE_ENC
+#define TCPA_E_MIGRATEFAIL              TPM_E_MIGRATEFAIL
+#define TCPA_E_NO_PCR_INFO              TPM_E_INVALID_PCR_INFO
+#define TCPA_E_NOSPACE                  TPM_E_NOSPACE
+#define TCPA_E_NOSRK                    TPM_E_NOSRK
+#define TCPA_E_NOTSEALED_BLOB           TPM_E_NOTSEALED_BLOB
+#define TCPA_E_OWNER_SET                TPM_E_OWNER_SET
+#define TCPA_E_RESOURCES                TPM_E_RESOURCES
+#define TCPA_E_SHORTRANDOM              TPM_E_SHORTRANDOM
+#define TCPA_E_SIZE                     TPM_E_SIZE
+#define TCPA_E_WRONGPCRVAL              TPM_E_WRONGPCRVAL
+#define TCPA_E_BAD_PARAM_SIZE           TPM_E_BAD_PARAM_SIZE
+#define TCPA_E_SHA_THREAD               TPM_E_SHA_THREAD
+#define TCPA_E_SHA_ERROR                TPM_E_SHA_ERROR
+#define TCPA_E_FAILEDSELFTEST           TPM_E_FAILEDSELFTEST
+#define TCPA_E_AUTH2FAIL                TPM_E_AUTH2FAIL
+#define TCPA_E_BADTAG                   TPM_E_BADTAG
+#define TCPA_E_IOERROR                  TPM_E_IOERROR
+#define TCPA_E_ENCRYPT_ERROR            TPM_E_ENCRYPT_ERROR
+#define TCPA_E_DECRYPT_ERROR            TPM_E_DECRYPT_ERROR
+#define TCPA_E_INVALID_AUTHHANDLE       TPM_E_INVALID_AUTHHANDLE
+#define TCPA_E_NO_ENDORSEMENT           TPM_E_NO_ENDORSEMENT
+#define TCPA_E_INVALID_KEYUSAGE         TPM_E_INVALID_KEYUSAGE
+#define TCPA_E_WRONG_ENTITYTYPE         TPM_E_WRONG_ENTITYTYPE
+#define TCPA_E_INVALID_POSTINIT         TPM_E_INVALID_POSTINIT
+#define TCPA_E_INAPPROPRIATE_SIG        TPM_E_INAPPROPRIATE_SIG
+#define TCPA_E_BAD_KEY_PROPERTY         TPM_E_BAD_KEY_PROPERTY
+#define TCPA_E_BAD_MIGRATION            TPM_E_BAD_MIGRATION
+#define TCPA_E_BAD_SCHEME               TPM_E_BAD_SCHEME
+#define TCPA_E_BAD_DATASIZE             TPM_E_BAD_DATASIZE
+#define TCPA_E_BAD_MODE                 TPM_E_BAD_MODE
+#define TCPA_E_BAD_PRESENCE             TPM_E_BAD_PRESENCE
+#define TCPA_E_BAD_VERSION              TPM_E_BAD_VERSION
+#define TCPA_E_RETRY                    TPM_E_RETRY
+
+#endif
diff --git a/tss/include/tss/platform.h b/tss/include/tss/platform.h
index 539cf6b..251e13e 100644
--- a/tss/include/tss/platform.h
+++ b/tss/include/tss/platform.h
@@ -1,46 +1,46 @@
-/*++

-

-There are platform dependent and general defines.

-

---*/

-

-#ifndef TSS_PLATFORM_H

-#define TSS_PLATFORM_H

-

-

-/* The default implementation is to use stdint.h, a part of the C99 standard.

- * Systems that don't support this are handled on a case-by-case basis.

- */

-

-#if !defined(WIN32)

-#include <stdint.h>

-   typedef uint8_t            BYTE;

-   typedef int8_t             TSS_BOOL;

-   typedef uint16_t           UINT16;

-   typedef uint32_t           UINT32;

-   typedef uint64_t           UINT64;

-

-   typedef uint16_t           TSS_UNICODE;

-   typedef void*              PVOID;

-

-#elif defined(WIN32)

-#include <basetsd.h>

-   typedef  unsigned char    BYTE;  

-   typedef  signed char      TSS_BOOL;

-#ifndef _BASETSD_H_

-   // basetsd.h provides definitions of UINT16, UINT32 and UINT64.

-   typedef  unsigned short   UINT16;

-   typedef  unsigned long    UINT32;

-   typedef  unsigned __int64 UINT64;

-#endif

-   typedef  unsigned short   TSS_UNICODE;

-   typedef  void*            PVOID;

-#endif

-

-

-/* Include this so that applications that use names as defined in the

- * 1.1 TSS specification can still compile

- */

-#include <compat11b.h>

-

-#endif // TSS_PLATFORM_H

+/*++
+
+There are platform dependent and general defines.
+
+--*/
+
+#ifndef TSS_PLATFORM_H
+#define TSS_PLATFORM_H
+
+
+/* The default implementation is to use stdint.h, a part of the C99 standard.
+ * Systems that don't support this are handled on a case-by-case basis.
+ */
+
+#if !defined(WIN32)
+#include <stdint.h>
+   typedef uint8_t            BYTE;
+   typedef int8_t             TSS_BOOL;
+   typedef uint16_t           UINT16;
+   typedef uint32_t           UINT32;
+   typedef uint64_t           UINT64;
+
+   typedef uint16_t           TSS_UNICODE;
+   typedef void*              PVOID;
+
+#elif defined(WIN32)
+#include <basetsd.h>
+   typedef  unsigned char    BYTE;  
+   typedef  signed char      TSS_BOOL;
+#ifndef _BASETSD_H_
+   // basetsd.h provides definitions of UINT16, UINT32 and UINT64.
+   typedef  unsigned short   UINT16;
+   typedef  unsigned long    UINT32;
+   typedef  unsigned __int64 UINT64;
+#endif
+   typedef  unsigned short   TSS_UNICODE;
+   typedef  void*            PVOID;
+#endif
+
+
+/* Include this so that applications that use names as defined in the
+ * 1.1 TSS specification can still compile
+ */
+#include <tss/compat11b.h>
+
+#endif // TSS_PLATFORM_H
diff --git a/tss/include/tss/tcpa_defines.h b/tss/include/tss/tcpa_defines.h
index ea0a994..acc391d 100644
--- a/tss/include/tss/tcpa_defines.h
+++ b/tss/include/tss/tcpa_defines.h
@@ -1,7 +1,7 @@
-

-#ifndef __TCPA_DEFINES_H__

-#define __TCPA_DEFINES_H__

-

-#warning including deprecated header file tcpa_defines.h

-

-#endif

+
+#ifndef __TCPA_DEFINES_H__
+#define __TCPA_DEFINES_H__
+
+#warning including deprecated header file tcpa_defines.h
+
+#endif
diff --git a/tss/include/tss/tcpa_error.h b/tss/include/tss/tcpa_error.h
index 6391227..cbb2a22 100644
--- a/tss/include/tss/tcpa_error.h
+++ b/tss/include/tss/tcpa_error.h
@@ -1,7 +1,7 @@
-

-#ifndef __TCPA_ERROR_H__

-#define __TCPA_ERROR_H__

-

-#warning including deprecated header file tcpa_error.h

-

-#endif

+
+#ifndef __TCPA_ERROR_H__
+#define __TCPA_ERROR_H__
+
+#warning including deprecated header file tcpa_error.h
+
+#endif
diff --git a/tss/include/tss/tcpa_struct.h b/tss/include/tss/tcpa_struct.h
index 8ba7db7..1b5b95d 100644
--- a/tss/include/tss/tcpa_struct.h
+++ b/tss/include/tss/tcpa_struct.h
@@ -1,7 +1,7 @@
-

-#ifndef __TCPA_STRUCT_H__

-#define __TCPA_STRUCT_H__

-

-#warning including deprecated header file tcpa_struct.h

-

-#endif

+
+#ifndef __TCPA_STRUCT_H__
+#define __TCPA_STRUCT_H__
+
+#warning including deprecated header file tcpa_struct.h
+
+#endif
diff --git a/tss/include/tss/tcpa_typedef.h b/tss/include/tss/tcpa_typedef.h
index 9bcac88..a0de2fc 100644
--- a/tss/include/tss/tcpa_typedef.h
+++ b/tss/include/tss/tcpa_typedef.h
@@ -1,7 +1,7 @@
-

-#ifndef __TCPA_TYPEDEF_H__

-#define __TCPA_TYPEDEF_H__

-

-#warning including deprecated header file tcpa_typedef.h

-

-#endif

+
+#ifndef __TCPA_TYPEDEF_H__
+#define __TCPA_TYPEDEF_H__
+
+#warning including deprecated header file tcpa_typedef.h
+
+#endif
diff --git a/tss/include/tss/tcs.h b/tss/include/tss/tcs.h
index f04cfa3..d9da308 100644
--- a/tss/include/tss/tcs.h
+++ b/tss/include/tss/tcs.h
@@ -1,1109 +1,1109 @@
-#ifndef TCS_H

-#define TCS_H

-#include <platform.h>

-#include <tss_structs.h>

-#include <tcs_typedef.h>

-#include <tcs_defines.h>

-#include <tcs_structs.h>

-#include <tcs_error.h>

-#include <tpm.h>

-

-

-extern TSS_RESULT Tcsi_OpenContext

-(

-    TCS_CONTEXT_HANDLE*   hContext                     // out

-);

-extern TSS_RESULT Tcsi_CloseContext

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsi_FreeMemory

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    BYTE*                 pMemory                      // in

-);

-extern TSS_RESULT Tcsi_GetCapability

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_CAPABILITY_AREA   capArea,                     // in

-    UINT32                subCapSize,                  // in

-    BYTE*                 subCap,                      // in

-    UINT32*               respSize,                    // out

-    BYTE**                resp                         // out

-);

-extern TSS_RESULT Tcsi_RegisterKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_UUID              WrappingKeyUUID,             // in

-    TSS_UUID              KeyUUID,                     // in

-    UINT32                cKeySize,                    // in

-    BYTE*                 rgbKey,                      // in

-    UINT32                cVendorDataSize,             // in

-    BYTE*                 gbVendorData                 // in

-);

-extern TSS_RESULT Tcsip_UnregisterKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_UUID              KeyUUID                      // in

-);

-extern TSS_RESULT Tcsip_KeyControlOwner

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hKey,                        // in

-    UINT32                ulPubKeyLength,              // in

-    BYTE*                 prgbPubKey,                  // in

-    UINT32                attribName,                  // in

-    TSS_BOOL              attribValue,                 // in

-    TPM_AUTH*             pOwnerAuth,                  // in, out

-    TSS_UUID*             pUuidData                    // out

-);

-extern TSS_RESULT Tcsi_EnumRegisteredKeys

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_UUID*             pKeyUUID,                    // in

-    UINT32*               pcKeyHierarchySize,          // out

-    TSS_KM_KEYINFO**      ppKeyHierarchy               // out

-);

-extern TSS_RESULT Tcsi_GetRegisteredKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_UUID              KeyUUID,                     // in

-    TSS_KM_KEYINFO**      ppKeyInfo                    // out

-);

-extern TSS_RESULT Tcsi_GetRegisteredKeyBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_UUID              KeyUUID,                     // in

-    UINT32*               pcKeySize,                   // out

-    BYTE**                prgbKey                      // out

-);

-extern TSS_RESULT Tcsip_GetRegisteredKeyByPublicInfo

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_ALGORITHM_ID      algID,                       // in

-    UINT32                ulPublicInfoLength,          // in

-    BYTE*                 rgbPublicInfo,               // in

-    UINT32*               keySize,                     // out

-    BYTE**                keyBlob                      // out

-);

-extern TSS_RESULT Tcsip_LoadKeyByBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hUnwrappingKey,              // in

-    UINT32                cWrappedKeyBlobSize,         // in

-    BYTE*                 rgbWrappedKeyBlob,           // in

-    TPM_AUTH*             pAuth,                       // in, out

-    TCS_KEY_HANDLE*       phKeyTCSI,                   // out

-    TCS_KEY_HANDLE*       phKeyHMAC                    // out

-);

-extern TSS_RESULT Tcsip_LoadKeyByUUID

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_UUID              KeyUUID,                     // in

-    TCS_LOADKEY_INFO*     pLoadKeyInfo,                // in, out

-    TCS_KEY_HANDLE*       phKeyTCSI                    // out

-);

-extern TSS_RESULT Tcsip_EvictKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hKey                         // in

-);

-extern TSS_RESULT Tcsip_CreateWrapKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hWrappingKey,                // in

-    TPM_ENCAUTH           KeyUsageAuth,                // in

-    TPM_ENCAUTH           KeyMigrationAuth,            // in

-    UINT32                keyInfoSize,                 // in

-    BYTE*                 keyInfo,                     // in

-    TPM_AUTH*             pAuth,                       // in, out

-    UINT32*               keyDataSize,                 // out

-    BYTE**                keyData                      // out

-);

-extern TSS_RESULT Tcsip_GetPubKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hKey,                        // in

-    TPM_AUTH*             pAuth,                       // in, out

-    UINT32*               pcPubKeySize,                // out

-    BYTE**                prgbPubKey                   // out

-);

-extern TSS_RESULT Tcsip_MakeIdentity

-(

-    TCS_CONTEXT_HANDLE    hContext,                              // in

-    TPM_ENCAUTH           identityAuth,                          // in

-    TPM_CHOSENID_HASH     IDLabel_PrivCAHash,                    // in

-    UINT32                idIdentityKeyInfoSize,                 // in

-    BYTE*                 idIdentityKeyInfo,                     // in

-    TPM_AUTH*             pSrkAuth,                              // in, out

-    TPM_AUTH*             pOwnerAuth,                            // in, out

-    UINT32*               idIdentityKeySize,                     // out

-    BYTE**                idIdentityKey,                         // out

-    UINT32*               pcIdentityBindingSize,                 // out

-    BYTE**                prgbIdentityBinding,                   // out

-    UINT32*               pcEndorsementCredentialSize,           // out

-    BYTE**                prgbEndorsementCredential,             // out

-    UINT32*               pcPlatformCredentialSize,              // out

-    BYTE**                prgbPlatformCredential,                // out

-    UINT32*               pcConformanceCredentialSize,           // out

-    BYTE**                prgbConformanceCredential              // out

-);

-extern TSS_RESULT Tcsi_LogPcrEvent

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_PCR_EVENT         Event,                       // in

-    UINT32*               pNumber                      // out

-);

-extern TSS_RESULT Tcsi_GetPcrEvent

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                PcrIndex,                    // in

-    UINT32*               pNumber,                     // in, out

-    TSS_PCR_EVENT**       ppEvent                      // out

-);

-extern TSS_RESULT Tcsi_GetPcrEventsByPcr

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                PcrIndex,                    // in

-    UINT32                FirstEvent,                  // in

-    UINT32*               pEventCount,                 // in, out

-    TSS_PCR_EVENT**       ppEvents                     // out

-);

-extern TSS_RESULT Tcsi_GetPcrEventLog

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32*               pEventCount,                 // out

-    TSS_PCR_EVENT**       ppEvents                     // out

-);

-extern TSS_RESULT Tcsip_SetOwnerInstall

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_BOOL              state                        // in

-);

-extern TSS_RESULT Tcsip_TakeOwnership

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT16                protocolID,                  // in

-    UINT32                encOwnerAuthSize,            // in

-    BYTE*                 encOwnerAuth,                // in

-    UINT32                encSrkAuthSize,              // in

-    BYTE*                 encSrkAuth,                  // in

-    UINT32                srkKeyInfoSize,              // in

-    BYTE*                 srkKeyInfo,                  // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               srkKeyDataSize,              // out

-    BYTE**                srkKeyData                   // out

-);

-extern TSS_RESULT Tcsip_SetOperatorAuth

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_SECRET            operatorAuth                 // in

-);

-extern TSS_RESULT Tcsip_OIAP

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_AUTHHANDLE*       authHandle,                  // out

-    TPM_NONCE*            nonce0                       // out

-);

-extern TSS_RESULT Tcsip_OSAP

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_ENTITY_TYPE       entityType,                  // in

-    UINT32                entityValue,                 // in

-    TPM_NONCE             nonceOddOSAP,                // in

-    TCS_AUTHHANDLE*       authHandle,                  // out

-    TPM_NONCE*            nonceEven,                   // out

-    TPM_NONCE*            nonceEvenOSAP                // out

-);

-extern TSS_RESULT Tcsip_ChangeAuth

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        parentHandle,                // in

-    TPM_PROTOCOL_ID       protocolID,                  // in

-    TPM_ENCAUTH           newAuth,                     // in

-    TPM_ENTITY_TYPE       entityType,                  // in

-    UINT32                encDataSize,                 // in

-    BYTE*                 encData,                     // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    TPM_AUTH*             entityAuth,                  // in, out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_ChangeAuthOwner

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_PROTOCOL_ID       protocolID,                  // in

-    TPM_ENCAUTH           newAuth,                     // in

-    TPM_ENTITY_TYPE       entityType,                  // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_ChangeAuthAsymStart

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        idHandle,                    // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32                TempKeyInfoSize,             // in

-    BYTE*                 TempKeyInfoData,             // in

-    TPM_AUTH*             pAuth,                       // in, out

-    UINT32*               TempKeySize,                 // out

-    BYTE**                TempKeyData,                 // out

-    UINT32*               CertifyInfoSize,             // out

-    BYTE**                CertifyInfo,                 // out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig,                         // out

-    TCS_KEY_HANDLE*       ephHandle                    // out

-);

-extern TSS_RESULT Tcsip_ChangeAuthAsymFinish

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        parentHandle,                // in

-    TCS_KEY_HANDLE        ephHandle,                   // in

-    TPM_ENTITY_TYPE       entityType,                  // in

-    TPM_HMAC              newAuthLink,                 // in

-    UINT32                newAuthSize,                 // in

-    BYTE*                 encNewAuth,                  // in

-    UINT32                encDataSizeIn,               // in

-    BYTE*                 encDataIn,                   // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               encDataSizeOut,              // out

-    BYTE**                encDataOut,                  // out

-    TPM_NONCE*            saltNonce,                   // out

-    TPM_DIGEST*           changeProof                  // out

-);

-extern TSS_RESULT Tcsip_TerminateHandle

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_AUTHHANDLE        handle                       // in

-);

-extern TSS_RESULT Tcsip_ActivateTPMIdentity

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        idKey,                       // in

-    UINT32                blobSize,                    // in

-    BYTE*                 blob,                        // in

-    TPM_AUTH*             idKeyAuth,                   // in, out

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               SymmetricKeySize,            // out

-    BYTE**                SymmetricKey                 // out

-);

-extern TSS_RESULT Tcsip_EstablishTransport

-(

-    TCS_CONTEXT_HANDLE            hContext,                      // in

-    UINT32                        ulTransControlFlags,           // in

-    TCS_KEY_HANDLE                hEncKey,                       // in

-    UINT32                        ulTransSessionInfoSize,        // in

-    BYTE*                         rgbTransSessionInfo,           // in

-    UINT32                        ulSecretSize,                  // in

-    BYTE*                         rgbSecret,                     // in

-    TPM_AUTH*                     pEncKeyAuth,                   // in, out

-    TPM_MODIFIER_INDICATOR*       pbLocality,                    // out

-    TCS_HANDLE*                   hTransSession,                 // out

-    UINT32*                       ulCurrentTicksSize,            // out

-    BYTE**                        prgbCurrentTicks,              // out

-    TPM_NONCE*                    pTransNonce                    // out

-);

-extern TSS_RESULT Tcsip_ExecuteTransport

-(

-    TCS_CONTEXT_HANDLE            hContext,                      // in

-    TPM_COMMAND_CODE              unWrappedCommandOrdinal,       // in

-    UINT32                        ulWrappedCmdParamInSize,       // in

-    BYTE*                         rgbWrappedCmdParamIn,          // in

-    UINT32*                       pulHandleListSize,             // in, out

-    TCS_HANDLE**                  rghHandles,                    // in, out

-    TPM_AUTH*                     pWrappedCmdAuth1,              // in, out

-    TPM_AUTH*                     pWrappedCmdAuth2,              // in, out

-    TPM_AUTH*                     pTransAuth,                    // in, out

-    UINT64*                       punCurrentTicks,               // out

-    TPM_MODIFIER_INDICATOR*       pbLocality,                    // out

-    TPM_RESULT*                   pulWrappedCmdReturnCode,       // out

-    UINT32*                       ulWrappedCmdParamOutSize,      // out

-    BYTE**                        rgbWrappedCmdParamOut          // out

-);

-extern TSS_RESULT Tcsip_ReleaseTransportSigned

-(

-    TCS_CONTEXT_HANDLE            hContext,            // in

-    TCS_KEY_HANDLE                hSignatureKey,       // in

-    TPM_NONCE                     AntiReplayNonce,     // in

-    TPM_AUTH*                     pKeyAuth,            // in, out

-    TPM_AUTH*                     pTransAuth,          // in, out

-    TPM_MODIFIER_INDICATOR*       pbLocality,          // out

-    UINT32*                       pulCurrentTicksSize, // out

-    BYTE**                        prgbCurrentTicks,    // out

-    UINT32*                       pulSignatureSize,    // out

-    BYTE**                        prgbSignature        // out

-);

-extern TSS_RESULT Tcsip_Extend

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_PCRINDEX          pcrNum,                      // in

-    TPM_DIGEST            inDigest,                    // in

-    TPM_PCRVALUE*         outDigest                    // out

-);

-extern TSS_RESULT Tcsip_PcrRead

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_PCRINDEX          pcrNum,                      // in

-    TPM_PCRVALUE*         outDigest                    // out

-);

-extern TSS_RESULT Tcsip_Quote

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32                pcrTargetSize,               // in

-    BYTE*                 pcrTarget,                   // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               pcrDataSize,                 // out

-    BYTE**                pcrData,                     // out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig                          // out

-);

-extern TSS_RESULT Tcsip_Quote2

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32                pcrTargetSize,               // in

-    BYTE*                 pcrTarget,                   // in

-    TSS_BOOL              addVersion,                  // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               pcrDataSize,                 // out

-    BYTE**                pcrData,                     // out

-    UINT32*               versionInfoSize,             // out

-    BYTE**                versionInfo,                 // out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig                          // out

-);

-extern TSS_RESULT Tcsip_DirWriteAuth

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_DIRINDEX          dirIndex,                    // in

-    TPM_DIRVALUE          newContents,                 // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_DirRead

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_DIRINDEX          dirIndex,                    // in

-    TPM_DIRVALUE*         dirValue                     // out

-);

-extern TSS_RESULT Tcsip_Seal

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_ENCAUTH           encAuth,                     // in

-    UINT32                pcrInfoSize,                 // in

-    BYTE*                 PcrInfo,                     // in

-    UINT32                inDataSize,                  // in

-    BYTE*                 inData,                      // in

-    TPM_AUTH*             pubAuth,                     // in, out

-    UINT32*               SealedDataSize,              // out

-    BYTE**                SealedData                   // out

-);

-extern TSS_RESULT Tcsip_Unseal

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    UINT32                SealedDataSize,              // in

-    BYTE*                 SealedData,                  // in

-    TPM_AUTH*             keyAuth,                     // in, out

-    TPM_AUTH*             dataAuth,                    // in, out

-    UINT32*               DataSize,                    // out

-    BYTE**                Data                         // out

-);

-extern TSS_RESULT Tcsip_UnBind

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    UINT32                inDataSize,                  // in

-    BYTE*                 inData,                      // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_Sealx

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_ENCAUTH           encAuth,                     // in

-    UINT32                pcrInfoSize,                 // in

-    BYTE*                 PcrInfo,                     // in

-    UINT32                inDataSize,                  // in

-    BYTE*                 inData,                      // in

-    TPM_AUTH*             pubAuth,                     // in, out

-    UINT32*               SealedDataSize,              // out

-    BYTE**                SealedData                   // out

-);

-extern TSS_RESULT Tcsip_LoadKey2ByBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hUnwrappingKey,              // in

-    UINT32                cWrappedKeyBlobSize,         // in

-    BYTE*                 rgbWrappedKeyBlob,           // in

-    TPM_AUTH*             pAuth,                       // in, out

-    TCS_KEY_HANDLE*       phKeyTCSI                    // out

-);

-extern TSS_RESULT Tcsip_CreateMigrationBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        parentHandle,                // in

-    TSS_MIGRATE_SCHEME    migrationType,               // in

-    UINT32                MigrationKeyAuthSize,        // in

-    BYTE*                 MigrationKeyAuth,            // in

-    UINT32                encDataSize,                 // in

-    BYTE*                 encData,                     // in

-    TPM_AUTH*             parentAuth,                  // in, out

-    TPM_AUTH*             entityAuth,                  // in, out

-    UINT32*               randomSize,                  // out

-    BYTE**                random,                      // out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_ConvertMigrationBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        parentHandle,                // in

-    UINT32                inDataSize,                  // in

-    BYTE*                 inData,                      // in

-    UINT32                randomSize,                  // in

-    BYTE*                 random,                      // in

-    TPM_AUTH*             parentAuth,                  // in, out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_AuthorizeMigrationKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_MIGRATE_SCHEME    migrateScheme,               // in

-    UINT32                MigrationKeySize,            // in

-    BYTE*                 MigrationKey,                // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               MigrationKeyAuthSize,        // out

-    BYTE**                MigrationKeyAuth             // out

-);

-extern TSS_RESULT Tcsip_CertifyKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        certHandle,                  // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_AUTH*             certAuth,                    // in, out

-    TPM_AUTH*             keyAuth,                     // in, out

-    UINT32*               CertifyInfoSize,             // out

-    BYTE**                CertifyInfo,                 // out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_CertifyKey2

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        certHandle,                  // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_DIGEST            MSAdigest,                   // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_AUTH*             certAuth,                    // in, out

-    TPM_AUTH*             keyAuth,                     // in, out

-    UINT32*               CertifyInfoSize,             // out

-    BYTE**                CertifyInfo,                 // out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_Sign

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    UINT32                areaToSignSize,              // in

-    BYTE*                 areaToSign,                  // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig                          // out

-);

-extern TSS_RESULT Tcsip_GetRandom

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32*               bytesRequested,              // in, out

-    BYTE**                randomBytes                  // out

-);

-extern TSS_RESULT Tcsip_StirRandom

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                inDataSize,                  // in

-    BYTE*                 inData                       // in

-);

-extern TSS_RESULT Tcsip_GetCapability

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_CAPABILITY_AREA   capArea,                     // in

-    UINT32                subCapSize,                  // in

-    BYTE*                 subCap,                      // in

-    UINT32*               respSize,                    // out

-    BYTE**                resp                         // out

-);

-extern TSS_RESULT Tcsip_GetCapabilitySigned

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_CAPABILITY_AREA   capArea,                     // in

-    UINT32                subCapSize,                  // in

-    BYTE*                 subCap,                      // in

-    TPM_AUTH*             privAuth,                    // in, out

-    TPM_VERSION*          Version,                     // out

-    UINT32*               respSize,                    // out

-    BYTE**                resp,                        // out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig                          // out

-);

-extern TSS_RESULT Tcsip_GetCapabilityOwner

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             pOwnerAuth,                  // in, out

-    TPM_VERSION*          pVersion,                    // out

-    UINT32*               pNonVolatileFlags,           // out

-    UINT32*               pVolatileFlags               // out

-);

-extern TSS_RESULT Tcsip_CreateEndorsementKeyPair

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32                endorsementKeyInfoSize,      // in

-    BYTE*                 endorsementKeyInfo,          // in

-    UINT32*               endorsementKeySize,          // out

-    BYTE**                endorsementKey,              // out

-    TPM_DIGEST*           checksum                     // out

-);

-extern TSS_RESULT Tcsip_ReadPubek

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32*               pubEndorsementKeySize,       // out

-    BYTE**                pubEndorsementKey,           // out

-    TPM_DIGEST*           checksum                     // out

-);

-extern TSS_RESULT Tcsip_DisablePubekRead

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_OwnerReadPubek

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               pubEndorsementKeySize,       // out

-    BYTE**                pubEndorsementKey            // out

-);

-extern TSS_RESULT Tcsip_SelfTestFull

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_CertifySelfTest

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig                          // out

-);

-extern TSS_RESULT Tcsip_ContinueSelfTest

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_GetTestResult

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_OwnerSetDisable

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_BOOL              disableState,                // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_OwnerClear

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_DisableOwnerClear

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_ForceClear

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_DisableForceClear

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_PhysicalDisable

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_PhysicalEnable

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_PhysicalSetDeactivated

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_BOOL              state                        // in

-);

-extern TSS_RESULT Tcsip_SetTempDeactivated

-(

-    TCS_CONTEXT_HANDLE    hContext                     // in

-);

-extern TSS_RESULT Tcsip_SetTempDeactivated2

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             pOperatorAuth                // in, out

-);

-extern TSS_RESULT Tcsip_OwnerReadInternalPub

-(

-    TCS_CONTEXT_HANDLE   hContext,                     // in

-    TCS_KEY_HANDLE       hKey,                         // in

-    TPM_AUTH*            pOwnerAuth,                   // in, out

-    UINT32*              punPubKeySize,                // out

-    BYTE**               ppbPubKeyData                 // out

-);

-extern TSS_RESULT Tcsip_PhysicalPresence

-(

-    TCS_CONTEXT_HANDLE            hContext,            // in

-    TPM_PHYSICAL_PRESENCE         fPhysicalPresence    // in

-);

-extern TSS_RESULT Tcsip_FieldUpgrade

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                dataInSize,                  // in

-    BYTE*                 dataIn,                      // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               dataOutSize,                 // out

-    BYTE**                dataOut                      // out

-);

-extern TSS_RESULT Tcsip_ResetLockValue

-(

-    TCS_CONTEXT_HANDLE            hContext,            // in

-    TPM_AUTH*                     ownerAuth            // in, out

-);

-extern TSS_RESULT Tcsip_FlushSpecific

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_HANDLE            hResHandle,                  // in

-    TPM_RESOURCE_TYPE     resourceType                 // in

-);

-extern TSS_RESULT Tcsip_SetRedirection

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    UINT32                c1,                          // in

-    UINT32                c2,                          // in

-    TPM_AUTH*             privAuth                     // in, out

-);

-extern TSS_RESULT Tcsip_DSAP

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_ENTITY_TYPE       entityType,                  // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TPM_NONCE             nonceOddDSAP,                // in

-    UINT32                entityValueSize,             // in

-    BYTE*                 entityValue,                 // in

-    TCS_AUTHHANDLE*       authHandle,                  // out

-    TPM_NONCE*            nonceEven,                   // out

-    TPM_NONCE*            nonceEvenDSAP                // out

-);

-extern TSS_RESULT Tcsip_Delegate_Manage

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_FAMILY_ID         familyID,                    // in

-    TPM_FAMILY_OPERATION  opFlag,                      // in

-    UINT32                opDataSize,                  // in

-    BYTE*                 opData,                      // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               retDataSize,                 // out

-    BYTE**                retData                      // out

-);

-extern TSS_RESULT Tcsip_Delegate_CreateKeyDelegation

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hKey,                        // in

-    UINT32                publicInfoSize,              // in

-    BYTE*                 publicInfo,                  // in

-    TPM_ENCAUTH           encDelAuth,                  // in

-    TPM_AUTH*             keyAuth,                     // in, out

-    UINT32*               blobSize,                    // out

-    BYTE**                blob                         // out

-);

-extern TSS_RESULT Tcsip_Delegate_CreateOwnerDelegation

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_BOOL              increment,                   // in

-    UINT32                publicInfoSize,              // in

-    BYTE*                 publicInfo,                  // in

-    TPM_ENCAUTH           encDelAuth,                  // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               blobSize,                    // out

-    BYTE**                blob                         // out

-);

-extern TSS_RESULT Tcsip_Delegate_LoadOwnerDelegation

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_DELEGATE_INDEX    index,                       // in

-    UINT32                blobSize,                    // in

-    BYTE*                 blob,                        // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_Delegate_UpdateVerificationCount

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                inputSize,                   // in

-    BYTE*                 input,                       // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               outputSize,                  // out

-    BYTE**                output                       // out

-);

-extern TSS_RESULT Tcsip_Delegate_VerifyDelegation

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                delegateSize,                // in

-    BYTE*                 delegate                     // in

-);

-extern TSS_RESULT Tcsip_Delegate_ReadTable

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32*               pulFamilyTableSize,          // out

-    BYTE**                ppFamilyTable,               // out

-    UINT32*               pulDelegateTableSize,        // out

-    BYTE**                ppDelegateTable              // out

-);

-extern TSS_RESULT Tcsip_NV_DefineOrReleaseSpace

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                cPubInfoSize,                // in

-    BYTE*                 pPubInfo,                    // in

-    TPM_ENCAUTH           encAuth,                     // in

-    TPM_AUTH*             pAuth                        // in, out

-);

-extern TSS_RESULT Tcsip_NV_WriteValue

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_NV_INDEX          hNVStore,                    // in

-    UINT32                offset,                      // in

-    UINT32                ulDataLength,                // in

-    BYTE*                 rgbDataToWrite,              // in

-    TPM_AUTH*             privAuth                     // in, out

-);

-extern TSS_RESULT Tcsip_NV_WriteValueAuth

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_NV_INDEX          hNVStore,                    // in

-    UINT32                offset,                      // in

-    UINT32                ulDataLength,                // in

-    BYTE*                 rgbDataToWrite,              // in

-    TPM_AUTH*             NVAuth                       // in, out

-);

-extern TSS_RESULT Tcsip_NV_ReadValue

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_NV_INDEX          hNVStore,                    // in

-    UINT32                offset,                      // in

-    UINT32*               pulDataLength,               // in, out

-    TPM_AUTH*             privAuth,                    // in, out

-    BYTE**                rgbDataRead                  // out

-);

-extern TSS_RESULT Tcsip_NV_ReadValueAuth

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_NV_INDEX          hNVStore,                    // in

-    UINT32                offset,                      // in

-    UINT32*               pulDataLength,               // in, out

-    TPM_AUTH*             NVAuth,                      // in, out

-    BYTE**                rgbDataRead                  // out

-);

-extern TSS_RESULT Tcsip_CreateMaintenanceArchive

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_BOOL              generateRandom,              // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               randomSize,                  // out

-    BYTE**                random,                      // out

-    UINT32*               archiveSize,                 // out

-    BYTE**                archive                      // out

-);

-extern TSS_RESULT Tcsip_LoadMaintenanceArchive

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                dataInSize,                  // in

-    BYTE*                 dataIn,                      // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               dataOutSize,                 // out

-    BYTE**                dataOut                      // out

-);

-extern TSS_RESULT Tcsip_KillMaintenanceFeature

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_LoadManuMaintPub

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32                PubKeySize,                  // in

-    BYTE*                 PubKey,                      // in

-    TPM_DIGEST*           checksum                     // out

-);

-extern TSS_RESULT Tcsip_ReadManuMaintPub

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_DIGEST*           checksum                     // out

-);

-extern TSS_RESULT Tcsip_CreateRevocableEndorsementKeyPair

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_NONCE             antiReplay,                  // in

-    UINT32                endorsementKeyInfoSize,      // in

-    BYTE*                 endorsementKeyInfo,          // in

-    TSS_BOOL              GenResetAuth,                // in

-    TPM_DIGEST*           EKResetAuth,                 // in, out

-    UINT32*               endorsementKeySize,          // out

-    BYTE**                endorsementKey,              // out

-    TPM_DIGEST*           checksum                     // out

-);

-extern TSS_RESULT Tcsip_RevokeEndorsementKeyPair

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_DIGEST            EKResetAuth                  // in

-);

-extern TSS_RESULT Tcsip_PcrReset

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                pcrTargetSize,               // in

-    BYTE*                 pcrTarget                    // in

-);

-extern TSS_RESULT Tcsip_ReadCounter

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_COUNTER_ID        idCounter,                   // in

-    TPM_COUNTER_VALUE*    counterValue                 // out

-);

-extern TSS_RESULT Tcsip_CreateCounter

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                LabelSize,                   // in (=4)

-    BYTE*                 pLabel,                      // in

-    TPM_ENCAUTH           CounterAuth,                 // in

-    TPM_AUTH*             pOwnerAuth,                  // in, out

-    TSS_COUNTER_ID*       idCounter,                   // out

-    TPM_COUNTER_VALUE*    counterValue                 // out

-);

-extern TSS_RESULT Tcsip_IncrementCounter

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_COUNTER_ID        idCounter,                   // in

-    TPM_AUTH*             pCounterAuth,                // in, out

-    TPM_COUNTER_VALUE*    counterValue                 // out

-);

-extern TSS_RESULT Tcsip_ReleaseCounter

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_COUNTER_ID        idCounter,                   // in

-    TPM_AUTH*             pCounterAuth                 // in, out

-);

-extern TSS_RESULT Tcsip_ReleaseCounterOwner

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_COUNTER_ID        idCounter,                   // in

-    TPM_AUTH*             pOwnerAuth                   // in, out

-);

-extern TSS_RESULT Tcsip_ReadCurrentTicks

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32*               pulCurrentTimeSize,          // out

-    BYTE**                prgbCurrentTime              // out

-);

-extern TSS_RESULT Tcsip_TickStampBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hKey,                        // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_DIGEST            digestToStamp,               // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               pulSignatureLength,          // out

-    BYTE**                prgbSignature,               // out

-    UINT32*               pulTickCountSize,            // out

-    BYTE**                prgbTickCount                // out

-);

-extern TSS_RESULT Tcsip_TPM_DAA_Join

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_HANDLE            handle,                      // in

-    BYTE                  stage,                       // in

-    UINT32                inputSize0,                  // in

-    BYTE*                 inputData0,                  // in

-    UINT32                inputSize1,                  // in

-    BYTE*                 inputData1,                  // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               outputSize,                  // out

-    BYTE**                outputData                   // out

-);

-extern TSS_RESULT Tcsip_TPM_DAA_Sign

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_HANDLE            handle,                      // in

-    BYTE                  stage,                       // in

-    UINT32                inputSize0,                  // in

-    BYTE*                 inputData0,                  // in

-    UINT32                inputSize1,                  // in

-    BYTE*                 inputData1,                  // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               outputSize,                  // out

-    BYTE**                outputData                   // out

-);

-extern TSS_RESULT Tcsip_MigrateKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hMaKey,                      // in

-    UINT32                PublicKeySize,               // in

-    BYTE*                 PublicKey,                   // in

-    UINT32                inDataSize,                  // in

-    BYTE*                 inData,                      // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_CMK_SetRestrictions

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TSS_CMK_DELEGATE      Restriction,                 // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_CMK_ApproveMA

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_DIGEST            migAuthorityDigest,          // in

-    TPM_AUTH*             ownerAuth,                   // in, out

-    TPM_HMAC*             HmacMigAuthDigest            // out

-);

-extern TSS_RESULT Tcsip_CMK_CreateKey

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        hWrappingKey,                // in

-    TPM_ENCAUTH           KeyUsageAuth,                // in

-    TPM_HMAC              MigAuthApproval,             // in

-    TPM_DIGEST            MigAuthorityDigest,          // in

-    UINT32*               keyDataSize,                 // in, out

-    BYTE**                prgbKeyData,                 // in, out

-    TPM_AUTH*             pAuth                        // in, out

-);

-extern TSS_RESULT Tcsip_CMK_CreateTicket

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                PublicVerifyKeySize,         // in

-    BYTE*                 PublicVerifyKey,             // in

-    TPM_DIGEST            SignedData,                  // in

-    UINT32                SigValueSize,                // in

-    BYTE*                 SigValue,                    // in

-    TPM_AUTH*             pOwnerAuth,                  // in, out

-    TPM_HMAC*             SigTicket                    // out

-);

-extern TSS_RESULT Tcsip_CMK_CreateBlob

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        parentHandle,                // in

-    TSS_MIGRATE_SCHEME    migrationType,               // in

-    UINT32                MigrationKeyAuthSize,        // in

-    BYTE*                 MigrationKeyAuth,            // in

-    TPM_DIGEST            PubSourceKeyDigest,          // in

-    UINT32                msaListSize,                 // in

-    BYTE*                 msaList,                     // in

-    UINT32                restrictTicketSize,          // in

-    BYTE*                 restrictTicket,              // in

-    UINT32                sigTicketSize,               // in

-    BYTE*                 sigTicket,                   // in

-    UINT32                encDataSize,                 // in

-    BYTE*                 encData,                     // in

-    TPM_AUTH*             parentAuth,                  // in, out

-    UINT32*               randomSize,                  // out

-    BYTE**                random,                      // out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_CMK_ConvertMigration

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        parentHandle,                // in

-    TPM_CMK_AUTH          restrictTicket,              // in

-    TPM_HMAC              sigTicket,                   // in

-    UINT32                keyDataSize,                 // in

-    BYTE*                 prgbKeyData,                 // in

-    UINT32                msaListSize,                 // in

-    BYTE*                 msaList,                     // in

-    UINT32                randomSize,                  // in

-    BYTE*                 random,                      // in

-    TPM_AUTH*             parentAuth,                  // in, out

-    UINT32*               outDataSize,                 // out

-    BYTE**                outData                      // out

-);

-extern TSS_RESULT Tcsip_SetCapability

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TPM_CAPABILITY_AREA   capArea,                     // in

-    UINT32                subCapSize,                  // in

-    BYTE*                 subCap,                      // in

-    UINT32                valueSize,                   // in

-    BYTE*                 value,                       // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsip_GetAuditDigest

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                startOrdinal,                // in

-    TPM_DIGEST*           auditDigest,                 // out

-    UINT32*               counterValueSize,            // out

-    BYTE**                counterValue,                // out

-    TSS_BOOL*             more,                        // out

-    UINT32*               ordSize,                     // out

-    UINT32**              ordList                      // out

-);

-extern TSS_RESULT Tcsip_GetAuditDigestSigned

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    TCS_KEY_HANDLE        keyHandle,                   // in

-    TSS_BOOL              closeAudit,                  // in

-    TPM_NONCE             antiReplay,                  // in

-    TPM_AUTH*             privAuth,                    // in, out

-    UINT32*               counterValueSize,            // out

-    BYTE**                counterValue,                // out

-    TPM_DIGEST*           auditDigest,                 // out

-    TPM_DIGEST*           ordinalDigest,               // out

-    UINT32*               sigSize,                     // out

-    BYTE**                sig                          // out

-);

-extern TSS_RESULT Tcsip_SetOrdinalAuditStatus

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                ordinalToAudit,              // in

-    TSS_BOOL              auditState,                  // in

-    TPM_AUTH*             ownerAuth                    // in, out

-);

-extern TSS_RESULT Tcsi_Admin_TSS_SessionsPerLocality

-(

-    TCS_CONTEXT_HANDLE    hContext,                    // in

-    UINT32                ulLocality,                  // in

-    UINT32                ulSessions,                  // in

-    TPM_AUTH*             pOwnerAuth                   // in, out

-);

-extern TSS_RESULT Tcsi_GetCredential

-(

-    TCS_CONTEXT_HANDLE  hContext,               // in

-    UINT32              ulCredentialType,       // in

-    UINT32              ulCredentialAccessMode, // in

-    UINT32*             pulCredentialSize,      // out

-    BYTE**              prgbCredentialData      // out

-

-);

-

-#endif /* TCS_H */

+#ifndef TCS_H
+#define TCS_H
+#include <tss/platform.h>
+#include <tss/tss_structs.h>
+#include <tss/tcs_typedef.h>
+#include <tss/tcs_defines.h>
+#include <tss/tcs_structs.h>
+#include <tss/tcs_error.h>
+#include <tss/tpm.h>
+
+
+extern TSS_RESULT Tcsi_OpenContext
+(
+    TCS_CONTEXT_HANDLE*   hContext                     // out
+);
+extern TSS_RESULT Tcsi_CloseContext
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsi_FreeMemory
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    BYTE*                 pMemory                      // in
+);
+extern TSS_RESULT Tcsi_GetCapability
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_CAPABILITY_AREA   capArea,                     // in
+    UINT32                subCapSize,                  // in
+    BYTE*                 subCap,                      // in
+    UINT32*               respSize,                    // out
+    BYTE**                resp                         // out
+);
+extern TSS_RESULT Tcsi_RegisterKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_UUID              WrappingKeyUUID,             // in
+    TSS_UUID              KeyUUID,                     // in
+    UINT32                cKeySize,                    // in
+    BYTE*                 rgbKey,                      // in
+    UINT32                cVendorDataSize,             // in
+    BYTE*                 gbVendorData                 // in
+);
+extern TSS_RESULT Tcsip_UnregisterKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_UUID              KeyUUID                      // in
+);
+extern TSS_RESULT Tcsip_KeyControlOwner
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hKey,                        // in
+    UINT32                ulPubKeyLength,              // in
+    BYTE*                 prgbPubKey,                  // in
+    UINT32                attribName,                  // in
+    TSS_BOOL              attribValue,                 // in
+    TPM_AUTH*             pOwnerAuth,                  // in, out
+    TSS_UUID*             pUuidData                    // out
+);
+extern TSS_RESULT Tcsi_EnumRegisteredKeys
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_UUID*             pKeyUUID,                    // in
+    UINT32*               pcKeyHierarchySize,          // out
+    TSS_KM_KEYINFO**      ppKeyHierarchy               // out
+);
+extern TSS_RESULT Tcsi_GetRegisteredKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_UUID              KeyUUID,                     // in
+    TSS_KM_KEYINFO**      ppKeyInfo                    // out
+);
+extern TSS_RESULT Tcsi_GetRegisteredKeyBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_UUID              KeyUUID,                     // in
+    UINT32*               pcKeySize,                   // out
+    BYTE**                prgbKey                      // out
+);
+extern TSS_RESULT Tcsip_GetRegisteredKeyByPublicInfo
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_ALGORITHM_ID      algID,                       // in
+    UINT32                ulPublicInfoLength,          // in
+    BYTE*                 rgbPublicInfo,               // in
+    UINT32*               keySize,                     // out
+    BYTE**                keyBlob                      // out
+);
+extern TSS_RESULT Tcsip_LoadKeyByBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hUnwrappingKey,              // in
+    UINT32                cWrappedKeyBlobSize,         // in
+    BYTE*                 rgbWrappedKeyBlob,           // in
+    TPM_AUTH*             pAuth,                       // in, out
+    TCS_KEY_HANDLE*       phKeyTCSI,                   // out
+    TCS_KEY_HANDLE*       phKeyHMAC                    // out
+);
+extern TSS_RESULT Tcsip_LoadKeyByUUID
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_UUID              KeyUUID,                     // in
+    TCS_LOADKEY_INFO*     pLoadKeyInfo,                // in, out
+    TCS_KEY_HANDLE*       phKeyTCSI                    // out
+);
+extern TSS_RESULT Tcsip_EvictKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hKey                         // in
+);
+extern TSS_RESULT Tcsip_CreateWrapKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hWrappingKey,                // in
+    TPM_ENCAUTH           KeyUsageAuth,                // in
+    TPM_ENCAUTH           KeyMigrationAuth,            // in
+    UINT32                keyInfoSize,                 // in
+    BYTE*                 keyInfo,                     // in
+    TPM_AUTH*             pAuth,                       // in, out
+    UINT32*               keyDataSize,                 // out
+    BYTE**                keyData                      // out
+);
+extern TSS_RESULT Tcsip_GetPubKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hKey,                        // in
+    TPM_AUTH*             pAuth,                       // in, out
+    UINT32*               pcPubKeySize,                // out
+    BYTE**                prgbPubKey                   // out
+);
+extern TSS_RESULT Tcsip_MakeIdentity
+(
+    TCS_CONTEXT_HANDLE    hContext,                              // in
+    TPM_ENCAUTH           identityAuth,                          // in
+    TPM_CHOSENID_HASH     IDLabel_PrivCAHash,                    // in
+    UINT32                idIdentityKeyInfoSize,                 // in
+    BYTE*                 idIdentityKeyInfo,                     // in
+    TPM_AUTH*             pSrkAuth,                              // in, out
+    TPM_AUTH*             pOwnerAuth,                            // in, out
+    UINT32*               idIdentityKeySize,                     // out
+    BYTE**                idIdentityKey,                         // out
+    UINT32*               pcIdentityBindingSize,                 // out
+    BYTE**                prgbIdentityBinding,                   // out
+    UINT32*               pcEndorsementCredentialSize,           // out
+    BYTE**                prgbEndorsementCredential,             // out
+    UINT32*               pcPlatformCredentialSize,              // out
+    BYTE**                prgbPlatformCredential,                // out
+    UINT32*               pcConformanceCredentialSize,           // out
+    BYTE**                prgbConformanceCredential              // out
+);
+extern TSS_RESULT Tcsi_LogPcrEvent
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_PCR_EVENT         Event,                       // in
+    UINT32*               pNumber                      // out
+);
+extern TSS_RESULT Tcsi_GetPcrEvent
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                PcrIndex,                    // in
+    UINT32*               pNumber,                     // in, out
+    TSS_PCR_EVENT**       ppEvent                      // out
+);
+extern TSS_RESULT Tcsi_GetPcrEventsByPcr
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                PcrIndex,                    // in
+    UINT32                FirstEvent,                  // in
+    UINT32*               pEventCount,                 // in, out
+    TSS_PCR_EVENT**       ppEvents                     // out
+);
+extern TSS_RESULT Tcsi_GetPcrEventLog
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32*               pEventCount,                 // out
+    TSS_PCR_EVENT**       ppEvents                     // out
+);
+extern TSS_RESULT Tcsip_SetOwnerInstall
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_BOOL              state                        // in
+);
+extern TSS_RESULT Tcsip_TakeOwnership
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT16                protocolID,                  // in
+    UINT32                encOwnerAuthSize,            // in
+    BYTE*                 encOwnerAuth,                // in
+    UINT32                encSrkAuthSize,              // in
+    BYTE*                 encSrkAuth,                  // in
+    UINT32                srkKeyInfoSize,              // in
+    BYTE*                 srkKeyInfo,                  // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               srkKeyDataSize,              // out
+    BYTE**                srkKeyData                   // out
+);
+extern TSS_RESULT Tcsip_SetOperatorAuth
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_SECRET            operatorAuth                 // in
+);
+extern TSS_RESULT Tcsip_OIAP
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_AUTHHANDLE*       authHandle,                  // out
+    TPM_NONCE*            nonce0                       // out
+);
+extern TSS_RESULT Tcsip_OSAP
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_ENTITY_TYPE       entityType,                  // in
+    UINT32                entityValue,                 // in
+    TPM_NONCE             nonceOddOSAP,                // in
+    TCS_AUTHHANDLE*       authHandle,                  // out
+    TPM_NONCE*            nonceEven,                   // out
+    TPM_NONCE*            nonceEvenOSAP                // out
+);
+extern TSS_RESULT Tcsip_ChangeAuth
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        parentHandle,                // in
+    TPM_PROTOCOL_ID       protocolID,                  // in
+    TPM_ENCAUTH           newAuth,                     // in
+    TPM_ENTITY_TYPE       entityType,                  // in
+    UINT32                encDataSize,                 // in
+    BYTE*                 encData,                     // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    TPM_AUTH*             entityAuth,                  // in, out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_ChangeAuthOwner
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_PROTOCOL_ID       protocolID,                  // in
+    TPM_ENCAUTH           newAuth,                     // in
+    TPM_ENTITY_TYPE       entityType,                  // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_ChangeAuthAsymStart
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        idHandle,                    // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32                TempKeyInfoSize,             // in
+    BYTE*                 TempKeyInfoData,             // in
+    TPM_AUTH*             pAuth,                       // in, out
+    UINT32*               TempKeySize,                 // out
+    BYTE**                TempKeyData,                 // out
+    UINT32*               CertifyInfoSize,             // out
+    BYTE**                CertifyInfo,                 // out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig,                         // out
+    TCS_KEY_HANDLE*       ephHandle                    // out
+);
+extern TSS_RESULT Tcsip_ChangeAuthAsymFinish
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        parentHandle,                // in
+    TCS_KEY_HANDLE        ephHandle,                   // in
+    TPM_ENTITY_TYPE       entityType,                  // in
+    TPM_HMAC              newAuthLink,                 // in
+    UINT32                newAuthSize,                 // in
+    BYTE*                 encNewAuth,                  // in
+    UINT32                encDataSizeIn,               // in
+    BYTE*                 encDataIn,                   // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               encDataSizeOut,              // out
+    BYTE**                encDataOut,                  // out
+    TPM_NONCE*            saltNonce,                   // out
+    TPM_DIGEST*           changeProof                  // out
+);
+extern TSS_RESULT Tcsip_TerminateHandle
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_AUTHHANDLE        handle                       // in
+);
+extern TSS_RESULT Tcsip_ActivateTPMIdentity
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        idKey,                       // in
+    UINT32                blobSize,                    // in
+    BYTE*                 blob,                        // in
+    TPM_AUTH*             idKeyAuth,                   // in, out
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               SymmetricKeySize,            // out
+    BYTE**                SymmetricKey                 // out
+);
+extern TSS_RESULT Tcsip_EstablishTransport
+(
+    TCS_CONTEXT_HANDLE            hContext,                      // in
+    UINT32                        ulTransControlFlags,           // in
+    TCS_KEY_HANDLE                hEncKey,                       // in
+    UINT32                        ulTransSessionInfoSize,        // in
+    BYTE*                         rgbTransSessionInfo,           // in
+    UINT32                        ulSecretSize,                  // in
+    BYTE*                         rgbSecret,                     // in
+    TPM_AUTH*                     pEncKeyAuth,                   // in, out
+    TPM_MODIFIER_INDICATOR*       pbLocality,                    // out
+    TCS_HANDLE*                   hTransSession,                 // out
+    UINT32*                       ulCurrentTicksSize,            // out
+    BYTE**                        prgbCurrentTicks,              // out
+    TPM_NONCE*                    pTransNonce                    // out
+);
+extern TSS_RESULT Tcsip_ExecuteTransport
+(
+    TCS_CONTEXT_HANDLE            hContext,                      // in
+    TPM_COMMAND_CODE              unWrappedCommandOrdinal,       // in
+    UINT32                        ulWrappedCmdParamInSize,       // in
+    BYTE*                         rgbWrappedCmdParamIn,          // in
+    UINT32*                       pulHandleListSize,             // in, out
+    TCS_HANDLE**                  rghHandles,                    // in, out
+    TPM_AUTH*                     pWrappedCmdAuth1,              // in, out
+    TPM_AUTH*                     pWrappedCmdAuth2,              // in, out
+    TPM_AUTH*                     pTransAuth,                    // in, out
+    UINT64*                       punCurrentTicks,               // out
+    TPM_MODIFIER_INDICATOR*       pbLocality,                    // out
+    TPM_RESULT*                   pulWrappedCmdReturnCode,       // out
+    UINT32*                       ulWrappedCmdParamOutSize,      // out
+    BYTE**                        rgbWrappedCmdParamOut          // out
+);
+extern TSS_RESULT Tcsip_ReleaseTransportSigned
+(
+    TCS_CONTEXT_HANDLE            hContext,            // in
+    TCS_KEY_HANDLE                hSignatureKey,       // in
+    TPM_NONCE                     AntiReplayNonce,     // in
+    TPM_AUTH*                     pKeyAuth,            // in, out
+    TPM_AUTH*                     pTransAuth,          // in, out
+    TPM_MODIFIER_INDICATOR*       pbLocality,          // out
+    UINT32*                       pulCurrentTicksSize, // out
+    BYTE**                        prgbCurrentTicks,    // out
+    UINT32*                       pulSignatureSize,    // out
+    BYTE**                        prgbSignature        // out
+);
+extern TSS_RESULT Tcsip_Extend
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_PCRINDEX          pcrNum,                      // in
+    TPM_DIGEST            inDigest,                    // in
+    TPM_PCRVALUE*         outDigest                    // out
+);
+extern TSS_RESULT Tcsip_PcrRead
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_PCRINDEX          pcrNum,                      // in
+    TPM_PCRVALUE*         outDigest                    // out
+);
+extern TSS_RESULT Tcsip_Quote
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32                pcrTargetSize,               // in
+    BYTE*                 pcrTarget,                   // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               pcrDataSize,                 // out
+    BYTE**                pcrData,                     // out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig                          // out
+);
+extern TSS_RESULT Tcsip_Quote2
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32                pcrTargetSize,               // in
+    BYTE*                 pcrTarget,                   // in
+    TSS_BOOL              addVersion,                  // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               pcrDataSize,                 // out
+    BYTE**                pcrData,                     // out
+    UINT32*               versionInfoSize,             // out
+    BYTE**                versionInfo,                 // out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig                          // out
+);
+extern TSS_RESULT Tcsip_DirWriteAuth
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_DIRINDEX          dirIndex,                    // in
+    TPM_DIRVALUE          newContents,                 // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_DirRead
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_DIRINDEX          dirIndex,                    // in
+    TPM_DIRVALUE*         dirValue                     // out
+);
+extern TSS_RESULT Tcsip_Seal
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_ENCAUTH           encAuth,                     // in
+    UINT32                pcrInfoSize,                 // in
+    BYTE*                 PcrInfo,                     // in
+    UINT32                inDataSize,                  // in
+    BYTE*                 inData,                      // in
+    TPM_AUTH*             pubAuth,                     // in, out
+    UINT32*               SealedDataSize,              // out
+    BYTE**                SealedData                   // out
+);
+extern TSS_RESULT Tcsip_Unseal
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    UINT32                SealedDataSize,              // in
+    BYTE*                 SealedData,                  // in
+    TPM_AUTH*             keyAuth,                     // in, out
+    TPM_AUTH*             dataAuth,                    // in, out
+    UINT32*               DataSize,                    // out
+    BYTE**                Data                         // out
+);
+extern TSS_RESULT Tcsip_UnBind
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    UINT32                inDataSize,                  // in
+    BYTE*                 inData,                      // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_Sealx
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_ENCAUTH           encAuth,                     // in
+    UINT32                pcrInfoSize,                 // in
+    BYTE*                 PcrInfo,                     // in
+    UINT32                inDataSize,                  // in
+    BYTE*                 inData,                      // in
+    TPM_AUTH*             pubAuth,                     // in, out
+    UINT32*               SealedDataSize,              // out
+    BYTE**                SealedData                   // out
+);
+extern TSS_RESULT Tcsip_LoadKey2ByBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hUnwrappingKey,              // in
+    UINT32                cWrappedKeyBlobSize,         // in
+    BYTE*                 rgbWrappedKeyBlob,           // in
+    TPM_AUTH*             pAuth,                       // in, out
+    TCS_KEY_HANDLE*       phKeyTCSI                    // out
+);
+extern TSS_RESULT Tcsip_CreateMigrationBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        parentHandle,                // in
+    TSS_MIGRATE_SCHEME    migrationType,               // in
+    UINT32                MigrationKeyAuthSize,        // in
+    BYTE*                 MigrationKeyAuth,            // in
+    UINT32                encDataSize,                 // in
+    BYTE*                 encData,                     // in
+    TPM_AUTH*             parentAuth,                  // in, out
+    TPM_AUTH*             entityAuth,                  // in, out
+    UINT32*               randomSize,                  // out
+    BYTE**                random,                      // out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_ConvertMigrationBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        parentHandle,                // in
+    UINT32                inDataSize,                  // in
+    BYTE*                 inData,                      // in
+    UINT32                randomSize,                  // in
+    BYTE*                 random,                      // in
+    TPM_AUTH*             parentAuth,                  // in, out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_AuthorizeMigrationKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_MIGRATE_SCHEME    migrateScheme,               // in
+    UINT32                MigrationKeySize,            // in
+    BYTE*                 MigrationKey,                // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               MigrationKeyAuthSize,        // out
+    BYTE**                MigrationKeyAuth             // out
+);
+extern TSS_RESULT Tcsip_CertifyKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        certHandle,                  // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_AUTH*             certAuth,                    // in, out
+    TPM_AUTH*             keyAuth,                     // in, out
+    UINT32*               CertifyInfoSize,             // out
+    BYTE**                CertifyInfo,                 // out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_CertifyKey2
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        certHandle,                  // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_DIGEST            MSAdigest,                   // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_AUTH*             certAuth,                    // in, out
+    TPM_AUTH*             keyAuth,                     // in, out
+    UINT32*               CertifyInfoSize,             // out
+    BYTE**                CertifyInfo,                 // out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_Sign
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    UINT32                areaToSignSize,              // in
+    BYTE*                 areaToSign,                  // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig                          // out
+);
+extern TSS_RESULT Tcsip_GetRandom
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32*               bytesRequested,              // in, out
+    BYTE**                randomBytes                  // out
+);
+extern TSS_RESULT Tcsip_StirRandom
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                inDataSize,                  // in
+    BYTE*                 inData                       // in
+);
+extern TSS_RESULT Tcsip_GetCapability
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_CAPABILITY_AREA   capArea,                     // in
+    UINT32                subCapSize,                  // in
+    BYTE*                 subCap,                      // in
+    UINT32*               respSize,                    // out
+    BYTE**                resp                         // out
+);
+extern TSS_RESULT Tcsip_GetCapabilitySigned
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_CAPABILITY_AREA   capArea,                     // in
+    UINT32                subCapSize,                  // in
+    BYTE*                 subCap,                      // in
+    TPM_AUTH*             privAuth,                    // in, out
+    TPM_VERSION*          Version,                     // out
+    UINT32*               respSize,                    // out
+    BYTE**                resp,                        // out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig                          // out
+);
+extern TSS_RESULT Tcsip_GetCapabilityOwner
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             pOwnerAuth,                  // in, out
+    TPM_VERSION*          pVersion,                    // out
+    UINT32*               pNonVolatileFlags,           // out
+    UINT32*               pVolatileFlags               // out
+);
+extern TSS_RESULT Tcsip_CreateEndorsementKeyPair
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32                endorsementKeyInfoSize,      // in
+    BYTE*                 endorsementKeyInfo,          // in
+    UINT32*               endorsementKeySize,          // out
+    BYTE**                endorsementKey,              // out
+    TPM_DIGEST*           checksum                     // out
+);
+extern TSS_RESULT Tcsip_ReadPubek
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32*               pubEndorsementKeySize,       // out
+    BYTE**                pubEndorsementKey,           // out
+    TPM_DIGEST*           checksum                     // out
+);
+extern TSS_RESULT Tcsip_DisablePubekRead
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_OwnerReadPubek
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               pubEndorsementKeySize,       // out
+    BYTE**                pubEndorsementKey            // out
+);
+extern TSS_RESULT Tcsip_SelfTestFull
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_CertifySelfTest
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig                          // out
+);
+extern TSS_RESULT Tcsip_ContinueSelfTest
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_GetTestResult
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_OwnerSetDisable
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_BOOL              disableState,                // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_OwnerClear
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_DisableOwnerClear
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_ForceClear
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_DisableForceClear
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_PhysicalDisable
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_PhysicalEnable
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_PhysicalSetDeactivated
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_BOOL              state                        // in
+);
+extern TSS_RESULT Tcsip_SetTempDeactivated
+(
+    TCS_CONTEXT_HANDLE    hContext                     // in
+);
+extern TSS_RESULT Tcsip_SetTempDeactivated2
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             pOperatorAuth                // in, out
+);
+extern TSS_RESULT Tcsip_OwnerReadInternalPub
+(
+    TCS_CONTEXT_HANDLE   hContext,                     // in
+    TCS_KEY_HANDLE       hKey,                         // in
+    TPM_AUTH*            pOwnerAuth,                   // in, out
+    UINT32*              punPubKeySize,                // out
+    BYTE**               ppbPubKeyData                 // out
+);
+extern TSS_RESULT Tcsip_PhysicalPresence
+(
+    TCS_CONTEXT_HANDLE            hContext,            // in
+    TPM_PHYSICAL_PRESENCE         fPhysicalPresence    // in
+);
+extern TSS_RESULT Tcsip_FieldUpgrade
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                dataInSize,                  // in
+    BYTE*                 dataIn,                      // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               dataOutSize,                 // out
+    BYTE**                dataOut                      // out
+);
+extern TSS_RESULT Tcsip_ResetLockValue
+(
+    TCS_CONTEXT_HANDLE            hContext,            // in
+    TPM_AUTH*                     ownerAuth            // in, out
+);
+extern TSS_RESULT Tcsip_FlushSpecific
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_HANDLE            hResHandle,                  // in
+    TPM_RESOURCE_TYPE     resourceType                 // in
+);
+extern TSS_RESULT Tcsip_SetRedirection
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    UINT32                c1,                          // in
+    UINT32                c2,                          // in
+    TPM_AUTH*             privAuth                     // in, out
+);
+extern TSS_RESULT Tcsip_DSAP
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_ENTITY_TYPE       entityType,                  // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TPM_NONCE             nonceOddDSAP,                // in
+    UINT32                entityValueSize,             // in
+    BYTE*                 entityValue,                 // in
+    TCS_AUTHHANDLE*       authHandle,                  // out
+    TPM_NONCE*            nonceEven,                   // out
+    TPM_NONCE*            nonceEvenDSAP                // out
+);
+extern TSS_RESULT Tcsip_Delegate_Manage
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_FAMILY_ID         familyID,                    // in
+    TPM_FAMILY_OPERATION  opFlag,                      // in
+    UINT32                opDataSize,                  // in
+    BYTE*                 opData,                      // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               retDataSize,                 // out
+    BYTE**                retData                      // out
+);
+extern TSS_RESULT Tcsip_Delegate_CreateKeyDelegation
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hKey,                        // in
+    UINT32                publicInfoSize,              // in
+    BYTE*                 publicInfo,                  // in
+    TPM_ENCAUTH           encDelAuth,                  // in
+    TPM_AUTH*             keyAuth,                     // in, out
+    UINT32*               blobSize,                    // out
+    BYTE**                blob                         // out
+);
+extern TSS_RESULT Tcsip_Delegate_CreateOwnerDelegation
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_BOOL              increment,                   // in
+    UINT32                publicInfoSize,              // in
+    BYTE*                 publicInfo,                  // in
+    TPM_ENCAUTH           encDelAuth,                  // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               blobSize,                    // out
+    BYTE**                blob                         // out
+);
+extern TSS_RESULT Tcsip_Delegate_LoadOwnerDelegation
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_DELEGATE_INDEX    index,                       // in
+    UINT32                blobSize,                    // in
+    BYTE*                 blob,                        // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_Delegate_UpdateVerificationCount
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                inputSize,                   // in
+    BYTE*                 input,                       // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               outputSize,                  // out
+    BYTE**                output                       // out
+);
+extern TSS_RESULT Tcsip_Delegate_VerifyDelegation
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                delegateSize,                // in
+    BYTE*                 delegate                     // in
+);
+extern TSS_RESULT Tcsip_Delegate_ReadTable
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32*               pulFamilyTableSize,          // out
+    BYTE**                ppFamilyTable,               // out
+    UINT32*               pulDelegateTableSize,        // out
+    BYTE**                ppDelegateTable              // out
+);
+extern TSS_RESULT Tcsip_NV_DefineOrReleaseSpace
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                cPubInfoSize,                // in
+    BYTE*                 pPubInfo,                    // in
+    TPM_ENCAUTH           encAuth,                     // in
+    TPM_AUTH*             pAuth                        // in, out
+);
+extern TSS_RESULT Tcsip_NV_WriteValue
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_NV_INDEX          hNVStore,                    // in
+    UINT32                offset,                      // in
+    UINT32                ulDataLength,                // in
+    BYTE*                 rgbDataToWrite,              // in
+    TPM_AUTH*             privAuth                     // in, out
+);
+extern TSS_RESULT Tcsip_NV_WriteValueAuth
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_NV_INDEX          hNVStore,                    // in
+    UINT32                offset,                      // in
+    UINT32                ulDataLength,                // in
+    BYTE*                 rgbDataToWrite,              // in
+    TPM_AUTH*             NVAuth                       // in, out
+);
+extern TSS_RESULT Tcsip_NV_ReadValue
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_NV_INDEX          hNVStore,                    // in
+    UINT32                offset,                      // in
+    UINT32*               pulDataLength,               // in, out
+    TPM_AUTH*             privAuth,                    // in, out
+    BYTE**                rgbDataRead                  // out
+);
+extern TSS_RESULT Tcsip_NV_ReadValueAuth
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_NV_INDEX          hNVStore,                    // in
+    UINT32                offset,                      // in
+    UINT32*               pulDataLength,               // in, out
+    TPM_AUTH*             NVAuth,                      // in, out
+    BYTE**                rgbDataRead                  // out
+);
+extern TSS_RESULT Tcsip_CreateMaintenanceArchive
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_BOOL              generateRandom,              // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               randomSize,                  // out
+    BYTE**                random,                      // out
+    UINT32*               archiveSize,                 // out
+    BYTE**                archive                      // out
+);
+extern TSS_RESULT Tcsip_LoadMaintenanceArchive
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                dataInSize,                  // in
+    BYTE*                 dataIn,                      // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               dataOutSize,                 // out
+    BYTE**                dataOut                      // out
+);
+extern TSS_RESULT Tcsip_KillMaintenanceFeature
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_LoadManuMaintPub
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32                PubKeySize,                  // in
+    BYTE*                 PubKey,                      // in
+    TPM_DIGEST*           checksum                     // out
+);
+extern TSS_RESULT Tcsip_ReadManuMaintPub
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_DIGEST*           checksum                     // out
+);
+extern TSS_RESULT Tcsip_CreateRevocableEndorsementKeyPair
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_NONCE             antiReplay,                  // in
+    UINT32                endorsementKeyInfoSize,      // in
+    BYTE*                 endorsementKeyInfo,          // in
+    TSS_BOOL              GenResetAuth,                // in
+    TPM_DIGEST*           EKResetAuth,                 // in, out
+    UINT32*               endorsementKeySize,          // out
+    BYTE**                endorsementKey,              // out
+    TPM_DIGEST*           checksum                     // out
+);
+extern TSS_RESULT Tcsip_RevokeEndorsementKeyPair
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_DIGEST            EKResetAuth                  // in
+);
+extern TSS_RESULT Tcsip_PcrReset
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                pcrTargetSize,               // in
+    BYTE*                 pcrTarget                    // in
+);
+extern TSS_RESULT Tcsip_ReadCounter
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_COUNTER_ID        idCounter,                   // in
+    TPM_COUNTER_VALUE*    counterValue                 // out
+);
+extern TSS_RESULT Tcsip_CreateCounter
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                LabelSize,                   // in (=4)
+    BYTE*                 pLabel,                      // in
+    TPM_ENCAUTH           CounterAuth,                 // in
+    TPM_AUTH*             pOwnerAuth,                  // in, out
+    TSS_COUNTER_ID*       idCounter,                   // out
+    TPM_COUNTER_VALUE*    counterValue                 // out
+);
+extern TSS_RESULT Tcsip_IncrementCounter
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_COUNTER_ID        idCounter,                   // in
+    TPM_AUTH*             pCounterAuth,                // in, out
+    TPM_COUNTER_VALUE*    counterValue                 // out
+);
+extern TSS_RESULT Tcsip_ReleaseCounter
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_COUNTER_ID        idCounter,                   // in
+    TPM_AUTH*             pCounterAuth                 // in, out
+);
+extern TSS_RESULT Tcsip_ReleaseCounterOwner
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_COUNTER_ID        idCounter,                   // in
+    TPM_AUTH*             pOwnerAuth                   // in, out
+);
+extern TSS_RESULT Tcsip_ReadCurrentTicks
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32*               pulCurrentTimeSize,          // out
+    BYTE**                prgbCurrentTime              // out
+);
+extern TSS_RESULT Tcsip_TickStampBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hKey,                        // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_DIGEST            digestToStamp,               // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               pulSignatureLength,          // out
+    BYTE**                prgbSignature,               // out
+    UINT32*               pulTickCountSize,            // out
+    BYTE**                prgbTickCount                // out
+);
+extern TSS_RESULT Tcsip_TPM_DAA_Join
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_HANDLE            handle,                      // in
+    BYTE                  stage,                       // in
+    UINT32                inputSize0,                  // in
+    BYTE*                 inputData0,                  // in
+    UINT32                inputSize1,                  // in
+    BYTE*                 inputData1,                  // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               outputSize,                  // out
+    BYTE**                outputData                   // out
+);
+extern TSS_RESULT Tcsip_TPM_DAA_Sign
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_HANDLE            handle,                      // in
+    BYTE                  stage,                       // in
+    UINT32                inputSize0,                  // in
+    BYTE*                 inputData0,                  // in
+    UINT32                inputSize1,                  // in
+    BYTE*                 inputData1,                  // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               outputSize,                  // out
+    BYTE**                outputData                   // out
+);
+extern TSS_RESULT Tcsip_MigrateKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hMaKey,                      // in
+    UINT32                PublicKeySize,               // in
+    BYTE*                 PublicKey,                   // in
+    UINT32                inDataSize,                  // in
+    BYTE*                 inData,                      // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_CMK_SetRestrictions
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TSS_CMK_DELEGATE      Restriction,                 // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_CMK_ApproveMA
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_DIGEST            migAuthorityDigest,          // in
+    TPM_AUTH*             ownerAuth,                   // in, out
+    TPM_HMAC*             HmacMigAuthDigest            // out
+);
+extern TSS_RESULT Tcsip_CMK_CreateKey
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        hWrappingKey,                // in
+    TPM_ENCAUTH           KeyUsageAuth,                // in
+    TPM_HMAC              MigAuthApproval,             // in
+    TPM_DIGEST            MigAuthorityDigest,          // in
+    UINT32*               keyDataSize,                 // in, out
+    BYTE**                prgbKeyData,                 // in, out
+    TPM_AUTH*             pAuth                        // in, out
+);
+extern TSS_RESULT Tcsip_CMK_CreateTicket
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                PublicVerifyKeySize,         // in
+    BYTE*                 PublicVerifyKey,             // in
+    TPM_DIGEST            SignedData,                  // in
+    UINT32                SigValueSize,                // in
+    BYTE*                 SigValue,                    // in
+    TPM_AUTH*             pOwnerAuth,                  // in, out
+    TPM_HMAC*             SigTicket                    // out
+);
+extern TSS_RESULT Tcsip_CMK_CreateBlob
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        parentHandle,                // in
+    TSS_MIGRATE_SCHEME    migrationType,               // in
+    UINT32                MigrationKeyAuthSize,        // in
+    BYTE*                 MigrationKeyAuth,            // in
+    TPM_DIGEST            PubSourceKeyDigest,          // in
+    UINT32                msaListSize,                 // in
+    BYTE*                 msaList,                     // in
+    UINT32                restrictTicketSize,          // in
+    BYTE*                 restrictTicket,              // in
+    UINT32                sigTicketSize,               // in
+    BYTE*                 sigTicket,                   // in
+    UINT32                encDataSize,                 // in
+    BYTE*                 encData,                     // in
+    TPM_AUTH*             parentAuth,                  // in, out
+    UINT32*               randomSize,                  // out
+    BYTE**                random,                      // out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_CMK_ConvertMigration
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        parentHandle,                // in
+    TPM_CMK_AUTH          restrictTicket,              // in
+    TPM_HMAC              sigTicket,                   // in
+    UINT32                keyDataSize,                 // in
+    BYTE*                 prgbKeyData,                 // in
+    UINT32                msaListSize,                 // in
+    BYTE*                 msaList,                     // in
+    UINT32                randomSize,                  // in
+    BYTE*                 random,                      // in
+    TPM_AUTH*             parentAuth,                  // in, out
+    UINT32*               outDataSize,                 // out
+    BYTE**                outData                      // out
+);
+extern TSS_RESULT Tcsip_SetCapability
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TPM_CAPABILITY_AREA   capArea,                     // in
+    UINT32                subCapSize,                  // in
+    BYTE*                 subCap,                      // in
+    UINT32                valueSize,                   // in
+    BYTE*                 value,                       // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsip_GetAuditDigest
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                startOrdinal,                // in
+    TPM_DIGEST*           auditDigest,                 // out
+    UINT32*               counterValueSize,            // out
+    BYTE**                counterValue,                // out
+    TSS_BOOL*             more,                        // out
+    UINT32*               ordSize,                     // out
+    UINT32**              ordList                      // out
+);
+extern TSS_RESULT Tcsip_GetAuditDigestSigned
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    TCS_KEY_HANDLE        keyHandle,                   // in
+    TSS_BOOL              closeAudit,                  // in
+    TPM_NONCE             antiReplay,                  // in
+    TPM_AUTH*             privAuth,                    // in, out
+    UINT32*               counterValueSize,            // out
+    BYTE**                counterValue,                // out
+    TPM_DIGEST*           auditDigest,                 // out
+    TPM_DIGEST*           ordinalDigest,               // out
+    UINT32*               sigSize,                     // out
+    BYTE**                sig                          // out
+);
+extern TSS_RESULT Tcsip_SetOrdinalAuditStatus
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                ordinalToAudit,              // in
+    TSS_BOOL              auditState,                  // in
+    TPM_AUTH*             ownerAuth                    // in, out
+);
+extern TSS_RESULT Tcsi_Admin_TSS_SessionsPerLocality
+(
+    TCS_CONTEXT_HANDLE    hContext,                    // in
+    UINT32                ulLocality,                  // in
+    UINT32                ulSessions,                  // in
+    TPM_AUTH*             pOwnerAuth                   // in, out
+);
+extern TSS_RESULT Tcsi_GetCredential
+(
+    TCS_CONTEXT_HANDLE  hContext,               // in
+    UINT32              ulCredentialType,       // in
+    UINT32              ulCredentialAccessMode, // in
+    UINT32*             pulCredentialSize,      // out
+    BYTE**              prgbCredentialData      // out
+
+);
+
+#endif /* TCS_H */
diff --git a/tss/include/tss/tcs_defines.h b/tss/include/tss/tcs_defines.h
index 5b0d192..b5a1e3d 100644
--- a/tss/include/tss/tcs_defines.h
+++ b/tss/include/tss/tcs_defines.h
@@ -1,28 +1,28 @@
-/*++

-

-TSS Core Service structures

-

-*/

-

-#ifndef __TCS_DEFINES_H__

-#define __TCS_DEFINES_H__

-

-#define TSS_TCSATTRIB_TRANSPORT_DEFAULT           ((UINT32)(0x00000000))

-#define TSS_TCSATTRIB_TRANSPORT_EXCLUSIVE         ((UINT32)(0x00000001))

-

-

-// Values for the ulCredentialType parameter to Tcsi_GetCredential

-#define TSS_TCS_CREDENTIAL_EKCERT                 ((UINT32)0x00000001)

-#define TSS_TCS_CREDENTIAL_TPM_CC                 ((UINT32)0x00000002)

-#define TSS_TCS_CREDENTIAL_PLATFORMCERT           ((UINT32)0x00000003)

-

-

-// Values for the ulCredentialAccessMode parameter to Tcsi_GetCredential

-//  TSS_TCS_CERT_ACCESS_AUTO triggers the default behavior.

-//  Values with TSS_TCS_CERT_VENDOR_SPECIFIC_BIT set trigger

-//    vendor specific behavior.

-#define TSS_TCS_CERT_ACCESS_AUTO                  ((UINT32)0x00000001)

-

-#define TSS_TCS_CERT_VENDOR_SPECIFIC_BIT          ((UINT32)0x80000000)

-

-#endif // __TCS_DEFINES_H__

+/*++
+
+TSS Core Service structures
+
+*/
+
+#ifndef __TCS_DEFINES_H__
+#define __TCS_DEFINES_H__
+
+#define TSS_TCSATTRIB_TRANSPORT_DEFAULT           ((UINT32)(0x00000000))
+#define TSS_TCSATTRIB_TRANSPORT_EXCLUSIVE         ((UINT32)(0x00000001))
+
+
+// Values for the ulCredentialType parameter to Tcsi_GetCredential
+#define TSS_TCS_CREDENTIAL_EKCERT                 ((UINT32)0x00000001)
+#define TSS_TCS_CREDENTIAL_TPM_CC                 ((UINT32)0x00000002)
+#define TSS_TCS_CREDENTIAL_PLATFORMCERT           ((UINT32)0x00000003)
+
+
+// Values for the ulCredentialAccessMode parameter to Tcsi_GetCredential
+//  TSS_TCS_CERT_ACCESS_AUTO triggers the default behavior.
+//  Values with TSS_TCS_CERT_VENDOR_SPECIFIC_BIT set trigger
+//    vendor specific behavior.
+#define TSS_TCS_CERT_ACCESS_AUTO                  ((UINT32)0x00000001)
+
+#define TSS_TCS_CERT_VENDOR_SPECIFIC_BIT          ((UINT32)0x80000000)
+
+#endif // __TCS_DEFINES_H__
diff --git a/tss/include/tss/tcs_error.h b/tss/include/tss/tcs_error.h
index 2a64c34..7ce7ef9 100644
--- a/tss/include/tss/tcs_error.h
+++ b/tss/include/tss/tcs_error.h
@@ -1,56 +1,56 @@
-/*++

- 

-TSS Core Service error return codes 

- 

---*/

-

-#ifndef __TCS_ERROR_H__

-#define __TCS_ERROR_H__

-

-

-#ifndef TSS_E_BASE

-#define TSS_E_BASE      0x00000000L

-#endif // TSS_E_BASE

-

-// The context handle supplied is invalid.

-#define TCS_E_INVALID_CONTEXTHANDLE  (UINT32)(TSS_E_BASE + 0x0C1L) 

-

-// The key handle supplied is invalid.

-#define TCS_E_INVALID_KEYHANDLE  (UINT32)(TSS_E_BASE + 0x0C2L) 

-

-// The authorization session handle supplied is invalid.

-#define TCS_E_INVALID_AUTHHANDLE  (UINT32)(TSS_E_BASE + 0x0C3L)

-

-// the auth session has been closed by the TPM

-#define TCS_E_INVALID_AUTHSESSION  (UINT32)(TSS_E_BASE + 0x0C4L) 

-

-// the key has been unloaded 

-#define TCS_E_INVALID_KEY   (UINT32)(TSS_E_BASE + 0x0C5L) 

-

-// Key addressed by the application key handle does not match the key addressed

-// by the given UUID.

-#define TCS_E_KEY_MISMATCH   (UINT32)(TSS_E_BASE + 0x0C8L)

-

-// Key adressed by Key's UUID cannot be loaded because one of the required

-// parent keys needs authorization.

-#define TCS_E_KM_LOADFAILED   (UINT32)(TSS_E_BASE + 0x0CAL)

-

-// The Key Cache Manager could not reload the key into the TPM.

-#define TCS_E_KEY_CONTEXT_RELOAD  (UINT32)(TSS_E_BASE + 0x0CCL)

-

-// Bad memory index

-#define TCS_E_BAD_INDEX                           (UINT32)(TSS_E_BASE + 0x0CDL)

-

-

-// These TCS_E_ macros are defined by name in the TSS spec, however

-// they are defined to have the same values as the TSS_E_ equivalents.

-#define TCS_SUCCESS                        TSS_SUCCESS

-#define TCS_E_KEY_ALREADY_REGISTERED       TSS_E_KEY_ALREADY_REGISTERED

-#define TCS_E_KEY_NOT_REGISTERED           TSS_E_KEY_NOT_REGISTERED

-#define TCS_E_BAD_PARAMETER                TSS_E_BAD_PARAMETER

-#define TCS_E_OUTOFMEMORY                  TSS_E_OUTOFMEMORY

-#define TCS_E_SIZE                         TSS_E_SIZE

-#define TCS_E_NOTIMPL                      TSS_E_NOTIMPL

-#define TCS_E_INTERNAL_ERROR               TSS_E_INTERNAL_ERROR

-

-#endif // __TCS_ERROR_H__

+/*++
+ 
+TSS Core Service error return codes 
+ 
+--*/
+
+#ifndef __TCS_ERROR_H__
+#define __TCS_ERROR_H__
+
+
+#ifndef TSS_E_BASE
+#define TSS_E_BASE      0x00000000L
+#endif // TSS_E_BASE
+
+// The context handle supplied is invalid.
+#define TCS_E_INVALID_CONTEXTHANDLE  (UINT32)(TSS_E_BASE + 0x0C1L) 
+
+// The key handle supplied is invalid.
+#define TCS_E_INVALID_KEYHANDLE  (UINT32)(TSS_E_BASE + 0x0C2L) 
+
+// The authorization session handle supplied is invalid.
+#define TCS_E_INVALID_AUTHHANDLE  (UINT32)(TSS_E_BASE + 0x0C3L)
+
+// the auth session has been closed by the TPM
+#define TCS_E_INVALID_AUTHSESSION  (UINT32)(TSS_E_BASE + 0x0C4L) 
+
+// the key has been unloaded 
+#define TCS_E_INVALID_KEY   (UINT32)(TSS_E_BASE + 0x0C5L) 
+
+// Key addressed by the application key handle does not match the key addressed
+// by the given UUID.
+#define TCS_E_KEY_MISMATCH   (UINT32)(TSS_E_BASE + 0x0C8L)
+
+// Key adressed by Key's UUID cannot be loaded because one of the required
+// parent keys needs authorization.
+#define TCS_E_KM_LOADFAILED   (UINT32)(TSS_E_BASE + 0x0CAL)
+
+// The Key Cache Manager could not reload the key into the TPM.
+#define TCS_E_KEY_CONTEXT_RELOAD  (UINT32)(TSS_E_BASE + 0x0CCL)
+
+// Bad memory index
+#define TCS_E_BAD_INDEX                           (UINT32)(TSS_E_BASE + 0x0CDL)
+
+
+// These TCS_E_ macros are defined by name in the TSS spec, however
+// they are defined to have the same values as the TSS_E_ equivalents.
+#define TCS_SUCCESS                        TSS_SUCCESS
+#define TCS_E_KEY_ALREADY_REGISTERED       TSS_E_KEY_ALREADY_REGISTERED
+#define TCS_E_KEY_NOT_REGISTERED           TSS_E_KEY_NOT_REGISTERED
+#define TCS_E_BAD_PARAMETER                TSS_E_BAD_PARAMETER
+#define TCS_E_OUTOFMEMORY                  TSS_E_OUTOFMEMORY
+#define TCS_E_SIZE                         TSS_E_SIZE
+#define TCS_E_NOTIMPL                      TSS_E_NOTIMPL
+#define TCS_E_INTERNAL_ERROR               TSS_E_INTERNAL_ERROR
+
+#endif // __TCS_ERROR_H__
diff --git a/tss/include/tss/tcs_structs.h b/tss/include/tss/tcs_structs.h
index fb232a2..0255466 100644
--- a/tss/include/tss/tcs_structs.h
+++ b/tss/include/tss/tcs_structs.h
@@ -1,40 +1,40 @@
-/*++

-

-TSS Core Service structures

-

-*/

-

-#ifndef __TCS_STRUCT_H__

-#define __TCS_STRUCT_H__

-

-#include <tpm.h>

-#include <tss_structs.h>

-#include <tcs_typedef.h>

-

-typedef struct tdTCS_AUTH

-{

-    TCS_AUTHHANDLE  AuthHandle;

-    TPM_NONCE       NonceOdd;   // system  

-    TPM_NONCE       NonceEven;   // TPM   

-    TSS_BOOL        fContinueAuthSession;

-    TPM_AUTHDATA    HMAC;

-} TCS_AUTH;

-

-// This is kept for legacy compatibility

-typedef TCS_AUTH    TPM_AUTH;

-

-

-typedef struct tdTCS_LOADKEY_INFO

-{

-    TSS_UUID   keyUUID;

-    TSS_UUID   parentKeyUUID;

-    TPM_DIGEST  paramDigest; // SHA1 digest of the TPM_LoadKey

-                             // Command input parameters

-                             // As defined in TPM Main Specification

-    TPM_AUTH   authData;     // Data regarding a valid auth

-                             // Session including the

-                             // HMAC digest

-} TCS_LOADKEY_INFO;

-

-#endif // __TCS_STRUCT_H__

-

+/*++
+
+TSS Core Service structures
+
+*/
+
+#ifndef __TCS_STRUCT_H__
+#define __TCS_STRUCT_H__
+
+#include <tss/tpm.h>
+#include <tss/tss_structs.h>
+#include <tss/tcs_typedef.h>
+
+typedef struct tdTCS_AUTH
+{
+    TCS_AUTHHANDLE  AuthHandle;
+    TPM_NONCE       NonceOdd;   // system  
+    TPM_NONCE       NonceEven;   // TPM   
+    TSS_BOOL        fContinueAuthSession;
+    TPM_AUTHDATA    HMAC;
+} TCS_AUTH;
+
+// This is kept for legacy compatibility
+typedef TCS_AUTH    TPM_AUTH;
+
+
+typedef struct tdTCS_LOADKEY_INFO
+{
+    TSS_UUID   keyUUID;
+    TSS_UUID   parentKeyUUID;
+    TPM_DIGEST  paramDigest; // SHA1 digest of the TPM_LoadKey
+                             // Command input parameters
+                             // As defined in TPM Main Specification
+    TPM_AUTH   authData;     // Data regarding a valid auth
+                             // Session including the
+                             // HMAC digest
+} TCS_LOADKEY_INFO;
+
+#endif // __TCS_STRUCT_H__
+
diff --git a/tss/include/tss/tcs_typedef.h b/tss/include/tss/tcs_typedef.h
index 194e49d..7ef48af 100644
--- a/tss/include/tss/tcs_typedef.h
+++ b/tss/include/tss/tcs_typedef.h
@@ -1,32 +1,32 @@
-/*++

-

-Global typedefs for TSS Core Service

- 

-*/

-

-#ifndef __TCS_TYPEDEF_H__

-#define __TCS_TYPEDEF_H__

-

-#include <tss_structs.h>

-#include <tpm.h>

-

-typedef UINT32  TCS_AUTHHANDLE;

-typedef UINT32  TCS_CONTEXT_HANDLE;

-typedef UINT32  TCS_KEY_HANDLE;

-typedef UINT32  TCS_HANDLE;

-

-

-// Substitution definitions for TCS-IDL

-typedef TPM_ENCAUTH                TCG_ENCAUTH;

-typedef TPM_NONCE                  TCG_NONCE;

-typedef TPM_ENTITY_TYPE            TCG_ENTITY_TYPE;

-typedef TPM_PCRINDEX               TCG_PCRINDEX;

-typedef TPM_DIGEST                 TCG_DIGEST;

-typedef TPM_PCRVALUE               TCG_PCRVALUE;

-typedef TPM_DIRVALUE               TCG_DIRVALUE;

-typedef TPM_DIRINDEX               TCG_DIRINDEX;

-

-

-

-#endif // __TCS_TYPEDEF_H__

-

+/*++
+
+Global typedefs for TSS Core Service
+ 
+*/
+
+#ifndef __TCS_TYPEDEF_H__
+#define __TCS_TYPEDEF_H__
+
+#include <tss/tss_structs.h>
+#include <tss/tpm.h>
+
+typedef UINT32  TCS_AUTHHANDLE;
+typedef UINT32  TCS_CONTEXT_HANDLE;
+typedef UINT32  TCS_KEY_HANDLE;
+typedef UINT32  TCS_HANDLE;
+
+
+// Substitution definitions for TCS-IDL
+typedef TPM_ENCAUTH                TCG_ENCAUTH;
+typedef TPM_NONCE                  TCG_NONCE;
+typedef TPM_ENTITY_TYPE            TCG_ENTITY_TYPE;
+typedef TPM_PCRINDEX               TCG_PCRINDEX;
+typedef TPM_DIGEST                 TCG_DIGEST;
+typedef TPM_PCRVALUE               TCG_PCRVALUE;
+typedef TPM_DIRVALUE               TCG_DIRVALUE;
+typedef TPM_DIRINDEX               TCG_DIRINDEX;
+
+
+
+#endif // __TCS_TYPEDEF_H__
+
diff --git a/tss/include/tss/tddl_error.h b/tss/include/tss/tddl_error.h
index 261ee13..53710b7 100644
--- a/tss/include/tss/tddl_error.h
+++ b/tss/include/tss/tddl_error.h
@@ -1,51 +1,51 @@
-/*++

-

-TPM Device Driver Library error return codes 

- 

---*/

-

-#ifndef __TDDL_ERROR_H__

-#define __TDDL_ERROR_H__

-

-#include <tss_error_basics.h>

-#include <tss_error.h>

-

-

-#ifndef TSS_E_BASE

-#define TSS_E_BASE      0x00000000L

-#endif // TSS_E_BASE

-

-

-//

-// specific error codes returned by the TPM device driver library

-// offset TSS_TDDL_OFFSET

-//

-#define TDDL_E_FAIL 		TSS_E_FAIL

-#define TDDL_E_TIMEOUT 		TSS_E_TIMEOUT

-

-// The connection was already established.

-#define TDDL_E_ALREADY_OPENED   (UINT32)(TSS_E_BASE + 0x081L)

-

-// The device was not connected.

-#define TDDL_E_ALREADY_CLOSED   (UINT32)(TSS_E_BASE + 0x082L)

-

-// The receive buffer is too small.

-#define TDDL_E_INSUFFICIENT_BUFFER  (UINT32)(TSS_E_BASE + 0x083L)

-

-// The command has already completed.

-#define TDDL_E_COMMAND_COMPLETED  (UINT32)(TSS_E_BASE + 0x084L)

-

-// TPM aborted processing of command.

-#define TDLL_E_COMMAND_ABORTED  (UINT32)(TSS_E_BASE + 0x085L)

-

-//  The request could not be performed because of an I/O device error.

-#define TDDL_E_IOERROR    (UINT32)(TSS_E_BASE + 0x087L)

-

-// Unsupported TAG is requested

-#define TDDL_E_BADTAG    (UINT32)(TSS_E_BASE + 0x088L)

-

-// the requested TPM component was not found

-#define TDDL_E_COMPONENT_NOT_FOUND  (UINT32)(TSS_E_BASE + 0x089L)

-

-#endif // __TDDL_ERROR_H__

-

+/*++
+
+TPM Device Driver Library error return codes 
+ 
+--*/
+
+#ifndef __TDDL_ERROR_H__
+#define __TDDL_ERROR_H__
+
+#include <tss/tss_error_basics.h>
+#include <tss/tss_error.h>
+
+
+#ifndef TSS_E_BASE
+#define TSS_E_BASE      0x00000000L
+#endif // TSS_E_BASE
+
+
+//
+// specific error codes returned by the TPM device driver library
+// offset TSS_TDDL_OFFSET
+//
+#define TDDL_E_FAIL 		TSS_E_FAIL
+#define TDDL_E_TIMEOUT 		TSS_E_TIMEOUT
+
+// The connection was already established.
+#define TDDL_E_ALREADY_OPENED   (UINT32)(TSS_E_BASE + 0x081L)
+
+// The device was not connected.
+#define TDDL_E_ALREADY_CLOSED   (UINT32)(TSS_E_BASE + 0x082L)
+
+// The receive buffer is too small.
+#define TDDL_E_INSUFFICIENT_BUFFER  (UINT32)(TSS_E_BASE + 0x083L)
+
+// The command has already completed.
+#define TDDL_E_COMMAND_COMPLETED  (UINT32)(TSS_E_BASE + 0x084L)
+
+// TPM aborted processing of command.
+#define TDLL_E_COMMAND_ABORTED  (UINT32)(TSS_E_BASE + 0x085L)
+
+//  The request could not be performed because of an I/O device error.
+#define TDDL_E_IOERROR    (UINT32)(TSS_E_BASE + 0x087L)
+
+// Unsupported TAG is requested
+#define TDDL_E_BADTAG    (UINT32)(TSS_E_BASE + 0x088L)
+
+// the requested TPM component was not found
+#define TDDL_E_COMPONENT_NOT_FOUND  (UINT32)(TSS_E_BASE + 0x089L)
+
+#endif // __TDDL_ERROR_H__
+
diff --git a/tss/include/tss/tddlapi_error.h b/tss/include/tss/tddlapi_error.h
index f021150..449779b 100644
--- a/tss/include/tss/tddlapi_error.h
+++ b/tss/include/tss/tddlapi_error.h
@@ -1,54 +1,54 @@
-/*++

-

-TDDL error return codes for the TPM Device Driver Library Interface (TDDLI)

- 

---*/

-

-#ifndef __TDDLAPI_ERROR_H__

-#define __TDDLAPI_ERROR_H__

-

-

-//

-// error coding scheme for a Microsoft Windows platform -

-// refer to the TSS Specification Parts

-//

-//  Values are 32 bit values layed out as follows:

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//  +---+-+-+-----------------------+-------+-----------------------+

-//  |Lev|C|R|     Facility          | Layer |         Code          |

-//  +---+-+-+-----------------------+-------+-----------------------+

-//  | Platform specific coding      | TSS error coding system       |

-//  +---+-+-+-----------------------+-------+-----------------------+

-//

-//      Lev - is the Level code

-//

-//          00 - Success

-//          01 - Informational

-//          10 - Warning

-//          11 - Error

-//

-//      C - is the Customer code flag  (must actually be set)

-//

-//      R - is a reserved bit    (unused)

-//

-//      Facility - is the facility code: TCPA: proposal 0x028

-//

-//      Code - is the facility's status code

-//

-

-

-// no macros are used below intentionally 

-// for a better error code recognition by the reader

-

-// note that the values of TPM_E_BASE and TSS_E_BASE, TSS_W_BASE and TSS_I_BASE

-// have to be adjusted for a platform other than Windows

-

-//

-// TPM specific error codes (layer nibble set to TPM layer TSS_LAYER_TPM)

-//

-

-

-#endif // __TDDLAPI_ERROR_H__

-

+/*++
+
+TDDL error return codes for the TPM Device Driver Library Interface (TDDLI)
+ 
+--*/
+
+#ifndef __TDDLAPI_ERROR_H__
+#define __TDDLAPI_ERROR_H__
+
+
+//
+// error coding scheme for a Microsoft Windows platform -
+// refer to the TSS Specification Parts
+//
+//  Values are 32 bit values layed out as follows:
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//  +---+-+-+-----------------------+-------+-----------------------+
+//  |Lev|C|R|     Facility          | Layer |         Code          |
+//  +---+-+-+-----------------------+-------+-----------------------+
+//  | Platform specific coding      | TSS error coding system       |
+//  +---+-+-+-----------------------+-------+-----------------------+
+//
+//      Lev - is the Level code
+//
+//          00 - Success
+//          01 - Informational
+//          10 - Warning
+//          11 - Error
+//
+//      C - is the Customer code flag  (must actually be set)
+//
+//      R - is a reserved bit    (unused)
+//
+//      Facility - is the facility code: TCPA: proposal 0x028
+//
+//      Code - is the facility's status code
+//
+
+
+// no macros are used below intentionally 
+// for a better error code recognition by the reader
+
+// note that the values of TPM_E_BASE and TSS_E_BASE, TSS_W_BASE and TSS_I_BASE
+// have to be adjusted for a platform other than Windows
+
+//
+// TPM specific error codes (layer nibble set to TPM layer TSS_LAYER_TPM)
+//
+
+
+#endif // __TDDLAPI_ERROR_H__
+
diff --git a/tss/include/tss/tddli.h b/tss/include/tss/tddli.h
index 8dade1b..2a833b2 100644
--- a/tss/include/tss/tddli.h
+++ b/tss/include/tss/tddli.h
@@ -1,94 +1,94 @@
-/*++

-

-TPM Device Driver Library interface

- 

---*/

-

-#ifndef __TDDLI_H__

-#define __TDDLI_H__

-

-#include <tss_typedef.h>

-#include <tddl_error.h>

-

-#if !defined(TDDLI)

-#ifdef WIN32

-// --- This should be used on Windows platforms

-#ifdef TDDLI_EXPORTS

-#define TDDLI __declspec(dllexport)

-#else

-#define TDDLI __declspec(dllimport)

-#endif

-#else

-#define TDDLI 

-#endif

-#endif /* !defined(TDDLI) */

-

-

-#define TDDL_CAP_VERSION   0x0100

-#define TDDL_CAP_VER_DRV   0x0101

-#define TDDL_CAP_VER_FW    0x0102

-#define TDDL_CAP_VER_FW_DATE   0x0103

-

-#define TDDL_CAP_PROPERTY   0x0200

-#define TDDL_CAP_PROP_MANUFACTURER  0x0201

-#define TDDL_CAP_PROP_MODULE_TYPE  0x0202

-#define TDDL_CAP_PROP_GLOBAL_STATE  0x0203

-

-

-//--------------------------------------------------------------------

-// TDDL specific helper redefinitions

-

-#ifdef __cplusplus

-extern "C" {

-#endif

-

-    //establish a connection to the TPM device driver

-    TDDLI TSS_RESULT Tddli_Open(void);

- 

-    //close a open connection to the TPM device driver

-    TDDLI TSS_RESULT Tddli_Close(void);

-

-    //cancels the last outstanding TPM command

-    TDDLI TSS_RESULT Tddli_Cancel(void);

-

-    // read the attributes returned by the TPM HW/FW

-    TDDLI TSS_RESULT Tddli_GetCapability(

-        UINT32        CapArea,

-        UINT32        SubCap,

-        BYTE         *pCapBuf,

-        UINT32       *puntCapBufLen);

-

-    // set parameters to the TPM HW/FW

-    TDDLI TSS_RESULT Tddli_SetCapability(

-        UINT32        CapArea,

-        UINT32        SubCap,

-        BYTE         *pCapBuf,

-        UINT32        puntCapBufLen);

-

-    // get status of the TPM driver and device

-    TDDLI TSS_RESULT Tddli_GetStatus(

-        UINT32        ReqStatusType,

-        UINT32       *puntStatus);

-

-    // send any data to the TPM module

-    TDDLI TSS_RESULT Tddli_TransmitData(

-        BYTE         *pTransmitBuf,

-        UINT32        TransmitBufLen,

-        BYTE         *pReceiveBuf,

-        UINT32       *puntReceiveBufLen);

-

-    TDDLI TSS_RESULT Tddli_SetPowerManagement(

-        TSS_BOOL      SendSaveStateCommand,       // in

-        UINT32       *QuerySetNewTPMPowerState);  // in, out

-

-    TDDLI TSS_RESULT Tddli_PowerManagementControl(

-        TSS_BOOL      SendPowerManager,           // in

-        UINT32       *DriverManagesPowerStates);  // out

-

-    

-#ifdef __cplusplus

-}

-#endif

-

-#endif // __TDDLI_H__

-

+/*++
+
+TPM Device Driver Library interface
+ 
+--*/
+
+#ifndef __TDDLI_H__
+#define __TDDLI_H__
+
+#include <tss/tss_typedef.h>
+#include <tss/tddl_error.h>
+
+#if !defined(TDDLI)
+#ifdef WIN32
+// --- This should be used on Windows platforms
+#ifdef TDDLI_EXPORTS
+#define TDDLI __declspec(dllexport)
+#else
+#define TDDLI __declspec(dllimport)
+#endif
+#else
+#define TDDLI 
+#endif
+#endif /* !defined(TDDLI) */
+
+
+#define TDDL_CAP_VERSION   0x0100
+#define TDDL_CAP_VER_DRV   0x0101
+#define TDDL_CAP_VER_FW    0x0102
+#define TDDL_CAP_VER_FW_DATE   0x0103
+
+#define TDDL_CAP_PROPERTY   0x0200
+#define TDDL_CAP_PROP_MANUFACTURER  0x0201
+#define TDDL_CAP_PROP_MODULE_TYPE  0x0202
+#define TDDL_CAP_PROP_GLOBAL_STATE  0x0203
+
+
+//--------------------------------------------------------------------
+// TDDL specific helper redefinitions
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    //establish a connection to the TPM device driver
+    TDDLI TSS_RESULT Tddli_Open(void);
+ 
+    //close a open connection to the TPM device driver
+    TDDLI TSS_RESULT Tddli_Close(void);
+
+    //cancels the last outstanding TPM command
+    TDDLI TSS_RESULT Tddli_Cancel(void);
+
+    // read the attributes returned by the TPM HW/FW
+    TDDLI TSS_RESULT Tddli_GetCapability(
+        UINT32        CapArea,
+        UINT32        SubCap,
+        BYTE         *pCapBuf,
+        UINT32       *puntCapBufLen);
+
+    // set parameters to the TPM HW/FW
+    TDDLI TSS_RESULT Tddli_SetCapability(
+        UINT32        CapArea,
+        UINT32        SubCap,
+        BYTE         *pCapBuf,
+        UINT32        puntCapBufLen);
+
+    // get status of the TPM driver and device
+    TDDLI TSS_RESULT Tddli_GetStatus(
+        UINT32        ReqStatusType,
+        UINT32       *puntStatus);
+
+    // send any data to the TPM module
+    TDDLI TSS_RESULT Tddli_TransmitData(
+        BYTE         *pTransmitBuf,
+        UINT32        TransmitBufLen,
+        BYTE         *pReceiveBuf,
+        UINT32       *puntReceiveBufLen);
+
+    TDDLI TSS_RESULT Tddli_SetPowerManagement(
+        TSS_BOOL      SendSaveStateCommand,       // in
+        UINT32       *QuerySetNewTPMPowerState);  // in, out
+
+    TDDLI TSS_RESULT Tddli_PowerManagementControl(
+        TSS_BOOL      SendPowerManager,           // in
+        UINT32       *DriverManagesPowerStates);  // out
+
+    
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TDDLI_H__
+
diff --git a/tss/include/tss/tpm.h b/tss/include/tss/tpm.h
index e7afd1e..e7d338d 100644
--- a/tss/include/tss/tpm.h
+++ b/tss/include/tss/tpm.h
@@ -1,1597 +1,1597 @@
-/*++

- * 

- * TPM structures extracted from the TPM specification 1.2, 

- * Part 2 (Structures), rev 85.

- *

- * Errata:

- *

- * *) The individual bits of TPM_STARTUP_EFFECTS were not given names in

- * the TPM spec so they are not defined in tpm.h.

- * 

- * *) A few typedefs not present in the TPM 1.2 specification have been

- * added. This was generally done when the TPM 1.2 spec defined a set of

- * related values (either bitmasks or enumeration values) but did not

- * define an associated type to hold these values. The typedefs have been

- * added and structure fields that were to hold those values have been

- * switched from generic UINT* types to the more specific types. This was

- * done to highlight exactly where those #defined values were to be used.

- * The types that have been added are:

- *   TPM_NV_PER_ATTRIBUTES

- *   TPM_DELEGATE_TYPE

- *

- * *) The layout of bitfields within a structure are compiler-dependent

- * and the use of structure bitfields has been avoided where possible. In

- * cases where a value is a collection of independent bits the type is

- * given a name (typedeffed to UINT16 or UINT32 as appropriate) and masks

- * are #defined to access the individual bits. This is not possible for

- * TPM_VERSION_BYTE because the fields are 4-bit values. A best attempt

- * has been made to make this compiler independent but it has only been

- * checked on GCC and Visual C++ on little-endian machines.

- * 

- * *) The TPM_DELEGATIONS per1 and per2 fields field are a bitmask but

- * are defined as a UINT32 because the bitfields have different meaning

- * based on the type of delegation blob.

- * 

- * *) The definitions of TPM_PERMANENT_DATA, TPM_STCLEAR_DATA,

- * TPM_STANY_DATA, and TPM_DELEGATE_TABLE_ROW are commented out. These

- * structures are internal to the TPM and are not directly accessible by

- * external software so this should not be a problem.

- * 

- * *) The definitions of TPM_FAMILY_TABLE and TPM_DELEGATE_TABLE are

- * commented out because they are variable length arrays internal to the

- * TPM. As above they are not directly accessible by external software

- * so this should not be a problem.

- */

-

-#ifndef __TPM_H__

-#define __TPM_H__

-

-#ifdef __midl

-#define SIZEIS(x)  [size_is(x)]

-#else

-#define SIZEIS(x)

-#endif

-

-#include <platform.h>

-

-//-------------------------------------------------------------------

-// Part 2, section 2.1: Basic data types

-typedef BYTE   TPM_BOOL;

-#ifndef FALSE

-#define FALSE  0x00

-#define TRUE   0x01

-#endif /* ifndef FALSE */

-

-//-------------------------------------------------------------------

-// Part 2, section 2.3: Helper Redefinitions

-//   Many of the helper redefinitions appear later in this file

-//   so that they are declared next to the list of valid values

-//   they may hold.

-typedef BYTE TPM_LOCALITY_MODIFIER;

-typedef UINT32 TPM_COMMAND_CODE;                            /* 1.1b */

-typedef UINT32 TPM_COUNT_ID;

-typedef UINT32 TPM_REDIT_COMMAND;

-typedef UINT32 TPM_HANDLE;

-typedef UINT32 TPM_AUTHHANDLE;

-typedef UINT32 TPM_TRANSHANDLE;

-typedef UINT32 TPM_KEYHANDLE;

-typedef UINT32 TPM_DIRINDEX;

-typedef UINT32 TPM_PCRINDEX;

-typedef UINT32 TPM_RESULT;

-typedef UINT32 TPM_MODIFIER_INDICATOR;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 2.2.4: Vendor Specific

-#define TPM_Vendor_Specific32  0x00000400

-#define TPM_Vendor_Specific8   0x80

-

-

-//-------------------------------------------------------------------

-// Part 2, section 3: Structure Tags

-typedef UINT16  TPM_STRUCTURE_TAG;

-#define TPM_TAG_CONTEXTBLOB            ((UINT16)0x0001)

-#define TPM_TAG_CONTEXT_SENSITIVE      ((UINT16)0x0002)

-#define TPM_TAG_CONTEXTPOINTER         ((UINT16)0x0003)

-#define TPM_TAG_CONTEXTLIST            ((UINT16)0x0004)

-#define TPM_TAG_SIGNINFO               ((UINT16)0x0005)

-#define TPM_TAG_PCR_INFO_LONG          ((UINT16)0x0006)

-#define TPM_TAG_PERSISTENT_FLAGS       ((UINT16)0x0007)

-#define TPM_TAG_VOLATILE_FLAGS         ((UINT16)0x0008)

-#define TPM_TAG_PERSISTENT_DATA        ((UINT16)0x0009)

-#define TPM_TAG_VOLATILE_DATA          ((UINT16)0x000a)

-#define TPM_TAG_SV_DATA                ((UINT16)0x000b)

-#define TPM_TAG_EK_BLOB                ((UINT16)0x000c)

-#define TPM_TAG_EK_BLOB_AUTH           ((UINT16)0x000d)

-#define TPM_TAG_COUNTER_VALUE          ((UINT16)0x000e)

-#define TPM_TAG_TRANSPORT_INTERNAL     ((UINT16)0x000f)

-#define TPM_TAG_TRANSPORT_LOG_IN       ((UINT16)0x0010)

-#define TPM_TAG_TRANSPORT_LOG_OUT      ((UINT16)0x0011)

-#define TPM_TAG_AUDIT_EVENT_IN         ((UINT16)0x0012)

-#define TPM_TAG_AUDIT_EVENT_OUT        ((UINT16)0x0013)

-#define TPM_TAG_CURRENT_TICKS          ((UINT16)0x0014)

-#define TPM_TAG_KEY                    ((UINT16)0x0015)

-#define TPM_TAG_STORED_DATA12          ((UINT16)0x0016)

-#define TPM_TAG_NV_ATTRIBUTES          ((UINT16)0x0017)

-#define TPM_TAG_NV_DATA_PUBLIC         ((UINT16)0x0018)

-#define TPM_TAG_NV_DATA_SENSITIVE      ((UINT16)0x0019)

-#define TPM_TAG_DELEGATIONS            ((UINT16)0x001a)

-#define TPM_TAG_DELEGATE_PUBLIC        ((UINT16)0x001b)

-#define TPM_TAG_DELEGATE_TABLE_ROW     ((UINT16)0x001c)

-#define TPM_TAG_TRANSPORT_AUTH         ((UINT16)0x001d)

-#define TPM_TAG_TRANSPORT_PUBLIC       ((UINT16)0x001e)

-#define TPM_TAG_PERMANENT_FLAGS        ((UINT16)0x001f)

-#define TPM_TAG_STCLEAR_FLAGS          ((UINT16)0x0020)

-#define TPM_TAG_STANY_FLAGS            ((UINT16)0x0021)

-#define TPM_TAG_PERMANENT_DATA         ((UINT16)0x0022)

-#define TPM_TAG_STCLEAR_DATA           ((UINT16)0x0023)

-#define TPM_TAG_STANY_DATA             ((UINT16)0x0024)

-#define TPM_TAG_FAMILY_TABLE_ENTRY     ((UINT16)0x0025)

-#define TPM_TAG_DELEGATE_SENSITIVE     ((UINT16)0x0026)

-#define TPM_TAG_DELG_KEY_BLOB          ((UINT16)0x0027)

-#define TPM_TAG_KEY12                  ((UINT16)0x0028)

-#define TPM_TAG_CERTIFY_INFO2          ((UINT16)0x0029)

-#define TPM_TAG_DELEGATE_OWNER_BLOB    ((UINT16)0x002a)

-#define TPM_TAG_EK_BLOB_ACTIVATE       ((UINT16)0x002b)

-#define TPM_TAG_DAA_BLOB               ((UINT16)0x002c)

-#define TPM_TAG_DAA_CONTEXT            ((UINT16)0x002d)

-#define TPM_TAG_DAA_ENFORCE            ((UINT16)0x002e)

-#define TPM_TAG_DAA_ISSUER             ((UINT16)0x002f)

-#define TPM_TAG_CAP_VERSION_INFO       ((UINT16)0x0030)

-#define TPM_TAG_DAA_SENSITIVE          ((UINT16)0x0031)

-#define TPM_TAG_DAA_TPM                ((UINT16)0x0032)

-#define TPM_TAG_CMK_MIGAUTH            ((UINT16)0x0033)

-#define TPM_TAG_CMK_SIGTICKET          ((UINT16)0x0034)

-#define TPM_TAG_CMK_MA_APPROVAL        ((UINT16)0x0035)

-#define TPM_TAG_QUOTE_INFO2            ((UINT16)0x0036)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 4: Types

-typedef UINT32 TPM_RESOURCE_TYPE;

-#define TPM_RT_KEY                     ((UINT32)0x00000001)

-#define TPM_RT_AUTH                    ((UINT32)0x00000002)

-#define TPM_RT_HASH                    ((UINT32)0x00000003)

-#define TPM_RT_TRANS                   ((UINT32)0x00000004)

-#define TPM_RT_CONTEXT                 ((UINT32)0x00000005)

-#define TPM_RT_COUNTER                 ((UINT32)0x00000006)

-#define TPM_RT_DELEGATE                ((UINT32)0x00000007)

-#define TPM_RT_DAA_TPM                 ((UINT32)0x00000008)

-#define TPM_RT_DAA_V0                  ((UINT32)0x00000009)

-#define TPM_RT_DAA_V1                  ((UINT32)0x0000000a)

-

-

-typedef BYTE TPM_PAYLOAD_TYPE;                              /* 1.1b */

-#define TPM_PT_ASYM                    ((BYTE)0x01)         /* 1.1b */

-#define TPM_PT_BIND                    ((BYTE)0x02)         /* 1.1b */

-#define TPM_PT_MIGRATE                 ((BYTE)0x03)         /* 1.1b */

-#define TPM_PT_MAINT                   ((BYTE)0x04)         /* 1.1b */

-#define TPM_PT_SEAL                    ((BYTE)0x05)         /* 1.1b */

-#define TPM_PT_MIGRATE_RESTRICTED      ((BYTE)0x06)

-#define TPM_PT_MIGRATE_EXTERNAL        ((BYTE)0x07)

-#define TPM_PT_CMK_MIGRATE             ((BYTE)0x08)

-

-

-typedef UINT16 TPM_ENTITY_TYPE;                             /* 1.1b */

-#define TPM_ET_KEYHANDLE               ((UINT16)0x0001)     /* 1.1b */

-#define TPM_ET_OWNER                   ((UINT16)0x0002)     /* 1.1b */

-#define TPM_ET_DATA                    ((UINT16)0x0003)     /* 1.1b */

-#define TPM_ET_SRK                     ((UINT16)0x0004)     /* 1.1b */

-#define TPM_ET_KEY                     ((UINT16)0x0005)     /* 1.1b */

-#define TPM_ET_REVOKE                  ((UINT16)0x0006)

-#define TPM_ET_DEL_OWNER_BLOB          ((UINT16)0x0007)

-#define TPM_ET_DEL_ROW                 ((UINT16)0x0008)

-#define TPM_ET_DEL_KEY_BLOB            ((UINT16)0x0009)

-#define TPM_ET_COUNTER                 ((UINT16)0x000a)

-#define TPM_ET_NV                      ((UINT16)0x000b)

-#define TPM_ET_RESERVED_HANDLE         ((UINT16)0x0040)

-

-/* The following values may be ORed into the MSB of the TPM_ENTITY_TYPE

- * to indicate particular encryption scheme

- */

-#define TPM_ET_XOR                     ((BYTE)0x00)

-#define TPM_ET_AES                     ((BYTE)0x06)

-

-typedef UINT32 TPM_KEY_HANDLE;                              /* 1.1b */

-#define TPM_KH_SRK                     ((UINT32)0x40000000)

-#define TPM_KH_OWNER                   ((UINT32)0x40000001)

-#define TPM_KH_REVOKE                  ((UINT32)0x40000002)

-#define TPM_KH_TRANSPORT               ((UINT32)0x40000003)

-#define TPM_KH_OPERATOR                ((UINT32)0x40000004)

-#define TPM_KH_ADMIN                   ((UINT32)0x40000005)

-#define TPM_KH_EK                      ((UINT32)0x40000006)

-/* 1.1b used different names, but the same values */

-#define TPM_KEYHND_SRK                 (TPM_KH_SRK)        /* 1.1b */

-#define TPM_KEYHND_OWNER               (TPM_KH_OWNER)      /* 1.1b */

-

-

-typedef UINT16 TPM_STARTUP_TYPE;                            /* 1.1b */

-#define TPM_ST_CLEAR                   ((UINT16)0x0001)     /* 1.1b */

-#define TPM_ST_STATE                   ((UINT16)0x0002)     /* 1.1b */

-#define TPM_ST_DEACTIVATED             ((UINT16)0x0003)     /* 1.1b */

-

-

-//typedef UINT32 TPM_STARTUP_EFFECTS;

-// 32-bit mask, see spec for meaning. Names not currently defined

-

-typedef UINT16 TPM_PROTOCOL_ID;                             /* 1.1b */

-#define TPM_PID_OIAP                   ((UINT16)0x0001)     /* 1.1b */

-#define TPM_PID_OSAP                   ((UINT16)0x0002)     /* 1.1b */

-#define TPM_PID_ADIP                   ((UINT16)0x0003)     /* 1.1b */

-#define TPM_PID_ADCP                   ((UINT16)0x0004)     /* 1.1b */

-#define TPM_PID_OWNER                  ((UINT16)0x0005)     /* 1.1b */

-#define TPM_PID_DSAP                   ((UINT16)0x0006)

-#define TPM_PID_TRANSPORT              ((UINT16)0x0007)

-

-

-typedef UINT32 TPM_ALGORITHM_ID;                            /* 1.1b */

-#define TPM_ALG_RSA                    ((UINT32)0x00000001) /* 1.1b */

-#define TPM_ALG_DES                    ((UINT32)0x00000002) /* 1.1b */

-#define TPM_ALG_3DES                   ((UINT32)0x00000003) /* 1.1b */

-#define TPM_ALG_SHA                    ((UINT32)0x00000004) /* 1.1b */

-#define TPM_ALG_HMAC                   ((UINT32)0x00000005) /* 1.1b */

-#define TPM_ALG_AES                    ((UINT32)0x00000006) /* 1.1b */

-#define TPM_ALG_AES128                 (TPM_ALG_AES)

-#define TPM_ALG_MGF1                   ((UINT32)0x00000007)

-#define TPM_ALG_AES192                 ((UINT32)0x00000008)

-#define TPM_ALG_AES256                 ((UINT32)0x00000009)

-#define TPM_ALG_XOR                    ((UINT32)0x0000000a)

-

-

-typedef UINT16 TPM_PHYSICAL_PRESENCE;                        /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_LOCK          ((UINT16)0x0004) /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_PRESENT       ((UINT16)0x0008) /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_NOTPRESENT    ((UINT16)0x0010) /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_CMD_ENABLE    ((UINT16)0x0020) /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_HW_ENABLE     ((UINT16)0x0040) /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK ((UINT16)0x0080) /* 1.1b */

-#define TPM_PHYSICAL_PRESENCE_CMD_DISABLE   ((UINT16)0x0100)

-#define TPM_PHYSICAL_PRESENCE_HW_DISABLE    ((UINT16)0x0200)

-

-

-typedef UINT16 TPM_MIGRATE_SCHEME;                          /* 1.1b */

-#define TPM_MS_MIGRATE                   ((UINT16)0x0001)   /* 1.1b */

-#define TPM_MS_REWRAP                    ((UINT16)0x0002)   /* 1.1b */

-#define TPM_MS_MAINT                     ((UINT16)0x0003)   /* 1.1b */

-#define TPM_MS_RESTRICT_MIGRATE          ((UINT16)0x0004)

-#define TPM_MS_RESTRICT_APPROVE_DOUBLE   ((UINT16)0x0005)

-#define TPM_MS_RESTRICT_MIGRATE_EXTERNAL ((UINT16)0x0006)

-

-

-typedef UINT16 TPM_EK_TYPE;

-#define TPM_EK_TYPE_ACTIVATE           ((UINT16)0x0001)

-#define TPM_EK_TYPE_AUTH               ((UINT16)0x0002)

-

-

-typedef UINT16 TPM_PLATFORM_SPECIFIC;

-#define TPM_PS_PC_11                   ((UINT16)0x0001)

-#define TPM_PS_PC_12                   ((UINT16)0x0002)

-#define TPM_PS_PDA_12                  ((UINT16)0x0003)

-#define TPM_PS_Server_12               ((UINT16)0x0004)

-#define TPM_PS_Mobile_12               ((UINT16)0x0005)

-

-//-------------------------------------------------------------------

-// Part 2, section 5: Basic Structures

-

-typedef struct tdTPM_STRUCT_VER

-{

-    BYTE   major;

-    BYTE   minor;

-    BYTE   revMajor;

-    BYTE   revMinor;

-} TPM_STRUCT_VER;

-

-typedef struct tdTPM_VERSION_BYTE

-{

-    // This needs to be made compiler-independent.

-    int leastSigVer : 4; // least significant 4 bits

-    int mostSigVer  : 4; // most significant 4 bits

-} TPM_VERSION_BYTE;

-

-typedef struct tdTPM_VERSION

-{

-    BYTE   major;      // Should really be a TPM_VERSION_BYTE

-    BYTE   minor;      // Should really be a TPM_VERSION_BYTE

-    BYTE   revMajor;

-    BYTE   revMinor;

-} TPM_VERSION;

-

-

-// Put this in the right place:

-// byte size definition for 160 bit SHA1 hash value

-#define TPM_SHA1_160_HASH_LEN    0x14

-#define TPM_SHA1BASED_NONCE_LEN  TPM_SHA1_160_HASH_LEN

-

-typedef struct tdTPM_DIGEST

-{

-    BYTE  digest[TPM_SHA1_160_HASH_LEN];

-} TPM_DIGEST;

-

-typedef TPM_DIGEST TPM_COMPOSITE_HASH;

-typedef TPM_DIGEST TPM_DIRVALUE;

-typedef TPM_DIGEST TPM_HMAC;

-typedef TPM_DIGEST TPM_PCRVALUE;

-typedef TPM_DIGEST TPM_AUDITDIGEST;

-typedef TPM_DIGEST TPM_DAA_TPM_SEED;

-typedef TPM_DIGEST TPM_DAA_CONTEXT_SEED;

-

-

-typedef struct tdTPM_NONCE                                  /* 1.1b */

-{

-    BYTE  nonce[TPM_SHA1BASED_NONCE_LEN];

-} TPM_NONCE;

-

-

-typedef struct tdTPM_AUTHDATA                               /* 1.1b */

-{

-    BYTE  authdata[TPM_SHA1_160_HASH_LEN];

-} TPM_AUTHDATA;

-

-typedef TPM_AUTHDATA TPM_SECRET;

-typedef TPM_AUTHDATA TPM_ENCAUTH;

-

-

-typedef struct tdTPM_KEY_HANDLE_LIST                        /* 1.1b */

-{

-    UINT16              loaded;

-    SIZEIS(loaded)

-        TPM_KEY_HANDLE *handle;

-} TPM_KEY_HANDLE_LIST;

-

-

-//-------------------------------------------------------------------

-// Part 2, section 5.8: Key usage values

-

-typedef UINT16 TPM_KEY_USAGE;                               /* 1.1b */

-#define TPM_KEY_SIGNING                ((UINT16)0x0010)     /* 1.1b */

-#define TPM_KEY_STORAGE                ((UINT16)0x0011)     /* 1.1b */

-#define TPM_KEY_IDENTITY               ((UINT16)0x0012)     /* 1.1b */

-#define TPM_KEY_AUTHCHANGE             ((UINT16)0x0013)     /* 1.1b */

-#define TPM_KEY_BIND                   ((UINT16)0x0014)     /* 1.1b */

-#define TPM_KEY_LEGACY                 ((UINT16)0x0015)     /* 1.1b */

-#define TPM_KEY_MIGRATE                ((UINT16)0x0016)

-

-typedef UINT16 TPM_SIG_SCHEME;                              /* 1.1b */

-#define TPM_SS_NONE                    ((UINT16)0x0001)     /* 1.1b */

-#define TPM_SS_RSASSAPKCS1v15_SHA1     ((UINT16)0x0002)     /* 1.1b */

-#define TPM_SS_RSASSAPKCS1v15_DER      ((UINT16)0x0003)     /* 1.1b */

-#define TPM_SS_RSASSAPKCS1v15_INFO     ((UINT16)0x0004)

-

-typedef UINT16 TPM_ENC_SCHEME;                              /* 1.1b */

-#define TPM_ES_NONE                    ((UINT16)0x0001)     /* 1.1b */

-#define TPM_ES_RSAESPKCSv15            ((UINT16)0x0002)     /* 1.1b */

-#define TPM_ES_RSAESOAEP_SHA1_MGF1     ((UINT16)0x0003)     /* 1.1b */

-#define TPM_ES_SYM_CNT                 ((UINT16)0x0004)

-#define TPM_ES_SYM_OFB                 ((UINT16)0x0005)

-#define TPM_ES_SYM_CBC_PKCS5PAD        ((UINT16)0x00ff)

-

-//-------------------------------------------------------------------

-// Part 2, section 5.9: TPM_AUTH_DATA_USAGE values

-

-typedef BYTE TPM_AUTH_DATA_USAGE;                           /* 1.1b */

-#define TPM_AUTH_NEVER                 ((BYTE)0x00)         /* 1.1b */

-#define TPM_AUTH_ALWAYS                ((BYTE)0x01)         /* 1.1b */

-#define TPM_AUTH_PRIV_USE_ONLY         ((BYTE)0x11)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 5.10: TPM_KEY_FLAGS flags

-

-typedef UINT32 TPM_KEY_FLAGS;                               /* 1.1b */

-#define TPM_REDIRECTION                ((UINT32)0x00000001) /* 1.1b */

-#define TPM_MIGRATABLE                 ((UINT32)0x00000002) /* 1.1b */

-#define TPM_VOLATILE                   ((UINT32)0x00000004) /* 1.1b */

-#define TPM_PCRIGNOREDONREAD           ((UINT32)0x00000008)

-#define TPM_MIGRATEAUTHORITY           ((UINT32)0x00000010)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE

-

-typedef struct tdTPM_CHANGEAUTH_VALIDATE

-{

-    TPM_SECRET newAuthSecret;

-    TPM_NONCE  n1;

-} TPM_CHANGEAUTH_VALIDATE;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH

-// declared after section 10 to catch declaration of TPM_PUBKEY 

-

-//-------------------------------------------------------------------

-// Part 2, section 5.13: TPM_COUNTER_VALUE;

-

-typedef UINT32 TPM_ACTUAL_COUNT;

-typedef struct tdTPM_COUNTER_VALUE

-{

-    TPM_STRUCTURE_TAG tag;

-    BYTE              label[4];

-    TPM_ACTUAL_COUNT  counter;

-} TPM_COUNTER_VALUE;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.14: TPM_SIGN_INFO structure

-

-typedef struct tdTPM_SIGN_INFO

-{

-    TPM_STRUCTURE_TAG tag;

-    BYTE              fixed[4];

-    TPM_NONCE         replay;

-    UINT32            dataLen;

-    SIZEIS(dataLen)

-        BYTE         *data;

-} TPM_SIGN_INFO;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.15: TPM_MSA_COMPOSITE

-

-typedef struct tdTPM_MSA_COMPOSITE

-{

-    UINT32          MSAlist;

-    SIZEIS(MSAlist)

-        TPM_DIGEST *migAuthDigest;

-} TPM_MSA_COMPOSITE;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.16: TPM_CMK_AUTH

-

-typedef struct tdTPM_CMK_AUTH

-{

-    TPM_DIGEST migrationAuthorityDigest;

-    TPM_DIGEST destinationKeyDigest;

-    TPM_DIGEST sourceKeyDigest;

-} TPM_CMK_AUTH;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.17: TPM_CMK_DELEGATE

-

-typedef UINT32 TPM_CMK_DELEGATE;

-#define TPM_CMK_DELEGATE_SIGNING       (((UINT32)1)<<31)

-#define TPM_CMK_DELEGATE_STORAGE       (((UINT32)1)<<30)

-#define TPM_CMK_DELEGATE_BIND          (((UINT32)1)<<29)

-#define TPM_CMK_DELEGATE_LEGACY        (((UINT32)1)<<28)

-#define TPM_CMK_DELEGATE_MIGRATE       (((UINT32)1)<<27)

-

-//-------------------------------------------------------------------

-// Part 2, section 5.18: TPM_SELECT_SIZE

-

-typedef struct tdTPM_SELECT_SIZE

-{

-    BYTE   major;

-    BYTE   minor;

-    UINT16 reqSize;

-} TPM_SELECT_SIZE;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.19: TPM_CMK_MIGAUTH

-

-typedef struct tdTPM_CMK_MIGAUTH

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        msaDigest;

-    TPM_DIGEST        pubKeyDigest;

-} TPM_CMK_MIGAUTH;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.20: TPM_CMK_SIGTICKET

-

-typedef struct tdTPM_CMK_SIGTICKET

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        verKeyDigest;

-    TPM_DIGEST        signedData;

-} TPM_CMK_SIGTICKET;

-

-//-------------------------------------------------------------------

-// Part 2, section 5.21: TPM_CMK_MA_APPROVAL

-

-typedef struct tdTPM_CMK_MA_APPROVAL

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        migrationAuthorityDigest;

-} TPM_CMK_MA_APPROVAL;

-

-

-//-------------------------------------------------------------------

-// Part 2, section 6: Command Tags

-

-typedef UINT16 TPM_TAG;                                     /* 1.1b */

-#define TPM_TAG_RQU_COMMAND            ((UINT16)0x00c1)

-#define TPM_TAG_RQU_AUTH1_COMMAND      ((UINT16)0x00c2)

-#define TPM_TAG_RQU_AUTH2_COMMAND      ((UINT16)0x00c3)

-#define TPM_TAG_RSP_COMMAND            ((UINT16)0x00c4)

-#define TPM_TAG_RSP_AUTH1_COMMAND      ((UINT16)0x00c5)

-#define TPM_TAG_RSP_AUTH2_COMMAND      ((UINT16)0x00c6)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 7.1: TPM_PERMANENT_FLAGS

-

-typedef struct tdTPM_PERMANENT_FLAGS

-{

-    TPM_STRUCTURE_TAG tag;

-    TSS_BOOL disable;

-    TSS_BOOL ownership;

-    TSS_BOOL deactivated;

-    TSS_BOOL readPubek;

-    TSS_BOOL disableOwnerClear;

-    TSS_BOOL allowMaintenance;

-    TSS_BOOL physicalPresenceLifetimeLock;

-    TSS_BOOL physicalPresenceHWEnable;

-    TSS_BOOL physicalPresenceCMDEnable;

-    TSS_BOOL CEKPUsed;

-    TSS_BOOL TPMpost;

-    TSS_BOOL TPMpostLock;

-    TSS_BOOL FIPS;

-    TSS_BOOL Operator;

-    TSS_BOOL enableRevokeEK;

-    TSS_BOOL nvLocked;

-    TSS_BOOL readSRKPub;

-    TSS_BOOL tpmEstablished;

-    TSS_BOOL maintenanceDone;

-} TPM_PERMANENT_FLAGS;

-

-#define TPM_PF_DISABLE                      ((UINT32)0x00000001)

-#define TPM_PF_OWNERSHIP                    ((UINT32)0x00000002)

-#define TPM_PF_DEACTIVATED                  ((UINT32)0x00000003)

-#define TPM_PF_READPUBEK                    ((UINT32)0x00000004)

-#define TPM_PF_DISABLEOWNERCLEAR            ((UINT32)0x00000005)

-#define TPM_PF_ALLOWMAINTENANCE             ((UINT32)0x00000006)

-#define TPM_PF_PHYSICALPRESENCELIFETIMELOCK ((UINT32)0x00000007)

-#define TPM_PF_PHYSICALPRESENCEHWENABLE     ((UINT32)0x00000008)

-#define TPM_PF_PHYSICALPRESENCECMDENABLE    ((UINT32)0x00000009)

-#define TPM_PF_CEKPUSED                     ((UINT32)0x0000000A)

-#define TPM_PF_TPMPOST                      ((UINT32)0x0000000B)

-#define TPM_PF_TPMPOSTLOCK                  ((UINT32)0x0000000C)

-#define TPM_PF_FIPS                         ((UINT32)0x0000000D)

-#define TPM_PF_OPERATOR                     ((UINT32)0x0000000E)

-#define TPM_PF_ENABLEREVOKEEK               ((UINT32)0x0000000F)

-#define TPM_PF_NV_LOCKED                    ((UINT32)0x00000010)

-#define TPM_PF_READSRKPUB                   ((UINT32)0x00000011)

-#define TPM_PF_RESETESTABLISHMENTBIT        ((UINT32)0x00000012)

-#define TPM_PF_MAINTENANCEDONE              ((UINT32)0x00000013)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 7.2: TPM_STCLEAR_FLAGS

-

-typedef struct tdTPM_STCLEAR_FLAGS

-{

-    TPM_STRUCTURE_TAG tag;

-    TSS_BOOL          deactivated;

-    TSS_BOOL          disableForceClear;

-    TSS_BOOL          physicalPresence;

-    TSS_BOOL          physicalPresenceLock;

-    TSS_BOOL          bGlobalLock;

-} TPM_STCLEAR_FLAGS;

-

-#define TPM_SF_DEACTIVATED             ((UINT32)0x00000001)

-#define TPM_SF_DISABLEFORCECLEAR       ((UINT32)0x00000002)

-#define TPM_SF_PHYSICALPRESENCE        ((UINT32)0x00000003)

-#define TPM_SF_PHYSICALPRESENCELOCK    ((UINT32)0x00000004)

-#define TPM_SF_GLOBALLOCK              ((UINT32)0x00000005)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 7.3: TPM_STANY_FLAGS

-

-typedef struct tdTPM_STANY_FLAGS

-{

-    TPM_STRUCTURE_TAG      tag;

-    TSS_BOOL               postInitialise;

-    TPM_MODIFIER_INDICATOR localityModifier;

-    TSS_BOOL               transportExclusive;

-    TSS_BOOL               TOSPresent;

-} TPM_STANY_FLAGS;

-

-#define TPM_AF_POSTINITIALIZE          ((UINT32)0x00000001)

-#define TPM_AF_LOCALITYMODIFIER        ((UINT32)0x00000002)

-#define TPM_AF_TRANSPORTEXCLUSIVE      ((UINT32)0x00000003)

-#define TPM_AF_TOSPRESENT              ((UINT32)0x00000004)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 7.4: TPM_PERMANENT_DATA

-// available inside TPM only

-//

-//typedef struct tdTPM_PERMANENT_DATA

-//{

-//    TPM_STRUCTURE_TAG  tag;

-//    BYTE               revMajor;

-//    BYTE               revMinor;

-//    TPM_NONCE          tpmProof;

-//    TPM_NONCE          ekReset;

-//    TPM_SECRET         ownerAuth;

-//    TPM_SECRET         operatorAuth;

-//    TPM_DIRVALUE       authDIR[1];

-//    TPM_PUBKEY         manuMaintPub;

-//    TPM_KEY            endorsementKey;

-//    TPM_KEY            srk;

-//    TPM_KEY            contextKey;

-//    TPM_KEY            delegateKey;

-//    TPM_COUNTER_VALUE  auditMonotonicCounter;

-//    TPM_COUNTER_VALUE  monitonicCounter[TPM_MIN_COUNTERS];

-//    TPM_PCR_ATTRIBUTES pcrAttrib[TPM_NUM_PCR];

-//    BYTE               ordinalAuditStatus[];

-//    BYTE              *rngState;

-//    TPM_FAMILY_TABLE   familyTable;

-//    TPM_DELEGATE_TABLE delegateTable;

-//    UINT32             maxNVBufSize;

-//    UINT32             lastFamilyID;

-//    UINT32             noOwnerNVWrite;

-//    TPM_CMK_DELEGATE   restrictDelegate;

-//    TPM_DAA_TPM_SEED   tpmDAASeed;

-//} TPM_PERMANENT_DATA;

-

-

-//-------------------------------------------------------------------

-// Part 2, section 7.5: TPM_STCLEAR_DATA

-// available inside TPM only

-//

-//typedef struct tdTPM_STCLEAR_DATA

-//{

-//    TPM_STRUCTURE_TAG tag;

-//    TPM_NONCE         contextNonceKey;

-//    TPM_COUNT_ID      countID;

-//    UINT32            ownerReference;

-//    TPM_BOOL          disableResetLock;

-//} TPM_STCLEAR_DATA;

-    

-

-

-//-------------------------------------------------------------------

-// Part 2, section 7.5: TPM_STANY_DATA

-// available inside TPM only

-//

-//typedef struct tdTPM_STANY_DATA

-//{

-//    TPM_STRUCTURE_TAG tag;

-//    TPM_NONCE         contextNonceSession;

-//    TPM_DIGEST        auditDigest;

-//    TPM_CURRENT_TICKS currentTicks;

-//    UINT32            contextCount;

-//    UINT32            contextList[TPM_MIN_SESSION_LIST];

-//    TPM_SESSION_DATA  sessions[TPM_MIN_SESSIONS];

-//} TPM_STANY_DATA;

-    

-

-

-//-------------------------------------------------------------------

-// Part 2, section 8: PCR Structures

-

-typedef BYTE  TPM_LOCALITY_SELECTION;

-#define TPM_LOC_FOUR                   (((UINT32)1)<<4)

-#define TPM_LOC_THREE                  (((UINT32)1)<<3)

-#define TPM_LOC_TWO                    (((UINT32)1)<<2)

-#define TPM_LOC_ONE                    (((UINT32)1)<<1)

-#define TPM_LOC_ZERO                   (((UINT32)1)<<0)

-

-typedef struct tdTPM_PCR_SELECTION                          /* 1.1b */

-{ 

-    UINT16    sizeOfSelect;

-    SIZEIS(sizeOfSelect)

-        BYTE *pcrSelect;  

-} TPM_PCR_SELECTION;

-

-typedef struct tdTPM_PCR_COMPOSITE                          /* 1.1b */

-{ 

-    TPM_PCR_SELECTION select;

-    UINT32            valueSize;

-    SIZEIS(valueSize)

-        TPM_PCRVALUE *pcrValue; 

-} TPM_PCR_COMPOSITE;

-

-typedef struct tdTPM_PCR_INFO                               /* 1.1b */

-{

-    TPM_PCR_SELECTION  pcrSelection;

-    TPM_COMPOSITE_HASH digestAtRelease;

-    TPM_COMPOSITE_HASH digestAtCreation;

-}  TPM_PCR_INFO;

-

-typedef struct tdTPM_PCR_INFO_LONG

-{

-    TPM_STRUCTURE_TAG      tag;

-    TPM_LOCALITY_SELECTION localityAtCreation;

-    TPM_LOCALITY_SELECTION localityAtRelease;

-    TPM_PCR_SELECTION      creationPCRSelection;

-    TPM_PCR_SELECTION      releasePCRSelection;

-    TPM_COMPOSITE_HASH     digestAtCreation;

-    TPM_COMPOSITE_HASH     digestAtRelease;

-}  TPM_PCR_INFO_LONG;

-

-typedef struct tdTPM_PCR_INFO_SHORT

-{

-    TPM_PCR_SELECTION      pcrSelection;

-    TPM_LOCALITY_SELECTION localityAtRelease;

-    TPM_COMPOSITE_HASH     digestAtRelease;

-}  TPM_PCR_INFO_SHORT;

-

-typedef struct tdTPM_PCR_ATTRIBUTES

-{

-    BYTE                   pcrReset;

-    TPM_LOCALITY_SELECTION pcrExtendLocal;

-    TPM_LOCALITY_SELECTION pcrResetLocal;

-} TPM_PCR_ATTRIBUTES;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 9:

-

-typedef struct tdTPM_STORED_DATA                            /* 1.1b */

-{

-    TPM_STRUCT_VER ver;

-    UINT32         sealInfoSize;

-    SIZEIS(sealInfoSize)

-        BYTE      *sealInfo;

-    UINT32         encDataSize;

-    SIZEIS(encDataSize)

-        BYTE      *encData;

-} TPM_STORED_DATA;

-

-typedef struct tdTPM_STORED_DATA12

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_ENTITY_TYPE   et;

-    UINT32            sealInfoSize;

-    SIZEIS(sealInfoSize)

-        BYTE         *sealInfo;

-    UINT32            encDataSize;

-    SIZEIS(encDataSize)

-        BYTE         *encData;

-} TPM_STORED_DATA12;

-

-typedef struct tdTPM_SEALED_DATA                            /* 1.1b */

-{ 

-    TPM_PAYLOAD_TYPE  payload;

-    TPM_SECRET        authData;

-    TPM_NONCE         tpmProof;

-    TPM_DIGEST        storedDigest;

-    UINT32            dataSize;

-    SIZEIS(dataSize)

-        BYTE         *data;

-} TPM_SEALED_DATA;

-

-typedef struct tdTPM_SYMMETRIC_KEY                          /* 1.1b */

-{

-    TPM_ALGORITHM_ID  algId;

-    TPM_ENC_SCHEME    encScheme;

-    UINT16            size;

-    SIZEIS(size)

-        BYTE         *data;

-} TPM_SYMMETRIC_KEY;

-

-typedef struct tdTPM_BOUND_DATA

-{

-    TPM_STRUCT_VER   ver;

-    TPM_PAYLOAD_TYPE payload;

-    BYTE            *payloadData; // length is implied

-} TPM_BOUND_DATA;

-

-

-//-------------------------------------------------------------------

-// Part 2, section 10: TPM_KEY complex

-

-typedef struct tdTPM_KEY_PARMS                              /* 1.1b */

-{

-    TPM_ALGORITHM_ID  algorithmID;

-    TPM_ENC_SCHEME    encScheme;

-    TPM_SIG_SCHEME    sigScheme;

-    UINT32            parmSize;

-    SIZEIS(parmSize)

-        BYTE         *parms;

-} TPM_KEY_PARMS;

-

-typedef struct tdTPM_RSA_KEY_PARMS                          /* 1.1b */

-{  

-    UINT32    keyLength; 

-    UINT32    numPrimes; 

-    UINT32    exponentSize;

-    SIZEIS(exponentSize)

-        BYTE *exponent;

-} TPM_RSA_KEY_PARMS;

-

-typedef struct tdTPM_SYMMETRIC_KEY_PARMS

-{

-    UINT32 keyLength;

-    UINT32 blockSize;

-    UINT32 ivSize;

-    SIZEIS(ivSize)

-        BYTE *IV;

-} TPM_SYMMETRIC_KEY_PARMS;

-

-typedef struct tdTPM_STORE_PUBKEY                           /* 1.1b */

-{

-    UINT32    keyLength;

-    SIZEIS(keyLength)

-        BYTE *key;

-} TPM_STORE_PUBKEY;

-

-typedef struct tdTPM_PUBKEY                                 /* 1.1b */

-{

-    TPM_KEY_PARMS     algorithmParms;

-    TPM_STORE_PUBKEY  pubKey;

-} TPM_PUBKEY;

-

-typedef struct tdTPM_STORE_PRIVKEY                          /* 1.1b */

-{

-    UINT32    keyLength;

-    SIZEIS(keyLength)

-        BYTE *key;   

-} TPM_STORE_PRIVKEY;

-

-typedef struct tdTPM_STORE_ASYMKEY                          /* 1.1b */

-{         

-    TPM_PAYLOAD_TYPE  payload;   

-    TPM_SECRET        usageAuth;    

-    TPM_SECRET        migrationAuth;  

-    TPM_DIGEST        pubDataDigest;   

-    TPM_STORE_PRIVKEY privKey;   

-} TPM_STORE_ASYMKEY;

-

-typedef struct tdTPM_KEY                                    /* 1.1b */

-{

-    TPM_STRUCT_VER      ver;

-    TPM_KEY_USAGE       keyUsage;

-    TPM_KEY_FLAGS       keyFlags;

-    TPM_AUTH_DATA_USAGE authDataUsage;

-    TPM_KEY_PARMS       algorithmParms; 

-    UINT32              PCRInfoSize;

-    SIZEIS(PCRInfoSize)

-        BYTE           *PCRInfo;

-    TPM_STORE_PUBKEY    pubKey;

-    UINT32              encSize;

-    SIZEIS(encSize)

-        BYTE           *encData; 

-} TPM_KEY;

-

-typedef struct tdTPM_KEY12

-{

-    TPM_STRUCTURE_TAG   tag;

-    UINT16              fill;

-    TPM_KEY_USAGE       keyUsage;

-    TPM_KEY_FLAGS       keyFlags;

-    TPM_AUTH_DATA_USAGE authDataUsage;

-    TPM_KEY_PARMS       algorithmParms;

-    UINT32              PCRInfoSize;

-    SIZEIS(PCRInfoSize)

-       BYTE            *PCRInfo;

-    TPM_STORE_PUBKEY    pubKey;

-    UINT32              encSize;

-    SIZEIS(encSize)

-       BYTE            *encData;

-} TPM_KEY12;

-

-typedef struct tdTPM_MIGRATE_ASYMKEY

-{

-    TPM_PAYLOAD_TYPE payload;

-    TPM_SECRET       usageAuth;

-    TPM_DIGEST       pubDataDigest;

-    UINT32           partPrivKeyLen;

-    SIZEIS(partPrivKeyLen)

-        BYTE        *partPrivKey;

-} TPM_MIGRATE_ASYMKEY;

-

-

-typedef UINT32 TPM_KEY_CONTROL;

-#define TPM_KEY_CONTROL_OWNER_EVICT    ((UINT32)0x00000001)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH

-

-typedef struct tdTPM_MIGRATIONKEYAUTH                       /* 1.1b */

-{

-    TPM_PUBKEY         migrationKey;

-    TPM_MIGRATE_SCHEME migrationScheme;

-    TPM_DIGEST         digest;

-} TPM_MIGRATIONKEYAUTH;

-

-

-//-------------------------------------------------------------------

-// Part 2, section 11: Signed Structures

-

-typedef struct tdTPM_CERTIFY_INFO                           /* 1.1b */

-{

-    TPM_STRUCT_VER      version;

-    TPM_KEY_USAGE       keyUsage;

-    TPM_KEY_FLAGS       keyFlags;

-    TPM_AUTH_DATA_USAGE authDataUsage;

-    TPM_KEY_PARMS       algorithmParms;

-    TPM_DIGEST          pubkeyDigest;

-    TPM_NONCE           data;

-    TPM_BOOL            parentPCRStatus;

-    UINT32              PCRInfoSize;

-    SIZEIS(PCRInfoSize)

-        BYTE           *PCRInfo;

-} TPM_CERTIFY_INFO;

-

-typedef struct tdTPM_CERTIFY_INFO2

-{

-    TPM_STRUCTURE_TAG   tag;

-    BYTE                fill;

-    TPM_PAYLOAD_TYPE    payloadType;

-    TPM_KEY_USAGE       keyUsage;

-    TPM_KEY_FLAGS       keyFlags;

-    TPM_AUTH_DATA_USAGE authDataUsage;

-    TPM_KEY_PARMS       algorithmParms;

-    TPM_DIGEST          pubkeyDigest;

-    TPM_NONCE           data;

-    TPM_BOOL            parentPCRStatus;

-    UINT32              PCRInfoSize;

-    SIZEIS(PCRInfoSize) 

-        BYTE           *PCRInfo;

-    UINT32              migrationAuthoritySize;

-    SIZEIS(migrationAuthoritySize)

-        BYTE           *migrationAuthority;

-} TPM_CERTIFY_INFO2;

-

-typedef struct tdTPM_QUOTE_INFO                             /* 1.1b */

-{

-    TPM_STRUCT_VER     version;

-    BYTE               fixed[4];

-    TPM_COMPOSITE_HASH compositeHash; /* in 1.2 TPM spec, named digestValue */

-    TPM_NONCE          externalData;

-} TPM_QUOTE_INFO;

-

-typedef struct tdTPM_QUOTE_INFO2

-{

-    TPM_STRUCTURE_TAG  tag;

-    BYTE               fixed[4];

-    TPM_NONCE          externalData;

-    TPM_PCR_INFO_SHORT infoShort;

-} TPM_QUOTE_INFO2;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 12: Identity Structures

-

-

-typedef struct tdTPM_EK_BLOB

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_EK_TYPE       ekType;

-    UINT32            blobSize;

-    SIZEIS(blobSize)

-        BYTE         *blob;

-} TPM_EK_BLOB;

-

-typedef struct tdTPM_EK_BLOB_ACTIVATE

-{

-    TPM_STRUCTURE_TAG  tag;

-    TPM_SYMMETRIC_KEY  sessionKey;

-    TPM_DIGEST         idDigest;

-    TPM_PCR_INFO_SHORT pcrInfo;

-} TPM_EK_BLOB_ACTIVATE;

-

-typedef struct tdTPM_EK_BLOB_AUTH

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_SECRET        authValue;

-} TPM_EK_BLOB_AUTH;

-

-

-// TPM_CHOSENID_HASH = SHA(identityLabel || privacyCA)

-typedef TPM_DIGEST TPM_CHOSENID_HASH;

-

-typedef struct tdTPM_IDENTITY_CONTENTS

-{

-    TPM_STRUCT_VER    ver;

-    UINT32            ordinal;

-    TPM_CHOSENID_HASH labelPrivCADigest;

-    TPM_PUBKEY        identityPubKey;

-} TPM_IDENTITY_CONTENTS;

-

-typedef struct tdTPM_IDENTITY_REQ                           /* 1.1b */

-{

-    UINT32         asymSize;

-    UINT32         symSize;

-    TPM_KEY_PARMS  asymAlgorithm;

-    TPM_KEY_PARMS  symAlgorithm;

-    SIZEIS(asymSize)

-        BYTE      *asymBlob;

-    SIZEIS(symSize)

-        BYTE      *symBlob;

-} TPM_IDENTITY_REQ;

-

-typedef struct tdTPM_IDENTITY_PROOF                         /* 1.1b */

-{

-    TPM_STRUCT_VER  ver;

-    UINT32          labelSize;

-    UINT32          identityBindingSize;

-    UINT32          endorsementSize;

-    UINT32          platformSize;

-    UINT32          conformanceSize;

-    TPM_PUBKEY      identityKey;

-    SIZEIS(labelSize)

-      BYTE         *labelArea;

-    SIZEIS(identityBindingSize)

-      BYTE         *identityBinding;

-    SIZEIS(endorsementSize)

-      BYTE         *endorsementCredential;

-    SIZEIS(platformSize)

-      BYTE         *platformCredential;

-    SIZEIS(conformanceSize)

-      BYTE         *conformanceCredential;

-} TPM_IDENTITY_PROOF;

-

-typedef struct tdTPM_ASYM_CA_CONTENTS                       /* 1.1b */

-{

-    TPM_SYMMETRIC_KEY sessionKey;

-    TPM_DIGEST        idDigest;

-} TPM_ASYM_CA_CONTENTS;

-

-typedef struct tdTPM_SYM_CA_ATTESTATION

-{

-    UINT32         credSize;

-    TPM_KEY_PARMS  algorithm;

-    SIZEIS(credSize)

-        BYTE      *credential;

-} TPM_SYM_CA_ATTESTATION;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 15: Tick Structures

-// Placed here out of order because definitions are used in section 13.

-

-typedef struct tdTPM_CURRENT_TICKS

-{

-    TPM_STRUCTURE_TAG tag;

-    UINT64            currentTicks;

-    UINT16            tickRate;

-    TPM_NONCE         tickNonce;

-} TPM_CURRENT_TICKS;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 13: Transport structures

-

-typedef UINT32 TPM_TRANSPORT_ATTRIBUTES;

-#define TPM_TRANSPORT_ENCRYPT          ((UINT32)0x00000001)

-#define TPM_TRANSPORT_LOG              ((UINT32)0x00000002)

-#define TPM_TRANSPORT_EXCLUSIVE        ((UINT32)0x00000004)

-

-typedef struct tdTPM_TRANSPORT_PUBLIC

-{

-    TPM_STRUCTURE_TAG        tag;

-    TPM_TRANSPORT_ATTRIBUTES transAttributes;

-    TPM_ALGORITHM_ID         algId;

-    TPM_ENC_SCHEME           encScheme;

-} TPM_TRANSPORT_PUBLIC;

-

-typedef struct tdTPM_TRANSPORT_INTERNAL

-{

-    TPM_STRUCTURE_TAG    tag;

-    TPM_AUTHDATA         authData;

-    TPM_TRANSPORT_PUBLIC transPublic;

-    TPM_TRANSHANDLE      transHandle;

-    TPM_NONCE            transNonceEven;

-    TPM_DIGEST           transDigest;

-} TPM_TRANSPORT_INTERNAL;

-

-typedef struct tdTPM_TRANSPORT_LOG_IN

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        parameters;

-    TPM_DIGEST        pubKeyHash;

-} TPM_TRANSPORT_LOG_IN;

-

-typedef struct tdTPM_TRANSPORT_LOG_OUT

-{

-    TPM_STRUCTURE_TAG      tag;

-    TPM_CURRENT_TICKS      currentTicks;

-    TPM_DIGEST             parameters;

-    TPM_MODIFIER_INDICATOR locality;

-} TPM_TRANSPORT_LOG_OUT;

-

-typedef struct tdTPM_TRANSPORT_AUTH

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_AUTHDATA      authData;

-} TPM_TRANSPORT_AUTH;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 14: Audit Structures

-

-typedef struct tdTPM_AUDIT_EVENT_IN

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        inputParms;

-    TPM_COUNTER_VALUE auditCount;

-} TPM_AUDIT_EVENT_IN;

-

-typedef struct tdTPM_AUDIT_EVENT_OUT

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_COMMAND_CODE  ordinal;

-    TPM_DIGEST        outputParms;

-    TPM_COUNTER_VALUE auditCount;

-    TPM_RESULT        returnCode;

-} TPM_AUDIT_EVENT_OUT;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 16: Return codes

-

-#include <tpm_error.h>

-

-

-//-------------------------------------------------------------------

-// Part 2, section 17: Ordinals

-

-#include <tpm_ordinal.h>

-

-//-------------------------------------------------------------------

-// Part 2, section 18: Context structures

-

-typedef struct tdTPM_CONTEXT_BLOB

-{

-    TPM_STRUCTURE_TAG  tag;

-    TPM_RESOURCE_TYPE  resourceType;

-    TPM_HANDLE         handle;

-    BYTE               label[16];

-    UINT32             contextCount;

-    TPM_DIGEST         integrityDigest;

-    UINT32             additionalSize;

-    SIZEIS(additionalSize)

-        BYTE          *additionalData;

-    UINT32             sensitiveSize;

-    SIZEIS(sensitiveSize)

-        BYTE          *sensitiveData;

-} TPM_CONTEXT_BLOB;

-

-typedef struct tdTPM_CONTEXT_SENSITIVE

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_NONCE         contextNonce;

-    UINT32            internalSize;

-    SIZEIS(internalSize)

-        BYTE         *internalData;

-} TPM_CONTEXT_SENSITIVE;

-

-//-------------------------------------------------------------------

-// Part 2, section 19: NV Structures

-

-typedef UINT32 TPM_NV_INDEX;

-#define TPM_NV_INDEX_LOCK              ((UINT32)0xffffffff)

-#define TPM_NV_INDEX0                  ((UINT32)0x00000000)

-#define TPM_NV_INDEX_DIR               ((UINT32)0x10000001)

-#define TPM_NV_INDEX_EKCert            ((UINT32)0x0000f000)

-#define TPM_NV_INDEX_TPM_CC            ((UINT32)0x0000f001)

-#define TPM_NV_INDEX_PlatformCert      ((UINT32)0x0000f002)

-#define TPM_NV_INDEX_Platform_CC       ((UINT32)0x0000f003)

-// The following define ranges of reserved indices.

-#define TPM_NV_INDEX_TSS_BASE          ((UINT32)0x00011100)

-#define TPM_NV_INDEX_PC_BASE           ((UINT32)0x00011200)

-#define TPM_NV_INDEX_SERVER_BASE       ((UINT32)0x00011300)

-#define TPM_NV_INDEX_MOBILE_BASE       ((UINT32)0x00011400)

-#define TPM_NV_INDEX_PERIPHERAL_BASE   ((UINT32)0x00011500)

-#define TPM_NV_INDEX_GROUP_RESV_BASE   ((UINT32)0x00010000)

-

-

-typedef UINT32 TPM_NV_PER_ATTRIBUTES;

-#define TPM_NV_PER_READ_STCLEAR        (((UINT32)1)<<31)

-#define TPM_NV_PER_AUTHREAD            (((UINT32)1)<<18)

-#define TPM_NV_PER_OWNERREAD           (((UINT32)1)<<17)

-#define TPM_NV_PER_PPREAD              (((UINT32)1)<<16)

-#define TPM_NV_PER_GLOBALLOCK          (((UINT32)1)<<15)

-#define TPM_NV_PER_WRITE_STCLEAR       (((UINT32)1)<<14)

-#define TPM_NV_PER_WRITEDEFINE         (((UINT32)1)<<13)

-#define TPM_NV_PER_WRITEALL            (((UINT32)1)<<12)

-#define TPM_NV_PER_AUTHWRITE           (((UINT32)1)<<2)

-#define TPM_NV_PER_OWNERWRITE          (((UINT32)1)<<1)

-#define TPM_NV_PER_PPWRITE             (((UINT32)1)<<0)

-

-typedef struct tdTPM_NV_ATTRIBUTES

-{

-    TPM_STRUCTURE_TAG     tag;

-    TPM_NV_PER_ATTRIBUTES attributes;

-} TPM_NV_ATTRIBUTES;

-

-

-typedef struct tdTPM_NV_DATA_PUBLIC

-{

-    TPM_STRUCTURE_TAG  tag;

-    TPM_NV_INDEX       nvIndex;

-    TPM_PCR_INFO_SHORT pcrInfoRead;

-    TPM_PCR_INFO_SHORT pcrInfoWrite;

-    TPM_NV_ATTRIBUTES  permission;

-    TPM_BOOL           bReadSTClear;

-    TPM_BOOL           bWriteSTClear;

-    TPM_BOOL           bWriteDefine;

-    UINT32             dataSize;

-} TPM_NV_DATA_PUBLIC;

-

-

-#if 0

-// Internal to TPM:

-typedef struct tdTPM_NV_DATA_SENSITIVE

-{

-    TPM_STRUCTURE_TAG  tag;

-    TPM_NV_DATA_PUBLIC pubInfo;

-    TPM_AUTHDATA       authValue;

-    SIZEIS(pubInfo.dataSize)

-        BYTE          *data;

-} TPM_NV_DATA_SENSITIVE;

-#endif

-

-

-//-------------------------------------------------------------------

-// Part 2, section 20: Delegation

-

-//-------------------------------------------------------------------

-// Part 2, section 20.3: Owner Permissions Settings for per1 bits

-#define TPM_DELEGATE_SetOrdinalAuditStatus          (((UINT32)1)<<30)

-#define TPM_DELEGATE_DirWriteAuth                   (((UINT32)1)<<29)

-#define TPM_DELEGATE_CMK_ApproveMA                  (((UINT32)1)<<28)

-#define TPM_DELEGATE_CMK_CreateTicket               (((UINT32)1)<<26)

-#define TPM_DELEGATE_Delegate_LoadOwnerDelegation   (((UINT32)1)<<24)

-#define TPM_DELEGATE_DAA_Join                       (((UINT32)1)<<23)

-#define TPM_DELEGATE_AuthorizeMigrationKey          (((UINT32)1)<<22)

-#define TPM_DELEGATE_CreateMaintenanceArchive       (((UINT32)1)<<21)

-#define TPM_DELEGATE_LoadMaintenanceArchive         (((UINT32)1)<<20)

-#define TPM_DELEGATE_KillMaintenanceFeature         (((UINT32)1)<<19)

-#define TPM_DELEGATE_OwnerReadInteralPub            (((UINT32)1)<<18)

-#define TPM_DELEGATE_ResetLockValue                 (((UINT32)1)<<17)

-#define TPM_DELEGATE_OwnerClear                     (((UINT32)1)<<16)

-#define TPM_DELEGATE_DisableOwnerClear              (((UINT32)1)<<15)

-#define TPM_DELEGATE_OwnerSetDisable                (((UINT32)1)<<13)

-#define TPM_DELEGATE_SetCapability                  (((UINT32)1)<<12)

-#define TPM_DELEGATE_MakeIdentity                   (((UINT32)1)<<11)

-#define TPM_DELEGATE_ActivateIdentity               (((UINT32)1)<<10)

-#define TPM_DELEGATE_OwnerReadPubek                 (((UINT32)1)<<9)

-#define TPM_DELEGATE_DisablePubekRead               (((UINT32)1)<<8)

-#define TPM_DELEGATE_SetRedirection                 (((UINT32)1)<<7)

-#define TPM_DELEGATE_FieldUpgrade                   (((UINT32)1)<<6)

-#define TPM_DELEGATE_Delegate_UpdateVerification    (((UINT32)1)<<5)

-#define TPM_DELEGATE_CreateCounter                  (((UINT32)1)<<4)

-#define TPM_DELEGATE_ReleaseCounterOwner            (((UINT32)1)<<3)

-#define TPM_DELEGATE_DelegateManage                 (((UINT32)1)<<2)

-#define TPM_DELEGATE_Delegate_CreateOwnerDelegation (((UINT32)1)<<1)

-#define TPM_DELEGATE_DAA_Sign                       (((UINT32)1)<<0)

-

-//-------------------------------------------------------------------

-// Part 2, section 20.3: Key Permissions Settings for per1 bits

-#define TPM_KEY_DELEGATE_CMK_ConvertMigration       (((UINT32)1)<<28)

-#define TPM_KEY_DELEGATE_TickStampBlob              (((UINT32)1)<<27)

-#define TPM_KEY_DELEGATE_ChangeAuthAsymStart        (((UINT32)1)<<26)

-#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish       (((UINT32)1)<<25)

-#define TPM_KEY_DELEGATE_CMK_CreateKey              (((UINT32)1)<<24)

-#define TPM_KEY_DELEGATE_MigrateKey                 (((UINT32)1)<<23)

-#define TPM_KEY_DELEGATE_LoadKey2                   (((UINT32)1)<<22)

-#define TPM_KEY_DELEGATE_EstablishTransport         (((UINT32)1)<<21)

-#define TPM_KEY_DELEGATE_ReleaseTransportSigned     (((UINT32)1)<<20)

-#define TPM_KEY_DELEGATE_Quote2                     (((UINT32)1)<<19)

-#define TPM_KEY_DELEGATE_Sealx                      (((UINT32)1)<<18)

-#define TPM_KEY_DELEGATE_MakeIdentity               (((UINT32)1)<<17)

-#define TPM_KEY_DELEGATE_ActivateIdentity           (((UINT32)1)<<16)

-#define TPM_KEY_DELEGATE_GetAuditDigestSigned       (((UINT32)1)<<15)

-#define TPM_KEY_DELEGATE_Sign                       (((UINT32)1)<<14)

-#define TPM_KEY_DELEGATE_CertifyKey2                (((UINT32)1)<<13)

-#define TPM_KEY_DELEGATE_CertifyKey                 (((UINT32)1)<<12)

-#define TPM_KEY_DELEGATE_CreateWrapKey              (((UINT32)1)<<11)

-#define TPM_KEY_DELEGATE_CMK_CreateBlob             (((UINT32)1)<<10)

-#define TPM_KEY_DELEGATE_CreateMigrationBlob        (((UINT32)1)<<9)

-#define TPM_KEY_DELEGATE_ConvertMigrationBlob       (((UINT32)1)<<8)

-#define TPM_KEY_DELEGATE_CreateKeyDelegation        (((UINT32)1)<<7)

-#define TPM_KEY_DELEGATE_ChangeAuth                 (((UINT32)1)<<6)

-#define TPM_KEY_DELEGATE_GetPubKey                  (((UINT32)1)<<5)

-#define TPM_KEY_DELEGATE_UnBind                     (((UINT32)1)<<4)

-#define TPM_KEY_DELEGATE_Quote                      (((UINT32)1)<<3)

-#define TPM_KEY_DELEGATE_Unseal                     (((UINT32)1)<<2)

-#define TPM_KEY_DELEGATE_Seal                       (((UINT32)1)<<1)

-#define TPM_KEY_DELEGATE_LoadKey                    (((UINT32)1)<<0)

-

-typedef UINT32 TPM_FAMILY_VERIFICATION;

-

-typedef UINT32 TPM_FAMILY_ID;

-

-typedef UINT32 TPM_DELEGATE_INDEX;

-

-typedef UINT32 TPM_FAMILY_OPERATION;

-#define TPM_FAMILY_CREATE              ((UINT32)0x00000001)

-#define TPM_FAMILY_ENABLE              ((UINT32)0x00000002)

-#define TPM_FAMILY_ADMIN               ((UINT32)0x00000003)

-#define TPM_FAMILY_INVALIDATE          ((UINT32)0x00000004)

-

-typedef UINT32 TPM_FAMILY_FLAGS;

-#define TPM_FAMFLAG_DELEGATE_ADMIN_LOCK   (((UINT32)1)<<1)

-#define TPM_FAMFLAG_ENABLE                (((UINT32)1)<<0)

-

-typedef struct tdTPM_FAMILY_LABEL

-{

-    BYTE label;

-} TPM_FAMILY_LABEL;

-

-typedef struct tdTPM_FAMILY_TABLE_ENTRY

-{

-    TPM_STRUCTURE_TAG       tag;

-    TPM_FAMILY_LABEL        label;

-    TPM_FAMILY_ID           familyID;

-    TPM_FAMILY_VERIFICATION verificationCount;

-    TPM_FAMILY_FLAGS        flags;

-} TPM_FAMILY_TABLE_ENTRY;

-

-

-#define TPM_FAMILY_TABLE_ENTRY_MIN 8

-//typedef struct tdTPM_FAMILY_TABLE

-//{

-//    TPM_FAMILY_TABLE_ENTRY FamTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];

-//} TPM_FAMILY_TABLE;

-

-

-typedef struct tdTPM_DELEGATE_LABEL

-{

-    BYTE label;

-} TPM_DELEGATE_LABEL;

-

-

-typedef UINT32 TPM_DELEGATE_TYPE;

-#define TPM_DEL_OWNER_BITS             ((UINT32)0x00000001)

-#define TPM_DEL_KEY_BITS               ((UINT32)0x00000002)

-

-typedef struct tdTPM_DELEGATIONS

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DELEGATE_TYPE delegateType;

-    UINT32            per1;

-    UINT32            per2;

-} TPM_DELEGATIONS;

-

-typedef struct tdTPM_DELEGATE_PUBLIC

-{

-    TPM_STRUCTURE_TAG       tag;

-    TPM_DELEGATE_LABEL      label;

-    TPM_PCR_INFO_SHORT      pcrInfo;

-    TPM_DELEGATIONS         permissions;

-    TPM_FAMILY_ID           familyID;

-    TPM_FAMILY_VERIFICATION verificationCount;

-} TPM_DELEGATE_PUBLIC;

-

-typedef struct tdTPM_DELEGATE_TABLE_ROW

-{

-    TPM_STRUCTURE_TAG   tag;

-    TPM_DELEGATE_PUBLIC pub;

-    TPM_SECRET          authValue;

-} TPM_DELEGATE_TABLE_ROW;

-

-

-#define TPM_NUM_DELEGATE_TABLE_ENTRY_MIN 2

-//typedef struct tdTPM_DELEGATE_TABLE

-//{

-//    TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];

-//} TPM_DELEGATE_TABLE;

-

-typedef struct tdTPM_DELEGATE_SENSITIVE

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_SECRET        authValue;

-} TPM_DELEGATE_SENSITIVE;

-

-typedef struct tdTPM_DELEGATE_OWNER_BLOB

-{

-    TPM_STRUCTURE_TAG   tag;

-    TPM_DELEGATE_PUBLIC pub;

-    TPM_DIGEST          integrityDigest;

-    UINT32              additionalSize;

-    SIZEIS(additionalSize)

-        BYTE           *additionalArea;

-    UINT32              sensitiveSize;

-    SIZEIS(sensitiveSize)

-        BYTE           *sensitiveArea;

-} TPM_DELEGATE_OWNER_BLOB;

-

-typedef struct tdTPM_DELEGATE_KEY_BLOB

-{

-    TPM_STRUCTURE_TAG   tag;

-    TPM_DELEGATE_PUBLIC pub;

-    TPM_DIGEST          integrityDigest;

-    TPM_DIGEST          pubKeyDigest;

-    UINT32              additionalSize;

-    SIZEIS(additionalSize)

-        BYTE           *additionalArea;

-    UINT32              sensitiveSize;

-    SIZEIS(sensitiveSize)

-        BYTE           *sensitiveArea;

-} TPM_DELEGATE_KEY_BLOB;

-

-

-//-------------------------------------------------------------------

-// Part 2, section 21.1: TPM_CAPABILITY_AREA

-

-typedef UINT32 TPM_CAPABILITY_AREA;                         /* 1.1b */

-#define TPM_CAP_ORD                    ((UINT32)0x00000001) /* 1.1b */

-#define TPM_CAP_ALG                    ((UINT32)0x00000002) /* 1.1b */

-#define TPM_CAP_PID                    ((UINT32)0x00000003) /* 1.1b */

-#define TPM_CAP_FLAG                   ((UINT32)0x00000004) /* 1.1b */

-#define TPM_CAP_PROPERTY               ((UINT32)0x00000005) /* 1.1b */

-#define TPM_CAP_VERSION                ((UINT32)0x00000006) /* 1.1b */

-#define TPM_CAP_KEY_HANDLE             ((UINT32)0x00000007) /* 1.1b */

-#define TPM_CAP_CHECK_LOADED           ((UINT32)0x00000008) /* 1.1b */

-#define TPM_CAP_SYM_MODE               ((UINT32)0x00000009)

-#define TPM_CAP_KEY_STATUS             ((UINT32)0x0000000C)

-#define TPM_CAP_NV_LIST                ((UINT32)0x0000000D)

-#define TPM_CAP_MFR                    ((UINT32)0x00000010)

-#define TPM_CAP_NV_INDEX               ((UINT32)0x00000011)

-#define TPM_CAP_TRANS_ALG              ((UINT32)0x00000012)

-#define TPM_CAP_HANDLE                 ((UINT32)0x00000014)

-#define TPM_CAP_TRANS_ES               ((UINT32)0x00000015)

-#define TPM_CAP_AUTH_ENCRYPT           ((UINT32)0x00000017)

-#define TPM_CAP_SELECT_SIZE            ((UINT32)0x00000018)

-#define TPM_CAP_DA_LOGIC               ((UINT32)0x00000019)

-#define TPM_CAP_VERSION_VAL            ((UINT32)0x0000001A)

-

-// Part 2, section 21.1: Subcap values for CAP_FLAG

-#define TPM_CAP_FLAG_PERMANENT         ((UINT32)0x00000108)

-#define TPM_CAP_FLAG_VOLATILE          ((UINT32)0x00000109)

-

-//-------------------------------------------------------------------

-// Part 2, section 21.2: Subcap values for CAP_PROPERTY

-

-#define TPM_CAP_PROP_PCR               ((UINT32)0x00000101) /* 1.1b */

-#define TPM_CAP_PROP_DIR               ((UINT32)0x00000102) /* 1.1b */

-#define TPM_CAP_PROP_MANUFACTURER      ((UINT32)0x00000103) /* 1.1b */

-#define TPM_CAP_PROP_KEYS              ((UINT32)0x00000104)

-#define TPM_CAP_PROP_SLOTS             (TPM_CAP_PROP_KEYS)

-#define TPM_CAP_PROP_MIN_COUNTER       ((UINT32)0x00000107)

-#define TPM_CAP_PROP_AUTHSESS          ((UINT32)0x0000010A)

-#define TPM_CAP_PROP_TRANSSESS         ((UINT32)0x0000010B)

-#define TPM_CAP_PROP_COUNTERS          ((UINT32)0x0000010C)

-#define TPM_CAP_PROP_MAX_AUTHSESS      ((UINT32)0x0000010D)

-#define TPM_CAP_PROP_MAX_TRANSSESS     ((UINT32)0x0000010E)

-#define TPM_CAP_PROP_MAX_COUNTERS      ((UINT32)0x0000010F)

-#define TPM_CAP_PROP_MAX_KEYS          ((UINT32)0x00000110)

-#define TPM_CAP_PROP_OWNER             ((UINT32)0x00000111)

-#define TPM_CAP_PROP_CONTEXT           ((UINT32)0x00000112)

-#define TPM_CAP_PROP_MAX_CONTEXT       ((UINT32)0x00000113)

-#define TPM_CAP_PROP_FAMILYROWS        ((UINT32)0x00000114)

-#define TPM_CAP_PROP_TIS_TIMEOUT       ((UINT32)0x00000115)

-#define TPM_CAP_PROP_STARTUP_EFFECT    ((UINT32)0x00000116)

-#define TPM_CAP_PROP_DELEGATE_ROW      ((UINT32)0x00000117)

-#define TPM_CAP_PROP_DAA_MAX           ((UINT32)0x00000119)

-#define TPM_CAP_PROP_SESSION_DAA       ((UINT32)0x0000011A)

-#define TPM_CAP_PROP_CONTEXT_DIST      ((UINT32)0x0000011B)

-#define TPM_CAP_PROP_DAA_INTERRUPT     ((UINT32)0x0000011C)

-#define TPM_CAP_PROP_SESSIONS          ((UINT32)0x0000011D)

-#define TPM_CAP_PROP_MAX_SESSIONS      ((UINT32)0x0000011E)

-#define TPM_CAP_PROP_CMK_RESTRICTION   ((UINT32)0x0000011F)

-#define TPM_CAP_PROP_DURATION          ((UINT32)0x00000120)

-#define TPM_CAP_PROP_ACTIVE_COUNTER    ((UINT32)0x00000122)

-#define TPM_CAP_PROP_NV_AVAILABLE      ((UINT32)0x00000123)

-#define TPM_CAP_PROP_INPUT_BUFFER      ((UINT32)0x00000124)

-

-

-// Part 2, section 21.4: SetCapability Values

-#define TPM_SET_PERM_FLAGS             ((UINT32)0x00000001)

-#define TPM_SET_PERM_DATA              ((UINT32)0x00000002)

-#define TPM_SET_STCLEAR_FLAGS          ((UINT32)0x00000003)

-#define TPM_SET_STCLEAR_DATA           ((UINT32)0x00000004)

-#define TPM_SET_STANY_FLAGS            ((UINT32)0x00000005)

-#define TPM_SET_STANY_DATA             ((UINT32)0x00000006)

-#define TPM_SET_VENDOR                 ((UINT32)0x00000007)

-

-

-// Part 2, section 21.5: TPM_CAP_VERSION_INFO

-typedef struct tdTPM_CAP_VERSION_INFO

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_VERSION       version;

-    UINT16            specLevel;

-    BYTE              errataRev;

-    BYTE              tpmVendorID[4];

-    UINT16            vendorSpecificSize;

-    SIZEIS(vendorSpecificSize)

-        BYTE         *vendorSpecific;

-} TPM_CAP_VERSION_INFO;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 22: DAA Structures

-

-#define TPM_DAA_SIZE_r0                (43)

-#define TPM_DAA_SIZE_r1                (43)

-#define TPM_DAA_SIZE_r2                (128)

-#define TPM_DAA_SIZE_r3                (168)

-#define TPM_DAA_SIZE_r4                (219)

-#define TPM_DAA_SIZE_NT                (20)

-#define TPM_DAA_SIZE_v0                (128)

-#define TPM_DAA_SIZE_v1                (192)

-#define TPM_DAA_SIZE_NE                (256)

-#define TPM_DAA_SIZE_w                 (256)

-#define TPM_DAA_SIZE_issuerModulus     (256)

-#define TPM_DAA_power0                 (104)

-#define TPM_DAA_power1                 (1024)

-

-typedef struct tdTPM_DAA_ISSUER

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        DAA_digest_R0;

-    TPM_DIGEST        DAA_digest_R1;

-    TPM_DIGEST        DAA_digest_S0;

-    TPM_DIGEST        DAA_digest_S1;

-    TPM_DIGEST        DAA_digest_n;

-    TPM_DIGEST        DAA_digest_gamma;

-    BYTE              DAA_generic_q[26];

-} TPM_DAA_ISSUER;

-

-

-typedef struct tdTPM_DAA_TPM

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_DIGEST        DAA_digestIssuer;

-    TPM_DIGEST        DAA_digest_v0;

-    TPM_DIGEST        DAA_digest_v1;

-    TPM_DIGEST        DAA_rekey;

-    UINT32            DAA_count;

-} TPM_DAA_TPM;

-

-typedef struct tdTPM_DAA_CONTEXT

-{

-    TPM_STRUCTURE_TAG    tag;

-    TPM_DIGEST           DAA_digestContext;

-    TPM_DIGEST           DAA_digest;

-    TPM_DAA_CONTEXT_SEED DAA_contextSeed;

-    BYTE                 DAA_scratch[256];

-    BYTE                 DAA_stage;

-} TPM_DAA_CONTEXT;

-

-typedef struct tdTPM_DAA_JOINDATA

-{

-    BYTE       DAA_join_u0[128];

-    BYTE       DAA_join_u1[138];

-    TPM_DIGEST DAA_digest_n0;

-} TPM_DAA_JOINDATA;

-

-typedef struct tdTPM_DAA_BLOB

-{

-    TPM_STRUCTURE_TAG tag;

-    TPM_RESOURCE_TYPE resourceType;

-    BYTE              label[16];

-    TPM_DIGEST        blobIntegrity;

-    UINT32            additionalSize;

-    SIZEIS(additionalSize)

-        BYTE         *additionalData;

-    UINT32            sensitiveSize;

-    SIZEIS(sensitiveSize)

-        BYTE         *sensitiveData;

-} TPM_DAA_BLOB;

-

-typedef struct tdTPM_DAA_SENSITIVE

-{

-    TPM_STRUCTURE_TAG tag;

-    UINT32            internalSize;

-    SIZEIS(internalSize)

-        BYTE         *internalData;

-} TPM_DAA_SENSITIVE;

-

-

-

-//-------------------------------------------------------------------

-// Part 2, section 23: Redirection

-

-// This section of the TPM spec defines exactly one value but does not

-// give it a name. The definition of TPM_SetRedirection in Part3

-// refers to exactly one name but does not give its value. We join

-// them here.

-#define TPM_REDIR_GPIO              (0x00000001)

-

-

-//-------------------------------------------------------------------

-// Part 2, section 24.6: TPM_SYM_MODE

-//    Deprecated by TPM 1.2 spec

-

-typedef UINT32 TPM_SYM_MODE;

-#define TPM_SYM_MODE_ECB            (0x00000001)

-#define TPM_SYM_MODE_CBC            (0x00000002)

-#define TPM_SYM_MODE_CFB            (0x00000003)

-

-#endif // __TPM_H__

-

+/*++
+ * 
+ * TPM structures extracted from the TPM specification 1.2, 
+ * Part 2 (Structures), rev 85.
+ *
+ * Errata:
+ *
+ * *) The individual bits of TPM_STARTUP_EFFECTS were not given names in
+ * the TPM spec so they are not defined in tpm.h.
+ * 
+ * *) A few typedefs not present in the TPM 1.2 specification have been
+ * added. This was generally done when the TPM 1.2 spec defined a set of
+ * related values (either bitmasks or enumeration values) but did not
+ * define an associated type to hold these values. The typedefs have been
+ * added and structure fields that were to hold those values have been
+ * switched from generic UINT* types to the more specific types. This was
+ * done to highlight exactly where those #defined values were to be used.
+ * The types that have been added are:
+ *   TPM_NV_PER_ATTRIBUTES
+ *   TPM_DELEGATE_TYPE
+ *
+ * *) The layout of bitfields within a structure are compiler-dependent
+ * and the use of structure bitfields has been avoided where possible. In
+ * cases where a value is a collection of independent bits the type is
+ * given a name (typedeffed to UINT16 or UINT32 as appropriate) and masks
+ * are #defined to access the individual bits. This is not possible for
+ * TPM_VERSION_BYTE because the fields are 4-bit values. A best attempt
+ * has been made to make this compiler independent but it has only been
+ * checked on GCC and Visual C++ on little-endian machines.
+ * 
+ * *) The TPM_DELEGATIONS per1 and per2 fields field are a bitmask but
+ * are defined as a UINT32 because the bitfields have different meaning
+ * based on the type of delegation blob.
+ * 
+ * *) The definitions of TPM_PERMANENT_DATA, TPM_STCLEAR_DATA,
+ * TPM_STANY_DATA, and TPM_DELEGATE_TABLE_ROW are commented out. These
+ * structures are internal to the TPM and are not directly accessible by
+ * external software so this should not be a problem.
+ * 
+ * *) The definitions of TPM_FAMILY_TABLE and TPM_DELEGATE_TABLE are
+ * commented out because they are variable length arrays internal to the
+ * TPM. As above they are not directly accessible by external software
+ * so this should not be a problem.
+ */
+
+#ifndef __TPM_H__
+#define __TPM_H__
+
+#ifdef __midl
+#define SIZEIS(x)  [size_is(x)]
+#else
+#define SIZEIS(x)
+#endif
+
+#include <tss/platform.h>
+
+//-------------------------------------------------------------------
+// Part 2, section 2.1: Basic data types
+typedef BYTE   TPM_BOOL;
+#ifndef FALSE
+#define FALSE  0x00
+#define TRUE   0x01
+#endif /* ifndef FALSE */
+
+//-------------------------------------------------------------------
+// Part 2, section 2.3: Helper Redefinitions
+//   Many of the helper redefinitions appear later in this file
+//   so that they are declared next to the list of valid values
+//   they may hold.
+typedef BYTE TPM_LOCALITY_MODIFIER;
+typedef UINT32 TPM_COMMAND_CODE;                            /* 1.1b */
+typedef UINT32 TPM_COUNT_ID;
+typedef UINT32 TPM_REDIT_COMMAND;
+typedef UINT32 TPM_HANDLE;
+typedef UINT32 TPM_AUTHHANDLE;
+typedef UINT32 TPM_TRANSHANDLE;
+typedef UINT32 TPM_KEYHANDLE;
+typedef UINT32 TPM_DIRINDEX;
+typedef UINT32 TPM_PCRINDEX;
+typedef UINT32 TPM_RESULT;
+typedef UINT32 TPM_MODIFIER_INDICATOR;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 2.2.4: Vendor Specific
+#define TPM_Vendor_Specific32  0x00000400
+#define TPM_Vendor_Specific8   0x80
+
+
+//-------------------------------------------------------------------
+// Part 2, section 3: Structure Tags
+typedef UINT16  TPM_STRUCTURE_TAG;
+#define TPM_TAG_CONTEXTBLOB            ((UINT16)0x0001)
+#define TPM_TAG_CONTEXT_SENSITIVE      ((UINT16)0x0002)
+#define TPM_TAG_CONTEXTPOINTER         ((UINT16)0x0003)
+#define TPM_TAG_CONTEXTLIST            ((UINT16)0x0004)
+#define TPM_TAG_SIGNINFO               ((UINT16)0x0005)
+#define TPM_TAG_PCR_INFO_LONG          ((UINT16)0x0006)
+#define TPM_TAG_PERSISTENT_FLAGS       ((UINT16)0x0007)
+#define TPM_TAG_VOLATILE_FLAGS         ((UINT16)0x0008)
+#define TPM_TAG_PERSISTENT_DATA        ((UINT16)0x0009)
+#define TPM_TAG_VOLATILE_DATA          ((UINT16)0x000a)
+#define TPM_TAG_SV_DATA                ((UINT16)0x000b)
+#define TPM_TAG_EK_BLOB                ((UINT16)0x000c)
+#define TPM_TAG_EK_BLOB_AUTH           ((UINT16)0x000d)
+#define TPM_TAG_COUNTER_VALUE          ((UINT16)0x000e)
+#define TPM_TAG_TRANSPORT_INTERNAL     ((UINT16)0x000f)
+#define TPM_TAG_TRANSPORT_LOG_IN       ((UINT16)0x0010)
+#define TPM_TAG_TRANSPORT_LOG_OUT      ((UINT16)0x0011)
+#define TPM_TAG_AUDIT_EVENT_IN         ((UINT16)0x0012)
+#define TPM_TAG_AUDIT_EVENT_OUT        ((UINT16)0x0013)
+#define TPM_TAG_CURRENT_TICKS          ((UINT16)0x0014)
+#define TPM_TAG_KEY                    ((UINT16)0x0015)
+#define TPM_TAG_STORED_DATA12          ((UINT16)0x0016)
+#define TPM_TAG_NV_ATTRIBUTES          ((UINT16)0x0017)
+#define TPM_TAG_NV_DATA_PUBLIC         ((UINT16)0x0018)
+#define TPM_TAG_NV_DATA_SENSITIVE      ((UINT16)0x0019)
+#define TPM_TAG_DELEGATIONS            ((UINT16)0x001a)
+#define TPM_TAG_DELEGATE_PUBLIC        ((UINT16)0x001b)
+#define TPM_TAG_DELEGATE_TABLE_ROW     ((UINT16)0x001c)
+#define TPM_TAG_TRANSPORT_AUTH         ((UINT16)0x001d)
+#define TPM_TAG_TRANSPORT_PUBLIC       ((UINT16)0x001e)
+#define TPM_TAG_PERMANENT_FLAGS        ((UINT16)0x001f)
+#define TPM_TAG_STCLEAR_FLAGS          ((UINT16)0x0020)
+#define TPM_TAG_STANY_FLAGS            ((UINT16)0x0021)
+#define TPM_TAG_PERMANENT_DATA         ((UINT16)0x0022)
+#define TPM_TAG_STCLEAR_DATA           ((UINT16)0x0023)
+#define TPM_TAG_STANY_DATA             ((UINT16)0x0024)
+#define TPM_TAG_FAMILY_TABLE_ENTRY     ((UINT16)0x0025)
+#define TPM_TAG_DELEGATE_SENSITIVE     ((UINT16)0x0026)
+#define TPM_TAG_DELG_KEY_BLOB          ((UINT16)0x0027)
+#define TPM_TAG_KEY12                  ((UINT16)0x0028)
+#define TPM_TAG_CERTIFY_INFO2          ((UINT16)0x0029)
+#define TPM_TAG_DELEGATE_OWNER_BLOB    ((UINT16)0x002a)
+#define TPM_TAG_EK_BLOB_ACTIVATE       ((UINT16)0x002b)
+#define TPM_TAG_DAA_BLOB               ((UINT16)0x002c)
+#define TPM_TAG_DAA_CONTEXT            ((UINT16)0x002d)
+#define TPM_TAG_DAA_ENFORCE            ((UINT16)0x002e)
+#define TPM_TAG_DAA_ISSUER             ((UINT16)0x002f)
+#define TPM_TAG_CAP_VERSION_INFO       ((UINT16)0x0030)
+#define TPM_TAG_DAA_SENSITIVE          ((UINT16)0x0031)
+#define TPM_TAG_DAA_TPM                ((UINT16)0x0032)
+#define TPM_TAG_CMK_MIGAUTH            ((UINT16)0x0033)
+#define TPM_TAG_CMK_SIGTICKET          ((UINT16)0x0034)
+#define TPM_TAG_CMK_MA_APPROVAL        ((UINT16)0x0035)
+#define TPM_TAG_QUOTE_INFO2            ((UINT16)0x0036)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 4: Types
+typedef UINT32 TPM_RESOURCE_TYPE;
+#define TPM_RT_KEY                     ((UINT32)0x00000001)
+#define TPM_RT_AUTH                    ((UINT32)0x00000002)
+#define TPM_RT_HASH                    ((UINT32)0x00000003)
+#define TPM_RT_TRANS                   ((UINT32)0x00000004)
+#define TPM_RT_CONTEXT                 ((UINT32)0x00000005)
+#define TPM_RT_COUNTER                 ((UINT32)0x00000006)
+#define TPM_RT_DELEGATE                ((UINT32)0x00000007)
+#define TPM_RT_DAA_TPM                 ((UINT32)0x00000008)
+#define TPM_RT_DAA_V0                  ((UINT32)0x00000009)
+#define TPM_RT_DAA_V1                  ((UINT32)0x0000000a)
+
+
+typedef BYTE TPM_PAYLOAD_TYPE;                              /* 1.1b */
+#define TPM_PT_ASYM                    ((BYTE)0x01)         /* 1.1b */
+#define TPM_PT_BIND                    ((BYTE)0x02)         /* 1.1b */
+#define TPM_PT_MIGRATE                 ((BYTE)0x03)         /* 1.1b */
+#define TPM_PT_MAINT                   ((BYTE)0x04)         /* 1.1b */
+#define TPM_PT_SEAL                    ((BYTE)0x05)         /* 1.1b */
+#define TPM_PT_MIGRATE_RESTRICTED      ((BYTE)0x06)
+#define TPM_PT_MIGRATE_EXTERNAL        ((BYTE)0x07)
+#define TPM_PT_CMK_MIGRATE             ((BYTE)0x08)
+
+
+typedef UINT16 TPM_ENTITY_TYPE;                             /* 1.1b */
+#define TPM_ET_KEYHANDLE               ((UINT16)0x0001)     /* 1.1b */
+#define TPM_ET_OWNER                   ((UINT16)0x0002)     /* 1.1b */
+#define TPM_ET_DATA                    ((UINT16)0x0003)     /* 1.1b */
+#define TPM_ET_SRK                     ((UINT16)0x0004)     /* 1.1b */
+#define TPM_ET_KEY                     ((UINT16)0x0005)     /* 1.1b */
+#define TPM_ET_REVOKE                  ((UINT16)0x0006)
+#define TPM_ET_DEL_OWNER_BLOB          ((UINT16)0x0007)
+#define TPM_ET_DEL_ROW                 ((UINT16)0x0008)
+#define TPM_ET_DEL_KEY_BLOB            ((UINT16)0x0009)
+#define TPM_ET_COUNTER                 ((UINT16)0x000a)
+#define TPM_ET_NV                      ((UINT16)0x000b)
+#define TPM_ET_RESERVED_HANDLE         ((UINT16)0x0040)
+
+/* The following values may be ORed into the MSB of the TPM_ENTITY_TYPE
+ * to indicate particular encryption scheme
+ */
+#define TPM_ET_XOR                     ((BYTE)0x00)
+#define TPM_ET_AES                     ((BYTE)0x06)
+
+typedef UINT32 TPM_KEY_HANDLE;                              /* 1.1b */
+#define TPM_KH_SRK                     ((UINT32)0x40000000)
+#define TPM_KH_OWNER                   ((UINT32)0x40000001)
+#define TPM_KH_REVOKE                  ((UINT32)0x40000002)
+#define TPM_KH_TRANSPORT               ((UINT32)0x40000003)
+#define TPM_KH_OPERATOR                ((UINT32)0x40000004)
+#define TPM_KH_ADMIN                   ((UINT32)0x40000005)
+#define TPM_KH_EK                      ((UINT32)0x40000006)
+/* 1.1b used different names, but the same values */
+#define TPM_KEYHND_SRK                 (TPM_KH_SRK)        /* 1.1b */
+#define TPM_KEYHND_OWNER               (TPM_KH_OWNER)      /* 1.1b */
+
+
+typedef UINT16 TPM_STARTUP_TYPE;                            /* 1.1b */
+#define TPM_ST_CLEAR                   ((UINT16)0x0001)     /* 1.1b */
+#define TPM_ST_STATE                   ((UINT16)0x0002)     /* 1.1b */
+#define TPM_ST_DEACTIVATED             ((UINT16)0x0003)     /* 1.1b */
+
+
+//typedef UINT32 TPM_STARTUP_EFFECTS;
+// 32-bit mask, see spec for meaning. Names not currently defined
+
+typedef UINT16 TPM_PROTOCOL_ID;                             /* 1.1b */
+#define TPM_PID_OIAP                   ((UINT16)0x0001)     /* 1.1b */
+#define TPM_PID_OSAP                   ((UINT16)0x0002)     /* 1.1b */
+#define TPM_PID_ADIP                   ((UINT16)0x0003)     /* 1.1b */
+#define TPM_PID_ADCP                   ((UINT16)0x0004)     /* 1.1b */
+#define TPM_PID_OWNER                  ((UINT16)0x0005)     /* 1.1b */
+#define TPM_PID_DSAP                   ((UINT16)0x0006)
+#define TPM_PID_TRANSPORT              ((UINT16)0x0007)
+
+
+typedef UINT32 TPM_ALGORITHM_ID;                            /* 1.1b */
+#define TPM_ALG_RSA                    ((UINT32)0x00000001) /* 1.1b */
+#define TPM_ALG_DES                    ((UINT32)0x00000002) /* 1.1b */
+#define TPM_ALG_3DES                   ((UINT32)0x00000003) /* 1.1b */
+#define TPM_ALG_SHA                    ((UINT32)0x00000004) /* 1.1b */
+#define TPM_ALG_HMAC                   ((UINT32)0x00000005) /* 1.1b */
+#define TPM_ALG_AES                    ((UINT32)0x00000006) /* 1.1b */
+#define TPM_ALG_AES128                 (TPM_ALG_AES)
+#define TPM_ALG_MGF1                   ((UINT32)0x00000007)
+#define TPM_ALG_AES192                 ((UINT32)0x00000008)
+#define TPM_ALG_AES256                 ((UINT32)0x00000009)
+#define TPM_ALG_XOR                    ((UINT32)0x0000000a)
+
+
+typedef UINT16 TPM_PHYSICAL_PRESENCE;                        /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_LOCK          ((UINT16)0x0004) /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_PRESENT       ((UINT16)0x0008) /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_NOTPRESENT    ((UINT16)0x0010) /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_CMD_ENABLE    ((UINT16)0x0020) /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_HW_ENABLE     ((UINT16)0x0040) /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK ((UINT16)0x0080) /* 1.1b */
+#define TPM_PHYSICAL_PRESENCE_CMD_DISABLE   ((UINT16)0x0100)
+#define TPM_PHYSICAL_PRESENCE_HW_DISABLE    ((UINT16)0x0200)
+
+
+typedef UINT16 TPM_MIGRATE_SCHEME;                          /* 1.1b */
+#define TPM_MS_MIGRATE                   ((UINT16)0x0001)   /* 1.1b */
+#define TPM_MS_REWRAP                    ((UINT16)0x0002)   /* 1.1b */
+#define TPM_MS_MAINT                     ((UINT16)0x0003)   /* 1.1b */
+#define TPM_MS_RESTRICT_MIGRATE          ((UINT16)0x0004)
+#define TPM_MS_RESTRICT_APPROVE_DOUBLE   ((UINT16)0x0005)
+#define TPM_MS_RESTRICT_MIGRATE_EXTERNAL ((UINT16)0x0006)
+
+
+typedef UINT16 TPM_EK_TYPE;
+#define TPM_EK_TYPE_ACTIVATE           ((UINT16)0x0001)
+#define TPM_EK_TYPE_AUTH               ((UINT16)0x0002)
+
+
+typedef UINT16 TPM_PLATFORM_SPECIFIC;
+#define TPM_PS_PC_11                   ((UINT16)0x0001)
+#define TPM_PS_PC_12                   ((UINT16)0x0002)
+#define TPM_PS_PDA_12                  ((UINT16)0x0003)
+#define TPM_PS_Server_12               ((UINT16)0x0004)
+#define TPM_PS_Mobile_12               ((UINT16)0x0005)
+
+//-------------------------------------------------------------------
+// Part 2, section 5: Basic Structures
+
+typedef struct tdTPM_STRUCT_VER
+{
+    BYTE   major;
+    BYTE   minor;
+    BYTE   revMajor;
+    BYTE   revMinor;
+} TPM_STRUCT_VER;
+
+typedef struct tdTPM_VERSION_BYTE
+{
+    // This needs to be made compiler-independent.
+    int leastSigVer : 4; // least significant 4 bits
+    int mostSigVer  : 4; // most significant 4 bits
+} TPM_VERSION_BYTE;
+
+typedef struct tdTPM_VERSION
+{
+    BYTE   major;      // Should really be a TPM_VERSION_BYTE
+    BYTE   minor;      // Should really be a TPM_VERSION_BYTE
+    BYTE   revMajor;
+    BYTE   revMinor;
+} TPM_VERSION;
+
+
+// Put this in the right place:
+// byte size definition for 160 bit SHA1 hash value
+#define TPM_SHA1_160_HASH_LEN    0x14
+#define TPM_SHA1BASED_NONCE_LEN  TPM_SHA1_160_HASH_LEN
+
+typedef struct tdTPM_DIGEST
+{
+    BYTE  digest[TPM_SHA1_160_HASH_LEN];
+} TPM_DIGEST;
+
+typedef TPM_DIGEST TPM_COMPOSITE_HASH;
+typedef TPM_DIGEST TPM_DIRVALUE;
+typedef TPM_DIGEST TPM_HMAC;
+typedef TPM_DIGEST TPM_PCRVALUE;
+typedef TPM_DIGEST TPM_AUDITDIGEST;
+typedef TPM_DIGEST TPM_DAA_TPM_SEED;
+typedef TPM_DIGEST TPM_DAA_CONTEXT_SEED;
+
+
+typedef struct tdTPM_NONCE                                  /* 1.1b */
+{
+    BYTE  nonce[TPM_SHA1BASED_NONCE_LEN];
+} TPM_NONCE;
+
+
+typedef struct tdTPM_AUTHDATA                               /* 1.1b */
+{
+    BYTE  authdata[TPM_SHA1_160_HASH_LEN];
+} TPM_AUTHDATA;
+
+typedef TPM_AUTHDATA TPM_SECRET;
+typedef TPM_AUTHDATA TPM_ENCAUTH;
+
+
+typedef struct tdTPM_KEY_HANDLE_LIST                        /* 1.1b */
+{
+    UINT16              loaded;
+    SIZEIS(loaded)
+        TPM_KEY_HANDLE *handle;
+} TPM_KEY_HANDLE_LIST;
+
+
+//-------------------------------------------------------------------
+// Part 2, section 5.8: Key usage values
+
+typedef UINT16 TPM_KEY_USAGE;                               /* 1.1b */
+#define TPM_KEY_SIGNING                ((UINT16)0x0010)     /* 1.1b */
+#define TPM_KEY_STORAGE                ((UINT16)0x0011)     /* 1.1b */
+#define TPM_KEY_IDENTITY               ((UINT16)0x0012)     /* 1.1b */
+#define TPM_KEY_AUTHCHANGE             ((UINT16)0x0013)     /* 1.1b */
+#define TPM_KEY_BIND                   ((UINT16)0x0014)     /* 1.1b */
+#define TPM_KEY_LEGACY                 ((UINT16)0x0015)     /* 1.1b */
+#define TPM_KEY_MIGRATE                ((UINT16)0x0016)
+
+typedef UINT16 TPM_SIG_SCHEME;                              /* 1.1b */
+#define TPM_SS_NONE                    ((UINT16)0x0001)     /* 1.1b */
+#define TPM_SS_RSASSAPKCS1v15_SHA1     ((UINT16)0x0002)     /* 1.1b */
+#define TPM_SS_RSASSAPKCS1v15_DER      ((UINT16)0x0003)     /* 1.1b */
+#define TPM_SS_RSASSAPKCS1v15_INFO     ((UINT16)0x0004)
+
+typedef UINT16 TPM_ENC_SCHEME;                              /* 1.1b */
+#define TPM_ES_NONE                    ((UINT16)0x0001)     /* 1.1b */
+#define TPM_ES_RSAESPKCSv15            ((UINT16)0x0002)     /* 1.1b */
+#define TPM_ES_RSAESOAEP_SHA1_MGF1     ((UINT16)0x0003)     /* 1.1b */
+#define TPM_ES_SYM_CNT                 ((UINT16)0x0004)
+#define TPM_ES_SYM_OFB                 ((UINT16)0x0005)
+#define TPM_ES_SYM_CBC_PKCS5PAD        ((UINT16)0x00ff)
+
+//-------------------------------------------------------------------
+// Part 2, section 5.9: TPM_AUTH_DATA_USAGE values
+
+typedef BYTE TPM_AUTH_DATA_USAGE;                           /* 1.1b */
+#define TPM_AUTH_NEVER                 ((BYTE)0x00)         /* 1.1b */
+#define TPM_AUTH_ALWAYS                ((BYTE)0x01)         /* 1.1b */
+#define TPM_AUTH_PRIV_USE_ONLY         ((BYTE)0x11)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 5.10: TPM_KEY_FLAGS flags
+
+typedef UINT32 TPM_KEY_FLAGS;                               /* 1.1b */
+#define TPM_REDIRECTION                ((UINT32)0x00000001) /* 1.1b */
+#define TPM_MIGRATABLE                 ((UINT32)0x00000002) /* 1.1b */
+#define TPM_VOLATILE                   ((UINT32)0x00000004) /* 1.1b */
+#define TPM_PCRIGNOREDONREAD           ((UINT32)0x00000008)
+#define TPM_MIGRATEAUTHORITY           ((UINT32)0x00000010)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE
+
+typedef struct tdTPM_CHANGEAUTH_VALIDATE
+{
+    TPM_SECRET newAuthSecret;
+    TPM_NONCE  n1;
+} TPM_CHANGEAUTH_VALIDATE;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
+// declared after section 10 to catch declaration of TPM_PUBKEY 
+
+//-------------------------------------------------------------------
+// Part 2, section 5.13: TPM_COUNTER_VALUE;
+
+typedef UINT32 TPM_ACTUAL_COUNT;
+typedef struct tdTPM_COUNTER_VALUE
+{
+    TPM_STRUCTURE_TAG tag;
+    BYTE              label[4];
+    TPM_ACTUAL_COUNT  counter;
+} TPM_COUNTER_VALUE;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.14: TPM_SIGN_INFO structure
+
+typedef struct tdTPM_SIGN_INFO
+{
+    TPM_STRUCTURE_TAG tag;
+    BYTE              fixed[4];
+    TPM_NONCE         replay;
+    UINT32            dataLen;
+    SIZEIS(dataLen)
+        BYTE         *data;
+} TPM_SIGN_INFO;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.15: TPM_MSA_COMPOSITE
+
+typedef struct tdTPM_MSA_COMPOSITE
+{
+    UINT32          MSAlist;
+    SIZEIS(MSAlist)
+        TPM_DIGEST *migAuthDigest;
+} TPM_MSA_COMPOSITE;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.16: TPM_CMK_AUTH
+
+typedef struct tdTPM_CMK_AUTH
+{
+    TPM_DIGEST migrationAuthorityDigest;
+    TPM_DIGEST destinationKeyDigest;
+    TPM_DIGEST sourceKeyDigest;
+} TPM_CMK_AUTH;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.17: TPM_CMK_DELEGATE
+
+typedef UINT32 TPM_CMK_DELEGATE;
+#define TPM_CMK_DELEGATE_SIGNING       (((UINT32)1)<<31)
+#define TPM_CMK_DELEGATE_STORAGE       (((UINT32)1)<<30)
+#define TPM_CMK_DELEGATE_BIND          (((UINT32)1)<<29)
+#define TPM_CMK_DELEGATE_LEGACY        (((UINT32)1)<<28)
+#define TPM_CMK_DELEGATE_MIGRATE       (((UINT32)1)<<27)
+
+//-------------------------------------------------------------------
+// Part 2, section 5.18: TPM_SELECT_SIZE
+
+typedef struct tdTPM_SELECT_SIZE
+{
+    BYTE   major;
+    BYTE   minor;
+    UINT16 reqSize;
+} TPM_SELECT_SIZE;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.19: TPM_CMK_MIGAUTH
+
+typedef struct tdTPM_CMK_MIGAUTH
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        msaDigest;
+    TPM_DIGEST        pubKeyDigest;
+} TPM_CMK_MIGAUTH;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.20: TPM_CMK_SIGTICKET
+
+typedef struct tdTPM_CMK_SIGTICKET
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        verKeyDigest;
+    TPM_DIGEST        signedData;
+} TPM_CMK_SIGTICKET;
+
+//-------------------------------------------------------------------
+// Part 2, section 5.21: TPM_CMK_MA_APPROVAL
+
+typedef struct tdTPM_CMK_MA_APPROVAL
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        migrationAuthorityDigest;
+} TPM_CMK_MA_APPROVAL;
+
+
+//-------------------------------------------------------------------
+// Part 2, section 6: Command Tags
+
+typedef UINT16 TPM_TAG;                                     /* 1.1b */
+#define TPM_TAG_RQU_COMMAND            ((UINT16)0x00c1)
+#define TPM_TAG_RQU_AUTH1_COMMAND      ((UINT16)0x00c2)
+#define TPM_TAG_RQU_AUTH2_COMMAND      ((UINT16)0x00c3)
+#define TPM_TAG_RSP_COMMAND            ((UINT16)0x00c4)
+#define TPM_TAG_RSP_AUTH1_COMMAND      ((UINT16)0x00c5)
+#define TPM_TAG_RSP_AUTH2_COMMAND      ((UINT16)0x00c6)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 7.1: TPM_PERMANENT_FLAGS
+
+typedef struct tdTPM_PERMANENT_FLAGS
+{
+    TPM_STRUCTURE_TAG tag;
+    TSS_BOOL disable;
+    TSS_BOOL ownership;
+    TSS_BOOL deactivated;
+    TSS_BOOL readPubek;
+    TSS_BOOL disableOwnerClear;
+    TSS_BOOL allowMaintenance;
+    TSS_BOOL physicalPresenceLifetimeLock;
+    TSS_BOOL physicalPresenceHWEnable;
+    TSS_BOOL physicalPresenceCMDEnable;
+    TSS_BOOL CEKPUsed;
+    TSS_BOOL TPMpost;
+    TSS_BOOL TPMpostLock;
+    TSS_BOOL FIPS;
+    TSS_BOOL Operator;
+    TSS_BOOL enableRevokeEK;
+    TSS_BOOL nvLocked;
+    TSS_BOOL readSRKPub;
+    TSS_BOOL tpmEstablished;
+    TSS_BOOL maintenanceDone;
+} TPM_PERMANENT_FLAGS;
+
+#define TPM_PF_DISABLE                      ((UINT32)0x00000001)
+#define TPM_PF_OWNERSHIP                    ((UINT32)0x00000002)
+#define TPM_PF_DEACTIVATED                  ((UINT32)0x00000003)
+#define TPM_PF_READPUBEK                    ((UINT32)0x00000004)
+#define TPM_PF_DISABLEOWNERCLEAR            ((UINT32)0x00000005)
+#define TPM_PF_ALLOWMAINTENANCE             ((UINT32)0x00000006)
+#define TPM_PF_PHYSICALPRESENCELIFETIMELOCK ((UINT32)0x00000007)
+#define TPM_PF_PHYSICALPRESENCEHWENABLE     ((UINT32)0x00000008)
+#define TPM_PF_PHYSICALPRESENCECMDENABLE    ((UINT32)0x00000009)
+#define TPM_PF_CEKPUSED                     ((UINT32)0x0000000A)
+#define TPM_PF_TPMPOST                      ((UINT32)0x0000000B)
+#define TPM_PF_TPMPOSTLOCK                  ((UINT32)0x0000000C)
+#define TPM_PF_FIPS                         ((UINT32)0x0000000D)
+#define TPM_PF_OPERATOR                     ((UINT32)0x0000000E)
+#define TPM_PF_ENABLEREVOKEEK               ((UINT32)0x0000000F)
+#define TPM_PF_NV_LOCKED                    ((UINT32)0x00000010)
+#define TPM_PF_READSRKPUB                   ((UINT32)0x00000011)
+#define TPM_PF_RESETESTABLISHMENTBIT        ((UINT32)0x00000012)
+#define TPM_PF_MAINTENANCEDONE              ((UINT32)0x00000013)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 7.2: TPM_STCLEAR_FLAGS
+
+typedef struct tdTPM_STCLEAR_FLAGS
+{
+    TPM_STRUCTURE_TAG tag;
+    TSS_BOOL          deactivated;
+    TSS_BOOL          disableForceClear;
+    TSS_BOOL          physicalPresence;
+    TSS_BOOL          physicalPresenceLock;
+    TSS_BOOL          bGlobalLock;
+} TPM_STCLEAR_FLAGS;
+
+#define TPM_SF_DEACTIVATED             ((UINT32)0x00000001)
+#define TPM_SF_DISABLEFORCECLEAR       ((UINT32)0x00000002)
+#define TPM_SF_PHYSICALPRESENCE        ((UINT32)0x00000003)
+#define TPM_SF_PHYSICALPRESENCELOCK    ((UINT32)0x00000004)
+#define TPM_SF_GLOBALLOCK              ((UINT32)0x00000005)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 7.3: TPM_STANY_FLAGS
+
+typedef struct tdTPM_STANY_FLAGS
+{
+    TPM_STRUCTURE_TAG      tag;
+    TSS_BOOL               postInitialise;
+    TPM_MODIFIER_INDICATOR localityModifier;
+    TSS_BOOL               transportExclusive;
+    TSS_BOOL               TOSPresent;
+} TPM_STANY_FLAGS;
+
+#define TPM_AF_POSTINITIALIZE          ((UINT32)0x00000001)
+#define TPM_AF_LOCALITYMODIFIER        ((UINT32)0x00000002)
+#define TPM_AF_TRANSPORTEXCLUSIVE      ((UINT32)0x00000003)
+#define TPM_AF_TOSPRESENT              ((UINT32)0x00000004)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 7.4: TPM_PERMANENT_DATA
+// available inside TPM only
+//
+//typedef struct tdTPM_PERMANENT_DATA
+//{
+//    TPM_STRUCTURE_TAG  tag;
+//    BYTE               revMajor;
+//    BYTE               revMinor;
+//    TPM_NONCE          tpmProof;
+//    TPM_NONCE          ekReset;
+//    TPM_SECRET         ownerAuth;
+//    TPM_SECRET         operatorAuth;
+//    TPM_DIRVALUE       authDIR[1];
+//    TPM_PUBKEY         manuMaintPub;
+//    TPM_KEY            endorsementKey;
+//    TPM_KEY            srk;
+//    TPM_KEY            contextKey;
+//    TPM_KEY            delegateKey;
+//    TPM_COUNTER_VALUE  auditMonotonicCounter;
+//    TPM_COUNTER_VALUE  monitonicCounter[TPM_MIN_COUNTERS];
+//    TPM_PCR_ATTRIBUTES pcrAttrib[TPM_NUM_PCR];
+//    BYTE               ordinalAuditStatus[];
+//    BYTE              *rngState;
+//    TPM_FAMILY_TABLE   familyTable;
+//    TPM_DELEGATE_TABLE delegateTable;
+//    UINT32             maxNVBufSize;
+//    UINT32             lastFamilyID;
+//    UINT32             noOwnerNVWrite;
+//    TPM_CMK_DELEGATE   restrictDelegate;
+//    TPM_DAA_TPM_SEED   tpmDAASeed;
+//} TPM_PERMANENT_DATA;
+
+
+//-------------------------------------------------------------------
+// Part 2, section 7.5: TPM_STCLEAR_DATA
+// available inside TPM only
+//
+//typedef struct tdTPM_STCLEAR_DATA
+//{
+//    TPM_STRUCTURE_TAG tag;
+//    TPM_NONCE         contextNonceKey;
+//    TPM_COUNT_ID      countID;
+//    UINT32            ownerReference;
+//    TPM_BOOL          disableResetLock;
+//} TPM_STCLEAR_DATA;
+    
+
+
+//-------------------------------------------------------------------
+// Part 2, section 7.5: TPM_STANY_DATA
+// available inside TPM only
+//
+//typedef struct tdTPM_STANY_DATA
+//{
+//    TPM_STRUCTURE_TAG tag;
+//    TPM_NONCE         contextNonceSession;
+//    TPM_DIGEST        auditDigest;
+//    TPM_CURRENT_TICKS currentTicks;
+//    UINT32            contextCount;
+//    UINT32            contextList[TPM_MIN_SESSION_LIST];
+//    TPM_SESSION_DATA  sessions[TPM_MIN_SESSIONS];
+//} TPM_STANY_DATA;
+    
+
+
+//-------------------------------------------------------------------
+// Part 2, section 8: PCR Structures
+
+typedef BYTE  TPM_LOCALITY_SELECTION;
+#define TPM_LOC_FOUR                   (((UINT32)1)<<4)
+#define TPM_LOC_THREE                  (((UINT32)1)<<3)
+#define TPM_LOC_TWO                    (((UINT32)1)<<2)
+#define TPM_LOC_ONE                    (((UINT32)1)<<1)
+#define TPM_LOC_ZERO                   (((UINT32)1)<<0)
+
+typedef struct tdTPM_PCR_SELECTION                          /* 1.1b */
+{ 
+    UINT16    sizeOfSelect;
+    SIZEIS(sizeOfSelect)
+        BYTE *pcrSelect;  
+} TPM_PCR_SELECTION;
+
+typedef struct tdTPM_PCR_COMPOSITE                          /* 1.1b */
+{ 
+    TPM_PCR_SELECTION select;
+    UINT32            valueSize;
+    SIZEIS(valueSize)
+        TPM_PCRVALUE *pcrValue; 
+} TPM_PCR_COMPOSITE;
+
+typedef struct tdTPM_PCR_INFO                               /* 1.1b */
+{
+    TPM_PCR_SELECTION  pcrSelection;
+    TPM_COMPOSITE_HASH digestAtRelease;
+    TPM_COMPOSITE_HASH digestAtCreation;
+}  TPM_PCR_INFO;
+
+typedef struct tdTPM_PCR_INFO_LONG
+{
+    TPM_STRUCTURE_TAG      tag;
+    TPM_LOCALITY_SELECTION localityAtCreation;
+    TPM_LOCALITY_SELECTION localityAtRelease;
+    TPM_PCR_SELECTION      creationPCRSelection;
+    TPM_PCR_SELECTION      releasePCRSelection;
+    TPM_COMPOSITE_HASH     digestAtCreation;
+    TPM_COMPOSITE_HASH     digestAtRelease;
+}  TPM_PCR_INFO_LONG;
+
+typedef struct tdTPM_PCR_INFO_SHORT
+{
+    TPM_PCR_SELECTION      pcrSelection;
+    TPM_LOCALITY_SELECTION localityAtRelease;
+    TPM_COMPOSITE_HASH     digestAtRelease;
+}  TPM_PCR_INFO_SHORT;
+
+typedef struct tdTPM_PCR_ATTRIBUTES
+{
+    BYTE                   pcrReset;
+    TPM_LOCALITY_SELECTION pcrExtendLocal;
+    TPM_LOCALITY_SELECTION pcrResetLocal;
+} TPM_PCR_ATTRIBUTES;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 9:
+
+typedef struct tdTPM_STORED_DATA                            /* 1.1b */
+{
+    TPM_STRUCT_VER ver;
+    UINT32         sealInfoSize;
+    SIZEIS(sealInfoSize)
+        BYTE      *sealInfo;
+    UINT32         encDataSize;
+    SIZEIS(encDataSize)
+        BYTE      *encData;
+} TPM_STORED_DATA;
+
+typedef struct tdTPM_STORED_DATA12
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_ENTITY_TYPE   et;
+    UINT32            sealInfoSize;
+    SIZEIS(sealInfoSize)
+        BYTE         *sealInfo;
+    UINT32            encDataSize;
+    SIZEIS(encDataSize)
+        BYTE         *encData;
+} TPM_STORED_DATA12;
+
+typedef struct tdTPM_SEALED_DATA                            /* 1.1b */
+{ 
+    TPM_PAYLOAD_TYPE  payload;
+    TPM_SECRET        authData;
+    TPM_NONCE         tpmProof;
+    TPM_DIGEST        storedDigest;
+    UINT32            dataSize;
+    SIZEIS(dataSize)
+        BYTE         *data;
+} TPM_SEALED_DATA;
+
+typedef struct tdTPM_SYMMETRIC_KEY                          /* 1.1b */
+{
+    TPM_ALGORITHM_ID  algId;
+    TPM_ENC_SCHEME    encScheme;
+    UINT16            size;
+    SIZEIS(size)
+        BYTE         *data;
+} TPM_SYMMETRIC_KEY;
+
+typedef struct tdTPM_BOUND_DATA
+{
+    TPM_STRUCT_VER   ver;
+    TPM_PAYLOAD_TYPE payload;
+    BYTE            *payloadData; // length is implied
+} TPM_BOUND_DATA;
+
+
+//-------------------------------------------------------------------
+// Part 2, section 10: TPM_KEY complex
+
+typedef struct tdTPM_KEY_PARMS                              /* 1.1b */
+{
+    TPM_ALGORITHM_ID  algorithmID;
+    TPM_ENC_SCHEME    encScheme;
+    TPM_SIG_SCHEME    sigScheme;
+    UINT32            parmSize;
+    SIZEIS(parmSize)
+        BYTE         *parms;
+} TPM_KEY_PARMS;
+
+typedef struct tdTPM_RSA_KEY_PARMS                          /* 1.1b */
+{  
+    UINT32    keyLength; 
+    UINT32    numPrimes; 
+    UINT32    exponentSize;
+    SIZEIS(exponentSize)
+        BYTE *exponent;
+} TPM_RSA_KEY_PARMS;
+
+typedef struct tdTPM_SYMMETRIC_KEY_PARMS
+{
+    UINT32 keyLength;
+    UINT32 blockSize;
+    UINT32 ivSize;
+    SIZEIS(ivSize)
+        BYTE *IV;
+} TPM_SYMMETRIC_KEY_PARMS;
+
+typedef struct tdTPM_STORE_PUBKEY                           /* 1.1b */
+{
+    UINT32    keyLength;
+    SIZEIS(keyLength)
+        BYTE *key;
+} TPM_STORE_PUBKEY;
+
+typedef struct tdTPM_PUBKEY                                 /* 1.1b */
+{
+    TPM_KEY_PARMS     algorithmParms;
+    TPM_STORE_PUBKEY  pubKey;
+} TPM_PUBKEY;
+
+typedef struct tdTPM_STORE_PRIVKEY                          /* 1.1b */
+{
+    UINT32    keyLength;
+    SIZEIS(keyLength)
+        BYTE *key;   
+} TPM_STORE_PRIVKEY;
+
+typedef struct tdTPM_STORE_ASYMKEY                          /* 1.1b */
+{         
+    TPM_PAYLOAD_TYPE  payload;   
+    TPM_SECRET        usageAuth;    
+    TPM_SECRET        migrationAuth;  
+    TPM_DIGEST        pubDataDigest;   
+    TPM_STORE_PRIVKEY privKey;   
+} TPM_STORE_ASYMKEY;
+
+typedef struct tdTPM_KEY                                    /* 1.1b */
+{
+    TPM_STRUCT_VER      ver;
+    TPM_KEY_USAGE       keyUsage;
+    TPM_KEY_FLAGS       keyFlags;
+    TPM_AUTH_DATA_USAGE authDataUsage;
+    TPM_KEY_PARMS       algorithmParms; 
+    UINT32              PCRInfoSize;
+    SIZEIS(PCRInfoSize)
+        BYTE           *PCRInfo;
+    TPM_STORE_PUBKEY    pubKey;
+    UINT32              encSize;
+    SIZEIS(encSize)
+        BYTE           *encData; 
+} TPM_KEY;
+
+typedef struct tdTPM_KEY12
+{
+    TPM_STRUCTURE_TAG   tag;
+    UINT16              fill;
+    TPM_KEY_USAGE       keyUsage;
+    TPM_KEY_FLAGS       keyFlags;
+    TPM_AUTH_DATA_USAGE authDataUsage;
+    TPM_KEY_PARMS       algorithmParms;
+    UINT32              PCRInfoSize;
+    SIZEIS(PCRInfoSize)
+       BYTE            *PCRInfo;
+    TPM_STORE_PUBKEY    pubKey;
+    UINT32              encSize;
+    SIZEIS(encSize)
+       BYTE            *encData;
+} TPM_KEY12;
+
+typedef struct tdTPM_MIGRATE_ASYMKEY
+{
+    TPM_PAYLOAD_TYPE payload;
+    TPM_SECRET       usageAuth;
+    TPM_DIGEST       pubDataDigest;
+    UINT32           partPrivKeyLen;
+    SIZEIS(partPrivKeyLen)
+        BYTE        *partPrivKey;
+} TPM_MIGRATE_ASYMKEY;
+
+
+typedef UINT32 TPM_KEY_CONTROL;
+#define TPM_KEY_CONTROL_OWNER_EVICT    ((UINT32)0x00000001)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
+
+typedef struct tdTPM_MIGRATIONKEYAUTH                       /* 1.1b */
+{
+    TPM_PUBKEY         migrationKey;
+    TPM_MIGRATE_SCHEME migrationScheme;
+    TPM_DIGEST         digest;
+} TPM_MIGRATIONKEYAUTH;
+
+
+//-------------------------------------------------------------------
+// Part 2, section 11: Signed Structures
+
+typedef struct tdTPM_CERTIFY_INFO                           /* 1.1b */
+{
+    TPM_STRUCT_VER      version;
+    TPM_KEY_USAGE       keyUsage;
+    TPM_KEY_FLAGS       keyFlags;
+    TPM_AUTH_DATA_USAGE authDataUsage;
+    TPM_KEY_PARMS       algorithmParms;
+    TPM_DIGEST          pubkeyDigest;
+    TPM_NONCE           data;
+    TPM_BOOL            parentPCRStatus;
+    UINT32              PCRInfoSize;
+    SIZEIS(PCRInfoSize)
+        BYTE           *PCRInfo;
+} TPM_CERTIFY_INFO;
+
+typedef struct tdTPM_CERTIFY_INFO2
+{
+    TPM_STRUCTURE_TAG   tag;
+    BYTE                fill;
+    TPM_PAYLOAD_TYPE    payloadType;
+    TPM_KEY_USAGE       keyUsage;
+    TPM_KEY_FLAGS       keyFlags;
+    TPM_AUTH_DATA_USAGE authDataUsage;
+    TPM_KEY_PARMS       algorithmParms;
+    TPM_DIGEST          pubkeyDigest;
+    TPM_NONCE           data;
+    TPM_BOOL            parentPCRStatus;
+    UINT32              PCRInfoSize;
+    SIZEIS(PCRInfoSize) 
+        BYTE           *PCRInfo;
+    UINT32              migrationAuthoritySize;
+    SIZEIS(migrationAuthoritySize)
+        BYTE           *migrationAuthority;
+} TPM_CERTIFY_INFO2;
+
+typedef struct tdTPM_QUOTE_INFO                             /* 1.1b */
+{
+    TPM_STRUCT_VER     version;
+    BYTE               fixed[4];
+    TPM_COMPOSITE_HASH compositeHash; /* in 1.2 TPM spec, named digestValue */
+    TPM_NONCE          externalData;
+} TPM_QUOTE_INFO;
+
+typedef struct tdTPM_QUOTE_INFO2
+{
+    TPM_STRUCTURE_TAG  tag;
+    BYTE               fixed[4];
+    TPM_NONCE          externalData;
+    TPM_PCR_INFO_SHORT infoShort;
+} TPM_QUOTE_INFO2;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 12: Identity Structures
+
+
+typedef struct tdTPM_EK_BLOB
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_EK_TYPE       ekType;
+    UINT32            blobSize;
+    SIZEIS(blobSize)
+        BYTE         *blob;
+} TPM_EK_BLOB;
+
+typedef struct tdTPM_EK_BLOB_ACTIVATE
+{
+    TPM_STRUCTURE_TAG  tag;
+    TPM_SYMMETRIC_KEY  sessionKey;
+    TPM_DIGEST         idDigest;
+    TPM_PCR_INFO_SHORT pcrInfo;
+} TPM_EK_BLOB_ACTIVATE;
+
+typedef struct tdTPM_EK_BLOB_AUTH
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_SECRET        authValue;
+} TPM_EK_BLOB_AUTH;
+
+
+// TPM_CHOSENID_HASH = SHA(identityLabel || privacyCA)
+typedef TPM_DIGEST TPM_CHOSENID_HASH;
+
+typedef struct tdTPM_IDENTITY_CONTENTS
+{
+    TPM_STRUCT_VER    ver;
+    UINT32            ordinal;
+    TPM_CHOSENID_HASH labelPrivCADigest;
+    TPM_PUBKEY        identityPubKey;
+} TPM_IDENTITY_CONTENTS;
+
+typedef struct tdTPM_IDENTITY_REQ                           /* 1.1b */
+{
+    UINT32         asymSize;
+    UINT32         symSize;
+    TPM_KEY_PARMS  asymAlgorithm;
+    TPM_KEY_PARMS  symAlgorithm;
+    SIZEIS(asymSize)
+        BYTE      *asymBlob;
+    SIZEIS(symSize)
+        BYTE      *symBlob;
+} TPM_IDENTITY_REQ;
+
+typedef struct tdTPM_IDENTITY_PROOF                         /* 1.1b */
+{
+    TPM_STRUCT_VER  ver;
+    UINT32          labelSize;
+    UINT32          identityBindingSize;
+    UINT32          endorsementSize;
+    UINT32          platformSize;
+    UINT32          conformanceSize;
+    TPM_PUBKEY      identityKey;
+    SIZEIS(labelSize)
+      BYTE         *labelArea;
+    SIZEIS(identityBindingSize)
+      BYTE         *identityBinding;
+    SIZEIS(endorsementSize)
+      BYTE         *endorsementCredential;
+    SIZEIS(platformSize)
+      BYTE         *platformCredential;
+    SIZEIS(conformanceSize)
+      BYTE         *conformanceCredential;
+} TPM_IDENTITY_PROOF;
+
+typedef struct tdTPM_ASYM_CA_CONTENTS                       /* 1.1b */
+{
+    TPM_SYMMETRIC_KEY sessionKey;
+    TPM_DIGEST        idDigest;
+} TPM_ASYM_CA_CONTENTS;
+
+typedef struct tdTPM_SYM_CA_ATTESTATION
+{
+    UINT32         credSize;
+    TPM_KEY_PARMS  algorithm;
+    SIZEIS(credSize)
+        BYTE      *credential;
+} TPM_SYM_CA_ATTESTATION;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 15: Tick Structures
+// Placed here out of order because definitions are used in section 13.
+
+typedef struct tdTPM_CURRENT_TICKS
+{
+    TPM_STRUCTURE_TAG tag;
+    UINT64            currentTicks;
+    UINT16            tickRate;
+    TPM_NONCE         tickNonce;
+} TPM_CURRENT_TICKS;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 13: Transport structures
+
+typedef UINT32 TPM_TRANSPORT_ATTRIBUTES;
+#define TPM_TRANSPORT_ENCRYPT          ((UINT32)0x00000001)
+#define TPM_TRANSPORT_LOG              ((UINT32)0x00000002)
+#define TPM_TRANSPORT_EXCLUSIVE        ((UINT32)0x00000004)
+
+typedef struct tdTPM_TRANSPORT_PUBLIC
+{
+    TPM_STRUCTURE_TAG        tag;
+    TPM_TRANSPORT_ATTRIBUTES transAttributes;
+    TPM_ALGORITHM_ID         algId;
+    TPM_ENC_SCHEME           encScheme;
+} TPM_TRANSPORT_PUBLIC;
+
+typedef struct tdTPM_TRANSPORT_INTERNAL
+{
+    TPM_STRUCTURE_TAG    tag;
+    TPM_AUTHDATA         authData;
+    TPM_TRANSPORT_PUBLIC transPublic;
+    TPM_TRANSHANDLE      transHandle;
+    TPM_NONCE            transNonceEven;
+    TPM_DIGEST           transDigest;
+} TPM_TRANSPORT_INTERNAL;
+
+typedef struct tdTPM_TRANSPORT_LOG_IN
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        parameters;
+    TPM_DIGEST        pubKeyHash;
+} TPM_TRANSPORT_LOG_IN;
+
+typedef struct tdTPM_TRANSPORT_LOG_OUT
+{
+    TPM_STRUCTURE_TAG      tag;
+    TPM_CURRENT_TICKS      currentTicks;
+    TPM_DIGEST             parameters;
+    TPM_MODIFIER_INDICATOR locality;
+} TPM_TRANSPORT_LOG_OUT;
+
+typedef struct tdTPM_TRANSPORT_AUTH
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_AUTHDATA      authData;
+} TPM_TRANSPORT_AUTH;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 14: Audit Structures
+
+typedef struct tdTPM_AUDIT_EVENT_IN
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        inputParms;
+    TPM_COUNTER_VALUE auditCount;
+} TPM_AUDIT_EVENT_IN;
+
+typedef struct tdTPM_AUDIT_EVENT_OUT
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_COMMAND_CODE  ordinal;
+    TPM_DIGEST        outputParms;
+    TPM_COUNTER_VALUE auditCount;
+    TPM_RESULT        returnCode;
+} TPM_AUDIT_EVENT_OUT;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 16: Return codes
+
+#include <tss/tpm_error.h>
+
+
+//-------------------------------------------------------------------
+// Part 2, section 17: Ordinals
+
+#include <tss/tpm_ordinal.h>
+
+//-------------------------------------------------------------------
+// Part 2, section 18: Context structures
+
+typedef struct tdTPM_CONTEXT_BLOB
+{
+    TPM_STRUCTURE_TAG  tag;
+    TPM_RESOURCE_TYPE  resourceType;
+    TPM_HANDLE         handle;
+    BYTE               label[16];
+    UINT32             contextCount;
+    TPM_DIGEST         integrityDigest;
+    UINT32             additionalSize;
+    SIZEIS(additionalSize)
+        BYTE          *additionalData;
+    UINT32             sensitiveSize;
+    SIZEIS(sensitiveSize)
+        BYTE          *sensitiveData;
+} TPM_CONTEXT_BLOB;
+
+typedef struct tdTPM_CONTEXT_SENSITIVE
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_NONCE         contextNonce;
+    UINT32            internalSize;
+    SIZEIS(internalSize)
+        BYTE         *internalData;
+} TPM_CONTEXT_SENSITIVE;
+
+//-------------------------------------------------------------------
+// Part 2, section 19: NV Structures
+
+typedef UINT32 TPM_NV_INDEX;
+#define TPM_NV_INDEX_LOCK              ((UINT32)0xffffffff)
+#define TPM_NV_INDEX0                  ((UINT32)0x00000000)
+#define TPM_NV_INDEX_DIR               ((UINT32)0x10000001)
+#define TPM_NV_INDEX_EKCert            ((UINT32)0x0000f000)
+#define TPM_NV_INDEX_TPM_CC            ((UINT32)0x0000f001)
+#define TPM_NV_INDEX_PlatformCert      ((UINT32)0x0000f002)
+#define TPM_NV_INDEX_Platform_CC       ((UINT32)0x0000f003)
+// The following define ranges of reserved indices.
+#define TPM_NV_INDEX_TSS_BASE          ((UINT32)0x00011100)
+#define TPM_NV_INDEX_PC_BASE           ((UINT32)0x00011200)
+#define TPM_NV_INDEX_SERVER_BASE       ((UINT32)0x00011300)
+#define TPM_NV_INDEX_MOBILE_BASE       ((UINT32)0x00011400)
+#define TPM_NV_INDEX_PERIPHERAL_BASE   ((UINT32)0x00011500)
+#define TPM_NV_INDEX_GROUP_RESV_BASE   ((UINT32)0x00010000)
+
+
+typedef UINT32 TPM_NV_PER_ATTRIBUTES;
+#define TPM_NV_PER_READ_STCLEAR        (((UINT32)1)<<31)
+#define TPM_NV_PER_AUTHREAD            (((UINT32)1)<<18)
+#define TPM_NV_PER_OWNERREAD           (((UINT32)1)<<17)
+#define TPM_NV_PER_PPREAD              (((UINT32)1)<<16)
+#define TPM_NV_PER_GLOBALLOCK          (((UINT32)1)<<15)
+#define TPM_NV_PER_WRITE_STCLEAR       (((UINT32)1)<<14)
+#define TPM_NV_PER_WRITEDEFINE         (((UINT32)1)<<13)
+#define TPM_NV_PER_WRITEALL            (((UINT32)1)<<12)
+#define TPM_NV_PER_AUTHWRITE           (((UINT32)1)<<2)
+#define TPM_NV_PER_OWNERWRITE          (((UINT32)1)<<1)
+#define TPM_NV_PER_PPWRITE             (((UINT32)1)<<0)
+
+typedef struct tdTPM_NV_ATTRIBUTES
+{
+    TPM_STRUCTURE_TAG     tag;
+    TPM_NV_PER_ATTRIBUTES attributes;
+} TPM_NV_ATTRIBUTES;
+
+
+typedef struct tdTPM_NV_DATA_PUBLIC
+{
+    TPM_STRUCTURE_TAG  tag;
+    TPM_NV_INDEX       nvIndex;
+    TPM_PCR_INFO_SHORT pcrInfoRead;
+    TPM_PCR_INFO_SHORT pcrInfoWrite;
+    TPM_NV_ATTRIBUTES  permission;
+    TPM_BOOL           bReadSTClear;
+    TPM_BOOL           bWriteSTClear;
+    TPM_BOOL           bWriteDefine;
+    UINT32             dataSize;
+} TPM_NV_DATA_PUBLIC;
+
+
+#if 0
+// Internal to TPM:
+typedef struct tdTPM_NV_DATA_SENSITIVE
+{
+    TPM_STRUCTURE_TAG  tag;
+    TPM_NV_DATA_PUBLIC pubInfo;
+    TPM_AUTHDATA       authValue;
+    SIZEIS(pubInfo.dataSize)
+        BYTE          *data;
+} TPM_NV_DATA_SENSITIVE;
+#endif
+
+
+//-------------------------------------------------------------------
+// Part 2, section 20: Delegation
+
+//-------------------------------------------------------------------
+// Part 2, section 20.3: Owner Permissions Settings for per1 bits
+#define TPM_DELEGATE_SetOrdinalAuditStatus          (((UINT32)1)<<30)
+#define TPM_DELEGATE_DirWriteAuth                   (((UINT32)1)<<29)
+#define TPM_DELEGATE_CMK_ApproveMA                  (((UINT32)1)<<28)
+#define TPM_DELEGATE_CMK_CreateTicket               (((UINT32)1)<<26)
+#define TPM_DELEGATE_Delegate_LoadOwnerDelegation   (((UINT32)1)<<24)
+#define TPM_DELEGATE_DAA_Join                       (((UINT32)1)<<23)
+#define TPM_DELEGATE_AuthorizeMigrationKey          (((UINT32)1)<<22)
+#define TPM_DELEGATE_CreateMaintenanceArchive       (((UINT32)1)<<21)
+#define TPM_DELEGATE_LoadMaintenanceArchive         (((UINT32)1)<<20)
+#define TPM_DELEGATE_KillMaintenanceFeature         (((UINT32)1)<<19)
+#define TPM_DELEGATE_OwnerReadInteralPub            (((UINT32)1)<<18)
+#define TPM_DELEGATE_ResetLockValue                 (((UINT32)1)<<17)
+#define TPM_DELEGATE_OwnerClear                     (((UINT32)1)<<16)
+#define TPM_DELEGATE_DisableOwnerClear              (((UINT32)1)<<15)
+#define TPM_DELEGATE_OwnerSetDisable                (((UINT32)1)<<13)
+#define TPM_DELEGATE_SetCapability                  (((UINT32)1)<<12)
+#define TPM_DELEGATE_MakeIdentity                   (((UINT32)1)<<11)
+#define TPM_DELEGATE_ActivateIdentity               (((UINT32)1)<<10)
+#define TPM_DELEGATE_OwnerReadPubek                 (((UINT32)1)<<9)
+#define TPM_DELEGATE_DisablePubekRead               (((UINT32)1)<<8)
+#define TPM_DELEGATE_SetRedirection                 (((UINT32)1)<<7)
+#define TPM_DELEGATE_FieldUpgrade                   (((UINT32)1)<<6)
+#define TPM_DELEGATE_Delegate_UpdateVerification    (((UINT32)1)<<5)
+#define TPM_DELEGATE_CreateCounter                  (((UINT32)1)<<4)
+#define TPM_DELEGATE_ReleaseCounterOwner            (((UINT32)1)<<3)
+#define TPM_DELEGATE_DelegateManage                 (((UINT32)1)<<2)
+#define TPM_DELEGATE_Delegate_CreateOwnerDelegation (((UINT32)1)<<1)
+#define TPM_DELEGATE_DAA_Sign                       (((UINT32)1)<<0)
+
+//-------------------------------------------------------------------
+// Part 2, section 20.3: Key Permissions Settings for per1 bits
+#define TPM_KEY_DELEGATE_CMK_ConvertMigration       (((UINT32)1)<<28)
+#define TPM_KEY_DELEGATE_TickStampBlob              (((UINT32)1)<<27)
+#define TPM_KEY_DELEGATE_ChangeAuthAsymStart        (((UINT32)1)<<26)
+#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish       (((UINT32)1)<<25)
+#define TPM_KEY_DELEGATE_CMK_CreateKey              (((UINT32)1)<<24)
+#define TPM_KEY_DELEGATE_MigrateKey                 (((UINT32)1)<<23)
+#define TPM_KEY_DELEGATE_LoadKey2                   (((UINT32)1)<<22)
+#define TPM_KEY_DELEGATE_EstablishTransport         (((UINT32)1)<<21)
+#define TPM_KEY_DELEGATE_ReleaseTransportSigned     (((UINT32)1)<<20)
+#define TPM_KEY_DELEGATE_Quote2                     (((UINT32)1)<<19)
+#define TPM_KEY_DELEGATE_Sealx                      (((UINT32)1)<<18)
+#define TPM_KEY_DELEGATE_MakeIdentity               (((UINT32)1)<<17)
+#define TPM_KEY_DELEGATE_ActivateIdentity           (((UINT32)1)<<16)
+#define TPM_KEY_DELEGATE_GetAuditDigestSigned       (((UINT32)1)<<15)
+#define TPM_KEY_DELEGATE_Sign                       (((UINT32)1)<<14)
+#define TPM_KEY_DELEGATE_CertifyKey2                (((UINT32)1)<<13)
+#define TPM_KEY_DELEGATE_CertifyKey                 (((UINT32)1)<<12)
+#define TPM_KEY_DELEGATE_CreateWrapKey              (((UINT32)1)<<11)
+#define TPM_KEY_DELEGATE_CMK_CreateBlob             (((UINT32)1)<<10)
+#define TPM_KEY_DELEGATE_CreateMigrationBlob        (((UINT32)1)<<9)
+#define TPM_KEY_DELEGATE_ConvertMigrationBlob       (((UINT32)1)<<8)
+#define TPM_KEY_DELEGATE_CreateKeyDelegation        (((UINT32)1)<<7)
+#define TPM_KEY_DELEGATE_ChangeAuth                 (((UINT32)1)<<6)
+#define TPM_KEY_DELEGATE_GetPubKey                  (((UINT32)1)<<5)
+#define TPM_KEY_DELEGATE_UnBind                     (((UINT32)1)<<4)
+#define TPM_KEY_DELEGATE_Quote                      (((UINT32)1)<<3)
+#define TPM_KEY_DELEGATE_Unseal                     (((UINT32)1)<<2)
+#define TPM_KEY_DELEGATE_Seal                       (((UINT32)1)<<1)
+#define TPM_KEY_DELEGATE_LoadKey                    (((UINT32)1)<<0)
+
+typedef UINT32 TPM_FAMILY_VERIFICATION;
+
+typedef UINT32 TPM_FAMILY_ID;
+
+typedef UINT32 TPM_DELEGATE_INDEX;
+
+typedef UINT32 TPM_FAMILY_OPERATION;
+#define TPM_FAMILY_CREATE              ((UINT32)0x00000001)
+#define TPM_FAMILY_ENABLE              ((UINT32)0x00000002)
+#define TPM_FAMILY_ADMIN               ((UINT32)0x00000003)
+#define TPM_FAMILY_INVALIDATE          ((UINT32)0x00000004)
+
+typedef UINT32 TPM_FAMILY_FLAGS;
+#define TPM_FAMFLAG_DELEGATE_ADMIN_LOCK   (((UINT32)1)<<1)
+#define TPM_FAMFLAG_ENABLE                (((UINT32)1)<<0)
+
+typedef struct tdTPM_FAMILY_LABEL
+{
+    BYTE label;
+} TPM_FAMILY_LABEL;
+
+typedef struct tdTPM_FAMILY_TABLE_ENTRY
+{
+    TPM_STRUCTURE_TAG       tag;
+    TPM_FAMILY_LABEL        label;
+    TPM_FAMILY_ID           familyID;
+    TPM_FAMILY_VERIFICATION verificationCount;
+    TPM_FAMILY_FLAGS        flags;
+} TPM_FAMILY_TABLE_ENTRY;
+
+
+#define TPM_FAMILY_TABLE_ENTRY_MIN 8
+//typedef struct tdTPM_FAMILY_TABLE
+//{
+//    TPM_FAMILY_TABLE_ENTRY FamTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];
+//} TPM_FAMILY_TABLE;
+
+
+typedef struct tdTPM_DELEGATE_LABEL
+{
+    BYTE label;
+} TPM_DELEGATE_LABEL;
+
+
+typedef UINT32 TPM_DELEGATE_TYPE;
+#define TPM_DEL_OWNER_BITS             ((UINT32)0x00000001)
+#define TPM_DEL_KEY_BITS               ((UINT32)0x00000002)
+
+typedef struct tdTPM_DELEGATIONS
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DELEGATE_TYPE delegateType;
+    UINT32            per1;
+    UINT32            per2;
+} TPM_DELEGATIONS;
+
+typedef struct tdTPM_DELEGATE_PUBLIC
+{
+    TPM_STRUCTURE_TAG       tag;
+    TPM_DELEGATE_LABEL      label;
+    TPM_PCR_INFO_SHORT      pcrInfo;
+    TPM_DELEGATIONS         permissions;
+    TPM_FAMILY_ID           familyID;
+    TPM_FAMILY_VERIFICATION verificationCount;
+} TPM_DELEGATE_PUBLIC;
+
+typedef struct tdTPM_DELEGATE_TABLE_ROW
+{
+    TPM_STRUCTURE_TAG   tag;
+    TPM_DELEGATE_PUBLIC pub;
+    TPM_SECRET          authValue;
+} TPM_DELEGATE_TABLE_ROW;
+
+
+#define TPM_NUM_DELEGATE_TABLE_ENTRY_MIN 2
+//typedef struct tdTPM_DELEGATE_TABLE
+//{
+//    TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];
+//} TPM_DELEGATE_TABLE;
+
+typedef struct tdTPM_DELEGATE_SENSITIVE
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_SECRET        authValue;
+} TPM_DELEGATE_SENSITIVE;
+
+typedef struct tdTPM_DELEGATE_OWNER_BLOB
+{
+    TPM_STRUCTURE_TAG   tag;
+    TPM_DELEGATE_PUBLIC pub;
+    TPM_DIGEST          integrityDigest;
+    UINT32              additionalSize;
+    SIZEIS(additionalSize)
+        BYTE           *additionalArea;
+    UINT32              sensitiveSize;
+    SIZEIS(sensitiveSize)
+        BYTE           *sensitiveArea;
+} TPM_DELEGATE_OWNER_BLOB;
+
+typedef struct tdTPM_DELEGATE_KEY_BLOB
+{
+    TPM_STRUCTURE_TAG   tag;
+    TPM_DELEGATE_PUBLIC pub;
+    TPM_DIGEST          integrityDigest;
+    TPM_DIGEST          pubKeyDigest;
+    UINT32              additionalSize;
+    SIZEIS(additionalSize)
+        BYTE           *additionalArea;
+    UINT32              sensitiveSize;
+    SIZEIS(sensitiveSize)
+        BYTE           *sensitiveArea;
+} TPM_DELEGATE_KEY_BLOB;
+
+
+//-------------------------------------------------------------------
+// Part 2, section 21.1: TPM_CAPABILITY_AREA
+
+typedef UINT32 TPM_CAPABILITY_AREA;                         /* 1.1b */
+#define TPM_CAP_ORD                    ((UINT32)0x00000001) /* 1.1b */
+#define TPM_CAP_ALG                    ((UINT32)0x00000002) /* 1.1b */
+#define TPM_CAP_PID                    ((UINT32)0x00000003) /* 1.1b */
+#define TPM_CAP_FLAG                   ((UINT32)0x00000004) /* 1.1b */
+#define TPM_CAP_PROPERTY               ((UINT32)0x00000005) /* 1.1b */
+#define TPM_CAP_VERSION                ((UINT32)0x00000006) /* 1.1b */
+#define TPM_CAP_KEY_HANDLE             ((UINT32)0x00000007) /* 1.1b */
+#define TPM_CAP_CHECK_LOADED           ((UINT32)0x00000008) /* 1.1b */
+#define TPM_CAP_SYM_MODE               ((UINT32)0x00000009)
+#define TPM_CAP_KEY_STATUS             ((UINT32)0x0000000C)
+#define TPM_CAP_NV_LIST                ((UINT32)0x0000000D)
+#define TPM_CAP_MFR                    ((UINT32)0x00000010)
+#define TPM_CAP_NV_INDEX               ((UINT32)0x00000011)
+#define TPM_CAP_TRANS_ALG              ((UINT32)0x00000012)
+#define TPM_CAP_HANDLE                 ((UINT32)0x00000014)
+#define TPM_CAP_TRANS_ES               ((UINT32)0x00000015)
+#define TPM_CAP_AUTH_ENCRYPT           ((UINT32)0x00000017)
+#define TPM_CAP_SELECT_SIZE            ((UINT32)0x00000018)
+#define TPM_CAP_DA_LOGIC               ((UINT32)0x00000019)
+#define TPM_CAP_VERSION_VAL            ((UINT32)0x0000001A)
+
+// Part 2, section 21.1: Subcap values for CAP_FLAG
+#define TPM_CAP_FLAG_PERMANENT         ((UINT32)0x00000108)
+#define TPM_CAP_FLAG_VOLATILE          ((UINT32)0x00000109)
+
+//-------------------------------------------------------------------
+// Part 2, section 21.2: Subcap values for CAP_PROPERTY
+
+#define TPM_CAP_PROP_PCR               ((UINT32)0x00000101) /* 1.1b */
+#define TPM_CAP_PROP_DIR               ((UINT32)0x00000102) /* 1.1b */
+#define TPM_CAP_PROP_MANUFACTURER      ((UINT32)0x00000103) /* 1.1b */
+#define TPM_CAP_PROP_KEYS              ((UINT32)0x00000104)
+#define TPM_CAP_PROP_SLOTS             (TPM_CAP_PROP_KEYS)
+#define TPM_CAP_PROP_MIN_COUNTER       ((UINT32)0x00000107)
+#define TPM_CAP_PROP_AUTHSESS          ((UINT32)0x0000010A)
+#define TPM_CAP_PROP_TRANSSESS         ((UINT32)0x0000010B)
+#define TPM_CAP_PROP_COUNTERS          ((UINT32)0x0000010C)
+#define TPM_CAP_PROP_MAX_AUTHSESS      ((UINT32)0x0000010D)
+#define TPM_CAP_PROP_MAX_TRANSSESS     ((UINT32)0x0000010E)
+#define TPM_CAP_PROP_MAX_COUNTERS      ((UINT32)0x0000010F)
+#define TPM_CAP_PROP_MAX_KEYS          ((UINT32)0x00000110)
+#define TPM_CAP_PROP_OWNER             ((UINT32)0x00000111)
+#define TPM_CAP_PROP_CONTEXT           ((UINT32)0x00000112)
+#define TPM_CAP_PROP_MAX_CONTEXT       ((UINT32)0x00000113)
+#define TPM_CAP_PROP_FAMILYROWS        ((UINT32)0x00000114)
+#define TPM_CAP_PROP_TIS_TIMEOUT       ((UINT32)0x00000115)
+#define TPM_CAP_PROP_STARTUP_EFFECT    ((UINT32)0x00000116)
+#define TPM_CAP_PROP_DELEGATE_ROW      ((UINT32)0x00000117)
+#define TPM_CAP_PROP_DAA_MAX           ((UINT32)0x00000119)
+#define TPM_CAP_PROP_SESSION_DAA       ((UINT32)0x0000011A)
+#define TPM_CAP_PROP_CONTEXT_DIST      ((UINT32)0x0000011B)
+#define TPM_CAP_PROP_DAA_INTERRUPT     ((UINT32)0x0000011C)
+#define TPM_CAP_PROP_SESSIONS          ((UINT32)0x0000011D)
+#define TPM_CAP_PROP_MAX_SESSIONS      ((UINT32)0x0000011E)
+#define TPM_CAP_PROP_CMK_RESTRICTION   ((UINT32)0x0000011F)
+#define TPM_CAP_PROP_DURATION          ((UINT32)0x00000120)
+#define TPM_CAP_PROP_ACTIVE_COUNTER    ((UINT32)0x00000122)
+#define TPM_CAP_PROP_NV_AVAILABLE      ((UINT32)0x00000123)
+#define TPM_CAP_PROP_INPUT_BUFFER      ((UINT32)0x00000124)
+
+
+// Part 2, section 21.4: SetCapability Values
+#define TPM_SET_PERM_FLAGS             ((UINT32)0x00000001)
+#define TPM_SET_PERM_DATA              ((UINT32)0x00000002)
+#define TPM_SET_STCLEAR_FLAGS          ((UINT32)0x00000003)
+#define TPM_SET_STCLEAR_DATA           ((UINT32)0x00000004)
+#define TPM_SET_STANY_FLAGS            ((UINT32)0x00000005)
+#define TPM_SET_STANY_DATA             ((UINT32)0x00000006)
+#define TPM_SET_VENDOR                 ((UINT32)0x00000007)
+
+
+// Part 2, section 21.5: TPM_CAP_VERSION_INFO
+typedef struct tdTPM_CAP_VERSION_INFO
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_VERSION       version;
+    UINT16            specLevel;
+    BYTE              errataRev;
+    BYTE              tpmVendorID[4];
+    UINT16            vendorSpecificSize;
+    SIZEIS(vendorSpecificSize)
+        BYTE         *vendorSpecific;
+} TPM_CAP_VERSION_INFO;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 22: DAA Structures
+
+#define TPM_DAA_SIZE_r0                (43)
+#define TPM_DAA_SIZE_r1                (43)
+#define TPM_DAA_SIZE_r2                (128)
+#define TPM_DAA_SIZE_r3                (168)
+#define TPM_DAA_SIZE_r4                (219)
+#define TPM_DAA_SIZE_NT                (20)
+#define TPM_DAA_SIZE_v0                (128)
+#define TPM_DAA_SIZE_v1                (192)
+#define TPM_DAA_SIZE_NE                (256)
+#define TPM_DAA_SIZE_w                 (256)
+#define TPM_DAA_SIZE_issuerModulus     (256)
+#define TPM_DAA_power0                 (104)
+#define TPM_DAA_power1                 (1024)
+
+typedef struct tdTPM_DAA_ISSUER
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        DAA_digest_R0;
+    TPM_DIGEST        DAA_digest_R1;
+    TPM_DIGEST        DAA_digest_S0;
+    TPM_DIGEST        DAA_digest_S1;
+    TPM_DIGEST        DAA_digest_n;
+    TPM_DIGEST        DAA_digest_gamma;
+    BYTE              DAA_generic_q[26];
+} TPM_DAA_ISSUER;
+
+
+typedef struct tdTPM_DAA_TPM
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_DIGEST        DAA_digestIssuer;
+    TPM_DIGEST        DAA_digest_v0;
+    TPM_DIGEST        DAA_digest_v1;
+    TPM_DIGEST        DAA_rekey;
+    UINT32            DAA_count;
+} TPM_DAA_TPM;
+
+typedef struct tdTPM_DAA_CONTEXT
+{
+    TPM_STRUCTURE_TAG    tag;
+    TPM_DIGEST           DAA_digestContext;
+    TPM_DIGEST           DAA_digest;
+    TPM_DAA_CONTEXT_SEED DAA_contextSeed;
+    BYTE                 DAA_scratch[256];
+    BYTE                 DAA_stage;
+} TPM_DAA_CONTEXT;
+
+typedef struct tdTPM_DAA_JOINDATA
+{
+    BYTE       DAA_join_u0[128];
+    BYTE       DAA_join_u1[138];
+    TPM_DIGEST DAA_digest_n0;
+} TPM_DAA_JOINDATA;
+
+typedef struct tdTPM_DAA_BLOB
+{
+    TPM_STRUCTURE_TAG tag;
+    TPM_RESOURCE_TYPE resourceType;
+    BYTE              label[16];
+    TPM_DIGEST        blobIntegrity;
+    UINT32            additionalSize;
+    SIZEIS(additionalSize)
+        BYTE         *additionalData;
+    UINT32            sensitiveSize;
+    SIZEIS(sensitiveSize)
+        BYTE         *sensitiveData;
+} TPM_DAA_BLOB;
+
+typedef struct tdTPM_DAA_SENSITIVE
+{
+    TPM_STRUCTURE_TAG tag;
+    UINT32            internalSize;
+    SIZEIS(internalSize)
+        BYTE         *internalData;
+} TPM_DAA_SENSITIVE;
+
+
+
+//-------------------------------------------------------------------
+// Part 2, section 23: Redirection
+
+// This section of the TPM spec defines exactly one value but does not
+// give it a name. The definition of TPM_SetRedirection in Part3
+// refers to exactly one name but does not give its value. We join
+// them here.
+#define TPM_REDIR_GPIO              (0x00000001)
+
+
+//-------------------------------------------------------------------
+// Part 2, section 24.6: TPM_SYM_MODE
+//    Deprecated by TPM 1.2 spec
+
+typedef UINT32 TPM_SYM_MODE;
+#define TPM_SYM_MODE_ECB            (0x00000001)
+#define TPM_SYM_MODE_CBC            (0x00000002)
+#define TPM_SYM_MODE_CFB            (0x00000003)
+
+#endif // __TPM_H__
+
diff --git a/tss/include/tss/tpm_error.h b/tss/include/tss/tpm_error.h
index ccd4af4..3596e6d 100644
--- a/tss/include/tss/tpm_error.h
+++ b/tss/include/tss/tpm_error.h
@@ -1,963 +1,963 @@
-/*

- * The TPM error codes extracted from the TPM main specification

- * version 1.2 revision 85.

- */

-

-#ifndef __TPM_ERROR_H__

-#define __TPM_ERROR_H__

-

-

-#ifndef TPM_E_BASE

-#define TPM_E_BASE        ((UINT32)0)

-#endif

-

-#ifndef TPM_E_NON_FATAL

-#define TPM_E_NON_FATAL   ((UINT32)0x00000800)

-#endif

-

-

-// Successful completion of the TPM operation.

-#define TPM_SUCCESS    TPM_E_BASE

-

-//

-// MessageId: TPM_E_AUTHFAIL

-//

-// MessageText:

-//

-// Authentication failed

-//

-#define TPM_E_AUTHFAIL ((UINT32)(TPM_E_BASE + 0x00000001))

-

-//

-// MessageId: TPM_E_BADINDEX

-//

-// MessageText:

-//

-// The index to a PCR, DIR or other register is incorrect

-//

-#define TPM_E_BADINDEX ((UINT32)(TPM_E_BASE + 0x00000002))

-

-//

-// MessageId: TPM_E_BAD_PARAMETER

-//

-// MessageText:

-//

-// One or more parameter is bad

-//

-#define TPM_E_BAD_PARAMETER ((UINT32)(TPM_E_BASE + 0x00000003))

-

-//

-// MessageId: TPM_E_AUDITFAILURE

-//

-// MessageText:

-//

-// An operation completed successfully but the auditing of that

-// operation failed.

-//

-#define TPM_E_AUDITFAILURE ((UINT32)(TPM_E_BASE + 0x00000004))

-

-//

-// MessageId: TPM_E_CLEAR_DISABLED

-//

-// MessageText:

-//

-// The clear disable flag is set and all clear operations now require

-// physical access

-//

-#define TPM_E_CLEAR_DISABLED ((UINT32)(TPM_E_BASE + 0x00000005))

-

-//

-// MessageId: TPM_E_DEACTIVATED

-//

-// MessageText:

-//

-// The TPM is deactivated

-//

-#define TPM_E_DEACTIVATED ((UINT32)(TPM_E_BASE + 0x00000006))

-

-//

-// MessageId: TPM_E_DISABLED

-//

-// MessageText:

-//

-// The TPM is disabled

-//

-#define TPM_E_DISABLED ((UINT32)(TPM_E_BASE + 0x00000007))

-

-//

-// MessageId: TPM_E_DISABLED_CMD

-//

-// MessageText:

-//

-// The target command has been disabled

-//

-#define TPM_E_DISABLED_CMD ((UINT32)(TPM_E_BASE + 0x00000008))

-

-//

-// MessageId: TPM_E_FAIL

-//

-// MessageText:

-//

-// The operation failed

-//

-#define TPM_E_FAIL ((UINT32)(TPM_E_BASE + 0x00000009))

-

-//

-// MessageId: TPM_E_BAD_ORDINAL

-//

-// MessageText:

-//

-// The ordinal was unknown or inconsistent

-//

-#define TPM_E_BAD_ORDINAL ((UINT32)(TPM_E_BASE + 0x0000000a))

-

-//

-// MessageId: TPM_E_INSTALL_DISABLED

-//

-// MessageText:

-//

-// The ability to install an owner is disabled

-//

-#define TPM_E_INSTALL_DISABLED ((UINT32)(TPM_E_BASE + 0x0000000b))

-

-//

-// MessageId: TPM_E_INVALID_KEYHANDLE

-//

-// MessageText:

-//

-// The key handle can not be interpreted

-//

-#define TPM_E_INVALID_KEYHANDLE ((UINT32)(TPM_E_BASE + 0x0000000c))

-

-//

-// MessageId: TPM_E_KEYNOTFOUND

-//

-// MessageText:

-//

-// The key handle points to an invalid key

-//

-#define TPM_E_KEYNOTFOUND ((UINT32)(TPM_E_BASE + 0x0000000d))

-

-//

-// MessageId: TPM_E_INAPPROPRIATE_ENC

-//

-// MessageText:

-//

-// Unacceptable encryption scheme

-//

-#define TPM_E_INAPPROPRIATE_ENC ((UINT32)(TPM_E_BASE + 0x0000000e))

-

-//

-// MessageId: TPM_E_MIGRATEFAIL

-//

-// MessageText:

-//

-// Migration authorization failed

-//

-#define TPM_E_MIGRATEFAIL ((UINT32)(TPM_E_BASE + 0x0000000f))

-

-//

-// MessageId: TPM_E_INVALID_PCR_INFO

-//

-// MessageText:

-//

-// PCR information could not be interpreted

-//

-#define TPM_E_INVALID_PCR_INFO ((UINT32)(TPM_E_BASE + 0x00000010))

-

-//

-// MessageId: TPM_E_NOSPACE

-//

-// MessageText:

-//

-// No room to load key.

-//

-#define TPM_E_NOSPACE ((UINT32)(TPM_E_BASE + 0x00000011))

-

-//

-// MessageId: TPM_E_NOSRK

-//

-// MessageText:

-//

-// There is no SRK set

-//

-#define TPM_E_NOSRK ((UINT32)(TPM_E_BASE + 0x00000012))

-

-//

-// MessageId: TPM_E_NOTSEALED_BLOB

-//

-// MessageText:

-//

-// An encrypted blob is invalid or was not created by this TPM

-//

-#define TPM_E_NOTSEALED_BLOB ((UINT32)(TPM_E_BASE + 0x00000013))

-

-//

-// MessageId: TPM_E_OWNER_SET

-//

-// MessageText:

-//

-// There is already an Owner 

-//

-#define TPM_E_OWNER_SET ((UINT32)(TPM_E_BASE + 0x00000014))

-

-//

-// MessageId: TPM_E_RESOURCES

-//

-// MessageText:

-//

-// The TPM has insufficient internal resources to perform the

-// requested action.

-//

-#define TPM_E_RESOURCES ((UINT32)(TPM_E_BASE + 0x00000015))

-

-//

-// MessageId: TPM_E_SHORTRANDOM

-//

-// MessageText:

-//

-// A random string was too short

-//

-#define TPM_E_SHORTRANDOM ((UINT32)(TPM_E_BASE + 0x00000016))

-

-//

-// MessageId: TPM_E_SIZE

-//

-// MessageText:

-//

-// The TPM does not have the space to perform the operation.

-//

-#define TPM_E_SIZE ((UINT32)(TPM_E_BASE + 0x00000017))

-

-//

-// MessageId: TPM_E_WRONGPCRVAL

-//

-// MessageText:

-//

-// The named PCR value does not match the current PCR value.

-//

-#define TPM_E_WRONGPCRVAL ((UINT32)(TPM_E_BASE + 0x00000018))

-

-//

-// MessageId: TPM_E_BAD_PARAM_SIZE 

-//

-// MessageText:

-//

-// The paramSize argument to the command has the incorrect value 

-//

-#define TPM_E_BAD_PARAM_SIZE ((UINT32)(TPM_E_BASE + 0x00000019))

-

-//

-// MessageId: TPM_E_SHA_THREAD

-//

-// MessageText:

-//

-// There is no existing SHA-1 thread.

-//

-#define TPM_E_SHA_THREAD ((UINT32)(TPM_E_BASE + 0x0000001a))

-

-//

-// MessageId: TPM_E_SHA_ERROR

-//

-// MessageText:

-//

-// The calculation is unable to proceed because the existing SHA-1

-// thread has already encountered an error.

-//

-#define TPM_E_SHA_ERROR ((UINT32)(TPM_E_BASE + 0x0000001b))

-

-//

-// MessageId: TPM_E_FAILEDSELFTEST

-//

-// MessageText:

-//

-// Self-test has failed and the TPM has shutdown.

-//

-#define TPM_E_FAILEDSELFTEST ((UINT32)(TPM_E_BASE + 0x0000001c))

-

-//

-// MessageId: TPM_E_AUTH2FAIL

-//

-// MessageText:

-//

-// The authorization for the second key in a 2 key function failed

-// authorization

-//

-#define TPM_E_AUTH2FAIL ((UINT32)(TPM_E_BASE + 0x0000001d))

-

-//

-// MessageId: TPM_E_BADTAG

-//

-// MessageText:

-//

-// The tag value sent to for a command is invalid

-//

-#define TPM_E_BADTAG ((UINT32)(TPM_E_BASE + 0x0000001e))

-

-//

-// MessageId: TPM_E_IOERROR

-//

-// MessageText:

-//

-// An IO error occurred transmitting information to the TPM

-//

-#define TPM_E_IOERROR ((UINT32)(TPM_E_BASE + 0x0000001f))

-

-//

-// MessageId: TPM_E_ENCRYPT_ERROR

-//

-// MessageText:

-//

-// The encryption process had a problem.

-//

-#define TPM_E_ENCRYPT_ERROR ((UINT32)(TPM_E_BASE + 0x00000020))

-

-//

-// MessageId: TPM_E_DECRYPT_ERROR

-//

-// MessageText:

-//

-// The decryption process did not complete.

-//

-#define TPM_E_DECRYPT_ERROR ((UINT32)(TPM_E_BASE + 0x00000021))

-

-//

-// MessageId: TPM_E_INVALID_AUTHHANDLE

-//

-// MessageText:

-//

-// An invalid handle was used.

-//

-#define TPM_E_INVALID_AUTHHANDLE ((UINT32)(TPM_E_BASE + 0x00000022))

-

-//

-// MessageId: TPM_E_NO_ENDORSEMENT

-//

-// MessageText:

-//

-// The TPM does not a EK installed

-//

-#define TPM_E_NO_ENDORSEMENT ((UINT32)(TPM_E_BASE + 0x00000023))

-

-//

-// MessageId: TPM_E_INVALID_KEYUSAGE

-//

-// MessageText:

-//

-// The usage of a key is not allowed

-//

-#define TPM_E_INVALID_KEYUSAGE ((UINT32)(TPM_E_BASE + 0x00000024))

-

-//

-// MessageId: TPM_E_WRONG_ENTITYTYPE

-//

-// MessageText:

-//

-// The submitted entity type is not allowed

-//

-#define TPM_E_WRONG_ENTITYTYPE ((UINT32)(TPM_E_BASE + 0x00000025))

-

-//

-// MessageId: TPM_E_INVALID_POSTINIT

-//

-// MessageText:

-//

-// The command was received in the wrong sequence relative to TPM_Init

-// and a subsequent TPM_Startup

-//

-#define TPM_E_INVALID_POSTINIT ((UINT32)(TPM_E_BASE + 0x00000026))

-

-//

-// MessageId: TPM_E_INAPPROPRIATE_SIG

-//

-// MessageText:

-//

-// Signed data cannot include additional DER information

-//

-#define TPM_E_INAPPROPRIATE_SIG ((UINT32)(TPM_E_BASE + 0x00000027))

-

-//

-// MessageId: TPM_E_BAD_KEY_PROPERTY

-//

-// MessageText:

-//

-// The key properties in TPM_KEY_PARMs are not supported by this TPM

-//

-#define TPM_E_BAD_KEY_PROPERTY ((UINT32)(TPM_E_BASE + 0x00000028))

-

-//

-// MessageId: TPM_E_BAD_MIGRATION

-//

-// MessageText:

-//

-// The migration properties of this key are incorrect.

-//

-#define TPM_E_BAD_MIGRATION ((UINT32)(TPM_E_BASE + 0x00000029))

-

-//

-// MessageId: TPM_E_BAD_SCHEME

-//

-// MessageText:

-//

-// The signature or encryption scheme for this key is incorrect or not

-// permitted in this situation.

-//

-#define TPM_E_BAD_SCHEME ((UINT32)(TPM_E_BASE + 0x0000002a))

-

-//

-// MessageId: TPM_E_BAD_DATASIZE

-//

-// MessageText:

-//

-// The size of the data (or blob) parameter is bad or inconsistent

-// with the referenced key

-//

-#define TPM_E_BAD_DATASIZE ((UINT32)(TPM_E_BASE + 0x0000002b))

-

-//

-// MessageId: TPM_E_BAD_MODE

-//

-// MessageText:

-//

-// A mode parameter is bad, such as capArea or subCapArea for

-// TPM_GetCapability, physicalPresence parameter for

-// TPM_PhysicalPresence, or migrationType for TPM_CreateMigrationBlob.

-//

-#define TPM_E_BAD_MODE ((UINT32)(TPM_E_BASE + 0x0000002c))

-

-//

-// MessageId: TPM_E_BAD_PRESENCE

-//

-// MessageText:

-//

-// Either the physicalPresence or physicalPresenceLock bits have the

-// wrong value

-//

-#define TPM_E_BAD_PRESENCE ((UINT32)(TPM_E_BASE + 0x0000002d))

-

-//

-// MessageId: TPM_E_BAD_VERSION

-//

-// MessageText:

-//

-// The TPM cannot perform this version of the capability

-//

-#define TPM_E_BAD_VERSION ((UINT32)(TPM_E_BASE + 0x0000002e))

-

-//

-// MessageId: TPM_E_NO_WRAP_TRANSPORT

-//

-// MessageText:

-//

-// The TPM does not allow for wrapped transport sessions

-//

-#define TPM_E_NO_WRAP_TRANSPORT ((UINT32)(TPM_E_BASE + 0x0000002f))

-

-//

-// MessageId: TPM_E_AUDITFAIL_UNSUCCESSFUL

-//

-// MessageText:

-//

-// TPM audit construction failed and the underlying command was

-// returning a failure code also

-//

-#define TPM_E_AUDITFAIL_UNSUCCESSFUL ((UINT32)(TPM_E_BASE + 0x00000030))

-

-//

-// MessageId: TPM_E_AUDITFAIL_SUCCESSFUL

-//

-// MessageText:

-//

-// TPM audit construction failed and the underlying command was

-// returning success

-//

-#define TPM_E_AUDITFAIL_SUCCESSFUL ((UINT32)(TPM_E_BASE + 0x00000031))

-

-//

-// MessageId: TPM_E_NOTRESETABLE

-//

-// MessageText:

-//

-// Attempt to reset a PCR register that does not have the resettable

-// attribute

-//

-#define TPM_E_NOTRESETABLE ((UINT32)(TPM_E_BASE + 0x00000032))

-

-//

-// MessageId: TPM_E_NOTLOCAL

-//

-// MessageText:

-//

-// Attempt to reset a PCR register that requires locality and locality

-// modifier not part of command transport

-//

-#define TPM_E_NOTLOCAL ((UINT32)(TPM_E_BASE + 0x00000033))

-

-//

-// MessageId: TPM_E_BAD_TYPE

-//

-// MessageText:

-//

-// Make identity blob not properly typed

-//

-#define TPM_E_BAD_TYPE ((UINT32)(TPM_E_BASE + 0x00000034))

-

-//

-// MessageId: TPM_E_INVALID_RESOURCE

-//

-// MessageText:

-//

-// When saving context identified resource type does not match actual

-// resource

-//

-#define TPM_E_INVALID_RESOURCE ((UINT32)(TPM_E_BASE + 0x00000035))

-

-//

-// MessageId: TPM_E_NOTFIPS

-//

-// MessageText:

-//

-// The TPM is attempting to execute a command only available when in

-// FIPS mode

-//

-#define TPM_E_NOTFIPS ((UINT32)(TPM_E_BASE + 0x00000036))

-

-//

-// MessageId: TPM_E_INVALID_FAMILY

-//

-// MessageText:

-//

-// The command is attempting to use an invalid family ID

-//

-#define TPM_E_INVALID_FAMILY ((UINT32)(TPM_E_BASE + 0x00000037))

-

-//

-// MessageId: TPM_E_NO_NV_PERMISSION

-//

-// MessageText:

-//

-// The permission to manipulate the NV storage is not available

-//

-#define TPM_E_NO_NV_PERMISSION ((UINT32)(TPM_E_BASE + 0x00000038))

-

-//

-// MessageId: TPM_E_REQUIRES_SIGN

-//

-// MessageText:

-//

-// The operation requires a signed command

-//

-#define TPM_E_REQUIRES_SIGN ((UINT32)(TPM_E_BASE + 0x00000039))

-

-//

-// MessageId: TPM_E_KEY_NOTSUPPORTED

-//

-// MessageText:

-//

-// Wrong operation to load an NV key

-//

-#define TPM_E_KEY_NOTSUPPORTED ((UINT32)(TPM_E_BASE + 0x0000003a))

-

-//

-// MessageId: TPM_E_AUTH_CONFLICT

-//

-// MessageText:

-//

-// NV_LoadKey blob requires both owner and blob authorization

-//

-#define TPM_E_AUTH_CONFLICT ((UINT32)(TPM_E_BASE + 0x0000003b))

-

-//

-// MessageId: TPM_E_AREA_LOCKED

-//

-// MessageText:

-//

-// The NV area is locked and not writable

-//

-#define TPM_E_AREA_LOCKED ((UINT32)(TPM_E_BASE + 0x0000003c))

-

-//

-// MessageId: TPM_E_BAD_LOCALITY

-//

-// MessageText:

-//

-// The locality is incorrect for the attempted operation

-//

-#define TPM_E_BAD_LOCALITY ((UINT32)(TPM_E_BASE + 0x0000003d))

-

-//

-// MessageId: TPM_E_READ_ONLY

-//

-// MessageText:

-//

-// The NV area is read only and can't be written to

-//

-#define TPM_E_READ_ONLY ((UINT32)(TPM_E_BASE + 0x0000003e))

-

-//

-// MessageId: TPM_E_PER_NOWRITE

-//

-// MessageText:

-//

-// There is no protection on the write to the NV area

-//

-#define TPM_E_PER_NOWRITE ((UINT32)(TPM_E_BASE + 0x0000003f))

-

-//

-// MessageId: TPM_E_FAMILYCOUNT

-//

-// MessageText:

-//

-// The family count value does not match

-//

-#define TPM_E_FAMILYCOUNT ((UINT32)(TPM_E_BASE + 0x00000040))

-

-//

-// MessageId: TPM_E_WRITE_LOCKED

-//

-// MessageText:

-//

-// The NV area has already been written to

-//

-#define TPM_E_WRITE_LOCKED ((UINT32)(TPM_E_BASE + 0x00000041))

-

-//

-// MessageId: TPM_E_BAD_ATTRIBUTES

-//

-// MessageText:

-//

-// The NV area attributes conflict

-//

-#define TPM_E_BAD_ATTRIBUTES ((UINT32)(TPM_E_BASE + 0x00000042))

-

-//

-// MessageId: TPM_E_INVALID_STRUCTURE

-//

-// MessageText:

-//

-// The structure tag and version are invalid or inconsistent

-//

-#define TPM_E_INVALID_STRUCTURE ((UINT32)(TPM_E_BASE + 0x00000043))

-

-//

-// MessageId: TPM_E_KEY_OWNER_CONTROL

-//

-// MessageText:

-//

-// The key is under control of the TPM Owner and can only be evicted

-// by the TPM Owner.

-//

-#define TPM_E_KEY_OWNER_CONTROL ((UINT32)(TPM_E_BASE + 0x00000044))

-

-//

-// MessageId: TPM_E_BAD_COUNTER

-//

-// MessageText:

-//

-// The counter handle is incorrect

-//

-#define TPM_E_BAD_COUNTER ((UINT32)(TPM_E_BASE + 0x00000045))

-

-//

-// MessageId: TPM_E_NOT_FULLWRITE

-//

-// MessageText:

-//

-// The write is not a complete write of the area

-//

-#define TPM_E_NOT_FULLWRITE ((UINT32)(TPM_E_BASE + 0x00000046))

-

-//

-// MessageId: TPM_E_CONTEXT_GAP

-//

-// MessageText:

-//

-// The gap between saved context counts is too large

-//

-#define TPM_E_CONTEXT_GAP ((UINT32)(TPM_E_BASE + 0x00000047))

-

-//

-// MessageId: TPM_E_MAXNVWRITES

-//

-// MessageText:

-//

-// The maximum number of NV writes without an owner has been exceeded

-//

-#define TPM_E_MAXNVWRITES ((UINT32)(TPM_E_BASE + 0x00000048))

-

-//

-// MessageId: TPM_E_NOOPERATOR

-//

-// MessageText:

-//

-// No operator AuthData value is set

-//

-#define TPM_E_NOOPERATOR ((UINT32)(TPM_E_BASE + 0x00000049))

-

-//

-// MessageId: TPM_E_RESOURCEMISSING

-//

-// MessageText:

-//

-// The resource pointed to by context is not loaded

-//

-#define TPM_E_RESOURCEMISSING ((UINT32)(TPM_E_BASE + 0x0000004a))

-

-//

-// MessageId: TPM_E_DELEGATE_LOCK

-//

-// MessageText:

-//

-// The delegate administration is locked

-//

-#define TPM_E_DELEGATE_LOCK ((UINT32)(TPM_E_BASE + 0x0000004b))

-

-//

-// MessageId: TPM_E_DELEGATE_FAMILY

-//

-// MessageText:

-//

-// Attempt to manage a family other then the delegated family

-//

-#define TPM_E_DELEGATE_FAMILY ((UINT32)(TPM_E_BASE + 0x0000004c))

-

-//

-// MessageId: TPM_E_DELEGATE_ADMIN

-//

-// MessageText:

-//

-// Delegation table management not enabled

-//

-#define TPM_E_DELEGATE_ADMIN ((UINT32)(TPM_E_BASE + 0x0000004d))

-

-//

-// MessageId: TPM_E_TRANSPORT_NOTEXCLUSIVE

-//

-// MessageText:

-//

-// There was a command executed outside of an exclusive transport session

-//

-#define TPM_E_TRANSPORT_NOTEXCLUSIVE ((UINT32)(TPM_E_BASE + 0x0000004e))

-

-//

-// MessageId: TPM_E_OWNER_CONTROL

-//

-// MessageText:

-//

-// Attempt to context save a owner evict controlled key

-//

-#define TPM_E_OWNER_CONTROL ((UINT32)(TPM_E_BASE + 0x0000004f))

-

-//

-// MessageId: TPM_E_DAA_RESOURCES

-//

-// MessageText:

-//

-// The DAA command has no resources available to execute the command

-//

-#define TPM_E_DAA_RESOURCES ((UINT32)(TPM_E_BASE + 0x00000050))

-

-//

-// MessageId: TPM_E_DAA_INPUT_DATA0

-//

-// MessageText:

-//

-// The consistency check on DAA parameter inputData0 has failed.

-//

-#define TPM_E_DAA_INPUT_DATA0 ((UINT32)(TPM_E_BASE + 0x00000051))

-

-//

-// MessageId: TPM_E_DAA_INPUT_DATA1

-//

-// MessageText:

-//

-// The consistency check on DAA parameter inputData1 has failed.

-//

-#define TPM_E_DAA_INPUT_DATA1 ((UINT32)(TPM_E_BASE + 0x00000052))

-

-//

-// MessageId: TPM_E_DAA_ISSUER_SETTINGS

-//

-// MessageText:

-//

-// The consistency check on DAA_issuerSettings has failed.

-//

-#define TPM_E_DAA_ISSUER_SETTINGS ((UINT32)(TPM_E_BASE + 0x00000053))

-

-//

-// MessageId: TPM_E_DAA_TPM_SETTINGS

-//

-// MessageText:

-//

-// The consistency check on DAA_tpmSpecific has failed.

-//

-#define TPM_E_DAA_TPM_SETTINGS ((UINT32)(TPM_E_BASE + 0x00000054))

-

-//

-// MessageId: TPM_E_DAA_STAGE

-//

-// MessageText:

-//

-// The atomic process indicated by the submitted DAA command is not

-// the expected process.

-//

-#define TPM_E_DAA_STAGE ((UINT32)(TPM_E_BASE + 0x00000055))

-

-//

-// MessageId: TPM_E_DAA_ISSUER_VALIDITY

-//

-// MessageText:

-//

-// The issuer's validity check has detected an inconsistency

-//

-#define TPM_E_DAA_ISSUER_VALIDITY ((UINT32)(TPM_E_BASE + 0x00000056))

-

-//

-// MessageId: TPM_E_DAA_WRONG_W

-//

-// MessageText:

-//

-// The consistency check on w has failed.

-//

-#define TPM_E_DAA_WRONG_W ((UINT32)(TPM_E_BASE + 0x00000057))

-

-//

-// MessageId: TPM_E_BAD_HANDLE

-//

-// MessageText:

-//

-// The handle is incorrect

-//

-#define TPM_E_BAD_HANDLE ((UINT32)(TPM_E_BASE + 0x00000058))

-

-//

-// MessageId: TPM_E_BAD_DELEGATE

-//

-// MessageText:

-//

-// Delegation is not correct

-//

-#define TPM_E_BAD_DELEGATE ((UINT32)(TPM_E_BASE + 0x00000059))

-

-//

-// MessageId: TPM_E_BADCONTEXT

-//

-// MessageText:

-//

-// The context blob is invalid

-//

-#define TPM_E_BADCONTEXT ((UINT32)(TPM_E_BASE + 0x0000005a))

-

-//

-// MessageId: TPM_E_TOOMANYCONTEXTS

-//

-// MessageText:

-//

-// Too many contexts held by the TPM

-//

-#define TPM_E_TOOMANYCONTEXTS ((UINT32)(TPM_E_BASE + 0x0000005b))

-

-//

-// MessageId: TPM_E_MA_TICKET_SIGNATURE

-//

-// MessageText:

-//

-// Migration authority signature validation failure

-//

-#define TPM_E_MA_TICKET_SIGNATURE ((UINT32)(TPM_E_BASE + 0x0000005c))

-

-//

-// MessageId: TPM_E_MA_DESTINATION

-//

-// MessageText:

-//

-// Migration destination not authenticated

-//

-#define TPM_E_MA_DESTINATION ((UINT32)(TPM_E_BASE + 0x0000005d))

-

-//

-// MessageId: TPM_E_MA_SOURCE

-//

-// MessageText:

-//

-// Migration source incorrect

-//

-#define TPM_E_MA_SOURCE ((UINT32)(TPM_E_BASE + 0x0000005e))

-

-//

-// MessageId: TPM_E_MA_AUTHORITY

-//

-// MessageText:

-//

-// Incorrect migration authority

-//

-#define TPM_E_MA_AUTHORITY ((UINT32)(TPM_E_BASE + 0x0000005f))

-

-//

-// MessageId: TPM_E_PERMANENTEK

-//

-// MessageText:

-//

-// Attempt to revoke the EK and the EK is not revocable

-//

-#define TPM_E_PERMANENTEK ((UINT32)(TPM_E_BASE + 0x00000061))

-

-//

-// MessageId: TPM_E_BAD_SIGNATURE

-//

-// MessageText:

-//

-// Bad signature of CMK ticket

-//

-#define TPM_E_BAD_SIGNATURE ((UINT32)(TPM_E_BASE + 0x00000062))

-

-//

-// MessageId: TPM_E_NOCONTEXTSPACE

-//

-// MessageText:

-//

-// There is no room in the context list for additional contexts

-//

-#define TPM_E_NOCONTEXTSPACE  ((UINT32)(TPM_E_BASE + 0x00000063))

-

-

-//

-// MessageId: TPM_E_RETRY

-//

-// MessageText:

-//

-// The TPM is too busy to respond to the command immediately, but the

-// command could be resubmitted at a later time. The TPM MAY return

-// TPM_Retry for any command at any time.

-//

-#define TPM_E_RETRY ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL))

-

-//

-// MessageId: TPM_E_NEEDS_SELFTEST

-//

-// MessageText:

-//

-// SelfTestFull has not been run

-//

-#define TPM_E_NEEDS_SELFTEST ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL + 1))

-

-//

-// MessageId: TPM_E_DOING_SELFTEST

-//

-// MessageText:

-//

-// The TPM is currently executing a full selftest

-//

-#define TPM_E_DOING_SELFTEST ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL + 2))

-

-//

-// MessageId: TPM_E_DEFEND_LOCK_RUNNING

-//

-// MessageText:

-//

-// The TPM is defending against dictionary attacks and is in some

-// time-out period.

-//

-#define TPM_E_DEFEND_LOCK_RUNNING ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL + 3))

-

-#endif /* __TPM_ERROR_H__ */

+/*
+ * The TPM error codes extracted from the TPM main specification
+ * version 1.2 revision 85.
+ */
+
+#ifndef __TPM_ERROR_H__
+#define __TPM_ERROR_H__
+
+
+#ifndef TPM_E_BASE
+#define TPM_E_BASE        ((UINT32)0)
+#endif
+
+#ifndef TPM_E_NON_FATAL
+#define TPM_E_NON_FATAL   ((UINT32)0x00000800)
+#endif
+
+
+// Successful completion of the TPM operation.
+#define TPM_SUCCESS    TPM_E_BASE
+
+//
+// MessageId: TPM_E_AUTHFAIL
+//
+// MessageText:
+//
+// Authentication failed
+//
+#define TPM_E_AUTHFAIL ((UINT32)(TPM_E_BASE + 0x00000001))
+
+//
+// MessageId: TPM_E_BADINDEX
+//
+// MessageText:
+//
+// The index to a PCR, DIR or other register is incorrect
+//
+#define TPM_E_BADINDEX ((UINT32)(TPM_E_BASE + 0x00000002))
+
+//
+// MessageId: TPM_E_BAD_PARAMETER
+//
+// MessageText:
+//
+// One or more parameter is bad
+//
+#define TPM_E_BAD_PARAMETER ((UINT32)(TPM_E_BASE + 0x00000003))
+
+//
+// MessageId: TPM_E_AUDITFAILURE
+//
+// MessageText:
+//
+// An operation completed successfully but the auditing of that
+// operation failed.
+//
+#define TPM_E_AUDITFAILURE ((UINT32)(TPM_E_BASE + 0x00000004))
+
+//
+// MessageId: TPM_E_CLEAR_DISABLED
+//
+// MessageText:
+//
+// The clear disable flag is set and all clear operations now require
+// physical access
+//
+#define TPM_E_CLEAR_DISABLED ((UINT32)(TPM_E_BASE + 0x00000005))
+
+//
+// MessageId: TPM_E_DEACTIVATED
+//
+// MessageText:
+//
+// The TPM is deactivated
+//
+#define TPM_E_DEACTIVATED ((UINT32)(TPM_E_BASE + 0x00000006))
+
+//
+// MessageId: TPM_E_DISABLED
+//
+// MessageText:
+//
+// The TPM is disabled
+//
+#define TPM_E_DISABLED ((UINT32)(TPM_E_BASE + 0x00000007))
+
+//
+// MessageId: TPM_E_DISABLED_CMD
+//
+// MessageText:
+//
+// The target command has been disabled
+//
+#define TPM_E_DISABLED_CMD ((UINT32)(TPM_E_BASE + 0x00000008))
+
+//
+// MessageId: TPM_E_FAIL
+//
+// MessageText:
+//
+// The operation failed
+//
+#define TPM_E_FAIL ((UINT32)(TPM_E_BASE + 0x00000009))
+
+//
+// MessageId: TPM_E_BAD_ORDINAL
+//
+// MessageText:
+//
+// The ordinal was unknown or inconsistent
+//
+#define TPM_E_BAD_ORDINAL ((UINT32)(TPM_E_BASE + 0x0000000a))
+
+//
+// MessageId: TPM_E_INSTALL_DISABLED
+//
+// MessageText:
+//
+// The ability to install an owner is disabled
+//
+#define TPM_E_INSTALL_DISABLED ((UINT32)(TPM_E_BASE + 0x0000000b))
+
+//
+// MessageId: TPM_E_INVALID_KEYHANDLE
+//
+// MessageText:
+//
+// The key handle can not be interpreted
+//
+#define TPM_E_INVALID_KEYHANDLE ((UINT32)(TPM_E_BASE + 0x0000000c))
+
+//
+// MessageId: TPM_E_KEYNOTFOUND
+//
+// MessageText:
+//
+// The key handle points to an invalid key
+//
+#define TPM_E_KEYNOTFOUND ((UINT32)(TPM_E_BASE + 0x0000000d))
+
+//
+// MessageId: TPM_E_INAPPROPRIATE_ENC
+//
+// MessageText:
+//
+// Unacceptable encryption scheme
+//
+#define TPM_E_INAPPROPRIATE_ENC ((UINT32)(TPM_E_BASE + 0x0000000e))
+
+//
+// MessageId: TPM_E_MIGRATEFAIL
+//
+// MessageText:
+//
+// Migration authorization failed
+//
+#define TPM_E_MIGRATEFAIL ((UINT32)(TPM_E_BASE + 0x0000000f))
+
+//
+// MessageId: TPM_E_INVALID_PCR_INFO
+//
+// MessageText:
+//
+// PCR information could not be interpreted
+//
+#define TPM_E_INVALID_PCR_INFO ((UINT32)(TPM_E_BASE + 0x00000010))
+
+//
+// MessageId: TPM_E_NOSPACE
+//
+// MessageText:
+//
+// No room to load key.
+//
+#define TPM_E_NOSPACE ((UINT32)(TPM_E_BASE + 0x00000011))
+
+//
+// MessageId: TPM_E_NOSRK
+//
+// MessageText:
+//
+// There is no SRK set
+//
+#define TPM_E_NOSRK ((UINT32)(TPM_E_BASE + 0x00000012))
+
+//
+// MessageId: TPM_E_NOTSEALED_BLOB
+//
+// MessageText:
+//
+// An encrypted blob is invalid or was not created by this TPM
+//
+#define TPM_E_NOTSEALED_BLOB ((UINT32)(TPM_E_BASE + 0x00000013))
+
+//
+// MessageId: TPM_E_OWNER_SET
+//
+// MessageText:
+//
+// There is already an Owner 
+//
+#define TPM_E_OWNER_SET ((UINT32)(TPM_E_BASE + 0x00000014))
+
+//
+// MessageId: TPM_E_RESOURCES
+//
+// MessageText:
+//
+// The TPM has insufficient internal resources to perform the
+// requested action.
+//
+#define TPM_E_RESOURCES ((UINT32)(TPM_E_BASE + 0x00000015))
+
+//
+// MessageId: TPM_E_SHORTRANDOM
+//
+// MessageText:
+//
+// A random string was too short
+//
+#define TPM_E_SHORTRANDOM ((UINT32)(TPM_E_BASE + 0x00000016))
+
+//
+// MessageId: TPM_E_SIZE
+//
+// MessageText:
+//
+// The TPM does not have the space to perform the operation.
+//
+#define TPM_E_SIZE ((UINT32)(TPM_E_BASE + 0x00000017))
+
+//
+// MessageId: TPM_E_WRONGPCRVAL
+//
+// MessageText:
+//
+// The named PCR value does not match the current PCR value.
+//
+#define TPM_E_WRONGPCRVAL ((UINT32)(TPM_E_BASE + 0x00000018))
+
+//
+// MessageId: TPM_E_BAD_PARAM_SIZE 
+//
+// MessageText:
+//
+// The paramSize argument to the command has the incorrect value 
+//
+#define TPM_E_BAD_PARAM_SIZE ((UINT32)(TPM_E_BASE + 0x00000019))
+
+//
+// MessageId: TPM_E_SHA_THREAD
+//
+// MessageText:
+//
+// There is no existing SHA-1 thread.
+//
+#define TPM_E_SHA_THREAD ((UINT32)(TPM_E_BASE + 0x0000001a))
+
+//
+// MessageId: TPM_E_SHA_ERROR
+//
+// MessageText:
+//
+// The calculation is unable to proceed because the existing SHA-1
+// thread has already encountered an error.
+//
+#define TPM_E_SHA_ERROR ((UINT32)(TPM_E_BASE + 0x0000001b))
+
+//
+// MessageId: TPM_E_FAILEDSELFTEST
+//
+// MessageText:
+//
+// Self-test has failed and the TPM has shutdown.
+//
+#define TPM_E_FAILEDSELFTEST ((UINT32)(TPM_E_BASE + 0x0000001c))
+
+//
+// MessageId: TPM_E_AUTH2FAIL
+//
+// MessageText:
+//
+// The authorization for the second key in a 2 key function failed
+// authorization
+//
+#define TPM_E_AUTH2FAIL ((UINT32)(TPM_E_BASE + 0x0000001d))
+
+//
+// MessageId: TPM_E_BADTAG
+//
+// MessageText:
+//
+// The tag value sent to for a command is invalid
+//
+#define TPM_E_BADTAG ((UINT32)(TPM_E_BASE + 0x0000001e))
+
+//
+// MessageId: TPM_E_IOERROR
+//
+// MessageText:
+//
+// An IO error occurred transmitting information to the TPM
+//
+#define TPM_E_IOERROR ((UINT32)(TPM_E_BASE + 0x0000001f))
+
+//
+// MessageId: TPM_E_ENCRYPT_ERROR
+//
+// MessageText:
+//
+// The encryption process had a problem.
+//
+#define TPM_E_ENCRYPT_ERROR ((UINT32)(TPM_E_BASE + 0x00000020))
+
+//
+// MessageId: TPM_E_DECRYPT_ERROR
+//
+// MessageText:
+//
+// The decryption process did not complete.
+//
+#define TPM_E_DECRYPT_ERROR ((UINT32)(TPM_E_BASE + 0x00000021))
+
+//
+// MessageId: TPM_E_INVALID_AUTHHANDLE
+//
+// MessageText:
+//
+// An invalid handle was used.
+//
+#define TPM_E_INVALID_AUTHHANDLE ((UINT32)(TPM_E_BASE + 0x00000022))
+
+//
+// MessageId: TPM_E_NO_ENDORSEMENT
+//
+// MessageText:
+//
+// The TPM does not a EK installed
+//
+#define TPM_E_NO_ENDORSEMENT ((UINT32)(TPM_E_BASE + 0x00000023))
+
+//
+// MessageId: TPM_E_INVALID_KEYUSAGE
+//
+// MessageText:
+//
+// The usage of a key is not allowed
+//
+#define TPM_E_INVALID_KEYUSAGE ((UINT32)(TPM_E_BASE + 0x00000024))
+
+//
+// MessageId: TPM_E_WRONG_ENTITYTYPE
+//
+// MessageText:
+//
+// The submitted entity type is not allowed
+//
+#define TPM_E_WRONG_ENTITYTYPE ((UINT32)(TPM_E_BASE + 0x00000025))
+
+//
+// MessageId: TPM_E_INVALID_POSTINIT
+//
+// MessageText:
+//
+// The command was received in the wrong sequence relative to TPM_Init
+// and a subsequent TPM_Startup
+//
+#define TPM_E_INVALID_POSTINIT ((UINT32)(TPM_E_BASE + 0x00000026))
+
+//
+// MessageId: TPM_E_INAPPROPRIATE_SIG
+//
+// MessageText:
+//
+// Signed data cannot include additional DER information
+//
+#define TPM_E_INAPPROPRIATE_SIG ((UINT32)(TPM_E_BASE + 0x00000027))
+
+//
+// MessageId: TPM_E_BAD_KEY_PROPERTY
+//
+// MessageText:
+//
+// The key properties in TPM_KEY_PARMs are not supported by this TPM
+//
+#define TPM_E_BAD_KEY_PROPERTY ((UINT32)(TPM_E_BASE + 0x00000028))
+
+//
+// MessageId: TPM_E_BAD_MIGRATION
+//
+// MessageText:
+//
+// The migration properties of this key are incorrect.
+//
+#define TPM_E_BAD_MIGRATION ((UINT32)(TPM_E_BASE + 0x00000029))
+
+//
+// MessageId: TPM_E_BAD_SCHEME
+//
+// MessageText:
+//
+// The signature or encryption scheme for this key is incorrect or not
+// permitted in this situation.
+//
+#define TPM_E_BAD_SCHEME ((UINT32)(TPM_E_BASE + 0x0000002a))
+
+//
+// MessageId: TPM_E_BAD_DATASIZE
+//
+// MessageText:
+//
+// The size of the data (or blob) parameter is bad or inconsistent
+// with the referenced key
+//
+#define TPM_E_BAD_DATASIZE ((UINT32)(TPM_E_BASE + 0x0000002b))
+
+//
+// MessageId: TPM_E_BAD_MODE
+//
+// MessageText:
+//
+// A mode parameter is bad, such as capArea or subCapArea for
+// TPM_GetCapability, physicalPresence parameter for
+// TPM_PhysicalPresence, or migrationType for TPM_CreateMigrationBlob.
+//
+#define TPM_E_BAD_MODE ((UINT32)(TPM_E_BASE + 0x0000002c))
+
+//
+// MessageId: TPM_E_BAD_PRESENCE
+//
+// MessageText:
+//
+// Either the physicalPresence or physicalPresenceLock bits have the
+// wrong value
+//
+#define TPM_E_BAD_PRESENCE ((UINT32)(TPM_E_BASE + 0x0000002d))
+
+//
+// MessageId: TPM_E_BAD_VERSION
+//
+// MessageText:
+//
+// The TPM cannot perform this version of the capability
+//
+#define TPM_E_BAD_VERSION ((UINT32)(TPM_E_BASE + 0x0000002e))
+
+//
+// MessageId: TPM_E_NO_WRAP_TRANSPORT
+//
+// MessageText:
+//
+// The TPM does not allow for wrapped transport sessions
+//
+#define TPM_E_NO_WRAP_TRANSPORT ((UINT32)(TPM_E_BASE + 0x0000002f))
+
+//
+// MessageId: TPM_E_AUDITFAIL_UNSUCCESSFUL
+//
+// MessageText:
+//
+// TPM audit construction failed and the underlying command was
+// returning a failure code also
+//
+#define TPM_E_AUDITFAIL_UNSUCCESSFUL ((UINT32)(TPM_E_BASE + 0x00000030))
+
+//
+// MessageId: TPM_E_AUDITFAIL_SUCCESSFUL
+//
+// MessageText:
+//
+// TPM audit construction failed and the underlying command was
+// returning success
+//
+#define TPM_E_AUDITFAIL_SUCCESSFUL ((UINT32)(TPM_E_BASE + 0x00000031))
+
+//
+// MessageId: TPM_E_NOTRESETABLE
+//
+// MessageText:
+//
+// Attempt to reset a PCR register that does not have the resettable
+// attribute
+//
+#define TPM_E_NOTRESETABLE ((UINT32)(TPM_E_BASE + 0x00000032))
+
+//
+// MessageId: TPM_E_NOTLOCAL
+//
+// MessageText:
+//
+// Attempt to reset a PCR register that requires locality and locality
+// modifier not part of command transport
+//
+#define TPM_E_NOTLOCAL ((UINT32)(TPM_E_BASE + 0x00000033))
+
+//
+// MessageId: TPM_E_BAD_TYPE
+//
+// MessageText:
+//
+// Make identity blob not properly typed
+//
+#define TPM_E_BAD_TYPE ((UINT32)(TPM_E_BASE + 0x00000034))
+
+//
+// MessageId: TPM_E_INVALID_RESOURCE
+//
+// MessageText:
+//
+// When saving context identified resource type does not match actual
+// resource
+//
+#define TPM_E_INVALID_RESOURCE ((UINT32)(TPM_E_BASE + 0x00000035))
+
+//
+// MessageId: TPM_E_NOTFIPS
+//
+// MessageText:
+//
+// The TPM is attempting to execute a command only available when in
+// FIPS mode
+//
+#define TPM_E_NOTFIPS ((UINT32)(TPM_E_BASE + 0x00000036))
+
+//
+// MessageId: TPM_E_INVALID_FAMILY
+//
+// MessageText:
+//
+// The command is attempting to use an invalid family ID
+//
+#define TPM_E_INVALID_FAMILY ((UINT32)(TPM_E_BASE + 0x00000037))
+
+//
+// MessageId: TPM_E_NO_NV_PERMISSION
+//
+// MessageText:
+//
+// The permission to manipulate the NV storage is not available
+//
+#define TPM_E_NO_NV_PERMISSION ((UINT32)(TPM_E_BASE + 0x00000038))
+
+//
+// MessageId: TPM_E_REQUIRES_SIGN
+//
+// MessageText:
+//
+// The operation requires a signed command
+//
+#define TPM_E_REQUIRES_SIGN ((UINT32)(TPM_E_BASE + 0x00000039))
+
+//
+// MessageId: TPM_E_KEY_NOTSUPPORTED
+//
+// MessageText:
+//
+// Wrong operation to load an NV key
+//
+#define TPM_E_KEY_NOTSUPPORTED ((UINT32)(TPM_E_BASE + 0x0000003a))
+
+//
+// MessageId: TPM_E_AUTH_CONFLICT
+//
+// MessageText:
+//
+// NV_LoadKey blob requires both owner and blob authorization
+//
+#define TPM_E_AUTH_CONFLICT ((UINT32)(TPM_E_BASE + 0x0000003b))
+
+//
+// MessageId: TPM_E_AREA_LOCKED
+//
+// MessageText:
+//
+// The NV area is locked and not writable
+//
+#define TPM_E_AREA_LOCKED ((UINT32)(TPM_E_BASE + 0x0000003c))
+
+//
+// MessageId: TPM_E_BAD_LOCALITY
+//
+// MessageText:
+//
+// The locality is incorrect for the attempted operation
+//
+#define TPM_E_BAD_LOCALITY ((UINT32)(TPM_E_BASE + 0x0000003d))
+
+//
+// MessageId: TPM_E_READ_ONLY
+//
+// MessageText:
+//
+// The NV area is read only and can't be written to
+//
+#define TPM_E_READ_ONLY ((UINT32)(TPM_E_BASE + 0x0000003e))
+
+//
+// MessageId: TPM_E_PER_NOWRITE
+//
+// MessageText:
+//
+// There is no protection on the write to the NV area
+//
+#define TPM_E_PER_NOWRITE ((UINT32)(TPM_E_BASE + 0x0000003f))
+
+//
+// MessageId: TPM_E_FAMILYCOUNT
+//
+// MessageText:
+//
+// The family count value does not match
+//
+#define TPM_E_FAMILYCOUNT ((UINT32)(TPM_E_BASE + 0x00000040))
+
+//
+// MessageId: TPM_E_WRITE_LOCKED
+//
+// MessageText:
+//
+// The NV area has already been written to
+//
+#define TPM_E_WRITE_LOCKED ((UINT32)(TPM_E_BASE + 0x00000041))
+
+//
+// MessageId: TPM_E_BAD_ATTRIBUTES
+//
+// MessageText:
+//
+// The NV area attributes conflict
+//
+#define TPM_E_BAD_ATTRIBUTES ((UINT32)(TPM_E_BASE + 0x00000042))
+
+//
+// MessageId: TPM_E_INVALID_STRUCTURE
+//
+// MessageText:
+//
+// The structure tag and version are invalid or inconsistent
+//
+#define TPM_E_INVALID_STRUCTURE ((UINT32)(TPM_E_BASE + 0x00000043))
+
+//
+// MessageId: TPM_E_KEY_OWNER_CONTROL
+//
+// MessageText:
+//
+// The key is under control of the TPM Owner and can only be evicted
+// by the TPM Owner.
+//
+#define TPM_E_KEY_OWNER_CONTROL ((UINT32)(TPM_E_BASE + 0x00000044))
+
+//
+// MessageId: TPM_E_BAD_COUNTER
+//
+// MessageText:
+//
+// The counter handle is incorrect
+//
+#define TPM_E_BAD_COUNTER ((UINT32)(TPM_E_BASE + 0x00000045))
+
+//
+// MessageId: TPM_E_NOT_FULLWRITE
+//
+// MessageText:
+//
+// The write is not a complete write of the area
+//
+#define TPM_E_NOT_FULLWRITE ((UINT32)(TPM_E_BASE + 0x00000046))
+
+//
+// MessageId: TPM_E_CONTEXT_GAP
+//
+// MessageText:
+//
+// The gap between saved context counts is too large
+//
+#define TPM_E_CONTEXT_GAP ((UINT32)(TPM_E_BASE + 0x00000047))
+
+//
+// MessageId: TPM_E_MAXNVWRITES
+//
+// MessageText:
+//
+// The maximum number of NV writes without an owner has been exceeded
+//
+#define TPM_E_MAXNVWRITES ((UINT32)(TPM_E_BASE + 0x00000048))
+
+//
+// MessageId: TPM_E_NOOPERATOR
+//
+// MessageText:
+//
+// No operator AuthData value is set
+//
+#define TPM_E_NOOPERATOR ((UINT32)(TPM_E_BASE + 0x00000049))
+
+//
+// MessageId: TPM_E_RESOURCEMISSING
+//
+// MessageText:
+//
+// The resource pointed to by context is not loaded
+//
+#define TPM_E_RESOURCEMISSING ((UINT32)(TPM_E_BASE + 0x0000004a))
+
+//
+// MessageId: TPM_E_DELEGATE_LOCK
+//
+// MessageText:
+//
+// The delegate administration is locked
+//
+#define TPM_E_DELEGATE_LOCK ((UINT32)(TPM_E_BASE + 0x0000004b))
+
+//
+// MessageId: TPM_E_DELEGATE_FAMILY
+//
+// MessageText:
+//
+// Attempt to manage a family other then the delegated family
+//
+#define TPM_E_DELEGATE_FAMILY ((UINT32)(TPM_E_BASE + 0x0000004c))
+
+//
+// MessageId: TPM_E_DELEGATE_ADMIN
+//
+// MessageText:
+//
+// Delegation table management not enabled
+//
+#define TPM_E_DELEGATE_ADMIN ((UINT32)(TPM_E_BASE + 0x0000004d))
+
+//
+// MessageId: TPM_E_TRANSPORT_NOTEXCLUSIVE
+//
+// MessageText:
+//
+// There was a command executed outside of an exclusive transport session
+//
+#define TPM_E_TRANSPORT_NOTEXCLUSIVE ((UINT32)(TPM_E_BASE + 0x0000004e))
+
+//
+// MessageId: TPM_E_OWNER_CONTROL
+//
+// MessageText:
+//
+// Attempt to context save a owner evict controlled key
+//
+#define TPM_E_OWNER_CONTROL ((UINT32)(TPM_E_BASE + 0x0000004f))
+
+//
+// MessageId: TPM_E_DAA_RESOURCES
+//
+// MessageText:
+//
+// The DAA command has no resources available to execute the command
+//
+#define TPM_E_DAA_RESOURCES ((UINT32)(TPM_E_BASE + 0x00000050))
+
+//
+// MessageId: TPM_E_DAA_INPUT_DATA0
+//
+// MessageText:
+//
+// The consistency check on DAA parameter inputData0 has failed.
+//
+#define TPM_E_DAA_INPUT_DATA0 ((UINT32)(TPM_E_BASE + 0x00000051))
+
+//
+// MessageId: TPM_E_DAA_INPUT_DATA1
+//
+// MessageText:
+//
+// The consistency check on DAA parameter inputData1 has failed.
+//
+#define TPM_E_DAA_INPUT_DATA1 ((UINT32)(TPM_E_BASE + 0x00000052))
+
+//
+// MessageId: TPM_E_DAA_ISSUER_SETTINGS
+//
+// MessageText:
+//
+// The consistency check on DAA_issuerSettings has failed.
+//
+#define TPM_E_DAA_ISSUER_SETTINGS ((UINT32)(TPM_E_BASE + 0x00000053))
+
+//
+// MessageId: TPM_E_DAA_TPM_SETTINGS
+//
+// MessageText:
+//
+// The consistency check on DAA_tpmSpecific has failed.
+//
+#define TPM_E_DAA_TPM_SETTINGS ((UINT32)(TPM_E_BASE + 0x00000054))
+
+//
+// MessageId: TPM_E_DAA_STAGE
+//
+// MessageText:
+//
+// The atomic process indicated by the submitted DAA command is not
+// the expected process.
+//
+#define TPM_E_DAA_STAGE ((UINT32)(TPM_E_BASE + 0x00000055))
+
+//
+// MessageId: TPM_E_DAA_ISSUER_VALIDITY
+//
+// MessageText:
+//
+// The issuer's validity check has detected an inconsistency
+//
+#define TPM_E_DAA_ISSUER_VALIDITY ((UINT32)(TPM_E_BASE + 0x00000056))
+
+//
+// MessageId: TPM_E_DAA_WRONG_W
+//
+// MessageText:
+//
+// The consistency check on w has failed.
+//
+#define TPM_E_DAA_WRONG_W ((UINT32)(TPM_E_BASE + 0x00000057))
+
+//
+// MessageId: TPM_E_BAD_HANDLE
+//
+// MessageText:
+//
+// The handle is incorrect
+//
+#define TPM_E_BAD_HANDLE ((UINT32)(TPM_E_BASE + 0x00000058))
+
+//
+// MessageId: TPM_E_BAD_DELEGATE
+//
+// MessageText:
+//
+// Delegation is not correct
+//
+#define TPM_E_BAD_DELEGATE ((UINT32)(TPM_E_BASE + 0x00000059))
+
+//
+// MessageId: TPM_E_BADCONTEXT
+//
+// MessageText:
+//
+// The context blob is invalid
+//
+#define TPM_E_BADCONTEXT ((UINT32)(TPM_E_BASE + 0x0000005a))
+
+//
+// MessageId: TPM_E_TOOMANYCONTEXTS
+//
+// MessageText:
+//
+// Too many contexts held by the TPM
+//
+#define TPM_E_TOOMANYCONTEXTS ((UINT32)(TPM_E_BASE + 0x0000005b))
+
+//
+// MessageId: TPM_E_MA_TICKET_SIGNATURE
+//
+// MessageText:
+//
+// Migration authority signature validation failure
+//
+#define TPM_E_MA_TICKET_SIGNATURE ((UINT32)(TPM_E_BASE + 0x0000005c))
+
+//
+// MessageId: TPM_E_MA_DESTINATION
+//
+// MessageText:
+//
+// Migration destination not authenticated
+//
+#define TPM_E_MA_DESTINATION ((UINT32)(TPM_E_BASE + 0x0000005d))
+
+//
+// MessageId: TPM_E_MA_SOURCE
+//
+// MessageText:
+//
+// Migration source incorrect
+//
+#define TPM_E_MA_SOURCE ((UINT32)(TPM_E_BASE + 0x0000005e))
+
+//
+// MessageId: TPM_E_MA_AUTHORITY
+//
+// MessageText:
+//
+// Incorrect migration authority
+//
+#define TPM_E_MA_AUTHORITY ((UINT32)(TPM_E_BASE + 0x0000005f))
+
+//
+// MessageId: TPM_E_PERMANENTEK
+//
+// MessageText:
+//
+// Attempt to revoke the EK and the EK is not revocable
+//
+#define TPM_E_PERMANENTEK ((UINT32)(TPM_E_BASE + 0x00000061))
+
+//
+// MessageId: TPM_E_BAD_SIGNATURE
+//
+// MessageText:
+//
+// Bad signature of CMK ticket
+//
+#define TPM_E_BAD_SIGNATURE ((UINT32)(TPM_E_BASE + 0x00000062))
+
+//
+// MessageId: TPM_E_NOCONTEXTSPACE
+//
+// MessageText:
+//
+// There is no room in the context list for additional contexts
+//
+#define TPM_E_NOCONTEXTSPACE  ((UINT32)(TPM_E_BASE + 0x00000063))
+
+
+//
+// MessageId: TPM_E_RETRY
+//
+// MessageText:
+//
+// The TPM is too busy to respond to the command immediately, but the
+// command could be resubmitted at a later time. The TPM MAY return
+// TPM_Retry for any command at any time.
+//
+#define TPM_E_RETRY ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL))
+
+//
+// MessageId: TPM_E_NEEDS_SELFTEST
+//
+// MessageText:
+//
+// SelfTestFull has not been run
+//
+#define TPM_E_NEEDS_SELFTEST ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL + 1))
+
+//
+// MessageId: TPM_E_DOING_SELFTEST
+//
+// MessageText:
+//
+// The TPM is currently executing a full selftest
+//
+#define TPM_E_DOING_SELFTEST ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL + 2))
+
+//
+// MessageId: TPM_E_DEFEND_LOCK_RUNNING
+//
+// MessageText:
+//
+// The TPM is defending against dictionary attacks and is in some
+// time-out period.
+//
+#define TPM_E_DEFEND_LOCK_RUNNING ((UINT32)(TPM_E_BASE + TPM_E_NON_FATAL + 3))
+
+#endif /* __TPM_ERROR_H__ */
diff --git a/tss/include/tss/tpm_ordinal.h b/tss/include/tss/tpm_ordinal.h
index 9df9959..ca09611 100644
--- a/tss/include/tss/tpm_ordinal.h
+++ b/tss/include/tss/tpm_ordinal.h
@@ -1,151 +1,151 @@
-/*

- * TPM Ordinal definitions extracted from the TPM 1.2 specification, rev 85.

- */

-

-#ifndef __TPM_ORDINAL_H__

-#define __TPM_ORDINAL_H__

-

-#define TPM_PROTECTED_COMMAND                     ((UINT32)(0x00000000))

-#define TPM_UNPROTECTED_COMMAND                   ((UINT32)(0x80000000))

-#define TPM_CONNECTION_COMMAND                    ((UINT32)(0x40000000))

-#define TPM_VENDOR_COMMAND                        ((UINT32)(0x20000000))

-

-#define TPM_MAIN                                  ((UINT16)(0x0000))

-#define TPM_PC                                    ((UINT16)(0x0001))

-#define TPM_PDA                                   ((UINT16)(0x0002))

-#define TPM_CELL_PHONE                            ((UINT16)(0x0003))

-#define TPM_SERVER                                ((UINT16)(0x0004))

-

-#define TPM_PROTECTED_ORDINAL              (TPM_MAIN | TPM_PROTECTED_COMMAND)

-#define TPM_UNPROTECTED_ORDINAL            (TPM_MAIN | TPM_UNPROTECTED_COMMAND)

-#define TPM_CONNECTION_ORDINAL             (TPM_MAIN | TPM_CONNECTION_COMMAND)

-

-

-#define TPM_ORD_OIAP                              ((UINT32)0x0000000A)

-#define TPM_ORD_OSAP                              ((UINT32)0x0000000B)

-#define TPM_ORD_ChangeAuth                        ((UINT32)0x0000000C)

-#define TPM_ORD_TakeOwnership                     ((UINT32)0x0000000D)

-#define TPM_ORD_ChangeAuthAsymStart               ((UINT32)0x0000000E)

-#define TPM_ORD_ChangeAuthAsymFinish              ((UINT32)0x0000000F)

-#define TPM_ORD_ChangeAuthOwner                   ((UINT32)0x00000010)

-#define TPM_ORD_DSAP                              ((UINT32)0x00000011)

-#define TPM_ORD_CMK_CreateTicket                  ((UINT32)0x00000012)

-#define TPM_ORD_CMK_CreateKey                     ((UINT32)0x00000013)

-#define TPM_ORD_Extend                            ((UINT32)0x00000014)

-#define TPM_ORD_PcrRead                           ((UINT32)0x00000015)

-#define TPM_ORD_Quote                             ((UINT32)0x00000016)

-#define TPM_ORD_Seal                              ((UINT32)0x00000017)

-#define TPM_ORD_Unseal                            ((UINT32)0x00000018)

-#define TPM_ORD_DirWriteAuth                      ((UINT32)0x00000019)

-#define TPM_ORD_DirRead                           ((UINT32)0x0000001A)

-#define TPM_ORD_CMK_CreateBlob                    ((UINT32)0x0000001B)

-#define TPM_ORD_CMK_SetRestrictions               ((UINT32)0x0000001C)

-#define TPM_ORD_CMK_ApproveMA                     ((UINT32)0x0000001D)

-#define TPM_ORD_UnBind                            ((UINT32)0x0000001E)

-#define TPM_ORD_CreateWrapKey                     ((UINT32)0x0000001F)

-#define TPM_ORD_LoadKey                           ((UINT32)0x00000020)

-#define TPM_ORD_GetPubKey                         ((UINT32)0x00000021)

-#define TPM_ORD_EvictKey                          ((UINT32)0x00000022)

-#define TPM_ORD_KeyControlOwner                   ((UINT32)0x00000023)

-#define TPM_ORD_CMK_ConvertMigration              ((UINT32)0x00000024)

-#define TPM_ORD_MigrateKey                        ((UINT32)0x00000025)

-#define TPM_ORD_CreateMigrationBlob               ((UINT32)0x00000028)

-#define TPM_ORD_DAA_Join                          ((UINT32)0x00000029)

-#define TPM_ORD_ConvertMigrationBlob              ((UINT32)0x0000002A)

-#define TPM_ORD_AuthorizeMigrationKey             ((UINT32)0x0000002B)

-#define TPM_ORD_CreateMaintenanceArchive          ((UINT32)0x0000002C)

-#define TPM_ORD_LoadMaintenanceArchive            ((UINT32)0x0000002D)

-#define TPM_ORD_KillMaintenanceFeature            ((UINT32)0x0000002E)

-#define TPM_ORD_LoadManuMaintPub                  ((UINT32)0x0000002F)

-#define TPM_ORD_ReadManuMaintPub                  ((UINT32)0x00000030)

-#define TPM_ORD_DAA_Sign                          ((UINT32)0x00000031)

-#define TPM_ORD_CertifyKey                        ((UINT32)0x00000032)

-#define TPM_ORD_CertifyKey2                       ((UINT32)0x00000033)

-#define TPM_ORD_Sign                              ((UINT32)0x0000003C)

-#define TPM_ORD_Sealx                             ((UINT32)0x0000003D)

-#define TPM_ORD_Quote2                            ((UINT32)0x0000003E)

-#define TPM_ORD_SetCapability                     ((UINT32)0x0000003F)

-#define TPM_ORD_ResetLockValue                    ((UINT32)0x00000040)

-#define TPM_ORD_LoadKey2                          ((UINT32)0x00000041)

-#define TPM_ORD_GetRandom                         ((UINT32)0x00000046)

-#define TPM_ORD_StirRandom                        ((UINT32)0x00000047)

-#define TPM_ORD_SelfTestFull                      ((UINT32)0x00000050)

-#define TPM_ORD_CertifySelfTest                   ((UINT32)0x00000052)

-#define TPM_ORD_ContinueSelfTest                  ((UINT32)0x00000053)

-#define TPM_ORD_GetTestResult                     ((UINT32)0x00000054)

-#define TPM_ORD_Reset                             ((UINT32)0x0000005A)

-#define TPM_ORD_OwnerClear                        ((UINT32)0x0000005B)

-#define TPM_ORD_DisableOwnerClear                 ((UINT32)0x0000005C)

-#define TPM_ORD_ForceClear                        ((UINT32)0x0000005D)

-#define TPM_ORD_DisableForceClear                 ((UINT32)0x0000005E)

-#define TPM_ORD_GetCapabilitySigned               ((UINT32)0x00000064)

-#define TPM_ORD_GetCapability                     ((UINT32)0x00000065)

-#define TPM_ORD_GetCapabilityOwner                ((UINT32)0x00000066)

-#define TPM_ORD_OwnerSetDisable                   ((UINT32)0x0000006E)

-#define TPM_ORD_PhysicalEnable                    ((UINT32)0x0000006F)

-#define TPM_ORD_PhysicalDisable                   ((UINT32)0x00000070)

-#define TPM_ORD_SetOwnerInstall                   ((UINT32)0x00000071)

-#define TPM_ORD_PhysicalSetDeactivated            ((UINT32)0x00000072)

-#define TPM_ORD_SetTempDeactivated                ((UINT32)0x00000073)

-#define TPM_ORD_SetOperatorAuth                   ((UINT32)0x00000074)

-#define TPM_ORD_SetOwnerPointer                   ((UINT32)0x00000075)

-#define TPM_ORD_CreateEndorsementKeyPair          ((UINT32)0x00000078)

-#define TPM_ORD_MakeIdentity                      ((UINT32)0x00000079)

-#define TPM_ORD_ActivateIdentity                  ((UINT32)0x0000007A)

-#define TPM_ORD_ReadPubek                         ((UINT32)0x0000007C)

-#define TPM_ORD_OwnerReadPubek                    ((UINT32)0x0000007D)

-#define TPM_ORD_DisablePubekRead                  ((UINT32)0x0000007E)

-#define TPM_ORD_CreateRevocableEK                 ((UINT32)0x0000007F)

-#define TPM_ORD_RevokeTrust                       ((UINT32)0x00000080)

-#define TPM_ORD_OwnerReadInternalPub              ((UINT32)0x00000081)

-#define TPM_ORD_GetAuditEvent                     ((UINT32)0x00000082)

-#define TPM_ORD_GetAuditEventSigned               ((UINT32)0x00000083)

-#define TPM_ORD_GetAuditDigest                    ((UINT32)0x00000085)

-#define TPM_ORD_GetAuditDigestSigned              ((UINT32)0x00000086)

-#define TPM_ORD_GetOrdinalAuditStatus             ((UINT32)0x0000008C)

-#define TPM_ORD_SetOrdinalAuditStatus             ((UINT32)0x0000008D)

-#define TPM_ORD_Terminate_Handle                  ((UINT32)0x00000096)

-#define TPM_ORD_Init                              ((UINT32)0x00000097)

-#define TPM_ORD_SaveState                         ((UINT32)0x00000098)

-#define TPM_ORD_Startup                           ((UINT32)0x00000099)

-#define TPM_ORD_SetRedirection                    ((UINT32)0x0000009A)

-#define TPM_ORD_SHA1Start                         ((UINT32)0x000000A0)

-#define TPM_ORD_SHA1Update                        ((UINT32)0x000000A1)

-#define TPM_ORD_SHA1Complete                      ((UINT32)0x000000A2)

-#define TPM_ORD_SHA1CompleteExtend                ((UINT32)0x000000A3)

-#define TPM_ORD_FieldUpgrade                      ((UINT32)0x000000AA)

-#define TPM_ORD_SaveKeyContext                    ((UINT32)0x000000B4)

-#define TPM_ORD_LoadKeyContext                    ((UINT32)0x000000B5)

-#define TPM_ORD_SaveAuthContext                   ((UINT32)0x000000B6)

-#define TPM_ORD_LoadAuthContext                   ((UINT32)0x000000B7)

-#define TPM_ORD_SaveContext                       ((UINT32)0x000000B8)

-#define TPM_ORD_LoadContext                       ((UINT32)0x000000B9)

-#define TPM_ORD_FlushSpecific                     ((UINT32)0x000000BA)

-#define TPM_ORD_PCR_Reset                         ((UINT32)0x000000C8)

-#define TPM_ORD_NV_DefineSpace                    ((UINT32)0x000000CC)

-#define TPM_ORD_NV_WriteValue                     ((UINT32)0x000000CD)

-#define TPM_ORD_NV_WriteValueAuth                 ((UINT32)0x000000CE)

-#define TPM_ORD_NV_ReadValue                      ((UINT32)0x000000CF)

-#define TPM_ORD_NV_ReadValueAuth                  ((UINT32)0x000000D0)

-#define TPM_ORD_Delegate_UpdateVerification       ((UINT32)0x000000D1)

-#define TPM_ORD_Delegate_Manage                   ((UINT32)0x000000D2)

-#define TPM_ORD_Delegate_CreateKeyDelegation      ((UINT32)0x000000D4)

-#define TPM_ORD_Delegate_CreateOwnerDelegation    ((UINT32)0x000000D5)

-#define TPM_ORD_Delegate_VerifyDelegation         ((UINT32)0x000000D6)

-#define TPM_ORD_Delegate_LoadOwnerDelegation      ((UINT32)0x000000D8)

-#define TPM_ORD_Delegate_ReadTable                ((UINT32)0x000000DB)

-#define TPM_ORD_CreateCounter                     ((UINT32)0x000000DC)

-#define TPM_ORD_IncrementCounter                  ((UINT32)0x000000DD)

-#define TPM_ORD_ReadCounter                       ((UINT32)0x000000DE)

-#define TPM_ORD_ReleaseCounter                    ((UINT32)0x000000DF)

-#define TPM_ORD_ReleaseCounterOwner               ((UINT32)0x000000E0)

-#define TPM_ORD_EstablishTransport                ((UINT32)0x000000E6)

-#define TPM_ORD_ExecuteTransport                  ((UINT32)0x000000E7)

-#define TPM_ORD_ReleaseTransportSigned            ((UINT32)0x000000E8)

-#define TPM_ORD_GetTicks                          ((UINT32)0x000000F1)

-#define TPM_ORD_TickStampBlob                     ((UINT32)0x000000F2)

-

-#define TSC_ORD_PhysicalPresence                  ((UINT32)0x4000000A)

-#define TSC_ORD_ResetEstablishmentBit             ((UINT32)0x4000000B)

-

-#endif // __TPM_ORDINAL_H__

+/*
+ * TPM Ordinal definitions extracted from the TPM 1.2 specification, rev 85.
+ */
+
+#ifndef __TPM_ORDINAL_H__
+#define __TPM_ORDINAL_H__
+
+#define TPM_PROTECTED_COMMAND                     ((UINT32)(0x00000000))
+#define TPM_UNPROTECTED_COMMAND                   ((UINT32)(0x80000000))
+#define TPM_CONNECTION_COMMAND                    ((UINT32)(0x40000000))
+#define TPM_VENDOR_COMMAND                        ((UINT32)(0x20000000))
+
+#define TPM_MAIN                                  ((UINT16)(0x0000))
+#define TPM_PC                                    ((UINT16)(0x0001))
+#define TPM_PDA                                   ((UINT16)(0x0002))
+#define TPM_CELL_PHONE                            ((UINT16)(0x0003))
+#define TPM_SERVER                                ((UINT16)(0x0004))
+
+#define TPM_PROTECTED_ORDINAL              (TPM_MAIN | TPM_PROTECTED_COMMAND)
+#define TPM_UNPROTECTED_ORDINAL            (TPM_MAIN | TPM_UNPROTECTED_COMMAND)
+#define TPM_CONNECTION_ORDINAL             (TPM_MAIN | TPM_CONNECTION_COMMAND)
+
+
+#define TPM_ORD_OIAP                              ((UINT32)0x0000000A)
+#define TPM_ORD_OSAP                              ((UINT32)0x0000000B)
+#define TPM_ORD_ChangeAuth                        ((UINT32)0x0000000C)
+#define TPM_ORD_TakeOwnership                     ((UINT32)0x0000000D)
+#define TPM_ORD_ChangeAuthAsymStart               ((UINT32)0x0000000E)
+#define TPM_ORD_ChangeAuthAsymFinish              ((UINT32)0x0000000F)
+#define TPM_ORD_ChangeAuthOwner                   ((UINT32)0x00000010)
+#define TPM_ORD_DSAP                              ((UINT32)0x00000011)
+#define TPM_ORD_CMK_CreateTicket                  ((UINT32)0x00000012)
+#define TPM_ORD_CMK_CreateKey                     ((UINT32)0x00000013)
+#define TPM_ORD_Extend                            ((UINT32)0x00000014)
+#define TPM_ORD_PcrRead                           ((UINT32)0x00000015)
+#define TPM_ORD_Quote                             ((UINT32)0x00000016)
+#define TPM_ORD_Seal                              ((UINT32)0x00000017)
+#define TPM_ORD_Unseal                            ((UINT32)0x00000018)
+#define TPM_ORD_DirWriteAuth                      ((UINT32)0x00000019)
+#define TPM_ORD_DirRead                           ((UINT32)0x0000001A)
+#define TPM_ORD_CMK_CreateBlob                    ((UINT32)0x0000001B)
+#define TPM_ORD_CMK_SetRestrictions               ((UINT32)0x0000001C)
+#define TPM_ORD_CMK_ApproveMA                     ((UINT32)0x0000001D)
+#define TPM_ORD_UnBind                            ((UINT32)0x0000001E)
+#define TPM_ORD_CreateWrapKey                     ((UINT32)0x0000001F)
+#define TPM_ORD_LoadKey                           ((UINT32)0x00000020)
+#define TPM_ORD_GetPubKey                         ((UINT32)0x00000021)
+#define TPM_ORD_EvictKey                          ((UINT32)0x00000022)
+#define TPM_ORD_KeyControlOwner                   ((UINT32)0x00000023)
+#define TPM_ORD_CMK_ConvertMigration              ((UINT32)0x00000024)
+#define TPM_ORD_MigrateKey                        ((UINT32)0x00000025)
+#define TPM_ORD_CreateMigrationBlob               ((UINT32)0x00000028)
+#define TPM_ORD_DAA_Join                          ((UINT32)0x00000029)
+#define TPM_ORD_ConvertMigrationBlob              ((UINT32)0x0000002A)
+#define TPM_ORD_AuthorizeMigrationKey             ((UINT32)0x0000002B)
+#define TPM_ORD_CreateMaintenanceArchive          ((UINT32)0x0000002C)
+#define TPM_ORD_LoadMaintenanceArchive            ((UINT32)0x0000002D)
+#define TPM_ORD_KillMaintenanceFeature            ((UINT32)0x0000002E)
+#define TPM_ORD_LoadManuMaintPub                  ((UINT32)0x0000002F)
+#define TPM_ORD_ReadManuMaintPub                  ((UINT32)0x00000030)
+#define TPM_ORD_DAA_Sign                          ((UINT32)0x00000031)
+#define TPM_ORD_CertifyKey                        ((UINT32)0x00000032)
+#define TPM_ORD_CertifyKey2                       ((UINT32)0x00000033)
+#define TPM_ORD_Sign                              ((UINT32)0x0000003C)
+#define TPM_ORD_Sealx                             ((UINT32)0x0000003D)
+#define TPM_ORD_Quote2                            ((UINT32)0x0000003E)
+#define TPM_ORD_SetCapability                     ((UINT32)0x0000003F)
+#define TPM_ORD_ResetLockValue                    ((UINT32)0x00000040)
+#define TPM_ORD_LoadKey2                          ((UINT32)0x00000041)
+#define TPM_ORD_GetRandom                         ((UINT32)0x00000046)
+#define TPM_ORD_StirRandom                        ((UINT32)0x00000047)
+#define TPM_ORD_SelfTestFull                      ((UINT32)0x00000050)
+#define TPM_ORD_CertifySelfTest                   ((UINT32)0x00000052)
+#define TPM_ORD_ContinueSelfTest                  ((UINT32)0x00000053)
+#define TPM_ORD_GetTestResult                     ((UINT32)0x00000054)
+#define TPM_ORD_Reset                             ((UINT32)0x0000005A)
+#define TPM_ORD_OwnerClear                        ((UINT32)0x0000005B)
+#define TPM_ORD_DisableOwnerClear                 ((UINT32)0x0000005C)
+#define TPM_ORD_ForceClear                        ((UINT32)0x0000005D)
+#define TPM_ORD_DisableForceClear                 ((UINT32)0x0000005E)
+#define TPM_ORD_GetCapabilitySigned               ((UINT32)0x00000064)
+#define TPM_ORD_GetCapability                     ((UINT32)0x00000065)
+#define TPM_ORD_GetCapabilityOwner                ((UINT32)0x00000066)
+#define TPM_ORD_OwnerSetDisable                   ((UINT32)0x0000006E)
+#define TPM_ORD_PhysicalEnable                    ((UINT32)0x0000006F)
+#define TPM_ORD_PhysicalDisable                   ((UINT32)0x00000070)
+#define TPM_ORD_SetOwnerInstall                   ((UINT32)0x00000071)
+#define TPM_ORD_PhysicalSetDeactivated            ((UINT32)0x00000072)
+#define TPM_ORD_SetTempDeactivated                ((UINT32)0x00000073)
+#define TPM_ORD_SetOperatorAuth                   ((UINT32)0x00000074)
+#define TPM_ORD_SetOwnerPointer                   ((UINT32)0x00000075)
+#define TPM_ORD_CreateEndorsementKeyPair          ((UINT32)0x00000078)
+#define TPM_ORD_MakeIdentity                      ((UINT32)0x00000079)
+#define TPM_ORD_ActivateIdentity                  ((UINT32)0x0000007A)
+#define TPM_ORD_ReadPubek                         ((UINT32)0x0000007C)
+#define TPM_ORD_OwnerReadPubek                    ((UINT32)0x0000007D)
+#define TPM_ORD_DisablePubekRead                  ((UINT32)0x0000007E)
+#define TPM_ORD_CreateRevocableEK                 ((UINT32)0x0000007F)
+#define TPM_ORD_RevokeTrust                       ((UINT32)0x00000080)
+#define TPM_ORD_OwnerReadInternalPub              ((UINT32)0x00000081)
+#define TPM_ORD_GetAuditEvent                     ((UINT32)0x00000082)
+#define TPM_ORD_GetAuditEventSigned               ((UINT32)0x00000083)
+#define TPM_ORD_GetAuditDigest                    ((UINT32)0x00000085)
+#define TPM_ORD_GetAuditDigestSigned              ((UINT32)0x00000086)
+#define TPM_ORD_GetOrdinalAuditStatus             ((UINT32)0x0000008C)
+#define TPM_ORD_SetOrdinalAuditStatus             ((UINT32)0x0000008D)
+#define TPM_ORD_Terminate_Handle                  ((UINT32)0x00000096)
+#define TPM_ORD_Init                              ((UINT32)0x00000097)
+#define TPM_ORD_SaveState                         ((UINT32)0x00000098)
+#define TPM_ORD_Startup                           ((UINT32)0x00000099)
+#define TPM_ORD_SetRedirection                    ((UINT32)0x0000009A)
+#define TPM_ORD_SHA1Start                         ((UINT32)0x000000A0)
+#define TPM_ORD_SHA1Update                        ((UINT32)0x000000A1)
+#define TPM_ORD_SHA1Complete                      ((UINT32)0x000000A2)
+#define TPM_ORD_SHA1CompleteExtend                ((UINT32)0x000000A3)
+#define TPM_ORD_FieldUpgrade                      ((UINT32)0x000000AA)
+#define TPM_ORD_SaveKeyContext                    ((UINT32)0x000000B4)
+#define TPM_ORD_LoadKeyContext                    ((UINT32)0x000000B5)
+#define TPM_ORD_SaveAuthContext                   ((UINT32)0x000000B6)
+#define TPM_ORD_LoadAuthContext                   ((UINT32)0x000000B7)
+#define TPM_ORD_SaveContext                       ((UINT32)0x000000B8)
+#define TPM_ORD_LoadContext                       ((UINT32)0x000000B9)
+#define TPM_ORD_FlushSpecific                     ((UINT32)0x000000BA)
+#define TPM_ORD_PCR_Reset                         ((UINT32)0x000000C8)
+#define TPM_ORD_NV_DefineSpace                    ((UINT32)0x000000CC)
+#define TPM_ORD_NV_WriteValue                     ((UINT32)0x000000CD)
+#define TPM_ORD_NV_WriteValueAuth                 ((UINT32)0x000000CE)
+#define TPM_ORD_NV_ReadValue                      ((UINT32)0x000000CF)
+#define TPM_ORD_NV_ReadValueAuth                  ((UINT32)0x000000D0)
+#define TPM_ORD_Delegate_UpdateVerification       ((UINT32)0x000000D1)
+#define TPM_ORD_Delegate_Manage                   ((UINT32)0x000000D2)
+#define TPM_ORD_Delegate_CreateKeyDelegation      ((UINT32)0x000000D4)
+#define TPM_ORD_Delegate_CreateOwnerDelegation    ((UINT32)0x000000D5)
+#define TPM_ORD_Delegate_VerifyDelegation         ((UINT32)0x000000D6)
+#define TPM_ORD_Delegate_LoadOwnerDelegation      ((UINT32)0x000000D8)
+#define TPM_ORD_Delegate_ReadTable                ((UINT32)0x000000DB)
+#define TPM_ORD_CreateCounter                     ((UINT32)0x000000DC)
+#define TPM_ORD_IncrementCounter                  ((UINT32)0x000000DD)
+#define TPM_ORD_ReadCounter                       ((UINT32)0x000000DE)
+#define TPM_ORD_ReleaseCounter                    ((UINT32)0x000000DF)
+#define TPM_ORD_ReleaseCounterOwner               ((UINT32)0x000000E0)
+#define TPM_ORD_EstablishTransport                ((UINT32)0x000000E6)
+#define TPM_ORD_ExecuteTransport                  ((UINT32)0x000000E7)
+#define TPM_ORD_ReleaseTransportSigned            ((UINT32)0x000000E8)
+#define TPM_ORD_GetTicks                          ((UINT32)0x000000F1)
+#define TPM_ORD_TickStampBlob                     ((UINT32)0x000000F2)
+
+#define TSC_ORD_PhysicalPresence                  ((UINT32)0x4000000A)
+#define TSC_ORD_ResetEstablishmentBit             ((UINT32)0x4000000B)
+
+#endif // __TPM_ORDINAL_H__
diff --git a/tss/include/tss/tspi.h b/tss/include/tss/tspi.h
index d9c21b5..b762d21 100644
--- a/tss/include/tss/tspi.h
+++ b/tss/include/tss/tspi.h
@@ -1,1198 +1,1198 @@
-#if !defined(_TSPI_H_)

-#define _TSPI_H_

-

-#include <tss_defines.h>

-#include <tss_typedef.h>

-#include <tss_structs.h>

-#include <tss_error.h>

-#include <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_HTPM            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_ */

+#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_HTPM            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_ */
diff --git a/tss/include/tss/tss_defines.h b/tss/include/tss/tss_defines.h
index c722a0d..b886050 100644
--- a/tss/include/tss/tss_defines.h
+++ b/tss/include/tss/tss_defines.h
@@ -1,1271 +1,1271 @@
-/*++

- 

-Global defines for TSS.

-

---*/

-

-#ifndef __TSS_DEFINES_H__

-#define __TSS_DEFINES_H__

-

-#include <platform.h>

-#include <tpm.h>

-

-

-//////////////////////////////////////////////////////////////////////////

-// Object types:

-//////////////////////////////////////////////////////////////////////////

-

-//

-// definition of the object types that can be created via CreateObject

-//

-#define   TSS_OBJECT_TYPE_POLICY    (0x01)      // Policy object

-#define   TSS_OBJECT_TYPE_RSAKEY    (0x02)      // RSA-Key object

-#define   TSS_OBJECT_TYPE_ENCDATA   (0x03)      // Encrypted data object

-#define   TSS_OBJECT_TYPE_PCRS      (0x04)      // PCR composite object

-#define   TSS_OBJECT_TYPE_HASH      (0x05)      // Hash object

-#define   TSS_OBJECT_TYPE_DELFAMILY (0x06)      // Delegation Family object

-#define   TSS_OBJECT_TYPE_NV        (0x07)      // NV object

-#define   TSS_OBJECT_TYPE_MIGDATA   (0x08)      // CMK Migration data object

-#define   TSS_OBJECT_TYPE_DAA_CERTIFICATE (0x09) // DAA credential

-#define   TSS_OBJECT_TYPE_DAA_ISSUER_KEY  (0x0a) // DAA cred. issuer keypair

-#define   TSS_OBJECT_TYPE_DAA_ARA_KEY     (0x0b) // DAA anonymity revocation

-                                                 // authority keypair

-

-

-//////////////////////////////////////////////////////////////////////////

-// CreateObject: Flags

-//////////////////////////////////////////////////////////////////////////

-

-

-//************************************

-// Flags for creating RSAKEY object: *

-//************************************

-

-//

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//                                                              |x x|Auth

-//                                                            |x|    Volatility

-//                                                          |x|      Migration

-//                                                  |x x x x|        Type

-//                                          |x x x x|                Size

-//                                      |x x|                        CMK

-//                                |x x x|                            Version

-//              |0 0 0 0 0 0 0 0 0|                                  Reserved

-//  |x x x x x x|                                                    Fixed Type

-//

-

-//  Authorization:

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   Never                                                      |0 0|

-//   Always                                                     |0 1|

-//   Private key always                                         |1 0|

-//

-#define   TSS_KEY_NO_AUTHORIZATION            (0x00000000) // no auth needed

-                                                           // for this key

-#define   TSS_KEY_AUTHORIZATION               (0x00000001) // key needs auth

-                                                           // for all ops

-#define   TSS_KEY_AUTHORIZATION_PRIV_USE_ONLY (0x00000002) // key needs auth

-                                                           // for privkey ops,

-                                                           // noauth for pubkey

-

-//

-//  Volatility

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   Non Volatile                                             |0|

-//   Volatile                                                 |1|

-//

-#define    TSS_KEY_NON_VOLATILE      (0x00000000)   // Key is non-volatile

-#define    TSS_KEY_VOLATILE          (0x00000004)   // Key is volatile

-

-//

-//  Migration

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   Non Migratable                                         |0|

-//   Migratable                                             |1|

-//

-#define   TSS_KEY_NOT_MIGRATABLE     (0x00000000)   // key is not migratable

-#define   TSS_KEY_MIGRATABLE         (0x00000008)   // key is migratable

-

-//

-//  Usage

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   Default (Legacy)                               |0 0 0 0|

-//   Signing                                        |0 0 0 1|

-//   Storage                                        |0 0 1 0|

-//   Identity                                       |0 0 1 1|

-//   AuthChange                                     |0 1 0 0|

-//   Bind                                           |0 1 0 1|

-//   Legacy                                         |0 1 1 0|

-//

-#define   TSS_KEY_TYPE_DEFAULT    (0x00000000)   // indicate a default key

-                                                 // (Legacy-Key)

-#define   TSS_KEY_TYPE_SIGNING    (0x00000010)   // indicate a signing key

-#define   TSS_KEY_TYPE_STORAGE    (0x00000020)   // used as storage key

-#define   TSS_KEY_TYPE_IDENTITY   (0x00000030)   // indicate an idendity key

-#define   TSS_KEY_TYPE_AUTHCHANGE (0x00000040)   // indicate an ephemeral key

-#define   TSS_KEY_TYPE_BIND       (0x00000050)   // indicate a key for TPM_Bind

-#define   TSS_KEY_TYPE_LEGACY     (0x00000060)   // indicate a key that can

-                                                 // perform signing and binding

-#define   TSS_KEY_TYPE_MIGRATE    (0x00000070)   // indicate a key that can

-                                                 // act as a CMK MA

-#define   TSS_KEY_TYPE_BITMASK    (0x000000F0)   // mask to extract key type

-

-//

-//  Key size

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-// DEFAULT                                  |0 0 0 0|

-//   512                                    |0 0 0 1|

-//  1024                                    |0 0 1 0|

-//  2048                                    |0 0 1 1|

-//  4096                                    |0 1 0 0|

-//  8192                                    |0 1 0 1|

-// 16384                                    |0 1 1 0|

-//

-#define TSS_KEY_SIZE_DEFAULT (UINT32)(0x00000000) // indicate tpm-specific size

-#define TSS_KEY_SIZE_512     (UINT32)(0x00000100) // indicate a 512-bit key

-#define TSS_KEY_SIZE_1024    (UINT32)(0x00000200) // indicate a 1024-bit key

-#define TSS_KEY_SIZE_2048    (UINT32)(0x00000300) // indicate a 2048-bit key

-#define TSS_KEY_SIZE_4096    (UINT32)(0x00000400) // indicate a 4096-bit key

-#define TSS_KEY_SIZE_8192    (UINT32)(0x00000500) // indicate a 8192-bit key

-#define TSS_KEY_SIZE_16384   (UINT32)(0x00000600) // indicate a 16384-bit key

-#define TSS_KEY_SIZE_BITMASK (UINT32)(0x00000F00) // mask to extract key size

-

-//

-//  Certified Migratability

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-// DEFAULT                              |0 0|

-// Not Certified Migratable             |0 0|

-// Certified Migratable                 |0 1|

-//

-#define TSS_KEY_NOT_CERTIFIED_MIGRATABLE (UINT32)(0x00000000)

-#define TSS_KEY_CERTIFIED_MIGRATABLE     (UINT32)(0x00001000)

-

-//

-//  Specification version

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-// Context default                |0 0 0|

-// TPM_KEY 1.1b key               |0 0 1|

-// TPM_KEY12 1.2 key              |0 1 0|

-//

-#define TSS_KEY_STRUCT_DEFAULT            (UINT32)(0x00000000)

-#define TSS_KEY_STRUCT_KEY                (UINT32)(0x00004000)

-#define TSS_KEY_STRUCT_KEY12              (UINT32)(0x00008000)

-#define TSS_KEY_STRUCT_BITMASK            (UINT32)(0x0001C000)

-

-

-//

-//  fixed KeyTypes (templates)

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//  |0 0 0 0 0 0|                             Empty Key

-//  |0 0 0 0 0 1|                             Storage Root Key

-//

-#define   TSS_KEY_EMPTY_KEY (0x00000000) // no TPM key template

-                                         // (empty TSP key object)

-#define   TSS_KEY_TSP_SRK   (0x04000000) // use a TPM SRK template

-                                         // (TSP key object for SRK)

-#define   TSS_KEY_TEMPLATE_BITMASK (0xFC000000) // bitmask to extract key

-                                                // template

-

-

-//*************************************

-// Flags for creating ENCDATA object: *

-//*************************************

-

-//

-//  Type

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   Seal                                                     |0 0 1|

-//   Bind                                                     |0 1 0|

-//   Legacy                                                   |0 1 1|

-//

-//   ENCDATA Reserved:

-//  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|

-//

-#define   TSS_ENCDATA_SEAL     (0x00000001)   // data for seal operation

-#define   TSS_ENCDATA_BIND     (0x00000002)   // data for bind operation

-#define   TSS_ENCDATA_LEGACY   (0x00000003)   // data for legacy bind operation

-

-

-//**********************************

-// Flags for creating HASH object: *

-//**********************************

-

-//

-//  Algorithm

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   DEFAULT               

-//  |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|

-//   SHA1

-//  |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1|

-//   OTHER

-//  |1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|

-//

-#define   TSS_HASH_DEFAULT    (0x00000000)   // Default hash algorithm

-#define   TSS_HASH_SHA1       (0x00000001)   // SHA-1 with 20 bytes

-#define   TSS_HASH_OTHER      (0xFFFFFFFF)   // Not-specified hash algorithm

-

-

-//************************************

-// Flags for creating POLICY object: *

-//************************************

-

-//

-//  Type

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//

-//   Usage                                                    |0 0 1|

-//   Migration                                                |0 1 0|

-//   Operator                                                 |0 1 1|

-//

-//   POLICY Reserved:

-//  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|

-

-#define   TSS_POLICY_USAGE         (0x00000001)   // usage policy object

-#define   TSS_POLICY_MIGRATION     (0x00000002)   // migration policy object

-#define   TSS_POLICY_OPERATOR      (0x00000003)   // migration policy object

-

-

-//******************************************

-// Flags for creating PCRComposite object: *

-//******************************************

-

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-//                                                              |x x| Struct

-//  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|     Reserved

-//

-

-//  PCRComposite Version:

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//   ---------------------------------------------------------------

-// TPM_PCR_DEFAULT                                            |0 0 0|

-// TPM_PCR_INFO                                               |0 0 1|

-// TPM_PCR_INFO_LONG                                          |0 1 0|

-// TPM_PCR_INFO_SHORT                                         |0 1 1|

-//

-

-#define   TSS_PCRS_STRUCT_DEFAULT    (0x00000000) // depends on context

-#define   TSS_PCRS_STRUCT_INFO       (0x00000001) // TPM_PCR_INFO

-#define   TSS_PCRS_STRUCT_INFO_LONG  (0x00000002) // TPM_PCR_INFO_LONG

-#define   TSS_PCRS_STRUCT_INFO_SHORT (0x00000003) // TPM_PCR_INFO_SHORT

-

-

-

-//////////////////////////////////////////////////////////////////////////

-// Attribute Flags, Subflags, and Values

-//////////////////////////////////////////////////////////////////////////

-

-

-//******************

-// Context object: *

-//******************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_CONTEXT_SILENT_MODE        (0x00000001)

-                                                    // dialog display control

-#define TSS_TSPATTRIB_CONTEXT_MACHINE_NAME       (0x00000002)

-                                                    // remote machine name

-#define TSS_TSPATTRIB_CONTEXT_VERSION_MODE       (0x00000003)

-                                                    // context version

-#define TSS_TSPATTRIB_CONTEXT_TRANSPORT          (0x00000004)

-                                                    // transport control

-#define TSS_TSPATTRIB_CONTEXT_CONNECTION_VERSION (0x00000005)

-                                                    // connection version

-#define TSS_TSPATTRIB_SECRET_HASH_MODE           (0x00000006)

-                                                    // flag indicating whether

-                                                    // NUL is included in the

-                                                    // hash of the password

-//

-// SubFlags for Flag TSS_TSPATTRIB_CONTEXT_TRANSPORT

-//

-#define   TSS_TSPATTRIB_CONTEXTTRANS_CONTROL   (0x00000008)

-#define   TSS_TSPATTRIB_CONTEXTTRANS_MODE      (0x00000010)

-

-//

-// Values for the TSS_TSPATTRIB_CONTEXT_SILENT_MODE attribute

-//

-#define   TSS_TSPATTRIB_CONTEXT_NOT_SILENT (0x00000000) // TSP dialogs enabled

-#define   TSS_TSPATTRIB_CONTEXT_SILENT     (0x00000001) // TSP dialogs disabled

-

-//

-// Values for the TSS_TSPATTRIB_CONTEXT_VERSION_MODE attribute

-//

-#define   TSS_TSPATTRIB_CONTEXT_VERSION_AUTO (0x00000001)

-#define   TSS_TSPATTRIB_CONTEXT_VERSION_V1_1 (0x00000002)

-#define   TSS_TSPATTRIB_CONTEXT_VERSION_V1_2 (0x00000003)

-

-//

-// Values for the subflag TSS_TSPATTRIB_CONTEXT_TRANS_CONTROL

-//

-#define   TSS_TSPATTRIB_DISABLE_TRANSPORT      (0x00000000)

-#define   TSS_TSPATTRIB_ENABLE_TRANSPORT       (0x00000001)

-

-//

-// Values for the subflag TSS_TSPATTRIB_CONTEXT_TRANS_MODE

-//

-#define   TSS_TSPATTRIB_TRANSPORT_NO_DEFAULT_ENCRYPTION (0x00000000)

-#define   TSS_TSPATTRIB_TRANSPORT_DEFAULT_ENCRYPTION    (0x00000001)

-#define   TSS_TSPATTRIB_TRANSPORT_AUTHENTIC_CHANNEL     (0x00000002)

-#define   TSS_TSPATTRIB_TRANSPORT_EXCLUSIVE             (0x00000004)

-#define   TSS_TSPATTRIB_TRANSPORT_STATIC_AUTH           (0x00000008)

-

-//

-// Values for the TSS_TSPATTRIB_CONTEXT_CONNECTION_VERSION attribute

-//

-#define TSS_CONNECTION_VERSION_1_1                      (0x00000001)

-#define TSS_CONNECTION_VERSION_1_2                      (0x00000002)

-

-

-//

-// Subflags of TSS_TSPATTRIB_SECRET_HASH_MODE

-//

-#define TSS_TSPATTRIB_SECRET_HASH_MODE_POPUP     (0x00000001)

-

-//

-// Values for TSS_TSPATTRIB_SECRET_HASH_MODE_POPUP subflag

-//

-#define TSS_TSPATTRIB_HASH_MODE_NOT_NULL         (0x00000000)

-#define TSS_TSPATTRIB_HASH_MODE_NULL             (0x00000001)

-

-

-// *************

-// TPM object: *

-// *************

-

-//

-// Attributes:

-//

-#define TSS_TSPATTRIB_TPM_CALLBACK_COLLATEIDENTITY  0x00000001

-#define TSS_TSPATTRIB_TPM_CALLBACK_ACTIVATEIDENTITY 0x00000002

-#define TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS      0x00000003

-#define TSS_TSPATTRIB_TPM_CREDENTIAL                0x00001000

-

-//

-// Subflags for TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS

-//

-#define TPM_CAP_PROP_TPM_CLEAR_ORDINAL_AUDIT        0x00000000

-#define TPM_CAP_PROP_TPM_SET_ORDINAL_AUDIT          0x00000001

-

-//

-// Subflags for TSS_TSPATTRIB_TPM_CREDENTIAL

-//

-#define TSS_TPMATTRIB_EKCERT                        0x00000001

-#define TSS_TPMATTRIB_TPM_CC                        0x00000002

-#define TSS_TPMATTRIB_PLATFORMCERT                  0x00000003

-#define TSS_TPMATTRIB_PLATFORM_CC                   0x00000004

-

-

-//*****************

-// Policy object: *

-//*****************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_POLICY_CALLBACK_HMAC           (0x00000080)

-                                        // enable/disable callback function

-

-#define TSS_TSPATTRIB_POLICY_CALLBACK_XOR_ENC        (0x00000100)

-                                        // enable/disable callback function

-

-#define TSS_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP  (0x00000180)

-                                        // enable/disable callback function

-

-#define TSS_TSPATTRIB_POLICY_CALLBACK_CHANGEAUTHASYM (0x00000200)

-                                        // enable/disable callback function

-

-#define TSS_TSPATTRIB_POLICY_SECRET_LIFETIME         (0x00000280)

-                                        // set lifetime mode for policy secret

-

-#define TSS_TSPATTRIB_POLICY_POPUPSTRING             (0x00000300)

-                                        // set a NULL terminated UNICODE string

-                                        // which is displayed in the TSP policy

-                                        // popup dialog

-#define TSS_TSPATTRIB_POLICY_CALLBACK_SEALX_MASK     (0x00000380)

-                                        // enable/disable callback function

-#if 0

-/* This attribute flag is defined earlier with the context attributes.

- * It is valid for both context and policy objects. It is copied

- * here as a reminder to avoid collisions.

- */

-#define TSS_TSPATTRIB_SECRET_HASH_MODE               (0x00000006)

-                                                    // flag indicating whether

-                                                    // NUL is included in the

-                                                    // hash of the password

-#endif

-

-

-#define TSS_TSPATTRIB_POLICY_DELEGATION_INFO         (0x00000001)

-#define TSS_TSPATTRIB_POLICY_DELEGATION_PCR          (0x00000002)

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_POLICY_SECRET_LIFETIME

-//

-#define TSS_SECRET_LIFETIME_ALWAYS  (0x00000001) // secret will not be

-                                                 // invalidated

-#define TSS_SECRET_LIFETIME_COUNTER (0x00000002) // secret lifetime

-                                                 // controlled by counter

-#define TSS_SECRET_LIFETIME_TIMER   (0x00000003) // secret lifetime

-                                                 // controlled by time

-#define TSS_TSPATTRIB_POLSECRET_LIFETIME_ALWAYS  TSS_SECRET_LIFETIME_ALWAYS

-#define TSS_TSPATTRIB_POLSECRET_LIFETIME_COUNTER TSS_SECRET_LIFETIME_COUNTER

-#define TSS_TSPATTRIB_POLSECRET_LIFETIME_TIMER   TSS_SECRET_LIFETIME_TIMER

-

-// Alternate names misspelled in the 1.1 TSS spec.

-#define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_ALWAYS  TSS_SECRET_LIFETIME_ALWAYS

-#define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_COUNTER TSS_SECRET_LIFETIME_COUNTER

-#define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_TIMER   TSS_SECRET_LIFETIME_TIMER

-

-//

-// Subflags of TSS_TSPATTRIB_POLICY_DELEGATION_INFO

-//

-#define TSS_TSPATTRIB_POLDEL_TYPE                (0x00000001)

-#define TSS_TSPATTRIB_POLDEL_INDEX               (0x00000002)

-#define TSS_TSPATTRIB_POLDEL_PER1                (0x00000003)

-#define TSS_TSPATTRIB_POLDEL_PER2                (0x00000004)

-#define TSS_TSPATTRIB_POLDEL_LABEL               (0x00000005)

-#define TSS_TSPATTRIB_POLDEL_FAMILYID            (0x00000006)

-#define TSS_TSPATTRIB_POLDEL_VERCOUNT            (0x00000007)

-#define TSS_TSPATTRIB_POLDEL_OWNERBLOB           (0x00000008)

-#define TSS_TSPATTRIB_POLDEL_KEYBLOB             (0x00000009)

-

-//

-// Subflags of TSS_TSPATTRIB_POLICY_DELEGATION_PCR

-//

-#define TSS_TSPATTRIB_POLDELPCR_LOCALITY         (0x00000001)

-#define TSS_TSPATTRIB_POLDELPCR_DIGESTATRELEASE  (0x00000002)

-#define TSS_TSPATTRIB_POLDELPCR_SELECTION        (0x00000003)

-

-//

-// Values for the Policy TSS_TSPATTRIB_POLDEL_TYPE attribute

-//

-#define TSS_DELEGATIONTYPE_NONE                  (0x00000001)

-#define TSS_DELEGATIONTYPE_OWNER                 (0x00000002)

-#define TSS_DELEGATIONTYPE_KEY                   (0x00000003)

-

-

-

-//

-//  Flags used for the 'mode' parameter in Tspi_Policy_SetSecret()

-//

-#define TSS_SECRET_MODE_NONE     (0x00000800) // No authorization will be

-                                              // processed

-#define TSS_SECRET_MODE_SHA1     (0x00001000) // Secret string will not be

-                                              // touched by TSP 

-#define TSS_SECRET_MODE_PLAIN    (0x00001800) // Secret string will be hashed

-                                              // using SHA1

-#define TSS_SECRET_MODE_POPUP    (0x00002000) // TSS SP will ask for a secret

-#define TSS_SECRET_MODE_CALLBACK (0x00002800) // Application has to provide a

-                                              // call back function

-

-

-

-//******************

-// EncData object: *

-//******************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_ENCDATA_BLOB     (0x00000008)

-#define TSS_TSPATTRIB_ENCDATA_PCR      (0x00000010)

-#define TSS_TSPATTRIB_ENCDATA_PCR_LONG (0x00000018)

-#define TSS_TSPATTRIB_ENCDATA_SEAL     (0x00000020)

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_ENCDATA_BLOB

-//

-#define TSS_TSPATTRIB_ENCDATABLOB_BLOB   (0x00000001)   // encrypted data blob

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_ENCDATA_PCR

-//

-#define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATCREATION       (0x00000002)

-#define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATRELEASE        (0x00000003)

-#define TSS_TSPATTRIB_ENCDATAPCR_SELECTION               (0x00000004)

-// support typo from 1.1 headers

-#define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_RELEASE \

-                          TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATRELEASE

-

-#define TSS_TSPATTRIB_ENCDATAPCRLONG_LOCALITY_ATCREATION (0x00000005)

-#define TSS_TSPATTRIB_ENCDATAPCRLONG_LOCALITY_ATRELEASE  (0x00000006)

-#define TSS_TSPATTRIB_ENCDATAPCRLONG_CREATION_SELECTION  (0x00000007)

-#define TSS_TSPATTRIB_ENCDATAPCRLONG_RELEASE_SELECTION   (0x00000008)

-#define TSS_TSPATTRIB_ENCDATAPCRLONG_DIGEST_ATCREATION   (0x00000009)

-#define TSS_TSPATTRIB_ENCDATAPCRLONG_DIGEST_ATRELEASE    (0x0000000A)

-

-

-//

-// Attribute subflags TSS_TSPATTRIB_ENCDATA_SEAL

-//

-#define TSS_TSPATTRIB_ENCDATASEAL_PROTECT_MODE           (0x00000001)

-

-//

-// Attribute values for 

-//    TSS_TSPATTRIB_ENCDATA_SEAL/TSS_TSPATTRIB_ENCDATASEAL_PROTECT_MODE

-//

-#define  TSS_TSPATTRIB_ENCDATASEAL_NO_PROTECT            (0x00000000)

-#define  TSS_TSPATTRIB_ENCDATASEAL_PROTECT               (0x00000001)

-

-

-//*************

-// NV object: *

-//*************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_NV_INDEX                     (0x00000001)

-#define TSS_TSPATTRIB_NV_PERMISSIONS               (0x00000002)

-#define TSS_TSPATTRIB_NV_STATE                     (0x00000003)

-#define TSS_TSPATTRIB_NV_DATASIZE                  (0x00000004)

-#define TSS_TSPATTRIB_NV_PCR                       (0x00000005)

-

-#define TSS_TSPATTRIB_NVSTATE_READSTCLEAR          (0x00100000)

-#define TSS_TSPATTRIB_NVSTATE_WRITESTCLEAR         (0x00200000)

-#define TSS_TSPATTRIB_NVSTATE_WRITEDEFINE          (0x00300000)

-

-#define TSS_TSPATTRIB_NVPCR_READPCRSELECTION       (0x01000000)

-#define TSS_TSPATTRIB_NVPCR_READDIGESTATRELEASE    (0x02000000)

-#define TSS_TSPATTRIB_NVPCR_READLOCALITYATRELEASE  (0x03000000)

-#define TSS_TSPATTRIB_NVPCR_WRITEPCRSELECTION      (0x04000000)

-#define TSS_TSPATTRIB_NVPCR_WRITEDIGESTATRELEASE   (0x05000000)

-#define TSS_TSPATTRIB_NVPCR_WRITELOCALITYATRELEASE (0x06000000)

-

-/* NV index flags

- *

- * From the TPM spec, Part 2, Section 19.1.

- *

- *        3                   2                   1

- *      1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

- *     |T|P|U|D| resvd |   Purview     |          Index                |

- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

- */

-#define TSS_NV_TPM                (0x80000000) // TPM mfr reserved bit

-#define TSS_NV_PLATFORM           (0x40000000) // Platform mfr reserved bit

-#define TSS_NV_USER               (0x20000000) // User reserved bit

-#define TSS_NV_DEFINED            (0x10000000) // "Defined permanently" flag

-#define TSS_NV_MASK_TPM           (0x80000000) // mask to extract 'T'

-#define TSS_NV_MASK_PLATFORM      (0x40000000) // mask to extract 'P'

-#define TSS_NV_MASK_USER          (0x20000000) // mask to extract 'U'

-#define TSS_NV_MASK_DEFINED       (0x10000000) // mask to extract 'D'

-#define TSS_NV_MASK_RESERVED      (0x0f000000) // mask to extract reserved bits

-#define TSS_NV_MASK_PURVIEW       (0x00ff0000) // mask to extract purview byte

-#define TSS_NV_MASK_INDEX         (0x0000ffff) // mask to extract index byte

-

-// This is the index of the NV storage area where the number of sessions

-// per locality is stored.

-#define TSS_NV_INDEX_SESSIONS     (0x00011101)

-

-

-//******************

-// MigData object: *

-//******************

-

-//

-// Attributes

-//

-#define TSS_MIGATTRIB_MIGRATIONBLOB                    (0x00000010)

-#define TSS_MIGATTRIB_MIGRATIONTICKET                  (0x00000020)

-#define TSS_MIGATTRIB_AUTHORITY_DATA                   (0x00000030)

-#define TSS_MIGATTRIB_MIG_AUTH_DATA                    (0x00000040)

-#define TSS_MIGATTRIB_TICKET_DATA                      (0x00000050)

-#define TSS_MIGATTRIB_PAYLOAD_TYPE                     (0x00000060)

-

-//

-// Attribute subflags TSS_MIGATTRIB_MIGRATIONBLOB

-//

-#define TSS_MIGATTRIB_MIGRATION_XOR_BLOB               (0x00000101)

-#define TSS_MIGATTRIB_MIGRATION_REWRAPPED_BLOB         (0x00000102)

-#define TSS_MIGATTRIB_MIG_MSALIST_PUBKEY_BLOB          (0x00000103)

-#define TSS_MIGATTRIB_MIG_AUTHORITY_PUBKEY_BLOB        (0x00000104)

-#define TSS_MIGATTRIB_MIG_DESTINATION_PUBKEY_BLOB      (0x00000105)

-#define TSS_MIGATTRIB_MIG_SOURCE_PUBKEY_BLOB           (0x00000106)

-#define TSS_MIGATTRIB_MIG_REWRAPPED_BLOB               TSS_MIGATTRIB_MIGRATION_REWRAPPED_BLOB

-#define TSS_MIGATTRIB_MIG_XOR_BLOB                     TSS_MIGATTRIB_MIGRATION_XOR_BLOB

-

-//

-// Attribute subflags TSS_MIGATTRIB_MIGRATIONTICKET

-//

-// none

-

-//

-// Attribute subflags TSS_MIGATTRIB_AUTHORITY_DATA

-//

-#define TSS_MIGATTRIB_AUTHORITY_DIGEST                 (0x00000301)

-#define TSS_MIGATTRIB_AUTHORITY_APPROVAL_HMAC          (0x00000302)

-#define TSS_MIGATTRIB_AUTHORITY_MSALIST                (0x00000303)

-

-//

-// Attribute subflags TSS_MIGATTRIB_MIG_AUTH_DATA

-//

-#define TSS_MIGATTRIB_MIG_AUTH_AUTHORITY_DIGEST        (0x00000401)

-#define TSS_MIGATTRIB_MIG_AUTH_DESTINATION_DIGEST      (0x00000402)

-#define TSS_MIGATTRIB_MIG_AUTH_SOURCE_DIGEST           (0x00000403)

-

-//

-// Attribute subflags TSS_MIGATTRIB_TICKET_DATA

-//

-#define TSS_MIGATTRIB_TICKET_SIG_DIGEST                (0x00000501)

-#define TSS_MIGATTRIB_TICKET_SIG_VALUE                 (0x00000502)

-#define TSS_MIGATTRIB_TICKET_SIG_TICKET                (0x00000503)

-#define TSS_MIGATTRIB_TICKET_RESTRICT_TICKET           (0x00000504)

-

-//

-// Attribute subflags TSS_MIGATTRIB_PAYLOAD_TYPE

-//

-#define TSS_MIGATTRIB_PT_MIGRATE_RESTRICTED            (0x00000601)

-#define TSS_MIGATTRIB_PT_MIGRATE_EXTERNAL              (0x00000602)

-

-

-

-

-//***************

-// Hash object: *

-//***************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_HASH_IDENTIFIER (0x00001000) // Hash algorithm identifier

-#define TSS_TSPATTRIB_ALG_IDENTIFIER  (0x00002000) // ASN.1 alg identifier

-

-

-

-//***************

-// PCRs object: *

-//***************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_PCRS_INFO  (0x00000001) // info 

-

-//

-// Subflags for TSS_TSPATTRIB_PCRS_INFO flag

-//

-#define TSS_TSPATTRIB_PCRSINFO_PCRSTRUCT (0x00000001) // type of pcr struct

-                                                      // TSS_PCRS_STRUCT_TYPE_XX

-

-//****************************

-// Delegation Family object: *

-//****************************

-

-//

-// Attributes

-//

-#define TSS_TSPATTRIB_DELFAMILY_STATE            (0x00000001)

-#define TSS_TSPATTRIB_DELFAMILY_INFO             (0x00000002)

-

-// DELFAMILY_STATE sub-attributes

-#define TSS_TSPATTRIB_DELFAMILYSTATE_LOCKED      (0x00000001)

-#define TSS_TSPATTRIB_DELFAMILYSTATE_ENABLED     (0x00000002)

-

-// DELFAMILY_INFO sub-attributes

-#define TSS_TSPATTRIB_DELFAMILYINFO_LABEL        (0x00000003)

-#define TSS_TSPATTRIB_DELFAMILYINFO_VERCOUNT     (0x00000004)

-#define TSS_TSPATTRIB_DELFAMILYINFO_FAMILYID     (0x00000005)

-

-// Bitmasks for the 'ulFlags' argument to Tspi_TPM_Delegate_CreateDelegation.

-// Only one bit used for now.

-#define TSS_DELEGATE_INCREMENTVERIFICATIONCOUNT               ((UINT32)1)

-

-// Bitmasks for the 'ulFlags' argument to

-// Tspi_TPM_Delegate_CacheOwnerDelegation. Only 1 bit is used for now.

-#define TSS_DELEGATE_CACHEOWNERDELEGATION_OVERWRITEEXISTING   ((UINT32)1)

-

-

-

-//*************************

-// DAA Credential Object: *

-//*************************

-

-//

-// Attribute flags

-//

-#define TSS_TSPATTRIB_DAACRED_COMMIT                   (0x00000001)

-#define TSS_TSPATTRIB_DAACRED_ATTRIB_GAMMAS            (0x00000002)

-#define TSS_TSPATTRIB_DAACRED_CREDENTIAL_BLOB          (0x00000003)

-#define TSS_TSPATTRIB_DAACRED_CALLBACK_SIGN            (0x00000004)

-#define TSS_TSPATTRIB_DAACRED_CALLBACK_VERIFYSIGNATURE (0x00000005)

-

-//

-// Subflags for TSS_TSPATTRIB_DAACRED_COMMIT

-// 

-#define TSS_TSPATTRIB_DAACOMMIT_NUMBER              (0x00000001)

-#define TSS_TSPATTRIB_DAACOMMIT_SELECTION           (0x00000002)

-#define TSS_TSPATTRIB_DAACOMMIT_COMMITMENTS         (0x00000003)

-

-//

-// Subflags for TSS_TSPATTRIB_DAACRED_ATTRIB_GAMMAS

-// 

-#define TSS_TSPATTRIB_DAAATTRIBGAMMAS_BLOB          (0xffffffff)

-

-

-

-//*************************

-// DAA Issuer Key Object: *

-//*************************

-

-//

-// Attribute flags

-//

-#define TSS_TSPATTRIB_DAAISSUERKEY_BLOB              (0x00000001)

-#define TSS_TSPATTRIB_DAAISSUERKEY_PUBKEY            (0x00000002)

-

-//

-// Subflags for TSS_TSPATTRIB_DAAISSUERKEY_BLOB

-// 

-#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_PUBLIC_KEY     (0x00000001)

-#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_SECRET_KEY     (0x00000002)

-#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_KEYBLOB        (0x00000003)

-#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_PROOF          (0x00000004)

-

-//

-// Subflags for TSS_TSPATTRIB_DAAISSUERKEY_PUBKEY

-// 

-#define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_ATTRIBS          (0x00000001)

-#define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_PLATFORM_ATTRIBS (0x00000002)

-#define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_ISSUER_ATTRIBS   (0x00000003)

-

-

-

-//***************************************

-// DAA Anonymity Revocation Key Object: *

-//***************************************

-

-//

-// Attribute flags

-//

-#define TSS_TSPATTRIB_DAAARAKEY_BLOB                 (0x00000001)

-

-//

-// Subflags for TSS_TSPATTRIB_DAAARAKEY_BLOB

-// 

-#define TSS_TSPATTRIB_DAAARAKEYBLOB_PUBLIC_KEY     (0x00000001)

-#define TSS_TSPATTRIB_DAAARAKEYBLOB_SECRET_KEY     (0x00000002)

-#define TSS_TSPATTRIB_DAAARAKEYBLOB_KEYBLOB        (0x00000003)

-

-

-

-//

-// Structure payload flags for TSS_DAA_PSEUDONYM,

-// (TSS_DAA_PSEUDONYM.payloadFlag)

-//

-#define TSS_FLAG_DAA_PSEUDONYM_PLAIN                 (0x00000000)

-#define TSS_FLAG_DAA_PSEUDONYM_ENCRYPTED             (0x00000001)

-

-

-//**************

-// Key Object: *

-//**************

-

-//

-// Attribute flags

-//

-#define TSS_TSPATTRIB_KEY_BLOB       (0x00000040) // key info as blob data

-#define TSS_TSPATTRIB_KEY_INFO       (0x00000080) // keyparam info as blob data

-#define TSS_TSPATTRIB_KEY_UUID       (0x000000C0) // key UUID info as blob data

-#define TSS_TSPATTRIB_KEY_PCR        (0x00000100) // composite digest value for

-                                                  // the key

-#define TSS_TSPATTRIB_RSAKEY_INFO    (0x00000140) // public key info

-#define TSS_TSPATTRIB_KEY_REGISTER   (0x00000180) // register location

-#define TSS_TSPATTRIB_KEY_PCR_LONG   (0x000001c0) // PCR_INFO_LONG for the key

-#define TSS_TSPATTRIB_KEY_CONTROLBIT (0x00000200) // key control flags

-#define TSS_TSPATTRIB_KEY_CMKINFO    (0x00000400) // CMK info

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_KEY_BLOB

-//

-#define TSS_TSPATTRIB_KEYBLOB_BLOB        (0x00000008) // key info using the

-                                                       // key blob

-#define TSS_TSPATTRIB_KEYBLOB_PUBLIC_KEY  (0x00000010) // public key info

-                                                       // using the blob

-#define TSS_TSPATTRIB_KEYBLOB_PRIVATE_KEY (0x00000028) // encrypted private key

-                                                       // blob

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_KEY_INFO

-//

-#define TSS_TSPATTRIB_KEYINFO_SIZE          (0x00000080) // key size in bits

-#define TSS_TSPATTRIB_KEYINFO_USAGE         (0x00000100) // key usage info

-#define TSS_TSPATTRIB_KEYINFO_KEYFLAGS      (0x00000180) // key flags   

-#define TSS_TSPATTRIB_KEYINFO_AUTHUSAGE     (0x00000200) // key auth usage info

-#define TSS_TSPATTRIB_KEYINFO_ALGORITHM     (0x00000280) // key algorithm ID

-#define TSS_TSPATTRIB_KEYINFO_SIGSCHEME     (0x00000300) // key sig scheme

-#define TSS_TSPATTRIB_KEYINFO_ENCSCHEME     (0x00000380) // key enc scheme   

-#define TSS_TSPATTRIB_KEYINFO_MIGRATABLE    (0x00000400) // if true then key is

-                                                         // migratable

-#define TSS_TSPATTRIB_KEYINFO_REDIRECTED    (0x00000480) // key is redirected

-#define TSS_TSPATTRIB_KEYINFO_VOLATILE      (0x00000500) // if true key is

-                                                         // volatile

-#define TSS_TSPATTRIB_KEYINFO_AUTHDATAUSAGE (0x00000580) // if true auth is

-                                                         // required

-#define TSS_TSPATTRIB_KEYINFO_VERSION       (0x00000600) // version info as TSS

-                                                         // version struct

-#define TSS_TSPATTRIB_KEYINFO_CMK           (0x00000680) // if true then key

-                                                         // is certified

-                                                         // migratable

-#define TSS_TSPATTRIB_KEYINFO_KEYSTRUCT     (0x00000700) // type of key struct

-                                                         // used for this key

-                                                         // (TPM_KEY or 

-                                                         // TPM_KEY12)

-//

-// SubFlags for Flag TSS_TSPATTRIB_RSAKEY_INFO

-//

-#define TSS_TSPATTRIB_KEYINFO_RSA_EXPONENT  (0x00001000)

-#define TSS_TSPATTRIB_KEYINFO_RSA_MODULUS   (0x00002000)

-#define TSS_TSPATTRIB_KEYINFO_RSA_KEYSIZE   (0x00003000)

-#define TSS_TSPATTRIB_KEYINFO_RSA_PRIMES    (0x00004000)

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_KEY_PCR

-//

-#define TSS_TSPATTRIB_KEYPCR_DIGEST_ATCREATION  (0x00008000)

-#define TSS_TSPATTRIB_KEYPCR_DIGEST_ATRELEASE   (0x00010000)

-#define TSS_TSPATTRIB_KEYPCR_SELECTION          (0x00018000)

-

-//

-// SubFlags for TSS_TSPATTRIB_KEY_REGISTER

-//

-#define TSS_TSPATTRIB_KEYREGISTER_USER    (0x02000000)

-#define TSS_TSPATTRIB_KEYREGISTER_SYSTEM  (0x04000000)

-#define TSS_TSPATTRIB_KEYREGISTER_NO      (0x06000000)

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_KEY_PCR_LONG

-//

-#define TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATCREATION (0x00040000) /* UINT32 */

-#define TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATRELEASE  (0x00080000) /* UINT32 */

-#define TSS_TSPATTRIB_KEYPCRLONG_CREATION_SELECTION  (0x000C0000) /* DATA */

-#define TSS_TSPATTRIB_KEYPCRLONG_RELEASE_SELECTION   (0x00100000) /* DATA */

-#define TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATCREATION   (0x00140000) /* DATA */

-#define TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATRELEASE    (0x00180000) /* DATA */

-

-//

-// SubFlags for Flag TSS_TSPATTRIB_KEY_CMKINFO

-//

-#define TSS_TSPATTRIB_KEYINFO_CMK_MA_APPROVAL  (0x00000010)

-#define TSS_TSPATTRIB_KEYINFO_CMK_MA_DIGEST    (0x00000020)

-

-

-//

-// Attribute Values

-//

-

-//

-// key size definitions

-//

-#define TSS_KEY_SIZEVAL_512BIT      (0x0200)

-#define TSS_KEY_SIZEVAL_1024BIT     (0x0400)

-#define TSS_KEY_SIZEVAL_2048BIT     (0x0800)

-#define TSS_KEY_SIZEVAL_4096BIT     (0x1000)

-#define TSS_KEY_SIZEVAL_8192BIT     (0x2000)

-#define TSS_KEY_SIZEVAL_16384BIT    (0x4000)

-

-//

-// key usage definitions

-// Values intentionally moved away from corresponding TPM values to avoid

-// possible misuse

-//

-#define TSS_KEYUSAGE_BIND           (0x00)   

-#define TSS_KEYUSAGE_IDENTITY       (0x01)   

-#define TSS_KEYUSAGE_LEGACY         (0x02)   

-#define TSS_KEYUSAGE_SIGN           (0x03)   

-#define TSS_KEYUSAGE_STORAGE        (0x04)

-#define TSS_KEYUSAGE_AUTHCHANGE     (0x05)

-#define TSS_KEYUSAGE_MIGRATE        (0x06)

-

-//

-// key flag definitions

-//

-#define TSS_KEYFLAG_REDIRECTION          (0x00000001)

-#define TSS_KEYFLAG_MIGRATABLE           (0x00000002)

-#define TSS_KEYFLAG_VOLATILEKEY          (0x00000004)

-#define TSS_KEYFLAG_CERTIFIED_MIGRATABLE (0x00000008)

-

-//

-//  algorithm ID definitions

-//

-//  This table defines the algo id's

-//  Values intentionally moved away from corresponding TPM values to avoid

-//  possible misuse

-//

-#define   TSS_ALG_RSA               (0x20)

-#define   TSS_ALG_DES               (0x21)

-#define   TSS_ALG_3DES              (0x22)

-#define   TSS_ALG_SHA               (0x23)

-#define   TSS_ALG_HMAC              (0x24)

-#define   TSS_ALG_AES128            (0x25)

-#define   TSS_ALG_AES192            (0x26)

-#define   TSS_ALG_AES256            (0x27)

-#define   TSS_ALG_XOR               (0x28)

-#define   TSS_ALG_MGF1              (0x29)

-

-#define   TSS_ALG_AES               TSS_ALG_AES128

-

-// Special values for 

-//   Tspi_Context_GetCapability(TSS_TSPCAP_ALG)

-//   Tspi_Context_GetCapability(TSS_TCSCAP_ALG)

-#define   TSS_ALG_DEFAULT           (0xfe)

-#define   TSS_ALG_DEFAULT_SIZE      (0xff)

-

-

-//

-// key signature scheme definitions

-//

-#define TSS_SS_NONE                 (0x10)

-#define TSS_SS_RSASSAPKCS1V15_SHA1  (0x11)

-#define TSS_SS_RSASSAPKCS1V15_DER   (0x12)

-

-//

-// key encryption scheme definitions

-//

-#define TSS_ES_NONE                 (0x10)

-#define TSS_ES_RSAESPKCSV15         (0x11)

-#define TSS_ES_RSAESOAEP_SHA1_MGF1  (0x12)

-#define TSS_ES_SYM_CNT              (0x13)

-#define TSS_ES_SYM_OFB              (0x14)

-#define TSS_ES_SYM_CBC_PKCS5PAD     (0x15)

-

-

-//

-// persistent storage registration definitions

-//

-#define TSS_PS_TYPE_USER   (1) // Key is registered persistantly in the user

-                               // storage database.

-#define TSS_PS_TYPE_SYSTEM (2) // Key is registered persistantly in the system

-                               // storage database.

-

-//

-// migration scheme definitions

-// Values intentionally moved away from corresponding TPM values to avoid

-// possible misuse

-//

-#define TSS_MS_MIGRATE                   (0x20)

-#define TSS_MS_REWRAP                    (0x21)

-#define TSS_MS_MAINT                     (0x22)

-#define TSS_MS_RESTRICT_MIGRATE          (0x23)

-#define TSS_MS_RESTRICT_APPROVE_DOUBLE   (0x24)

-#define TSS_MS_RESTRICT_MIGRATE_EXTERNAL (0x25)

-

-//

-// TPM key authorization

-// Values intentionally moved away from corresponding TPM values to avoid

-// possible misuse

-//

-#define TSS_KEYAUTH_AUTH_NEVER         (0x10)

-#define TSS_KEYAUTH_AUTH_ALWAYS        (0x11)

-#define TSS_KEYAUTH_AUTH_PRIV_USE_ONLY (0x12)

-

-

-//

-// Flags for TPM status information (GetStatus and SetStatus)

-//

-#define TSS_TPMSTATUS_DISABLEOWNERCLEAR      (0x00000001) // persistent flag

-#define TSS_TPMSTATUS_DISABLEFORCECLEAR      (0x00000002) // volatile flag

-#define TSS_TPMSTATUS_DISABLED               (0x00000003) // persistent flag

-#define TSS_TPMSTATUS_DEACTIVATED            (0x00000004) // volatile flag

-#define TSS_TPMSTATUS_OWNERSETDISABLE        (0x00000005) // persistent flag

-                                                          // for SetStatus

-                                                          // (disable flag) 

-#define TSS_TPMSTATUS_SETOWNERINSTALL        (0x00000006) // persistent flag

-                                                          // (ownership flag)

-#define TSS_TPMSTATUS_DISABLEPUBEKREAD       (0x00000007) // persistent flag

-#define TSS_TPMSTATUS_ALLOWMAINTENANCE       (0x00000008) // persistent flag

-#define TSS_TPMSTATUS_PHYSPRES_LIFETIMELOCK  (0x00000009) // persistent flag

-#define TSS_TPMSTATUS_PHYSPRES_HWENABLE      (0x0000000A) // persistent flag

-#define TSS_TPMSTATUS_PHYSPRES_CMDENABLE     (0x0000000B) // persistent flag

-#define TSS_TPMSTATUS_PHYSPRES_LOCK          (0x0000000C) // volatile flag

-#define TSS_TPMSTATUS_PHYSPRESENCE           (0x0000000D) // volatile flag

-#define TSS_TPMSTATUS_PHYSICALDISABLE        (0x0000000E) // persistent flag

-                                                          // (SetStatus

-                                                          //  disable flag)

-#define TSS_TPMSTATUS_CEKP_USED              (0x0000000F) // persistent flag

-#define TSS_TPMSTATUS_PHYSICALSETDEACTIVATED (0x00000010) // persistent flag

-                                                          // (deactivated flag)

-#define TSS_TPMSTATUS_SETTEMPDEACTIVATED     (0x00000011) // volatile flag

-                                                          // (deactivated flag)

-#define TSS_TPMSTATUS_POSTINITIALISE         (0x00000012) // volatile flag

-#define TSS_TPMSTATUS_TPMPOST                (0x00000013) // persistent flag

-#define TSS_TPMSTATUS_TPMPOSTLOCK            (0x00000014) // persistent flag

-#define TSS_TPMSTATUS_DISABLEPUBSRKREAD      (0x00000016) // persistent flag

-#define TSS_TPMSTATUS_MAINTENANCEUSED        (0x00000017) // persistent flag

-#define TSS_TPMSTATUS_OPERATORINSTALLED      (0x00000018) // persistent flag

-#define TSS_TPMSTATUS_FIPS                   (0x00000019) // persistent flag

-#define TSS_TPMSTATUS_ENABLEREVOKEEK         (0x0000001A) // persistent flag

-#define TSS_TPMSTATUS_NV_LOCK                (0x0000001B) // persistent flag

-#define TSS_TPMSTATUS_TPM_ESTABLISHED        (0x0000001C) // persistent flag

-#define TSS_TPMSTATUS_RESETLOCK              (0x0000001D) // volatile flag

-

-

-//

-// Capability flag definitions

-//

-// TPM capabilities            

-//

-#define TSS_TPMCAP_ORD                   (0x10)

-#define TSS_TPMCAP_ALG                   (0x11)

-#define TSS_TPMCAP_FLAG                  (0x12)

-#define TSS_TPMCAP_PROPERTY              (0x13)

-#define TSS_TPMCAP_VERSION               (0x14)

-#define TSS_TPMCAP_VERSION_VAL           (0x15)

-#define TSS_TPMCAP_NV_LIST               (0x16)

-#define TSS_TPMCAP_NV_INDEX              (0x17)

-#define TSS_TPMCAP_MFR                   (0x18)

-#define TSS_TPMCAP_SYM_MODE              (0x19)

-#define TSS_TPMCAP_HANDLE                (0x1a)

-#define TSS_TPMCAP_TRANS_ES              (0x1b)

-#define TSS_TPMCAP_AUTH_ENCRYPT          (0x1c)  

-#define TSS_TPMCAP_SET_PERM_FLAGS        (0x1d)  // cf. TPM_SET_PERM_FLAGS

-#define TSS_TPMCAP_SET_VENDOR            (0x1e)  // cf. TPM_SET_VENDOR

-#define TSS_TPMCAP_DA_LOGIC              (0x1f)

-

-//

-// Sub-Capability Flags for TSS_TPMCAP_PROPERTY

-//

-#define TSS_TPMCAP_PROP_PCR                 (0x10)

-#define TSS_TPMCAP_PROP_DIR                 (0x11)

-#define TSS_TPMCAP_PROP_MANUFACTURER        (0x12)

-#define TSS_TPMCAP_PROP_SLOTS               (0x13)

-#define TSS_TPMCAP_PROP_KEYS                TSS_TPMCAP_PROP_SLOTS

-#define TSS_TPMCAP_PROP_FAMILYROWS          (0x14)

-#define TSS_TPMCAP_PROP_DELEGATEROWS        (0x15)

-#define TSS_TPMCAP_PROP_OWNER               (0x16)

-#define TSS_TPMCAP_PROP_MAXKEYS             (0x18)

-#define TSS_TPMCAP_PROP_AUTHSESSIONS        (0x19)

-#define TSS_TPMCAP_PROP_MAXAUTHSESSIONS     (0x1a)

-#define TSS_TPMCAP_PROP_TRANSESSIONS        (0x1b)

-#define TSS_TPMCAP_PROP_MAXTRANSESSIONS     (0x1c)

-#define TSS_TPMCAP_PROP_SESSIONS            (0x1d)

-#define TSS_TPMCAP_PROP_MAXSESSIONS         (0x1e)

-#define TSS_TPMCAP_PROP_CONTEXTS            (0x1f)

-#define TSS_TPMCAP_PROP_MAXCONTEXTS         (0x20)

-#define TSS_TPMCAP_PROP_DAASESSIONS         (0x21)

-#define TSS_TPMCAP_PROP_MAXDAASESSIONS      (0x22)

-#define TSS_TPMCAP_PROP_DAA_INTERRUPT       (0x23)

-#define TSS_TPMCAP_PROP_COUNTERS            (0x24)

-#define TSS_TPMCAP_PROP_MAXCOUNTERS         (0x25)

-#define TSS_TPMCAP_PROP_ACTIVECOUNTER       (0x26)

-#define TSS_TPMCAP_PROP_MIN_COUNTER         (0x27)

-#define TSS_TPMCAP_PROP_TISTIMEOUTS         (0x28)

-#define TSS_TPMCAP_PROP_STARTUPEFFECTS      (0x29)

-#define TSS_TPMCAP_PROP_MAXCONTEXTCOUNTDIST (0x2a)

-#define TSS_TPMCAP_PROP_CMKRESTRICTION      (0x2b)

-#define TSS_TPMCAP_PROP_DURATION            (0x2c)

-#define TSS_TPMCAP_PROP_MAXNVAVAILABLE      (0x2d)

-#define TSS_TPMCAP_PROP_INPUTBUFFERSIZE     (0x2e)

-#define TSS_TPMCAP_PROP_REVISION            (0x2f)

-#define TSS_TPMCAP_PROP_LOCALITIES_AVAIL    (0x32)

-

-//

-// Resource type flags

-// Sub-Capability Flags for TSS_TPMCAP_HANDLE

-//

-#define TSS_RT_KEY                     ((UINT32)0x00000010)

-#define TSS_RT_AUTH                    ((UINT32)0x00000020)

-#define TSS_RT_TRANS                   ((UINT32)0x00000030)

-#define TSS_RT_COUNTER                 ((UINT32)0x00000040)

-

-

-//

-// TSS Core Service Capabilities   

-//

-#define TSS_TCSCAP_ALG                   (0x00000001)

-#define TSS_TCSCAP_VERSION               (0x00000002)

-#define TSS_TCSCAP_CACHING               (0x00000003)

-#define TSS_TCSCAP_PERSSTORAGE           (0x00000004)

-#define TSS_TCSCAP_MANUFACTURER          (0x00000005)

-#define TSS_TCSCAP_PLATFORM_CLASS        (0x00000006)

-#define TSS_TCSCAP_TRANSPORT             (0x00000007)

-#define TSS_TCSCAP_PLATFORM_INFO         (0x00000008)

-

-//

-// Sub-Capability Flags TSS-CoreService-Capabilities

-//

-#define TSS_TCSCAP_PROP_KEYCACHE         (0x00000100)

-#define TSS_TCSCAP_PROP_AUTHCACHE        (0x00000101)

-#define TSS_TCSCAP_PROP_MANUFACTURER_STR (0x00000102)

-#define TSS_TCSCAP_PROP_MANUFACTURER_ID  (0x00000103)

-#define TSS_TCSCAP_PLATFORM_VERSION      (0x00001100)

-#define TSS_TCSCAP_PLATFORM_TYPE         (0x00001101)

-#define TSS_TCSCAP_TRANS_EXCLUSIVE       (0x00002100)

-#define TSS_TCSCAP_PROP_HOST_PLATFORM    (0x00003001)

-#define TSS_TCSCAP_PROP_ALL_PLATFORMS    (0x00003002)

-

-//

-// TSS Service Provider Capabilities      

-//

-#define TSS_TSPCAP_ALG                   (0x00000010)

-#define TSS_TSPCAP_VERSION               (0x00000011)

-#define TSS_TSPCAP_PERSSTORAGE           (0x00000012)

-#define TSS_TSPCAP_MANUFACTURER          (0x00000013)

-#define TSS_TSPCAP_RETURNVALUE_INFO      (0x00000015)

-

-// Sub-Capability Flags for TSS_TSPCAP_MANUFACTURER

-//

-#define TSS_TSPCAP_PROP_MANUFACTURER_STR (0x00000102)

-#define TSS_TSPCAP_PROP_MANUFACTURER_ID  (0x00000103)

-

-

-// Sub-Capability Flags for TSS_TSPCAP_RETURNVALUE_INFO

-//

-#define TSS_TSPCAP_PROP_RETURNVALUE_INFO (0x00000201)

-

-//

-// Event type definitions

-//

-#define TSS_EV_CODE_CERT                 (0x00000001)

-#define TSS_EV_CODE_NOCERT               (0x00000002)

-#define TSS_EV_XML_CONFIG                (0x00000003)

-#define TSS_EV_NO_ACTION                 (0x00000004)

-#define TSS_EV_SEPARATOR                 (0x00000005)

-#define TSS_EV_ACTION                    (0x00000006)

-#define TSS_EV_PLATFORM_SPECIFIC         (0x00000007)

-

-

-//

-// TSP random number limits

-//

-#define TSS_TSPCAP_RANDOMLIMIT     (0x00001000)   // Errata: Missing from spec

-

-//

-// UUIDs

-//

-// Errata: This are not in the spec

-#define TSS_UUID_SRK  {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 1}} // Storage root key

-#define TSS_UUID_SK   {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 2}} // System key

-#define TSS_UUID_RK   {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 3}} // roaming key

-#define TSS_UUID_CRK  {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 8}} // CMK roaming key

-#define TSS_UUID_USK1 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 4}} // user storage key 1

-#define TSS_UUID_USK2 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 5}} // user storage key 2

-#define TSS_UUID_USK3 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 6}} // user storage key 3

-#define TSS_UUID_USK4 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 7}} // user storage key 4

-#define TSS_UUID_USK5 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 9}} // user storage key 5

-#define TSS_UUID_USK6 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 10}}// user storage key 6

-

-// macro to derive UUIDs for keys whose "OwnerEvict" key is set.

-#define TSS_UUID_OWNEREVICT(i) {0, 0, 0, 0, 0, {0, 0, 0, 0, 1, (i)}}

-

-

-//

-// TPM well-known secret

-//

-#define TSS_WELL_KNOWN_SECRET \

-        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \

-         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}

-

-

-// Values for the "direction" parameters in the Tspi_PcrComposite_XX functions.

-#define TSS_PCRS_DIRECTION_CREATION                        ((UINT32)1)

-#define TSS_PCRS_DIRECTION_RELEASE                         ((UINT32)2)

-

-

-//

-// TSS blob version definition for ASN.1 blobs

-//

-#define TSS_BLOB_STRUCT_VERSION                              0x01

-

-//

-// TSS blob type definitions for ASN.1 blobs

-//

-#define TSS_BLOB_TYPE_KEY                                    0x01

-#define TSS_BLOB_TYPE_PUBKEY                                 0x02

-#define TSS_BLOB_TYPE_MIGKEY                                 0x03

-#define TSS_BLOB_TYPE_SEALEDDATA                             0x04

-#define TSS_BLOB_TYPE_BOUNDDATA                              0x05

-#define TSS_BLOB_TYPE_MIGTICKET                              0x06

-#define TSS_BLOB_TYPE_PRIVATEKEY                             0x07

-#define TSS_BLOB_TYPE_PRIVATEKEY_MOD1                        0x08

-#define TSS_BLOB_TYPE_RANDOM_XOR                             0x09

-#define TSS_BLOB_TYPE_CERTIFY_INFO                           0x0A

-#define TSS_BLOB_TYPE_KEY_1_2                                0x0B

-#define TSS_BLOB_TYPE_CERTIFY_INFO_2                         0x0C

-#define TSS_BLOB_TYPE_CMK_MIG_KEY                            0x0D

-#define TSS_BLOB_TYPE_CMK_BYTE_STREAM                        0x0E

-

-

-

-//

-// Values for TPM_CMK_DELEGATE bitmasks

-// For now these are exactly the same values as the corresponding

-// TPM_CMK_DELEGATE_* bitmasks.

-//

-#define TSS_CMK_DELEGATE_SIGNING       (((UINT32)1)<<31)

-#define TSS_CMK_DELEGATE_STORAGE       (((UINT32)1)<<30)

-#define TSS_CMK_DELEGATE_BIND          (((UINT32)1)<<29)

-#define TSS_CMK_DELEGATE_LEGACY        (((UINT32)1)<<28)

-#define TSS_CMK_DELEGATE_MIGRATE       (((UINT32)1)<<27)

-

-

-//

-// Constants for DAA

-//

-#define TSS_DAA_LENGTH_N                256             // Length of the RSA Modulus (2048 bits)

-#define TSS_DAA_LENGTH_F                13              // Length of the f_i's (information encoded into the certificate, 104 bits)

-#define TSS_DAA_LENGTH_E                46              // Length of the e's (exponents, part of certificate, 386 bits)

-#define TSS_DAA_LENGTH_E_PRIME          15              // Length of the interval the e's are chosen from (120 bits)

-#define TSS_DAA_LENGTH_V                317             // Length of the v's (random value, part of certificate, 2536 bits)

-#define TSS_DAA_LENGTH_SAFETY           10              // Length of the security parameter controlling the statistical zero-knowledge property (80 bits)

-#define TSS_DAA_LENGTH_HASH     TPM_SHA1_160_HASH_LEN   // Length of the output of the hash function SHA-1 used for the Fiat-Shamir heuristic(160 bits)

-#define TSS_DAA_LENGTH_S                128             // Length of the split large exponent for easier computations on the TPM (1024 bits)

-#define TSS_DAA_LENGTH_GAMMA            204             // Length of the modulus 'Gamma' (1632 bits)

-#define TSS_DAA_LENGTH_RHO              26              // Length of the order 'rho' of the sub group of Z*_Gamma that is used for roggue tagging (208 bits)

-#define TSS_DAA_LENGTH_MFG1_GAMMA       214             // Length of the output of MGF1 in conjunction with the modulus Gamma (1712 bits)

-#define TSS_DAA_LENGTH_MGF1_AR          25              // Length of the output of MGF1 used for anonymity revocation (200 bits)

-

-

-#endif // __TSS_DEFINES_H__

+/*++
+ 
+Global defines for TSS.
+
+--*/
+
+#ifndef __TSS_DEFINES_H__
+#define __TSS_DEFINES_H__
+
+#include <tss/platform.h>
+#include <tss/tpm.h>
+
+
+//////////////////////////////////////////////////////////////////////////
+// Object types:
+//////////////////////////////////////////////////////////////////////////
+
+//
+// definition of the object types that can be created via CreateObject
+//
+#define   TSS_OBJECT_TYPE_POLICY    (0x01)      // Policy object
+#define   TSS_OBJECT_TYPE_RSAKEY    (0x02)      // RSA-Key object
+#define   TSS_OBJECT_TYPE_ENCDATA   (0x03)      // Encrypted data object
+#define   TSS_OBJECT_TYPE_PCRS      (0x04)      // PCR composite object
+#define   TSS_OBJECT_TYPE_HASH      (0x05)      // Hash object
+#define   TSS_OBJECT_TYPE_DELFAMILY (0x06)      // Delegation Family object
+#define   TSS_OBJECT_TYPE_NV        (0x07)      // NV object
+#define   TSS_OBJECT_TYPE_MIGDATA   (0x08)      // CMK Migration data object
+#define   TSS_OBJECT_TYPE_DAA_CERTIFICATE (0x09) // DAA credential
+#define   TSS_OBJECT_TYPE_DAA_ISSUER_KEY  (0x0a) // DAA cred. issuer keypair
+#define   TSS_OBJECT_TYPE_DAA_ARA_KEY     (0x0b) // DAA anonymity revocation
+                                                 // authority keypair
+
+
+//////////////////////////////////////////////////////////////////////////
+// CreateObject: Flags
+//////////////////////////////////////////////////////////////////////////
+
+
+//************************************
+// Flags for creating RSAKEY object: *
+//************************************
+
+//
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//                                                              |x x|Auth
+//                                                            |x|    Volatility
+//                                                          |x|      Migration
+//                                                  |x x x x|        Type
+//                                          |x x x x|                Size
+//                                      |x x|                        CMK
+//                                |x x x|                            Version
+//              |0 0 0 0 0 0 0 0 0|                                  Reserved
+//  |x x x x x x|                                                    Fixed Type
+//
+
+//  Authorization:
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   Never                                                      |0 0|
+//   Always                                                     |0 1|
+//   Private key always                                         |1 0|
+//
+#define   TSS_KEY_NO_AUTHORIZATION            (0x00000000) // no auth needed
+                                                           // for this key
+#define   TSS_KEY_AUTHORIZATION               (0x00000001) // key needs auth
+                                                           // for all ops
+#define   TSS_KEY_AUTHORIZATION_PRIV_USE_ONLY (0x00000002) // key needs auth
+                                                           // for privkey ops,
+                                                           // noauth for pubkey
+
+//
+//  Volatility
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   Non Volatile                                             |0|
+//   Volatile                                                 |1|
+//
+#define    TSS_KEY_NON_VOLATILE      (0x00000000)   // Key is non-volatile
+#define    TSS_KEY_VOLATILE          (0x00000004)   // Key is volatile
+
+//
+//  Migration
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   Non Migratable                                         |0|
+//   Migratable                                             |1|
+//
+#define   TSS_KEY_NOT_MIGRATABLE     (0x00000000)   // key is not migratable
+#define   TSS_KEY_MIGRATABLE         (0x00000008)   // key is migratable
+
+//
+//  Usage
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   Default (Legacy)                               |0 0 0 0|
+//   Signing                                        |0 0 0 1|
+//   Storage                                        |0 0 1 0|
+//   Identity                                       |0 0 1 1|
+//   AuthChange                                     |0 1 0 0|
+//   Bind                                           |0 1 0 1|
+//   Legacy                                         |0 1 1 0|
+//
+#define   TSS_KEY_TYPE_DEFAULT    (0x00000000)   // indicate a default key
+                                                 // (Legacy-Key)
+#define   TSS_KEY_TYPE_SIGNING    (0x00000010)   // indicate a signing key
+#define   TSS_KEY_TYPE_STORAGE    (0x00000020)   // used as storage key
+#define   TSS_KEY_TYPE_IDENTITY   (0x00000030)   // indicate an idendity key
+#define   TSS_KEY_TYPE_AUTHCHANGE (0x00000040)   // indicate an ephemeral key
+#define   TSS_KEY_TYPE_BIND       (0x00000050)   // indicate a key for TPM_Bind
+#define   TSS_KEY_TYPE_LEGACY     (0x00000060)   // indicate a key that can
+                                                 // perform signing and binding
+#define   TSS_KEY_TYPE_MIGRATE    (0x00000070)   // indicate a key that can
+                                                 // act as a CMK MA
+#define   TSS_KEY_TYPE_BITMASK    (0x000000F0)   // mask to extract key type
+
+//
+//  Key size
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+// DEFAULT                                  |0 0 0 0|
+//   512                                    |0 0 0 1|
+//  1024                                    |0 0 1 0|
+//  2048                                    |0 0 1 1|
+//  4096                                    |0 1 0 0|
+//  8192                                    |0 1 0 1|
+// 16384                                    |0 1 1 0|
+//
+#define TSS_KEY_SIZE_DEFAULT (UINT32)(0x00000000) // indicate tpm-specific size
+#define TSS_KEY_SIZE_512     (UINT32)(0x00000100) // indicate a 512-bit key
+#define TSS_KEY_SIZE_1024    (UINT32)(0x00000200) // indicate a 1024-bit key
+#define TSS_KEY_SIZE_2048    (UINT32)(0x00000300) // indicate a 2048-bit key
+#define TSS_KEY_SIZE_4096    (UINT32)(0x00000400) // indicate a 4096-bit key
+#define TSS_KEY_SIZE_8192    (UINT32)(0x00000500) // indicate a 8192-bit key
+#define TSS_KEY_SIZE_16384   (UINT32)(0x00000600) // indicate a 16384-bit key
+#define TSS_KEY_SIZE_BITMASK (UINT32)(0x00000F00) // mask to extract key size
+
+//
+//  Certified Migratability
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+// DEFAULT                              |0 0|
+// Not Certified Migratable             |0 0|
+// Certified Migratable                 |0 1|
+//
+#define TSS_KEY_NOT_CERTIFIED_MIGRATABLE (UINT32)(0x00000000)
+#define TSS_KEY_CERTIFIED_MIGRATABLE     (UINT32)(0x00001000)
+
+//
+//  Specification version
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+// Context default                |0 0 0|
+// TPM_KEY 1.1b key               |0 0 1|
+// TPM_KEY12 1.2 key              |0 1 0|
+//
+#define TSS_KEY_STRUCT_DEFAULT            (UINT32)(0x00000000)
+#define TSS_KEY_STRUCT_KEY                (UINT32)(0x00004000)
+#define TSS_KEY_STRUCT_KEY12              (UINT32)(0x00008000)
+#define TSS_KEY_STRUCT_BITMASK            (UINT32)(0x0001C000)
+
+
+//
+//  fixed KeyTypes (templates)
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//  |0 0 0 0 0 0|                             Empty Key
+//  |0 0 0 0 0 1|                             Storage Root Key
+//
+#define   TSS_KEY_EMPTY_KEY (0x00000000) // no TPM key template
+                                         // (empty TSP key object)
+#define   TSS_KEY_TSP_SRK   (0x04000000) // use a TPM SRK template
+                                         // (TSP key object for SRK)
+#define   TSS_KEY_TEMPLATE_BITMASK (0xFC000000) // bitmask to extract key
+                                                // template
+
+
+//*************************************
+// Flags for creating ENCDATA object: *
+//*************************************
+
+//
+//  Type
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   Seal                                                     |0 0 1|
+//   Bind                                                     |0 1 0|
+//   Legacy                                                   |0 1 1|
+//
+//   ENCDATA Reserved:
+//  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|
+//
+#define   TSS_ENCDATA_SEAL     (0x00000001)   // data for seal operation
+#define   TSS_ENCDATA_BIND     (0x00000002)   // data for bind operation
+#define   TSS_ENCDATA_LEGACY   (0x00000003)   // data for legacy bind operation
+
+
+//**********************************
+// Flags for creating HASH object: *
+//**********************************
+
+//
+//  Algorithm
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   DEFAULT               
+//  |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|
+//   SHA1
+//  |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1|
+//   OTHER
+//  |1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|
+//
+#define   TSS_HASH_DEFAULT    (0x00000000)   // Default hash algorithm
+#define   TSS_HASH_SHA1       (0x00000001)   // SHA-1 with 20 bytes
+#define   TSS_HASH_OTHER      (0xFFFFFFFF)   // Not-specified hash algorithm
+
+
+//************************************
+// Flags for creating POLICY object: *
+//************************************
+
+//
+//  Type
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//
+//   Usage                                                    |0 0 1|
+//   Migration                                                |0 1 0|
+//   Operator                                                 |0 1 1|
+//
+//   POLICY Reserved:
+//  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|
+
+#define   TSS_POLICY_USAGE         (0x00000001)   // usage policy object
+#define   TSS_POLICY_MIGRATION     (0x00000002)   // migration policy object
+#define   TSS_POLICY_OPERATOR      (0x00000003)   // migration policy object
+
+
+//******************************************
+// Flags for creating PCRComposite object: *
+//******************************************
+
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+//                                                              |x x| Struct
+//  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|     Reserved
+//
+
+//  PCRComposite Version:
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//   ---------------------------------------------------------------
+// TPM_PCR_DEFAULT                                            |0 0 0|
+// TPM_PCR_INFO                                               |0 0 1|
+// TPM_PCR_INFO_LONG                                          |0 1 0|
+// TPM_PCR_INFO_SHORT                                         |0 1 1|
+//
+
+#define   TSS_PCRS_STRUCT_DEFAULT    (0x00000000) // depends on context
+#define   TSS_PCRS_STRUCT_INFO       (0x00000001) // TPM_PCR_INFO
+#define   TSS_PCRS_STRUCT_INFO_LONG  (0x00000002) // TPM_PCR_INFO_LONG
+#define   TSS_PCRS_STRUCT_INFO_SHORT (0x00000003) // TPM_PCR_INFO_SHORT
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// Attribute Flags, Subflags, and Values
+//////////////////////////////////////////////////////////////////////////
+
+
+//******************
+// Context object: *
+//******************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_CONTEXT_SILENT_MODE        (0x00000001)
+                                                    // dialog display control
+#define TSS_TSPATTRIB_CONTEXT_MACHINE_NAME       (0x00000002)
+                                                    // remote machine name
+#define TSS_TSPATTRIB_CONTEXT_VERSION_MODE       (0x00000003)
+                                                    // context version
+#define TSS_TSPATTRIB_CONTEXT_TRANSPORT          (0x00000004)
+                                                    // transport control
+#define TSS_TSPATTRIB_CONTEXT_CONNECTION_VERSION (0x00000005)
+                                                    // connection version
+#define TSS_TSPATTRIB_SECRET_HASH_MODE           (0x00000006)
+                                                    // flag indicating whether
+                                                    // NUL is included in the
+                                                    // hash of the password
+//
+// SubFlags for Flag TSS_TSPATTRIB_CONTEXT_TRANSPORT
+//
+#define   TSS_TSPATTRIB_CONTEXTTRANS_CONTROL   (0x00000008)
+#define   TSS_TSPATTRIB_CONTEXTTRANS_MODE      (0x00000010)
+
+//
+// Values for the TSS_TSPATTRIB_CONTEXT_SILENT_MODE attribute
+//
+#define   TSS_TSPATTRIB_CONTEXT_NOT_SILENT (0x00000000) // TSP dialogs enabled
+#define   TSS_TSPATTRIB_CONTEXT_SILENT     (0x00000001) // TSP dialogs disabled
+
+//
+// Values for the TSS_TSPATTRIB_CONTEXT_VERSION_MODE attribute
+//
+#define   TSS_TSPATTRIB_CONTEXT_VERSION_AUTO (0x00000001)
+#define   TSS_TSPATTRIB_CONTEXT_VERSION_V1_1 (0x00000002)
+#define   TSS_TSPATTRIB_CONTEXT_VERSION_V1_2 (0x00000003)
+
+//
+// Values for the subflag TSS_TSPATTRIB_CONTEXT_TRANS_CONTROL
+//
+#define   TSS_TSPATTRIB_DISABLE_TRANSPORT      (0x00000000)
+#define   TSS_TSPATTRIB_ENABLE_TRANSPORT       (0x00000001)
+
+//
+// Values for the subflag TSS_TSPATTRIB_CONTEXT_TRANS_MODE
+//
+#define   TSS_TSPATTRIB_TRANSPORT_NO_DEFAULT_ENCRYPTION (0x00000000)
+#define   TSS_TSPATTRIB_TRANSPORT_DEFAULT_ENCRYPTION    (0x00000001)
+#define   TSS_TSPATTRIB_TRANSPORT_AUTHENTIC_CHANNEL     (0x00000002)
+#define   TSS_TSPATTRIB_TRANSPORT_EXCLUSIVE             (0x00000004)
+#define   TSS_TSPATTRIB_TRANSPORT_STATIC_AUTH           (0x00000008)
+
+//
+// Values for the TSS_TSPATTRIB_CONTEXT_CONNECTION_VERSION attribute
+//
+#define TSS_CONNECTION_VERSION_1_1                      (0x00000001)
+#define TSS_CONNECTION_VERSION_1_2                      (0x00000002)
+
+
+//
+// Subflags of TSS_TSPATTRIB_SECRET_HASH_MODE
+//
+#define TSS_TSPATTRIB_SECRET_HASH_MODE_POPUP     (0x00000001)
+
+//
+// Values for TSS_TSPATTRIB_SECRET_HASH_MODE_POPUP subflag
+//
+#define TSS_TSPATTRIB_HASH_MODE_NOT_NULL         (0x00000000)
+#define TSS_TSPATTRIB_HASH_MODE_NULL             (0x00000001)
+
+
+// *************
+// TPM object: *
+// *************
+
+//
+// Attributes:
+//
+#define TSS_TSPATTRIB_TPM_CALLBACK_COLLATEIDENTITY  0x00000001
+#define TSS_TSPATTRIB_TPM_CALLBACK_ACTIVATEIDENTITY 0x00000002
+#define TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS      0x00000003
+#define TSS_TSPATTRIB_TPM_CREDENTIAL                0x00001000
+
+//
+// Subflags for TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS
+//
+#define TPM_CAP_PROP_TPM_CLEAR_ORDINAL_AUDIT        0x00000000
+#define TPM_CAP_PROP_TPM_SET_ORDINAL_AUDIT          0x00000001
+
+//
+// Subflags for TSS_TSPATTRIB_TPM_CREDENTIAL
+//
+#define TSS_TPMATTRIB_EKCERT                        0x00000001
+#define TSS_TPMATTRIB_TPM_CC                        0x00000002
+#define TSS_TPMATTRIB_PLATFORMCERT                  0x00000003
+#define TSS_TPMATTRIB_PLATFORM_CC                   0x00000004
+
+
+//*****************
+// Policy object: *
+//*****************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_POLICY_CALLBACK_HMAC           (0x00000080)
+                                        // enable/disable callback function
+
+#define TSS_TSPATTRIB_POLICY_CALLBACK_XOR_ENC        (0x00000100)
+                                        // enable/disable callback function
+
+#define TSS_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP  (0x00000180)
+                                        // enable/disable callback function
+
+#define TSS_TSPATTRIB_POLICY_CALLBACK_CHANGEAUTHASYM (0x00000200)
+                                        // enable/disable callback function
+
+#define TSS_TSPATTRIB_POLICY_SECRET_LIFETIME         (0x00000280)
+                                        // set lifetime mode for policy secret
+
+#define TSS_TSPATTRIB_POLICY_POPUPSTRING             (0x00000300)
+                                        // set a NULL terminated UNICODE string
+                                        // which is displayed in the TSP policy
+                                        // popup dialog
+#define TSS_TSPATTRIB_POLICY_CALLBACK_SEALX_MASK     (0x00000380)
+                                        // enable/disable callback function
+#if 0
+/* This attribute flag is defined earlier with the context attributes.
+ * It is valid for both context and policy objects. It is copied
+ * here as a reminder to avoid collisions.
+ */
+#define TSS_TSPATTRIB_SECRET_HASH_MODE               (0x00000006)
+                                                    // flag indicating whether
+                                                    // NUL is included in the
+                                                    // hash of the password
+#endif
+
+
+#define TSS_TSPATTRIB_POLICY_DELEGATION_INFO         (0x00000001)
+#define TSS_TSPATTRIB_POLICY_DELEGATION_PCR          (0x00000002)
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_POLICY_SECRET_LIFETIME
+//
+#define TSS_SECRET_LIFETIME_ALWAYS  (0x00000001) // secret will not be
+                                                 // invalidated
+#define TSS_SECRET_LIFETIME_COUNTER (0x00000002) // secret lifetime
+                                                 // controlled by counter
+#define TSS_SECRET_LIFETIME_TIMER   (0x00000003) // secret lifetime
+                                                 // controlled by time
+#define TSS_TSPATTRIB_POLSECRET_LIFETIME_ALWAYS  TSS_SECRET_LIFETIME_ALWAYS
+#define TSS_TSPATTRIB_POLSECRET_LIFETIME_COUNTER TSS_SECRET_LIFETIME_COUNTER
+#define TSS_TSPATTRIB_POLSECRET_LIFETIME_TIMER   TSS_SECRET_LIFETIME_TIMER
+
+// Alternate names misspelled in the 1.1 TSS spec.
+#define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_ALWAYS  TSS_SECRET_LIFETIME_ALWAYS
+#define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_COUNTER TSS_SECRET_LIFETIME_COUNTER
+#define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_TIMER   TSS_SECRET_LIFETIME_TIMER
+
+//
+// Subflags of TSS_TSPATTRIB_POLICY_DELEGATION_INFO
+//
+#define TSS_TSPATTRIB_POLDEL_TYPE                (0x00000001)
+#define TSS_TSPATTRIB_POLDEL_INDEX               (0x00000002)
+#define TSS_TSPATTRIB_POLDEL_PER1                (0x00000003)
+#define TSS_TSPATTRIB_POLDEL_PER2                (0x00000004)
+#define TSS_TSPATTRIB_POLDEL_LABEL               (0x00000005)
+#define TSS_TSPATTRIB_POLDEL_FAMILYID            (0x00000006)
+#define TSS_TSPATTRIB_POLDEL_VERCOUNT            (0x00000007)
+#define TSS_TSPATTRIB_POLDEL_OWNERBLOB           (0x00000008)
+#define TSS_TSPATTRIB_POLDEL_KEYBLOB             (0x00000009)
+
+//
+// Subflags of TSS_TSPATTRIB_POLICY_DELEGATION_PCR
+//
+#define TSS_TSPATTRIB_POLDELPCR_LOCALITY         (0x00000001)
+#define TSS_TSPATTRIB_POLDELPCR_DIGESTATRELEASE  (0x00000002)
+#define TSS_TSPATTRIB_POLDELPCR_SELECTION        (0x00000003)
+
+//
+// Values for the Policy TSS_TSPATTRIB_POLDEL_TYPE attribute
+//
+#define TSS_DELEGATIONTYPE_NONE                  (0x00000001)
+#define TSS_DELEGATIONTYPE_OWNER                 (0x00000002)
+#define TSS_DELEGATIONTYPE_KEY                   (0x00000003)
+
+
+
+//
+//  Flags used for the 'mode' parameter in Tspi_Policy_SetSecret()
+//
+#define TSS_SECRET_MODE_NONE     (0x00000800) // No authorization will be
+                                              // processed
+#define TSS_SECRET_MODE_SHA1     (0x00001000) // Secret string will not be
+                                              // touched by TSP 
+#define TSS_SECRET_MODE_PLAIN    (0x00001800) // Secret string will be hashed
+                                              // using SHA1
+#define TSS_SECRET_MODE_POPUP    (0x00002000) // TSS SP will ask for a secret
+#define TSS_SECRET_MODE_CALLBACK (0x00002800) // Application has to provide a
+                                              // call back function
+
+
+
+//******************
+// EncData object: *
+//******************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_ENCDATA_BLOB     (0x00000008)
+#define TSS_TSPATTRIB_ENCDATA_PCR      (0x00000010)
+#define TSS_TSPATTRIB_ENCDATA_PCR_LONG (0x00000018)
+#define TSS_TSPATTRIB_ENCDATA_SEAL     (0x00000020)
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_ENCDATA_BLOB
+//
+#define TSS_TSPATTRIB_ENCDATABLOB_BLOB   (0x00000001)   // encrypted data blob
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_ENCDATA_PCR
+//
+#define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATCREATION       (0x00000002)
+#define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATRELEASE        (0x00000003)
+#define TSS_TSPATTRIB_ENCDATAPCR_SELECTION               (0x00000004)
+// support typo from 1.1 headers
+#define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_RELEASE \
+                          TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATRELEASE
+
+#define TSS_TSPATTRIB_ENCDATAPCRLONG_LOCALITY_ATCREATION (0x00000005)
+#define TSS_TSPATTRIB_ENCDATAPCRLONG_LOCALITY_ATRELEASE  (0x00000006)
+#define TSS_TSPATTRIB_ENCDATAPCRLONG_CREATION_SELECTION  (0x00000007)
+#define TSS_TSPATTRIB_ENCDATAPCRLONG_RELEASE_SELECTION   (0x00000008)
+#define TSS_TSPATTRIB_ENCDATAPCRLONG_DIGEST_ATCREATION   (0x00000009)
+#define TSS_TSPATTRIB_ENCDATAPCRLONG_DIGEST_ATRELEASE    (0x0000000A)
+
+
+//
+// Attribute subflags TSS_TSPATTRIB_ENCDATA_SEAL
+//
+#define TSS_TSPATTRIB_ENCDATASEAL_PROTECT_MODE           (0x00000001)
+
+//
+// Attribute values for 
+//    TSS_TSPATTRIB_ENCDATA_SEAL/TSS_TSPATTRIB_ENCDATASEAL_PROTECT_MODE
+//
+#define  TSS_TSPATTRIB_ENCDATASEAL_NO_PROTECT            (0x00000000)
+#define  TSS_TSPATTRIB_ENCDATASEAL_PROTECT               (0x00000001)
+
+
+//*************
+// NV object: *
+//*************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_NV_INDEX                     (0x00000001)
+#define TSS_TSPATTRIB_NV_PERMISSIONS               (0x00000002)
+#define TSS_TSPATTRIB_NV_STATE                     (0x00000003)
+#define TSS_TSPATTRIB_NV_DATASIZE                  (0x00000004)
+#define TSS_TSPATTRIB_NV_PCR                       (0x00000005)
+
+#define TSS_TSPATTRIB_NVSTATE_READSTCLEAR          (0x00100000)
+#define TSS_TSPATTRIB_NVSTATE_WRITESTCLEAR         (0x00200000)
+#define TSS_TSPATTRIB_NVSTATE_WRITEDEFINE          (0x00300000)
+
+#define TSS_TSPATTRIB_NVPCR_READPCRSELECTION       (0x01000000)
+#define TSS_TSPATTRIB_NVPCR_READDIGESTATRELEASE    (0x02000000)
+#define TSS_TSPATTRIB_NVPCR_READLOCALITYATRELEASE  (0x03000000)
+#define TSS_TSPATTRIB_NVPCR_WRITEPCRSELECTION      (0x04000000)
+#define TSS_TSPATTRIB_NVPCR_WRITEDIGESTATRELEASE   (0x05000000)
+#define TSS_TSPATTRIB_NVPCR_WRITELOCALITYATRELEASE (0x06000000)
+
+/* NV index flags
+ *
+ * From the TPM spec, Part 2, Section 19.1.
+ *
+ *        3                   2                   1
+ *      1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+ *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *     |T|P|U|D| resvd |   Purview     |          Index                |
+ *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
+#define TSS_NV_TPM                (0x80000000) // TPM mfr reserved bit
+#define TSS_NV_PLATFORM           (0x40000000) // Platform mfr reserved bit
+#define TSS_NV_USER               (0x20000000) // User reserved bit
+#define TSS_NV_DEFINED            (0x10000000) // "Defined permanently" flag
+#define TSS_NV_MASK_TPM           (0x80000000) // mask to extract 'T'
+#define TSS_NV_MASK_PLATFORM      (0x40000000) // mask to extract 'P'
+#define TSS_NV_MASK_USER          (0x20000000) // mask to extract 'U'
+#define TSS_NV_MASK_DEFINED       (0x10000000) // mask to extract 'D'
+#define TSS_NV_MASK_RESERVED      (0x0f000000) // mask to extract reserved bits
+#define TSS_NV_MASK_PURVIEW       (0x00ff0000) // mask to extract purview byte
+#define TSS_NV_MASK_INDEX         (0x0000ffff) // mask to extract index byte
+
+// This is the index of the NV storage area where the number of sessions
+// per locality is stored.
+#define TSS_NV_INDEX_SESSIONS     (0x00011101)
+
+
+//******************
+// MigData object: *
+//******************
+
+//
+// Attributes
+//
+#define TSS_MIGATTRIB_MIGRATIONBLOB                    (0x00000010)
+#define TSS_MIGATTRIB_MIGRATIONTICKET                  (0x00000020)
+#define TSS_MIGATTRIB_AUTHORITY_DATA                   (0x00000030)
+#define TSS_MIGATTRIB_MIG_AUTH_DATA                    (0x00000040)
+#define TSS_MIGATTRIB_TICKET_DATA                      (0x00000050)
+#define TSS_MIGATTRIB_PAYLOAD_TYPE                     (0x00000060)
+
+//
+// Attribute subflags TSS_MIGATTRIB_MIGRATIONBLOB
+//
+#define TSS_MIGATTRIB_MIGRATION_XOR_BLOB               (0x00000101)
+#define TSS_MIGATTRIB_MIGRATION_REWRAPPED_BLOB         (0x00000102)
+#define TSS_MIGATTRIB_MIG_MSALIST_PUBKEY_BLOB          (0x00000103)
+#define TSS_MIGATTRIB_MIG_AUTHORITY_PUBKEY_BLOB        (0x00000104)
+#define TSS_MIGATTRIB_MIG_DESTINATION_PUBKEY_BLOB      (0x00000105)
+#define TSS_MIGATTRIB_MIG_SOURCE_PUBKEY_BLOB           (0x00000106)
+#define TSS_MIGATTRIB_MIG_REWRAPPED_BLOB               TSS_MIGATTRIB_MIGRATION_REWRAPPED_BLOB
+#define TSS_MIGATTRIB_MIG_XOR_BLOB                     TSS_MIGATTRIB_MIGRATION_XOR_BLOB
+
+//
+// Attribute subflags TSS_MIGATTRIB_MIGRATIONTICKET
+//
+// none
+
+//
+// Attribute subflags TSS_MIGATTRIB_AUTHORITY_DATA
+//
+#define TSS_MIGATTRIB_AUTHORITY_DIGEST                 (0x00000301)
+#define TSS_MIGATTRIB_AUTHORITY_APPROVAL_HMAC          (0x00000302)
+#define TSS_MIGATTRIB_AUTHORITY_MSALIST                (0x00000303)
+
+//
+// Attribute subflags TSS_MIGATTRIB_MIG_AUTH_DATA
+//
+#define TSS_MIGATTRIB_MIG_AUTH_AUTHORITY_DIGEST        (0x00000401)
+#define TSS_MIGATTRIB_MIG_AUTH_DESTINATION_DIGEST      (0x00000402)
+#define TSS_MIGATTRIB_MIG_AUTH_SOURCE_DIGEST           (0x00000403)
+
+//
+// Attribute subflags TSS_MIGATTRIB_TICKET_DATA
+//
+#define TSS_MIGATTRIB_TICKET_SIG_DIGEST                (0x00000501)
+#define TSS_MIGATTRIB_TICKET_SIG_VALUE                 (0x00000502)
+#define TSS_MIGATTRIB_TICKET_SIG_TICKET                (0x00000503)
+#define TSS_MIGATTRIB_TICKET_RESTRICT_TICKET           (0x00000504)
+
+//
+// Attribute subflags TSS_MIGATTRIB_PAYLOAD_TYPE
+//
+#define TSS_MIGATTRIB_PT_MIGRATE_RESTRICTED            (0x00000601)
+#define TSS_MIGATTRIB_PT_MIGRATE_EXTERNAL              (0x00000602)
+
+
+
+
+//***************
+// Hash object: *
+//***************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_HASH_IDENTIFIER (0x00001000) // Hash algorithm identifier
+#define TSS_TSPATTRIB_ALG_IDENTIFIER  (0x00002000) // ASN.1 alg identifier
+
+
+
+//***************
+// PCRs object: *
+//***************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_PCRS_INFO  (0x00000001) // info 
+
+//
+// Subflags for TSS_TSPATTRIB_PCRS_INFO flag
+//
+#define TSS_TSPATTRIB_PCRSINFO_PCRSTRUCT (0x00000001) // type of pcr struct
+                                                      // TSS_PCRS_STRUCT_TYPE_XX
+
+//****************************
+// Delegation Family object: *
+//****************************
+
+//
+// Attributes
+//
+#define TSS_TSPATTRIB_DELFAMILY_STATE            (0x00000001)
+#define TSS_TSPATTRIB_DELFAMILY_INFO             (0x00000002)
+
+// DELFAMILY_STATE sub-attributes
+#define TSS_TSPATTRIB_DELFAMILYSTATE_LOCKED      (0x00000001)
+#define TSS_TSPATTRIB_DELFAMILYSTATE_ENABLED     (0x00000002)
+
+// DELFAMILY_INFO sub-attributes
+#define TSS_TSPATTRIB_DELFAMILYINFO_LABEL        (0x00000003)
+#define TSS_TSPATTRIB_DELFAMILYINFO_VERCOUNT     (0x00000004)
+#define TSS_TSPATTRIB_DELFAMILYINFO_FAMILYID     (0x00000005)
+
+// Bitmasks for the 'ulFlags' argument to Tspi_TPM_Delegate_CreateDelegation.
+// Only one bit used for now.
+#define TSS_DELEGATE_INCREMENTVERIFICATIONCOUNT               ((UINT32)1)
+
+// Bitmasks for the 'ulFlags' argument to
+// Tspi_TPM_Delegate_CacheOwnerDelegation. Only 1 bit is used for now.
+#define TSS_DELEGATE_CACHEOWNERDELEGATION_OVERWRITEEXISTING   ((UINT32)1)
+
+
+
+//*************************
+// DAA Credential Object: *
+//*************************
+
+//
+// Attribute flags
+//
+#define TSS_TSPATTRIB_DAACRED_COMMIT                   (0x00000001)
+#define TSS_TSPATTRIB_DAACRED_ATTRIB_GAMMAS            (0x00000002)
+#define TSS_TSPATTRIB_DAACRED_CREDENTIAL_BLOB          (0x00000003)
+#define TSS_TSPATTRIB_DAACRED_CALLBACK_SIGN            (0x00000004)
+#define TSS_TSPATTRIB_DAACRED_CALLBACK_VERIFYSIGNATURE (0x00000005)
+
+//
+// Subflags for TSS_TSPATTRIB_DAACRED_COMMIT
+// 
+#define TSS_TSPATTRIB_DAACOMMIT_NUMBER              (0x00000001)
+#define TSS_TSPATTRIB_DAACOMMIT_SELECTION           (0x00000002)
+#define TSS_TSPATTRIB_DAACOMMIT_COMMITMENTS         (0x00000003)
+
+//
+// Subflags for TSS_TSPATTRIB_DAACRED_ATTRIB_GAMMAS
+// 
+#define TSS_TSPATTRIB_DAAATTRIBGAMMAS_BLOB          (0xffffffff)
+
+
+
+//*************************
+// DAA Issuer Key Object: *
+//*************************
+
+//
+// Attribute flags
+//
+#define TSS_TSPATTRIB_DAAISSUERKEY_BLOB              (0x00000001)
+#define TSS_TSPATTRIB_DAAISSUERKEY_PUBKEY            (0x00000002)
+
+//
+// Subflags for TSS_TSPATTRIB_DAAISSUERKEY_BLOB
+// 
+#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_PUBLIC_KEY     (0x00000001)
+#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_SECRET_KEY     (0x00000002)
+#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_KEYBLOB        (0x00000003)
+#define TSS_TSPATTRIB_DAAISSUERKEYBLOB_PROOF          (0x00000004)
+
+//
+// Subflags for TSS_TSPATTRIB_DAAISSUERKEY_PUBKEY
+// 
+#define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_ATTRIBS          (0x00000001)
+#define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_PLATFORM_ATTRIBS (0x00000002)
+#define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_ISSUER_ATTRIBS   (0x00000003)
+
+
+
+//***************************************
+// DAA Anonymity Revocation Key Object: *
+//***************************************
+
+//
+// Attribute flags
+//
+#define TSS_TSPATTRIB_DAAARAKEY_BLOB                 (0x00000001)
+
+//
+// Subflags for TSS_TSPATTRIB_DAAARAKEY_BLOB
+// 
+#define TSS_TSPATTRIB_DAAARAKEYBLOB_PUBLIC_KEY     (0x00000001)
+#define TSS_TSPATTRIB_DAAARAKEYBLOB_SECRET_KEY     (0x00000002)
+#define TSS_TSPATTRIB_DAAARAKEYBLOB_KEYBLOB        (0x00000003)
+
+
+
+//
+// Structure payload flags for TSS_DAA_PSEUDONYM,
+// (TSS_DAA_PSEUDONYM.payloadFlag)
+//
+#define TSS_FLAG_DAA_PSEUDONYM_PLAIN                 (0x00000000)
+#define TSS_FLAG_DAA_PSEUDONYM_ENCRYPTED             (0x00000001)
+
+
+//**************
+// Key Object: *
+//**************
+
+//
+// Attribute flags
+//
+#define TSS_TSPATTRIB_KEY_BLOB       (0x00000040) // key info as blob data
+#define TSS_TSPATTRIB_KEY_INFO       (0x00000080) // keyparam info as blob data
+#define TSS_TSPATTRIB_KEY_UUID       (0x000000C0) // key UUID info as blob data
+#define TSS_TSPATTRIB_KEY_PCR        (0x00000100) // composite digest value for
+                                                  // the key
+#define TSS_TSPATTRIB_RSAKEY_INFO    (0x00000140) // public key info
+#define TSS_TSPATTRIB_KEY_REGISTER   (0x00000180) // register location
+#define TSS_TSPATTRIB_KEY_PCR_LONG   (0x000001c0) // PCR_INFO_LONG for the key
+#define TSS_TSPATTRIB_KEY_CONTROLBIT (0x00000200) // key control flags
+#define TSS_TSPATTRIB_KEY_CMKINFO    (0x00000400) // CMK info
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_KEY_BLOB
+//
+#define TSS_TSPATTRIB_KEYBLOB_BLOB        (0x00000008) // key info using the
+                                                       // key blob
+#define TSS_TSPATTRIB_KEYBLOB_PUBLIC_KEY  (0x00000010) // public key info
+                                                       // using the blob
+#define TSS_TSPATTRIB_KEYBLOB_PRIVATE_KEY (0x00000028) // encrypted private key
+                                                       // blob
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_KEY_INFO
+//
+#define TSS_TSPATTRIB_KEYINFO_SIZE          (0x00000080) // key size in bits
+#define TSS_TSPATTRIB_KEYINFO_USAGE         (0x00000100) // key usage info
+#define TSS_TSPATTRIB_KEYINFO_KEYFLAGS      (0x00000180) // key flags   
+#define TSS_TSPATTRIB_KEYINFO_AUTHUSAGE     (0x00000200) // key auth usage info
+#define TSS_TSPATTRIB_KEYINFO_ALGORITHM     (0x00000280) // key algorithm ID
+#define TSS_TSPATTRIB_KEYINFO_SIGSCHEME     (0x00000300) // key sig scheme
+#define TSS_TSPATTRIB_KEYINFO_ENCSCHEME     (0x00000380) // key enc scheme   
+#define TSS_TSPATTRIB_KEYINFO_MIGRATABLE    (0x00000400) // if true then key is
+                                                         // migratable
+#define TSS_TSPATTRIB_KEYINFO_REDIRECTED    (0x00000480) // key is redirected
+#define TSS_TSPATTRIB_KEYINFO_VOLATILE      (0x00000500) // if true key is
+                                                         // volatile
+#define TSS_TSPATTRIB_KEYINFO_AUTHDATAUSAGE (0x00000580) // if true auth is
+                                                         // required
+#define TSS_TSPATTRIB_KEYINFO_VERSION       (0x00000600) // version info as TSS
+                                                         // version struct
+#define TSS_TSPATTRIB_KEYINFO_CMK           (0x00000680) // if true then key
+                                                         // is certified
+                                                         // migratable
+#define TSS_TSPATTRIB_KEYINFO_KEYSTRUCT     (0x00000700) // type of key struct
+                                                         // used for this key
+                                                         // (TPM_KEY or 
+                                                         // TPM_KEY12)
+//
+// SubFlags for Flag TSS_TSPATTRIB_RSAKEY_INFO
+//
+#define TSS_TSPATTRIB_KEYINFO_RSA_EXPONENT  (0x00001000)
+#define TSS_TSPATTRIB_KEYINFO_RSA_MODULUS   (0x00002000)
+#define TSS_TSPATTRIB_KEYINFO_RSA_KEYSIZE   (0x00003000)
+#define TSS_TSPATTRIB_KEYINFO_RSA_PRIMES    (0x00004000)
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_KEY_PCR
+//
+#define TSS_TSPATTRIB_KEYPCR_DIGEST_ATCREATION  (0x00008000)
+#define TSS_TSPATTRIB_KEYPCR_DIGEST_ATRELEASE   (0x00010000)
+#define TSS_TSPATTRIB_KEYPCR_SELECTION          (0x00018000)
+
+//
+// SubFlags for TSS_TSPATTRIB_KEY_REGISTER
+//
+#define TSS_TSPATTRIB_KEYREGISTER_USER    (0x02000000)
+#define TSS_TSPATTRIB_KEYREGISTER_SYSTEM  (0x04000000)
+#define TSS_TSPATTRIB_KEYREGISTER_NO      (0x06000000)
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_KEY_PCR_LONG
+//
+#define TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATCREATION (0x00040000) /* UINT32 */
+#define TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATRELEASE  (0x00080000) /* UINT32 */
+#define TSS_TSPATTRIB_KEYPCRLONG_CREATION_SELECTION  (0x000C0000) /* DATA */
+#define TSS_TSPATTRIB_KEYPCRLONG_RELEASE_SELECTION   (0x00100000) /* DATA */
+#define TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATCREATION   (0x00140000) /* DATA */
+#define TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATRELEASE    (0x00180000) /* DATA */
+
+//
+// SubFlags for Flag TSS_TSPATTRIB_KEY_CMKINFO
+//
+#define TSS_TSPATTRIB_KEYINFO_CMK_MA_APPROVAL  (0x00000010)
+#define TSS_TSPATTRIB_KEYINFO_CMK_MA_DIGEST    (0x00000020)
+
+
+//
+// Attribute Values
+//
+
+//
+// key size definitions
+//
+#define TSS_KEY_SIZEVAL_512BIT      (0x0200)
+#define TSS_KEY_SIZEVAL_1024BIT     (0x0400)
+#define TSS_KEY_SIZEVAL_2048BIT     (0x0800)
+#define TSS_KEY_SIZEVAL_4096BIT     (0x1000)
+#define TSS_KEY_SIZEVAL_8192BIT     (0x2000)
+#define TSS_KEY_SIZEVAL_16384BIT    (0x4000)
+
+//
+// key usage definitions
+// Values intentionally moved away from corresponding TPM values to avoid
+// possible misuse
+//
+#define TSS_KEYUSAGE_BIND           (0x00)   
+#define TSS_KEYUSAGE_IDENTITY       (0x01)   
+#define TSS_KEYUSAGE_LEGACY         (0x02)   
+#define TSS_KEYUSAGE_SIGN           (0x03)   
+#define TSS_KEYUSAGE_STORAGE        (0x04)
+#define TSS_KEYUSAGE_AUTHCHANGE     (0x05)
+#define TSS_KEYUSAGE_MIGRATE        (0x06)
+
+//
+// key flag definitions
+//
+#define TSS_KEYFLAG_REDIRECTION          (0x00000001)
+#define TSS_KEYFLAG_MIGRATABLE           (0x00000002)
+#define TSS_KEYFLAG_VOLATILEKEY          (0x00000004)
+#define TSS_KEYFLAG_CERTIFIED_MIGRATABLE (0x00000008)
+
+//
+//  algorithm ID definitions
+//
+//  This table defines the algo id's
+//  Values intentionally moved away from corresponding TPM values to avoid
+//  possible misuse
+//
+#define   TSS_ALG_RSA               (0x20)
+#define   TSS_ALG_DES               (0x21)
+#define   TSS_ALG_3DES              (0x22)
+#define   TSS_ALG_SHA               (0x23)
+#define   TSS_ALG_HMAC              (0x24)
+#define   TSS_ALG_AES128            (0x25)
+#define   TSS_ALG_AES192            (0x26)
+#define   TSS_ALG_AES256            (0x27)
+#define   TSS_ALG_XOR               (0x28)
+#define   TSS_ALG_MGF1              (0x29)
+
+#define   TSS_ALG_AES               TSS_ALG_AES128
+
+// Special values for 
+//   Tspi_Context_GetCapability(TSS_TSPCAP_ALG)
+//   Tspi_Context_GetCapability(TSS_TCSCAP_ALG)
+#define   TSS_ALG_DEFAULT           (0xfe)
+#define   TSS_ALG_DEFAULT_SIZE      (0xff)
+
+
+//
+// key signature scheme definitions
+//
+#define TSS_SS_NONE                 (0x10)
+#define TSS_SS_RSASSAPKCS1V15_SHA1  (0x11)
+#define TSS_SS_RSASSAPKCS1V15_DER   (0x12)
+
+//
+// key encryption scheme definitions
+//
+#define TSS_ES_NONE                 (0x10)
+#define TSS_ES_RSAESPKCSV15         (0x11)
+#define TSS_ES_RSAESOAEP_SHA1_MGF1  (0x12)
+#define TSS_ES_SYM_CNT              (0x13)
+#define TSS_ES_SYM_OFB              (0x14)
+#define TSS_ES_SYM_CBC_PKCS5PAD     (0x15)
+
+
+//
+// persistent storage registration definitions
+//
+#define TSS_PS_TYPE_USER   (1) // Key is registered persistantly in the user
+                               // storage database.
+#define TSS_PS_TYPE_SYSTEM (2) // Key is registered persistantly in the system
+                               // storage database.
+
+//
+// migration scheme definitions
+// Values intentionally moved away from corresponding TPM values to avoid
+// possible misuse
+//
+#define TSS_MS_MIGRATE                   (0x20)
+#define TSS_MS_REWRAP                    (0x21)
+#define TSS_MS_MAINT                     (0x22)
+#define TSS_MS_RESTRICT_MIGRATE          (0x23)
+#define TSS_MS_RESTRICT_APPROVE_DOUBLE   (0x24)
+#define TSS_MS_RESTRICT_MIGRATE_EXTERNAL (0x25)
+
+//
+// TPM key authorization
+// Values intentionally moved away from corresponding TPM values to avoid
+// possible misuse
+//
+#define TSS_KEYAUTH_AUTH_NEVER         (0x10)
+#define TSS_KEYAUTH_AUTH_ALWAYS        (0x11)
+#define TSS_KEYAUTH_AUTH_PRIV_USE_ONLY (0x12)
+
+
+//
+// Flags for TPM status information (GetStatus and SetStatus)
+//
+#define TSS_TPMSTATUS_DISABLEOWNERCLEAR      (0x00000001) // persistent flag
+#define TSS_TPMSTATUS_DISABLEFORCECLEAR      (0x00000002) // volatile flag
+#define TSS_TPMSTATUS_DISABLED               (0x00000003) // persistent flag
+#define TSS_TPMSTATUS_DEACTIVATED            (0x00000004) // volatile flag
+#define TSS_TPMSTATUS_OWNERSETDISABLE        (0x00000005) // persistent flag
+                                                          // for SetStatus
+                                                          // (disable flag) 
+#define TSS_TPMSTATUS_SETOWNERINSTALL        (0x00000006) // persistent flag
+                                                          // (ownership flag)
+#define TSS_TPMSTATUS_DISABLEPUBEKREAD       (0x00000007) // persistent flag
+#define TSS_TPMSTATUS_ALLOWMAINTENANCE       (0x00000008) // persistent flag
+#define TSS_TPMSTATUS_PHYSPRES_LIFETIMELOCK  (0x00000009) // persistent flag
+#define TSS_TPMSTATUS_PHYSPRES_HWENABLE      (0x0000000A) // persistent flag
+#define TSS_TPMSTATUS_PHYSPRES_CMDENABLE     (0x0000000B) // persistent flag
+#define TSS_TPMSTATUS_PHYSPRES_LOCK          (0x0000000C) // volatile flag
+#define TSS_TPMSTATUS_PHYSPRESENCE           (0x0000000D) // volatile flag
+#define TSS_TPMSTATUS_PHYSICALDISABLE        (0x0000000E) // persistent flag
+                                                          // (SetStatus
+                                                          //  disable flag)
+#define TSS_TPMSTATUS_CEKP_USED              (0x0000000F) // persistent flag
+#define TSS_TPMSTATUS_PHYSICALSETDEACTIVATED (0x00000010) // persistent flag
+                                                          // (deactivated flag)
+#define TSS_TPMSTATUS_SETTEMPDEACTIVATED     (0x00000011) // volatile flag
+                                                          // (deactivated flag)
+#define TSS_TPMSTATUS_POSTINITIALISE         (0x00000012) // volatile flag
+#define TSS_TPMSTATUS_TPMPOST                (0x00000013) // persistent flag
+#define TSS_TPMSTATUS_TPMPOSTLOCK            (0x00000014) // persistent flag
+#define TSS_TPMSTATUS_DISABLEPUBSRKREAD      (0x00000016) // persistent flag
+#define TSS_TPMSTATUS_MAINTENANCEUSED        (0x00000017) // persistent flag
+#define TSS_TPMSTATUS_OPERATORINSTALLED      (0x00000018) // persistent flag
+#define TSS_TPMSTATUS_FIPS                   (0x00000019) // persistent flag
+#define TSS_TPMSTATUS_ENABLEREVOKEEK         (0x0000001A) // persistent flag
+#define TSS_TPMSTATUS_NV_LOCK                (0x0000001B) // persistent flag
+#define TSS_TPMSTATUS_TPM_ESTABLISHED        (0x0000001C) // persistent flag
+#define TSS_TPMSTATUS_RESETLOCK              (0x0000001D) // volatile flag
+
+
+//
+// Capability flag definitions
+//
+// TPM capabilities            
+//
+#define TSS_TPMCAP_ORD                   (0x10)
+#define TSS_TPMCAP_ALG                   (0x11)
+#define TSS_TPMCAP_FLAG                  (0x12)
+#define TSS_TPMCAP_PROPERTY              (0x13)
+#define TSS_TPMCAP_VERSION               (0x14)
+#define TSS_TPMCAP_VERSION_VAL           (0x15)
+#define TSS_TPMCAP_NV_LIST               (0x16)
+#define TSS_TPMCAP_NV_INDEX              (0x17)
+#define TSS_TPMCAP_MFR                   (0x18)
+#define TSS_TPMCAP_SYM_MODE              (0x19)
+#define TSS_TPMCAP_HANDLE                (0x1a)
+#define TSS_TPMCAP_TRANS_ES              (0x1b)
+#define TSS_TPMCAP_AUTH_ENCRYPT          (0x1c)  
+#define TSS_TPMCAP_SET_PERM_FLAGS        (0x1d)  // cf. TPM_SET_PERM_FLAGS
+#define TSS_TPMCAP_SET_VENDOR            (0x1e)  // cf. TPM_SET_VENDOR
+#define TSS_TPMCAP_DA_LOGIC              (0x1f)
+
+//
+// Sub-Capability Flags for TSS_TPMCAP_PROPERTY
+//
+#define TSS_TPMCAP_PROP_PCR                 (0x10)
+#define TSS_TPMCAP_PROP_DIR                 (0x11)
+#define TSS_TPMCAP_PROP_MANUFACTURER        (0x12)
+#define TSS_TPMCAP_PROP_SLOTS               (0x13)
+#define TSS_TPMCAP_PROP_KEYS                TSS_TPMCAP_PROP_SLOTS
+#define TSS_TPMCAP_PROP_FAMILYROWS          (0x14)
+#define TSS_TPMCAP_PROP_DELEGATEROWS        (0x15)
+#define TSS_TPMCAP_PROP_OWNER               (0x16)
+#define TSS_TPMCAP_PROP_MAXKEYS             (0x18)
+#define TSS_TPMCAP_PROP_AUTHSESSIONS        (0x19)
+#define TSS_TPMCAP_PROP_MAXAUTHSESSIONS     (0x1a)
+#define TSS_TPMCAP_PROP_TRANSESSIONS        (0x1b)
+#define TSS_TPMCAP_PROP_MAXTRANSESSIONS     (0x1c)
+#define TSS_TPMCAP_PROP_SESSIONS            (0x1d)
+#define TSS_TPMCAP_PROP_MAXSESSIONS         (0x1e)
+#define TSS_TPMCAP_PROP_CONTEXTS            (0x1f)
+#define TSS_TPMCAP_PROP_MAXCONTEXTS         (0x20)
+#define TSS_TPMCAP_PROP_DAASESSIONS         (0x21)
+#define TSS_TPMCAP_PROP_MAXDAASESSIONS      (0x22)
+#define TSS_TPMCAP_PROP_DAA_INTERRUPT       (0x23)
+#define TSS_TPMCAP_PROP_COUNTERS            (0x24)
+#define TSS_TPMCAP_PROP_MAXCOUNTERS         (0x25)
+#define TSS_TPMCAP_PROP_ACTIVECOUNTER       (0x26)
+#define TSS_TPMCAP_PROP_MIN_COUNTER         (0x27)
+#define TSS_TPMCAP_PROP_TISTIMEOUTS         (0x28)
+#define TSS_TPMCAP_PROP_STARTUPEFFECTS      (0x29)
+#define TSS_TPMCAP_PROP_MAXCONTEXTCOUNTDIST (0x2a)
+#define TSS_TPMCAP_PROP_CMKRESTRICTION      (0x2b)
+#define TSS_TPMCAP_PROP_DURATION            (0x2c)
+#define TSS_TPMCAP_PROP_MAXNVAVAILABLE      (0x2d)
+#define TSS_TPMCAP_PROP_INPUTBUFFERSIZE     (0x2e)
+#define TSS_TPMCAP_PROP_REVISION            (0x2f)
+#define TSS_TPMCAP_PROP_LOCALITIES_AVAIL    (0x32)
+
+//
+// Resource type flags
+// Sub-Capability Flags for TSS_TPMCAP_HANDLE
+//
+#define TSS_RT_KEY                     ((UINT32)0x00000010)
+#define TSS_RT_AUTH                    ((UINT32)0x00000020)
+#define TSS_RT_TRANS                   ((UINT32)0x00000030)
+#define TSS_RT_COUNTER                 ((UINT32)0x00000040)
+
+
+//
+// TSS Core Service Capabilities   
+//
+#define TSS_TCSCAP_ALG                   (0x00000001)
+#define TSS_TCSCAP_VERSION               (0x00000002)
+#define TSS_TCSCAP_CACHING               (0x00000003)
+#define TSS_TCSCAP_PERSSTORAGE           (0x00000004)
+#define TSS_TCSCAP_MANUFACTURER          (0x00000005)
+#define TSS_TCSCAP_PLATFORM_CLASS        (0x00000006)
+#define TSS_TCSCAP_TRANSPORT             (0x00000007)
+#define TSS_TCSCAP_PLATFORM_INFO         (0x00000008)
+
+//
+// Sub-Capability Flags TSS-CoreService-Capabilities
+//
+#define TSS_TCSCAP_PROP_KEYCACHE         (0x00000100)
+#define TSS_TCSCAP_PROP_AUTHCACHE        (0x00000101)
+#define TSS_TCSCAP_PROP_MANUFACTURER_STR (0x00000102)
+#define TSS_TCSCAP_PROP_MANUFACTURER_ID  (0x00000103)
+#define TSS_TCSCAP_PLATFORM_VERSION      (0x00001100)
+#define TSS_TCSCAP_PLATFORM_TYPE         (0x00001101)
+#define TSS_TCSCAP_TRANS_EXCLUSIVE       (0x00002100)
+#define TSS_TCSCAP_PROP_HOST_PLATFORM    (0x00003001)
+#define TSS_TCSCAP_PROP_ALL_PLATFORMS    (0x00003002)
+
+//
+// TSS Service Provider Capabilities      
+//
+#define TSS_TSPCAP_ALG                   (0x00000010)
+#define TSS_TSPCAP_VERSION               (0x00000011)
+#define TSS_TSPCAP_PERSSTORAGE           (0x00000012)
+#define TSS_TSPCAP_MANUFACTURER          (0x00000013)
+#define TSS_TSPCAP_RETURNVALUE_INFO      (0x00000015)
+
+// Sub-Capability Flags for TSS_TSPCAP_MANUFACTURER
+//
+#define TSS_TSPCAP_PROP_MANUFACTURER_STR (0x00000102)
+#define TSS_TSPCAP_PROP_MANUFACTURER_ID  (0x00000103)
+
+
+// Sub-Capability Flags for TSS_TSPCAP_RETURNVALUE_INFO
+//
+#define TSS_TSPCAP_PROP_RETURNVALUE_INFO (0x00000201)
+
+//
+// Event type definitions
+//
+#define TSS_EV_CODE_CERT                 (0x00000001)
+#define TSS_EV_CODE_NOCERT               (0x00000002)
+#define TSS_EV_XML_CONFIG                (0x00000003)
+#define TSS_EV_NO_ACTION                 (0x00000004)
+#define TSS_EV_SEPARATOR                 (0x00000005)
+#define TSS_EV_ACTION                    (0x00000006)
+#define TSS_EV_PLATFORM_SPECIFIC         (0x00000007)
+
+
+//
+// TSP random number limits
+//
+#define TSS_TSPCAP_RANDOMLIMIT     (0x00001000)   // Errata: Missing from spec
+
+//
+// UUIDs
+//
+// Errata: This are not in the spec
+#define TSS_UUID_SRK  {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 1}} // Storage root key
+#define TSS_UUID_SK   {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 2}} // System key
+#define TSS_UUID_RK   {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 3}} // roaming key
+#define TSS_UUID_CRK  {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 8}} // CMK roaming key
+#define TSS_UUID_USK1 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 4}} // user storage key 1
+#define TSS_UUID_USK2 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 5}} // user storage key 2
+#define TSS_UUID_USK3 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 6}} // user storage key 3
+#define TSS_UUID_USK4 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 7}} // user storage key 4
+#define TSS_UUID_USK5 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 9}} // user storage key 5
+#define TSS_UUID_USK6 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 10}}// user storage key 6
+
+// macro to derive UUIDs for keys whose "OwnerEvict" key is set.
+#define TSS_UUID_OWNEREVICT(i) {0, 0, 0, 0, 0, {0, 0, 0, 0, 1, (i)}}
+
+
+//
+// TPM well-known secret
+//
+#define TSS_WELL_KNOWN_SECRET \
+        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+
+// Values for the "direction" parameters in the Tspi_PcrComposite_XX functions.
+#define TSS_PCRS_DIRECTION_CREATION                        ((UINT32)1)
+#define TSS_PCRS_DIRECTION_RELEASE                         ((UINT32)2)
+
+
+//
+// TSS blob version definition for ASN.1 blobs
+//
+#define TSS_BLOB_STRUCT_VERSION                              0x01
+
+//
+// TSS blob type definitions for ASN.1 blobs
+//
+#define TSS_BLOB_TYPE_KEY                                    0x01
+#define TSS_BLOB_TYPE_PUBKEY                                 0x02
+#define TSS_BLOB_TYPE_MIGKEY                                 0x03
+#define TSS_BLOB_TYPE_SEALEDDATA                             0x04
+#define TSS_BLOB_TYPE_BOUNDDATA                              0x05
+#define TSS_BLOB_TYPE_MIGTICKET                              0x06
+#define TSS_BLOB_TYPE_PRIVATEKEY                             0x07
+#define TSS_BLOB_TYPE_PRIVATEKEY_MOD1                        0x08
+#define TSS_BLOB_TYPE_RANDOM_XOR                             0x09
+#define TSS_BLOB_TYPE_CERTIFY_INFO                           0x0A
+#define TSS_BLOB_TYPE_KEY_1_2                                0x0B
+#define TSS_BLOB_TYPE_CERTIFY_INFO_2                         0x0C
+#define TSS_BLOB_TYPE_CMK_MIG_KEY                            0x0D
+#define TSS_BLOB_TYPE_CMK_BYTE_STREAM                        0x0E
+
+
+
+//
+// Values for TPM_CMK_DELEGATE bitmasks
+// For now these are exactly the same values as the corresponding
+// TPM_CMK_DELEGATE_* bitmasks.
+//
+#define TSS_CMK_DELEGATE_SIGNING       (((UINT32)1)<<31)
+#define TSS_CMK_DELEGATE_STORAGE       (((UINT32)1)<<30)
+#define TSS_CMK_DELEGATE_BIND          (((UINT32)1)<<29)
+#define TSS_CMK_DELEGATE_LEGACY        (((UINT32)1)<<28)
+#define TSS_CMK_DELEGATE_MIGRATE       (((UINT32)1)<<27)
+
+
+//
+// Constants for DAA
+//
+#define TSS_DAA_LENGTH_N                256             // Length of the RSA Modulus (2048 bits)
+#define TSS_DAA_LENGTH_F                13              // Length of the f_i's (information encoded into the certificate, 104 bits)
+#define TSS_DAA_LENGTH_E                46              // Length of the e's (exponents, part of certificate, 386 bits)
+#define TSS_DAA_LENGTH_E_PRIME          15              // Length of the interval the e's are chosen from (120 bits)
+#define TSS_DAA_LENGTH_V                317             // Length of the v's (random value, part of certificate, 2536 bits)
+#define TSS_DAA_LENGTH_SAFETY           10              // Length of the security parameter controlling the statistical zero-knowledge property (80 bits)
+#define TSS_DAA_LENGTH_HASH     TPM_SHA1_160_HASH_LEN   // Length of the output of the hash function SHA-1 used for the Fiat-Shamir heuristic(160 bits)
+#define TSS_DAA_LENGTH_S                128             // Length of the split large exponent for easier computations on the TPM (1024 bits)
+#define TSS_DAA_LENGTH_GAMMA            204             // Length of the modulus 'Gamma' (1632 bits)
+#define TSS_DAA_LENGTH_RHO              26              // Length of the order 'rho' of the sub group of Z*_Gamma that is used for roggue tagging (208 bits)
+#define TSS_DAA_LENGTH_MFG1_GAMMA       214             // Length of the output of MGF1 in conjunction with the modulus Gamma (1712 bits)
+#define TSS_DAA_LENGTH_MGF1_AR          25              // Length of the output of MGF1 used for anonymity revocation (200 bits)
+
+
+#endif // __TSS_DEFINES_H__
diff --git a/tss/include/tss/tss_error.h b/tss/include/tss/tss_error.h
index 28b3ebb..17a71ef 100644
--- a/tss/include/tss/tss_error.h
+++ b/tss/include/tss/tss_error.h
@@ -1,687 +1,687 @@
-/*++

-

-TSS error return codes 

- 

---*/

-

-#ifndef __TSS_ERROR_H__

-#define __TSS_ERROR_H__

-

-#include <platform.h>

-

-//

-// error coding scheme for a Microsoft Windows platform -

-// refer to the TSS Specification Parts

-//

-//  Values are 32 bit values layed out as follows:

-//

-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

-//  +---+-+-+-----------------------+-------+-----------------------+

-//  |Lev|C|R|     Facility          | Layer |         Code          |

-//  +---+-+-+-----------------------+-------+-----------------------+

-//  | Platform specific coding      | TSS error coding system       |

-//  +---+-+-+-----------------------+-------+-----------------------+

-//

-//      Lev - is the Level code

-//

-//          00 - Success

-//          01 - Informational

-//          10 - Warning

-//          11 - Error

-//

-//      C - is the Customer code flag  (must actually be set)

-//

-//      R - is a reserved bit    (unused)

-//

-//      Facility - is the facility code: TCPA: proposal 0x028

-//

-//      Code - is the facility's status code

-//

-

-//

-// definitions for the code level information

-//

-#define TSS_LEVEL_SUCCESS  0x00     // code level success 

-#define TSS_LEVEL_INFO     0x40000000L    // code level information

-#define TSS_LEVEL_WARNING  0x80000000L    // code level warning

-#define TSS_LEVEL_ERROR    0xC0000000L    // code level error

-

-//

-// some defines for the platform specific information

-//

-#define FACILITY_TSS            0x28L     // facility number for TCPA return codes

-#define FACILITY_TSS_CODEPOS   (FACILITY_TSS << 16)  // shift the facility info to the code 

-                                                                        // position

-

-#define TSS_CUSTOM_CODEFLAG     0x20000000L    // bit position for the custom flag in 

-                                                                        // return code

-

-//

-//

-// TSS error return codes

-//

-//

-#ifndef TSS_E_BASE

-#define TSS_E_BASE    0x00000000L

-#endif // TSS_E_BASE

-#ifndef TSS_W_BASE

-#define TSS_W_BASE    0x00000000L

-#endif // TSS_W_BASE

-#ifndef TSS_I_BASE

-#define TSS_I_BASE    0x00000000L

-#endif // TSS_I_BASE

-

-//

-// basic error return codes common to all TSS Service Provider Interface methods

-// and returned by all TSS SW stack components

-//

-

-//

-// MessageId: TSS_SUCCESS

-//

-// MessageText:

-//

-//  Successful completion of the operation.

-//

-#define TSS_SUCCESS     0x00000000L

-

-//

-// MessageId: TSS_E_FAIL

-//

-// MessageText:

-//

-//  An internal error has been detected, but the source is unknown.

-//

-#define TSS_E_FAIL     (UINT32)(TSS_E_BASE + 0x002L)

-

-//

-// MessageId: TSS_E_BAD_PARAMETER

-//

-// MessageText:

-//

-// One or more parameter is bad.

-//

-#define TSS_E_BAD_PARAMETER    (UINT32)(TSS_E_BASE + 0x003L)

-

-//

-// MessageId: TSS_E_INTERNAL_ERROR

-//

-// MessageText:

-//

-//  An internal SW error has been detected.

-//

-#define TSS_E_INTERNAL_ERROR    (UINT32)(TSS_E_BASE + 0x004L)

-

-//

-// MessageId: TSS_E_OUTOFMEMORY

-//

-// MessageText:

-//

-// Ran out of memory.

-//

-#define TSS_E_OUTOFMEMORY    (UINT32)(TSS_E_BASE + 0x005L)

-

-//

-// MessageId: TSS_E_NOTIMPL

-//

-// MessageText:

-//

-// Not implemented.

-//

-#define TSS_E_NOTIMPL     (UINT32)(TSS_E_BASE + 0x006L)

-

-//

-// MessageId: TSS_E_KEY_ALREADY_REGISTERED

-//

-// MessageText:

-//

-//  Key is already registered

-//

-#define TSS_E_KEY_ALREADY_REGISTERED  (UINT32)(TSS_E_BASE + 0x008L)

-

-

-//

-// MessageId: TSS_E_TPM_UNEXPECTED

-//

-// MessageText:

-//

-//  An unexpected TPM error has occurred.

-//

-#define TSS_E_TPM_UNEXPECTED    (UINT32)(TSS_E_BASE + 0x010L)

-

-//

-// MessageId: TSS_E_COMM_FAILURE

-//

-// MessageText:

-//

-//  A communications error with the TPM has been detected.

-//

-#define TSS_E_COMM_FAILURE    (UINT32)(TSS_E_BASE + 0x011L)

-

-//

-// MessageId: TSS_E_TIMEOUT

-//

-// MessageText:

-//

-//  The operation has timed out.

-//

-#define TSS_E_TIMEOUT     (UINT32)(TSS_E_BASE + 0x012L)

-

-//

-// MessageId: TSS_E_TPM_UNSUPPORTED_FEATURE

-//

-// MessageText:

-//

-//  The TPM does not support the requested feature.

-//

-#define TSS_E_TPM_UNSUPPORTED_FEATURE  (UINT32)(TSS_E_BASE + 0x014L)

-

-//

-// MessageId: TSS_E_CANCELED

-//

-// MessageText:

-//

-//  The action was canceled by request.

-//

-#define TSS_E_CANCELED     (UINT32)(TSS_E_BASE + 0x016L)

-

-//

-// MessageId: TSS_E_PS_KEY_NOTFOUND

-//

-// MessageText:

-//

-// The key cannot be found in the persistent storage database.

-//

-#define TSS_E_PS_KEY_NOTFOUND    (UINT32)(TSS_E_BASE + 0x020L)

-//

-// MessageId: TSS_E_PS_KEY_EXISTS

-//

-// MessageText:

-//

-// The key already exists in the persistent storage database.

-//

-#define TSS_E_PS_KEY_EXISTS            (UINT32)(TSS_E_BASE + 0x021L)

-

-//

-// MessageId: TSS_E_PS_BAD_KEY_STATE

-//

-// MessageText:

-//

-// The key data set not valid in the persistent storage database.

-//

-#define TSS_E_PS_BAD_KEY_STATE         (UINT32)(TSS_E_BASE + 0x022L)

-

-

-//

-// error codes returned by specific TSS Service Provider Interface methods

-// offset TSS_TSPI_OFFSET

-//

-

-//

-// MessageId: TSS_E_INVALID_OBJECT_TYPE

-//

-// MessageText:

-//

-// Object type not valid for this operation.

-//

-#define TSS_E_INVALID_OBJECT_TYPE   (UINT32)(TSS_E_BASE + 0x101L)

-

-//

-// MessageId: TSS_E_NO_CONNECTION

-//

-// MessageText:

-//

-// Core Service connection doesn't exist.

-//

-#define TSS_E_NO_CONNECTION    (UINT32)(TSS_E_BASE + 0x102L)

- 

-//

-// MessageId: TSS_E_CONNECTION_FAILED

-//

-// MessageText:

-//

-// Core Service connection failed.

-//

-#define TSS_E_CONNECTION_FAILED   (UINT32)(TSS_E_BASE + 0x103L)

-

-//

-// MessageId: TSS_E_CONNECTION_BROKEN

-//

-// MessageText:

-//

-// Communication with Core Service failed.

-//

-#define TSS_E_CONNECTION_BROKEN   (UINT32)(TSS_E_BASE + 0x104L)

-

-//

-// MessageId: TSS_E_HASH_INVALID_ALG

-//

-// MessageText:

-//

-// Invalid hash algorithm.

-//

-#define TSS_E_HASH_INVALID_ALG   (UINT32)(TSS_E_BASE + 0x105L)

-

-//

-// MessageId: TSS_E_HASH_INVALID_LENGTH

-//

-// MessageText:

-//

-// Hash length is inconsistent with hash algorithm.

-//

-#define TSS_E_HASH_INVALID_LENGTH   (UINT32)(TSS_E_BASE + 0x106L)

-

-//

-// MessageId: TSS_E_HASH_NO_DATA

-//

-// MessageText:

-//

-// Hash object has no internal hash value.

-//

-#define TSS_E_HASH_NO_DATA    (UINT32)(TSS_E_BASE + 0x107L)

-

-

-//

-// MessageId: TSS_E_INVALID_ATTRIB_FLAG

-//

-// MessageText:

-//

-// Flag value for attrib-functions inconsistent.

-//

-#define TSS_E_INVALID_ATTRIB_FLAG   (UINT32)(TSS_E_BASE + 0x109L)

-

-//

-// MessageId: TSS_E_INVALID_ATTRIB_SUBFLAG

-//

-// MessageText:

-//

-// Subflag value for attrib-functions inconsistent.

-//

-#define TSS_E_INVALID_ATTRIB_SUBFLAG  (UINT32)(TSS_E_BASE + 0x10AL)

-

-//

-// MessageId: TSS_E_INVALID_ATTRIB_DATA

-//

-// MessageText:

-//

-// Data for attrib-functions invalid.

-//

-#define TSS_E_INVALID_ATTRIB_DATA   (UINT32)(TSS_E_BASE + 0x10BL)

-

-//

-// MessageId: TSS_E_INVALID_OBJECT_INITFLAG

-//

-// MessageText:

-//

-// Wrong flag information for object creation.

-// 

-// The alternate spelling is supported to be compatible with a typo

-// in the 1.1b header files.

-//

-#define TSS_E_INVALID_OBJECT_INIT_FLAG  (UINT32)(TSS_E_BASE + 0x10CL)

-#define TSS_E_INVALID_OBJECT_INITFLAG   TSS_E_INVALID_OBJECT_INIT_FLAG

- 

-//

-// MessageId: TSS_E_NO_PCRS_SET

-//

-// MessageText:

-//

-// No PCR register are selected or set.

-//

-#define TSS_E_NO_PCRS_SET    (UINT32)(TSS_E_BASE + 0x10DL)

-

-//

-// MessageId: TSS_E_KEY_NOT_LOADED

-//

-// MessageText:

-//

-// The addressed key is currently not loaded.

-//

-#define TSS_E_KEY_NOT_LOADED    (UINT32)(TSS_E_BASE + 0x10EL)

- 

-//

-// MessageId: TSS_E_KEY_NOT_SET

-//

-// MessageText:

-//

-// No key information is currently available.

-//

-#define TSS_E_KEY_NOT_SET    (UINT32)(TSS_E_BASE + 0x10FL)

-      

-//

-// MessageId: TSS_E_VALIDATION_FAILED

-//

-// MessageText:

-//

-// Internal validation of data failed.

-//

-#define TSS_E_VALIDATION_FAILED   (UINT32)(TSS_E_BASE + 0x110L)

-

-//

-// MessageId: TSS_E_TSP_AUTHREQUIRED

-//

-// MessageText:

-//

-// Authorization is required.

-//

-#define TSS_E_TSP_AUTHREQUIRED   (UINT32)(TSS_E_BASE + 0x111L)

-

-//

-// MessageId: TSS_E_TSP_AUTH2REQUIRED

-//

-// MessageText:

-//

-// Multiple authorization is required.

-//

-#define TSS_E_TSP_AUTH2REQUIRED   (UINT32)(TSS_E_BASE + 0x112L)

-

-//

-// MessageId: TSS_E_TSP_AUTHFAIL

-//

-// MessageText:

-//

-// Authorization failed.

-//

-#define TSS_E_TSP_AUTHFAIL    (UINT32)(TSS_E_BASE + 0x113L)

-

-//

-// MessageId: TSS_E_TSP_AUTH2FAIL

-//

-// MessageText:

-//

-// Multiple authorization failed.

-//

-#define TSS_E_TSP_AUTH2FAIL    (UINT32)(TSS_E_BASE + 0x114L)

- 

-//

-// MessageId: TSS_E_KEY_NO_MIGRATION_POLICY

-//

-// MessageText:

-//

-// There's no migration policy object set for the addressed key.

-//

-#define TSS_E_KEY_NO_MIGRATION_POLICY  (UINT32)(TSS_E_BASE + 0x115L) 

-

-//

-// MessageId: TSS_E_POLICY_NO_SECRET

-//

-// MessageText:

-//

-// No secret information is currently available for the addressed policy object.

-//

-#define TSS_E_POLICY_NO_SECRET   (UINT32)(TSS_E_BASE + 0x116L)

-

-//

-// MessageId: TSS_E_INVALID_OBJ_ACCESS

-//

-// MessageText:

-//

-// The operation failed due to an invalid object status.

-//

-#define TSS_E_INVALID_OBJ_ACCESS   (UINT32)(TSS_E_BASE + 0x117L)

-

-//

-// MessageId: TSS_E_INVALID_ENCSCHEME

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_INVALID_ENCSCHEME   (UINT32)(TSS_E_BASE + 0x118L)

-

-

-//

-// MessageId: TSS_E_INVALID_SIGSCHEME

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_INVALID_SIGSCHEME   (UINT32)(TSS_E_BASE + 0x119L)

-

-//

-// MessageId: TSS_E_ENC_INVALID_LENGTH

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_ENC_INVALID_LENGTH   (UINT32)(TSS_E_BASE + 0x120L)

-

-

-//

-// MessageId: TSS_E_ENC_NO_DATA

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_ENC_NO_DATA    (UINT32)(TSS_E_BASE + 0x121L)

-

-//

-// MessageId: TSS_E_ENC_INVALID_TYPE

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_ENC_INVALID_TYPE   (UINT32)(TSS_E_BASE + 0x122L)

-

-

-//

-// MessageId: TSS_E_INVALID_KEYUSAGE

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_INVALID_KEYUSAGE   (UINT32)(TSS_E_BASE + 0x123L)

-

-//

-// MessageId: TSS_E_VERIFICATION_FAILED

-//

-// MessageText:

-//

-// 

-//

-#define TSS_E_VERIFICATION_FAILED   (UINT32)(TSS_E_BASE + 0x124L)

-

-//

-// MessageId: TSS_E_HASH_NO_IDENTIFIER

-//

-// MessageText:

-//

-// Hash algorithm identifier not set.

-//

-#define TSS_E_HASH_NO_IDENTIFIER   (UINT32)(TSS_E_BASE + 0x125L)

-

-//

-// MessageId: TSS_E_INVALID_HANDLE

-//

-// MessageText:

-//

-//  An invalid handle

-//

-#define TSS_E_INVALID_HANDLE    (UINT32)(TSS_E_BASE + 0x126L)

-

-//

-// MessageId: TSS_E_SILENT_CONTEXT

-//

-// MessageText:

-//

-//  A silent context requires user input

-//

-#define TSS_E_SILENT_CONTEXT           (UINT32)(TSS_E_BASE + 0x127L)

-

-//

-// MessageId: TSS_E_EK_CHECKSUM

-//

-// MessageText:

-//

-// TSP is instructed to verify the EK checksum and it does not verify.

-//

-#define TSS_E_EK_CHECKSUM             (UINT32)(TSS_E_BASE + 0x128L)

-

-

-//

-// MessageId: TSS_E_DELGATION_NOTSET

-//

-// MessageText:

-//

-// The Policy object does not have a delegation blob set.

-//

-#define TSS_E_DELEGATION_NOTSET      (UINT32)(TSS_E_BASE + 0x129L)

-

-//

-// MessageId: TSS_E_DELFAMILY_NOTFOUND

-//

-// MessageText:

-//

-// The specified delegation family was not found

-//

-#define TSS_E_DELFAMILY_NOTFOUND       (UINT32)(TSS_E_BASE + 0x130L)

-

-//

-// MessageId: TSS_E_DELFAMILY_ROWEXISTS

-//

-// MessageText:

-//

-// The specified delegation family table row is already in use and

-// the command flags does not allow the TSS to overwrite the existing

-// entry.

-//

-#define TSS_E_DELFAMILY_ROWEXISTS    (UINT32)(TSS_E_BASE + 0x131L)

-

-//

-// MessageId: TSS_E_VERSION_MISMATCH

-//

-// MessageText:

-//

-// The specified delegation family table row is already in use and

-// the command flags does not allow the TSS to overwrite the existing

-// entry.

-//

-#define TSS_E_VERSION_MISMATCH       (UINT32)(TSS_E_BASE + 0x132L)

-

-//

-//  MessageId: TSS_E_DAA_AR_DECRYPTION_ERROR

-//

-//  Decryption of the encrypted pseudonym has failed, due to

-//  either a wrong secret key or a wrong decryption condition.

-//

-#define TSS_E_DAA_AR_DECRYPTION_ERROR             (UINT32)(TSS_E_BASE + 0x133L)

-

-//

-//  MessageId: TSS_E_DAA_AUTHENTICATION_ERROR

-//

-//  The TPM could not be authenticated by the DAA Issuer.

-//

-#define TSS_E_DAA_AUTHENTICATION_ERROR            (UINT32)(TSS_E_BASE + 0x134L)

-

-//

-//  MessageId: TSS_E_DAA_CHALLENGE_RESPONSE_ERROR

-//

-//  DAA Challenge response error.

-//

-#define TSS_E_DAA_CHALLENGE_RESPONSE_ERROR        (UINT32)(TSS_E_BASE + 0x135L)

-

-//

-//  MessageId: TSS_E_DAA_CREDENTIAL_PROOF_ERROR

-//

-//  Verification of the credential TSS_DAA_CRED_ISSUER issued by

-//  the DAA Issuer has failed.

-//

-#define TSS_E_DAA_CREDENTIAL_PROOF_ERROR          (UINT32)(TSS_E_BASE + 0x136L)

-

-//

-//  MessageId: TSS_E_DAA_CREDENTIAL_REQUEST_PROOF_ERROR

-//

-//  Verification of the platform's credential request

-//  TSS_DAA_CREDENTIAL_REQUEST has failed.

-//

-#define TSS_E_DAA_CREDENTIAL_REQUEST_PROOF_ERROR  (UINT32)(TSS_E_BASE + 0x137L)

-

-//

-//  MessageId: TSS_E_DAA_ISSUER_KEY_ERROR

-//

-//  DAA Issuer's authentication key chain could not be verified or

-//  is not correct.

-//

-#define TSS_E_DAA_ISSUER_KEY_ERROR                (UINT32)(TSS_E_BASE + 0x138L)

-

-//

-//  MessageId: TSS_E_DAA_PSEUDONYM_ERROR

-//

-//  While verifying the pseudonym of the TPM, the private key of the

-//  TPM was found on the rogue list.

-//

-#define TSS_E_DAA_PSEUDONYM_ERROR                 (UINT32)(TSS_E_BASE + 0x139L)

-

-//

-//  MessageId: TSS_E_INVALID_RESOURCE

-//

-//  Pointer to memory wrong.

-//

-#define TSS_E_INVALID_RESOURCE                    (UINT32)(TSS_E_BASE + 0x13AL)

-

-//

-//  MessageId: TSS_E_NV_AREA_EXIST

-//

-//  The NV area referenced already exists

-//

-#define TSS_E_NV_AREA_EXIST                       (UINT32)(TSS_E_BASE + 0x13BL)

-

-//

-//  MessageId: TSS_E_NV_AREA_NOT_EXIST

-//

-//  The NV area referenced doesn't exist

-//

-#define TSS_E_NV_AREA_NOT_EXIST                   (UINT32)(TSS_E_BASE + 0x13CL)

-

-//

-//  MessageId: TSS_E_TSP_TRANS_AUTHFAIL

-//

-//  The transport session authorization failed

-//

-#define TSS_E_TSP_TRANS_AUTHFAIL                  (UINT32)(TSS_E_BASE + 0x13DL)

-

-//

-//  MessageId: TSS_E_TSP_TRANS_AUTHREQUIRED

-//

-//  Authorization for transport is required

-//

-#define TSS_E_TSP_TRANS_AUTHREQUIRED              (UINT32)(TSS_E_BASE + 0x13EL)

-

-//

-//  MessageId: TSS_E_TSP_TRANS_NOT_EXCLUSIVE

-//

-//  A command was executed outside of an exclusive transport session.

-//

-#define TSS_E_TSP_TRANS_NOTEXCLUSIVE              (UINT32)(TSS_E_BASE + 0x13FL)

-

-//

-//  MessageId: TSS_E_TSP_TRANS_FAIL

-//

-//  Generic transport protection error.

-//

-#define TSS_E_TSP_TRANS_FAIL                     (UINT32)(TSS_E_BASE + 0x140L)

-

-//

-//  MessageId: TSS_E_TSP_TRANS_NO_PUBKEY

-//

-//  A command could not be executed through a logged transport session

-//  because the command used a key and the key's public key is not

-//  known to the TSP.

-//

-#define TSS_E_TSP_TRANS_NO_PUBKEY                (UINT32)(TSS_E_BASE + 0x141L)

-

-//

-//  MessageId: TSS_E_NO_ACTIVE_COUNTER

-//

-//  The TPM active counter has not been set yet.

-//

-#define TSS_E_NO_ACTIVE_COUNTER                  (UINT32)(TSS_E_BASE + 0x142L)

-

-

-#endif // __TSS_ERROR_H__

+/*++
+
+TSS error return codes 
+ 
+--*/
+
+#ifndef __TSS_ERROR_H__
+#define __TSS_ERROR_H__
+
+#include <tss/platform.h>
+
+//
+// error coding scheme for a Microsoft Windows platform -
+// refer to the TSS Specification Parts
+//
+//  Values are 32 bit values layed out as follows:
+//
+//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+//  +---+-+-+-----------------------+-------+-----------------------+
+//  |Lev|C|R|     Facility          | Layer |         Code          |
+//  +---+-+-+-----------------------+-------+-----------------------+
+//  | Platform specific coding      | TSS error coding system       |
+//  +---+-+-+-----------------------+-------+-----------------------+
+//
+//      Lev - is the Level code
+//
+//          00 - Success
+//          01 - Informational
+//          10 - Warning
+//          11 - Error
+//
+//      C - is the Customer code flag  (must actually be set)
+//
+//      R - is a reserved bit    (unused)
+//
+//      Facility - is the facility code: TCPA: proposal 0x028
+//
+//      Code - is the facility's status code
+//
+
+//
+// definitions for the code level information
+//
+#define TSS_LEVEL_SUCCESS  0x00     // code level success 
+#define TSS_LEVEL_INFO     0x40000000L    // code level information
+#define TSS_LEVEL_WARNING  0x80000000L    // code level warning
+#define TSS_LEVEL_ERROR    0xC0000000L    // code level error
+
+//
+// some defines for the platform specific information
+//
+#define FACILITY_TSS            0x28L     // facility number for TCPA return codes
+#define FACILITY_TSS_CODEPOS   (FACILITY_TSS << 16)  // shift the facility info to the code 
+                                                                        // position
+
+#define TSS_CUSTOM_CODEFLAG     0x20000000L    // bit position for the custom flag in 
+                                                                        // return code
+
+//
+//
+// TSS error return codes
+//
+//
+#ifndef TSS_E_BASE
+#define TSS_E_BASE    0x00000000L
+#endif // TSS_E_BASE
+#ifndef TSS_W_BASE
+#define TSS_W_BASE    0x00000000L
+#endif // TSS_W_BASE
+#ifndef TSS_I_BASE
+#define TSS_I_BASE    0x00000000L
+#endif // TSS_I_BASE
+
+//
+// basic error return codes common to all TSS Service Provider Interface methods
+// and returned by all TSS SW stack components
+//
+
+//
+// MessageId: TSS_SUCCESS
+//
+// MessageText:
+//
+//  Successful completion of the operation.
+//
+#define TSS_SUCCESS     0x00000000L
+
+//
+// MessageId: TSS_E_FAIL
+//
+// MessageText:
+//
+//  An internal error has been detected, but the source is unknown.
+//
+#define TSS_E_FAIL     (UINT32)(TSS_E_BASE + 0x002L)
+
+//
+// MessageId: TSS_E_BAD_PARAMETER
+//
+// MessageText:
+//
+// One or more parameter is bad.
+//
+#define TSS_E_BAD_PARAMETER    (UINT32)(TSS_E_BASE + 0x003L)
+
+//
+// MessageId: TSS_E_INTERNAL_ERROR
+//
+// MessageText:
+//
+//  An internal SW error has been detected.
+//
+#define TSS_E_INTERNAL_ERROR    (UINT32)(TSS_E_BASE + 0x004L)
+
+//
+// MessageId: TSS_E_OUTOFMEMORY
+//
+// MessageText:
+//
+// Ran out of memory.
+//
+#define TSS_E_OUTOFMEMORY    (UINT32)(TSS_E_BASE + 0x005L)
+
+//
+// MessageId: TSS_E_NOTIMPL
+//
+// MessageText:
+//
+// Not implemented.
+//
+#define TSS_E_NOTIMPL     (UINT32)(TSS_E_BASE + 0x006L)
+
+//
+// MessageId: TSS_E_KEY_ALREADY_REGISTERED
+//
+// MessageText:
+//
+//  Key is already registered
+//
+#define TSS_E_KEY_ALREADY_REGISTERED  (UINT32)(TSS_E_BASE + 0x008L)
+
+
+//
+// MessageId: TSS_E_TPM_UNEXPECTED
+//
+// MessageText:
+//
+//  An unexpected TPM error has occurred.
+//
+#define TSS_E_TPM_UNEXPECTED    (UINT32)(TSS_E_BASE + 0x010L)
+
+//
+// MessageId: TSS_E_COMM_FAILURE
+//
+// MessageText:
+//
+//  A communications error with the TPM has been detected.
+//
+#define TSS_E_COMM_FAILURE    (UINT32)(TSS_E_BASE + 0x011L)
+
+//
+// MessageId: TSS_E_TIMEOUT
+//
+// MessageText:
+//
+//  The operation has timed out.
+//
+#define TSS_E_TIMEOUT     (UINT32)(TSS_E_BASE + 0x012L)
+
+//
+// MessageId: TSS_E_TPM_UNSUPPORTED_FEATURE
+//
+// MessageText:
+//
+//  The TPM does not support the requested feature.
+//
+#define TSS_E_TPM_UNSUPPORTED_FEATURE  (UINT32)(TSS_E_BASE + 0x014L)
+
+//
+// MessageId: TSS_E_CANCELED
+//
+// MessageText:
+//
+//  The action was canceled by request.
+//
+#define TSS_E_CANCELED     (UINT32)(TSS_E_BASE + 0x016L)
+
+//
+// MessageId: TSS_E_PS_KEY_NOTFOUND
+//
+// MessageText:
+//
+// The key cannot be found in the persistent storage database.
+//
+#define TSS_E_PS_KEY_NOTFOUND    (UINT32)(TSS_E_BASE + 0x020L)
+//
+// MessageId: TSS_E_PS_KEY_EXISTS
+//
+// MessageText:
+//
+// The key already exists in the persistent storage database.
+//
+#define TSS_E_PS_KEY_EXISTS            (UINT32)(TSS_E_BASE + 0x021L)
+
+//
+// MessageId: TSS_E_PS_BAD_KEY_STATE
+//
+// MessageText:
+//
+// The key data set not valid in the persistent storage database.
+//
+#define TSS_E_PS_BAD_KEY_STATE         (UINT32)(TSS_E_BASE + 0x022L)
+
+
+//
+// error codes returned by specific TSS Service Provider Interface methods
+// offset TSS_TSPI_OFFSET
+//
+
+//
+// MessageId: TSS_E_INVALID_OBJECT_TYPE
+//
+// MessageText:
+//
+// Object type not valid for this operation.
+//
+#define TSS_E_INVALID_OBJECT_TYPE   (UINT32)(TSS_E_BASE + 0x101L)
+
+//
+// MessageId: TSS_E_NO_CONNECTION
+//
+// MessageText:
+//
+// Core Service connection doesn't exist.
+//
+#define TSS_E_NO_CONNECTION    (UINT32)(TSS_E_BASE + 0x102L)
+ 
+//
+// MessageId: TSS_E_CONNECTION_FAILED
+//
+// MessageText:
+//
+// Core Service connection failed.
+//
+#define TSS_E_CONNECTION_FAILED   (UINT32)(TSS_E_BASE + 0x103L)
+
+//
+// MessageId: TSS_E_CONNECTION_BROKEN
+//
+// MessageText:
+//
+// Communication with Core Service failed.
+//
+#define TSS_E_CONNECTION_BROKEN   (UINT32)(TSS_E_BASE + 0x104L)
+
+//
+// MessageId: TSS_E_HASH_INVALID_ALG
+//
+// MessageText:
+//
+// Invalid hash algorithm.
+//
+#define TSS_E_HASH_INVALID_ALG   (UINT32)(TSS_E_BASE + 0x105L)
+
+//
+// MessageId: TSS_E_HASH_INVALID_LENGTH
+//
+// MessageText:
+//
+// Hash length is inconsistent with hash algorithm.
+//
+#define TSS_E_HASH_INVALID_LENGTH   (UINT32)(TSS_E_BASE + 0x106L)
+
+//
+// MessageId: TSS_E_HASH_NO_DATA
+//
+// MessageText:
+//
+// Hash object has no internal hash value.
+//
+#define TSS_E_HASH_NO_DATA    (UINT32)(TSS_E_BASE + 0x107L)
+
+
+//
+// MessageId: TSS_E_INVALID_ATTRIB_FLAG
+//
+// MessageText:
+//
+// Flag value for attrib-functions inconsistent.
+//
+#define TSS_E_INVALID_ATTRIB_FLAG   (UINT32)(TSS_E_BASE + 0x109L)
+
+//
+// MessageId: TSS_E_INVALID_ATTRIB_SUBFLAG
+//
+// MessageText:
+//
+// Subflag value for attrib-functions inconsistent.
+//
+#define TSS_E_INVALID_ATTRIB_SUBFLAG  (UINT32)(TSS_E_BASE + 0x10AL)
+
+//
+// MessageId: TSS_E_INVALID_ATTRIB_DATA
+//
+// MessageText:
+//
+// Data for attrib-functions invalid.
+//
+#define TSS_E_INVALID_ATTRIB_DATA   (UINT32)(TSS_E_BASE + 0x10BL)
+
+//
+// MessageId: TSS_E_INVALID_OBJECT_INITFLAG
+//
+// MessageText:
+//
+// Wrong flag information for object creation.
+// 
+// The alternate spelling is supported to be compatible with a typo
+// in the 1.1b header files.
+//
+#define TSS_E_INVALID_OBJECT_INIT_FLAG  (UINT32)(TSS_E_BASE + 0x10CL)
+#define TSS_E_INVALID_OBJECT_INITFLAG   TSS_E_INVALID_OBJECT_INIT_FLAG
+ 
+//
+// MessageId: TSS_E_NO_PCRS_SET
+//
+// MessageText:
+//
+// No PCR register are selected or set.
+//
+#define TSS_E_NO_PCRS_SET    (UINT32)(TSS_E_BASE + 0x10DL)
+
+//
+// MessageId: TSS_E_KEY_NOT_LOADED
+//
+// MessageText:
+//
+// The addressed key is currently not loaded.
+//
+#define TSS_E_KEY_NOT_LOADED    (UINT32)(TSS_E_BASE + 0x10EL)
+ 
+//
+// MessageId: TSS_E_KEY_NOT_SET
+//
+// MessageText:
+//
+// No key information is currently available.
+//
+#define TSS_E_KEY_NOT_SET    (UINT32)(TSS_E_BASE + 0x10FL)
+      
+//
+// MessageId: TSS_E_VALIDATION_FAILED
+//
+// MessageText:
+//
+// Internal validation of data failed.
+//
+#define TSS_E_VALIDATION_FAILED   (UINT32)(TSS_E_BASE + 0x110L)
+
+//
+// MessageId: TSS_E_TSP_AUTHREQUIRED
+//
+// MessageText:
+//
+// Authorization is required.
+//
+#define TSS_E_TSP_AUTHREQUIRED   (UINT32)(TSS_E_BASE + 0x111L)
+
+//
+// MessageId: TSS_E_TSP_AUTH2REQUIRED
+//
+// MessageText:
+//
+// Multiple authorization is required.
+//
+#define TSS_E_TSP_AUTH2REQUIRED   (UINT32)(TSS_E_BASE + 0x112L)
+
+//
+// MessageId: TSS_E_TSP_AUTHFAIL
+//
+// MessageText:
+//
+// Authorization failed.
+//
+#define TSS_E_TSP_AUTHFAIL    (UINT32)(TSS_E_BASE + 0x113L)
+
+//
+// MessageId: TSS_E_TSP_AUTH2FAIL
+//
+// MessageText:
+//
+// Multiple authorization failed.
+//
+#define TSS_E_TSP_AUTH2FAIL    (UINT32)(TSS_E_BASE + 0x114L)
+ 
+//
+// MessageId: TSS_E_KEY_NO_MIGRATION_POLICY
+//
+// MessageText:
+//
+// There's no migration policy object set for the addressed key.
+//
+#define TSS_E_KEY_NO_MIGRATION_POLICY  (UINT32)(TSS_E_BASE + 0x115L) 
+
+//
+// MessageId: TSS_E_POLICY_NO_SECRET
+//
+// MessageText:
+//
+// No secret information is currently available for the addressed policy object.
+//
+#define TSS_E_POLICY_NO_SECRET   (UINT32)(TSS_E_BASE + 0x116L)
+
+//
+// MessageId: TSS_E_INVALID_OBJ_ACCESS
+//
+// MessageText:
+//
+// The operation failed due to an invalid object status.
+//
+#define TSS_E_INVALID_OBJ_ACCESS   (UINT32)(TSS_E_BASE + 0x117L)
+
+//
+// MessageId: TSS_E_INVALID_ENCSCHEME
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_INVALID_ENCSCHEME   (UINT32)(TSS_E_BASE + 0x118L)
+
+
+//
+// MessageId: TSS_E_INVALID_SIGSCHEME
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_INVALID_SIGSCHEME   (UINT32)(TSS_E_BASE + 0x119L)
+
+//
+// MessageId: TSS_E_ENC_INVALID_LENGTH
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_ENC_INVALID_LENGTH   (UINT32)(TSS_E_BASE + 0x120L)
+
+
+//
+// MessageId: TSS_E_ENC_NO_DATA
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_ENC_NO_DATA    (UINT32)(TSS_E_BASE + 0x121L)
+
+//
+// MessageId: TSS_E_ENC_INVALID_TYPE
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_ENC_INVALID_TYPE   (UINT32)(TSS_E_BASE + 0x122L)
+
+
+//
+// MessageId: TSS_E_INVALID_KEYUSAGE
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_INVALID_KEYUSAGE   (UINT32)(TSS_E_BASE + 0x123L)
+
+//
+// MessageId: TSS_E_VERIFICATION_FAILED
+//
+// MessageText:
+//
+// 
+//
+#define TSS_E_VERIFICATION_FAILED   (UINT32)(TSS_E_BASE + 0x124L)
+
+//
+// MessageId: TSS_E_HASH_NO_IDENTIFIER
+//
+// MessageText:
+//
+// Hash algorithm identifier not set.
+//
+#define TSS_E_HASH_NO_IDENTIFIER   (UINT32)(TSS_E_BASE + 0x125L)
+
+//
+// MessageId: TSS_E_INVALID_HANDLE
+//
+// MessageText:
+//
+//  An invalid handle
+//
+#define TSS_E_INVALID_HANDLE    (UINT32)(TSS_E_BASE + 0x126L)
+
+//
+// MessageId: TSS_E_SILENT_CONTEXT
+//
+// MessageText:
+//
+//  A silent context requires user input
+//
+#define TSS_E_SILENT_CONTEXT           (UINT32)(TSS_E_BASE + 0x127L)
+
+//
+// MessageId: TSS_E_EK_CHECKSUM
+//
+// MessageText:
+//
+// TSP is instructed to verify the EK checksum and it does not verify.
+//
+#define TSS_E_EK_CHECKSUM             (UINT32)(TSS_E_BASE + 0x128L)
+
+
+//
+// MessageId: TSS_E_DELGATION_NOTSET
+//
+// MessageText:
+//
+// The Policy object does not have a delegation blob set.
+//
+#define TSS_E_DELEGATION_NOTSET      (UINT32)(TSS_E_BASE + 0x129L)
+
+//
+// MessageId: TSS_E_DELFAMILY_NOTFOUND
+//
+// MessageText:
+//
+// The specified delegation family was not found
+//
+#define TSS_E_DELFAMILY_NOTFOUND       (UINT32)(TSS_E_BASE + 0x130L)
+
+//
+// MessageId: TSS_E_DELFAMILY_ROWEXISTS
+//
+// MessageText:
+//
+// The specified delegation family table row is already in use and
+// the command flags does not allow the TSS to overwrite the existing
+// entry.
+//
+#define TSS_E_DELFAMILY_ROWEXISTS    (UINT32)(TSS_E_BASE + 0x131L)
+
+//
+// MessageId: TSS_E_VERSION_MISMATCH
+//
+// MessageText:
+//
+// The specified delegation family table row is already in use and
+// the command flags does not allow the TSS to overwrite the existing
+// entry.
+//
+#define TSS_E_VERSION_MISMATCH       (UINT32)(TSS_E_BASE + 0x132L)
+
+//
+//  MessageId: TSS_E_DAA_AR_DECRYPTION_ERROR
+//
+//  Decryption of the encrypted pseudonym has failed, due to
+//  either a wrong secret key or a wrong decryption condition.
+//
+#define TSS_E_DAA_AR_DECRYPTION_ERROR             (UINT32)(TSS_E_BASE + 0x133L)
+
+//
+//  MessageId: TSS_E_DAA_AUTHENTICATION_ERROR
+//
+//  The TPM could not be authenticated by the DAA Issuer.
+//
+#define TSS_E_DAA_AUTHENTICATION_ERROR            (UINT32)(TSS_E_BASE + 0x134L)
+
+//
+//  MessageId: TSS_E_DAA_CHALLENGE_RESPONSE_ERROR
+//
+//  DAA Challenge response error.
+//
+#define TSS_E_DAA_CHALLENGE_RESPONSE_ERROR        (UINT32)(TSS_E_BASE + 0x135L)
+
+//
+//  MessageId: TSS_E_DAA_CREDENTIAL_PROOF_ERROR
+//
+//  Verification of the credential TSS_DAA_CRED_ISSUER issued by
+//  the DAA Issuer has failed.
+//
+#define TSS_E_DAA_CREDENTIAL_PROOF_ERROR          (UINT32)(TSS_E_BASE + 0x136L)
+
+//
+//  MessageId: TSS_E_DAA_CREDENTIAL_REQUEST_PROOF_ERROR
+//
+//  Verification of the platform's credential request
+//  TSS_DAA_CREDENTIAL_REQUEST has failed.
+//
+#define TSS_E_DAA_CREDENTIAL_REQUEST_PROOF_ERROR  (UINT32)(TSS_E_BASE + 0x137L)
+
+//
+//  MessageId: TSS_E_DAA_ISSUER_KEY_ERROR
+//
+//  DAA Issuer's authentication key chain could not be verified or
+//  is not correct.
+//
+#define TSS_E_DAA_ISSUER_KEY_ERROR                (UINT32)(TSS_E_BASE + 0x138L)
+
+//
+//  MessageId: TSS_E_DAA_PSEUDONYM_ERROR
+//
+//  While verifying the pseudonym of the TPM, the private key of the
+//  TPM was found on the rogue list.
+//
+#define TSS_E_DAA_PSEUDONYM_ERROR                 (UINT32)(TSS_E_BASE + 0x139L)
+
+//
+//  MessageId: TSS_E_INVALID_RESOURCE
+//
+//  Pointer to memory wrong.
+//
+#define TSS_E_INVALID_RESOURCE                    (UINT32)(TSS_E_BASE + 0x13AL)
+
+//
+//  MessageId: TSS_E_NV_AREA_EXIST
+//
+//  The NV area referenced already exists
+//
+#define TSS_E_NV_AREA_EXIST                       (UINT32)(TSS_E_BASE + 0x13BL)
+
+//
+//  MessageId: TSS_E_NV_AREA_NOT_EXIST
+//
+//  The NV area referenced doesn't exist
+//
+#define TSS_E_NV_AREA_NOT_EXIST                   (UINT32)(TSS_E_BASE + 0x13CL)
+
+//
+//  MessageId: TSS_E_TSP_TRANS_AUTHFAIL
+//
+//  The transport session authorization failed
+//
+#define TSS_E_TSP_TRANS_AUTHFAIL                  (UINT32)(TSS_E_BASE + 0x13DL)
+
+//
+//  MessageId: TSS_E_TSP_TRANS_AUTHREQUIRED
+//
+//  Authorization for transport is required
+//
+#define TSS_E_TSP_TRANS_AUTHREQUIRED              (UINT32)(TSS_E_BASE + 0x13EL)
+
+//
+//  MessageId: TSS_E_TSP_TRANS_NOT_EXCLUSIVE
+//
+//  A command was executed outside of an exclusive transport session.
+//
+#define TSS_E_TSP_TRANS_NOTEXCLUSIVE              (UINT32)(TSS_E_BASE + 0x13FL)
+
+//
+//  MessageId: TSS_E_TSP_TRANS_FAIL
+//
+//  Generic transport protection error.
+//
+#define TSS_E_TSP_TRANS_FAIL                     (UINT32)(TSS_E_BASE + 0x140L)
+
+//
+//  MessageId: TSS_E_TSP_TRANS_NO_PUBKEY
+//
+//  A command could not be executed through a logged transport session
+//  because the command used a key and the key's public key is not
+//  known to the TSP.
+//
+#define TSS_E_TSP_TRANS_NO_PUBKEY                (UINT32)(TSS_E_BASE + 0x141L)
+
+//
+//  MessageId: TSS_E_NO_ACTIVE_COUNTER
+//
+//  The TPM active counter has not been set yet.
+//
+#define TSS_E_NO_ACTIVE_COUNTER                  (UINT32)(TSS_E_BASE + 0x142L)
+
+
+#endif // __TSS_ERROR_H__
diff --git a/tss/include/tss/tss_error_basics.h b/tss/include/tss/tss_error_basics.h
index b9e965c..0ffa51c 100644
--- a/tss/include/tss/tss_error_basics.h
+++ b/tss/include/tss/tss_error_basics.h
@@ -1,59 +1,59 @@
-/*++

-

-Basic defines for TSS error return codes

- 

---*/

-

-#ifndef __TSS_ERROR_BASICS_H__

-#define __TSS_ERROR_BASICS_H__

-

-

-//

-// definitions for the various TSS-SW layers

-//

-#ifndef TSS_LAYER_TPM

-#define TSS_LAYER_TPM   0x0000L     // definition for TPM layer

-#endif // TSS_LAYER_TPM

-

-#define TSS_LAYER_TDDL   0x1000L     // definition for TDDL layer

-#define TSS_LAYER_TCS   0x2000L     // definition for TCS layer

-

-#ifndef TSS_LAYER_TSP

-#define TSS_LAYER_TSP   0x3000L     // definition for TSP layer

-#endif // TSS_LAYER_TSP

-

-

-//

-// definitions for the start points of layer specific error codes

-//

-#ifndef TSS_COMMON_OFFSET

-#define TSS_COMMON_OFFSET   0x000L     

-#endif // TSS_COMMON_OFFSET

-

-#define TSS_TDDL_OFFSET    0x080L     

-#define TSS_TCSI_OFFSET    0x0C0L     

-

-#ifndef TSS_TSPI_OFFSET

-#define TSS_TSPI_OFFSET    0x100L     

-#endif // TSS_TSPI_OFFSET

-

-#ifndef TSS_VENDOR_OFFSET

-#define TSS_VENDOR_OFFSET   0x800L       

-#endif // TSS_VENDOR_OFFSET

- 

-// do not exceed TSS_MAX_ERROR for vendor specific code values:               

-#ifndef TSS_MAX_ERROR              

-#define TSS_MAX_ERROR    0xFFFL 

-#endif // TSS_MAX_ERROR

-

-

-/* Macros for the construction and interpretation of error codes */

-#define TPM_ERROR(code)        (code)

-#define TDDL_ERROR(code)       ((code) ? (TSS_LAYER_TDDL | (code)) : (code))

-#define TCS_ERROR(code)        ((code) ? (TSS_LAYER_TCS | (code)) : (code))

-#define TSP_ERROR(code)        ((code) ? (TSS_LAYER_TSP | (code)) : (code))

-#define ERROR_LAYER(error)     ((error) & 0xf000)

-#define ERROR_CODE(error)      ((error) & 0x0fff)

-

-#endif // __TSS_ERROR_BASICS_H__

-

+/*++
+
+Basic defines for TSS error return codes
+ 
+--*/
+
+#ifndef __TSS_ERROR_BASICS_H__
+#define __TSS_ERROR_BASICS_H__
+
+
+//
+// definitions for the various TSS-SW layers
+//
+#ifndef TSS_LAYER_TPM
+#define TSS_LAYER_TPM   0x0000L     // definition for TPM layer
+#endif // TSS_LAYER_TPM
+
+#define TSS_LAYER_TDDL   0x1000L     // definition for TDDL layer
+#define TSS_LAYER_TCS   0x2000L     // definition for TCS layer
+
+#ifndef TSS_LAYER_TSP
+#define TSS_LAYER_TSP   0x3000L     // definition for TSP layer
+#endif // TSS_LAYER_TSP
+
+
+//
+// definitions for the start points of layer specific error codes
+//
+#ifndef TSS_COMMON_OFFSET
+#define TSS_COMMON_OFFSET   0x000L     
+#endif // TSS_COMMON_OFFSET
+
+#define TSS_TDDL_OFFSET    0x080L     
+#define TSS_TCSI_OFFSET    0x0C0L     
+
+#ifndef TSS_TSPI_OFFSET
+#define TSS_TSPI_OFFSET    0x100L     
+#endif // TSS_TSPI_OFFSET
+
+#ifndef TSS_VENDOR_OFFSET
+#define TSS_VENDOR_OFFSET   0x800L       
+#endif // TSS_VENDOR_OFFSET
+ 
+// do not exceed TSS_MAX_ERROR for vendor specific code values:               
+#ifndef TSS_MAX_ERROR              
+#define TSS_MAX_ERROR    0xFFFL 
+#endif // TSS_MAX_ERROR
+
+
+/* Macros for the construction and interpretation of error codes */
+#define TPM_ERROR(code)        (code)
+#define TDDL_ERROR(code)       ((code) ? (TSS_LAYER_TDDL | (code)) : (code))
+#define TCS_ERROR(code)        ((code) ? (TSS_LAYER_TCS | (code)) : (code))
+#define TSP_ERROR(code)        ((code) ? (TSS_LAYER_TSP | (code)) : (code))
+#define ERROR_LAYER(error)     ((error) & 0xf000)
+#define ERROR_CODE(error)      ((error) & 0x0fff)
+
+#endif // __TSS_ERROR_BASICS_H__
+
diff --git a/tss/include/tss/tss_structs.h b/tss/include/tss/tss_structs.h
index 54713ba..8b769e4 100644
--- a/tss/include/tss/tss_structs.h
+++ b/tss/include/tss/tss_structs.h
@@ -1,653 +1,653 @@
-/*++

-

-TSS structures for TSS

-

-*/

-

-#ifndef __TSS_STRUCTS_H__

-#define __TSS_STRUCTS_H__

-

-#include <platform.h>

-#include <tss_typedef.h>

-#include <tpm.h>

-

-typedef struct tdTSS_VERSION 

-{

-    BYTE   bMajor;

-    BYTE   bMinor;

-    BYTE   bRevMajor;

-    BYTE   bRevMinor;

-} TSS_VERSION;

-

-typedef struct tdTSS_PCR_EVENT 

-{

-    TSS_VERSION   versionInfo;

-    UINT32        ulPcrIndex;

-    TSS_EVENTTYPE eventType;

-    UINT32        ulPcrValueLength;

-#ifdef __midl

-    [size_is(ulPcrValueLength)] 

-#endif

-    BYTE*         rgbPcrValue;

-    UINT32        ulEventLength;

-#ifdef __midl

-    [size_is(ulEventLength)] 

-#endif 

-    BYTE*         rgbEvent;

-} TSS_PCR_EVENT;

-

-

-typedef struct tdTSS_EVENT_CERT

-{

-    TSS_VERSION       versionInfo;

-    UINT32    ulCertificateHashLength;

-#ifdef __midl

-    [size_is(ulCertificateHashLength)] 

-#endif

-    BYTE*     rgbCertificateHash;

-    UINT32    ulEntityDigestLength;

-#ifdef __midl

-    [size_is(ulEntityDigestLength)] 

-#endif

-    BYTE*     rgbentityDigest;

-    TSS_BOOL  fDigestChecked;

-    TSS_BOOL  fDigestVerified;

-    UINT32    ulIssuerLength;

-#ifdef __midl

-    [size_is(ulIssuerLength)]

-#endif

-    BYTE*     rgbIssuer;

-} TSS_EVENT_CERT;

-

-typedef struct tdTSS_UUID 

-{

-    UINT32  ulTimeLow;

-    UINT16  usTimeMid;

-    UINT16  usTimeHigh;

-    BYTE   bClockSeqHigh;

-    BYTE   bClockSeqLow;

-    BYTE   rgbNode[6];

-} TSS_UUID;

-

-typedef struct tdTSS_KM_KEYINFO 

-{

-    TSS_VERSION  versionInfo;

-    TSS_UUID     keyUUID;

-    TSS_UUID     parentKeyUUID;

-    BYTE         bAuthDataUsage;   // whether auth is needed to load child keys

-    TSS_BOOL     fIsLoaded;           // TRUE: actually loaded in TPM

-    UINT32       ulVendorDataLength;  // may be 0

-#ifdef __midl

-    [size_is(ulVendorDataLength)]

-#endif

-    BYTE        *rgbVendorData;       // may be NULL

-} TSS_KM_KEYINFO;

-

-

-typedef struct tdTSS_KM_KEYINFO2

-{

-    TSS_VERSION  versionInfo;

-    TSS_UUID     keyUUID;

-    TSS_UUID     parentKeyUUID;

-    BYTE         bAuthDataUsage;   // whether auth is needed to load child keys

-    TSS_FLAG     persistentStorageType;

-    TSS_FLAG     persistentStorageTypeParent;

-    TSS_BOOL     fIsLoaded;           // TRUE: actually loaded in TPM

-    UINT32       ulVendorDataLength;  // may be 0

-#ifdef __midl

-    [size_is(ulVendorDataLength)]

-#endif

-    BYTE        *rgbVendorData;       // may be NULL

-} TSS_KM_KEYINFO2;

-

-

-typedef struct tdTSS_NONCE

-{

-    BYTE  nonce[TPM_SHA1BASED_NONCE_LEN];

-} TSS_NONCE;

-

-

-typedef struct tdTSS_VALIDATION

-{ 

-    TSS_VERSION  versionInfo;

-    UINT32       ulExternalDataLength;

-#ifdef __midl

-    [size_is(ulExternalDataLength)]

-#endif

-    BYTE*        rgbExternalData;

-    UINT32       ulDataLength;

-#ifdef __midl

-    [size_is(ulDataLength)]

-#endif

-    BYTE*     rgbData;

-    UINT32    ulValidationDataLength;

-#ifdef __midl

-    [size_is(ulValidationDataLength)]

-#endif

-    BYTE*     rgbValidationData;

-} TSS_VALIDATION;

-

-

-typedef struct tdTSS_CALLBACK

-{

-    PVOID            callback;

-    PVOID            appData;

-    TSS_ALGORITHM_ID alg;

-} TSS_CALLBACK;

-

-

-typedef struct tdTSS_DAA_PK

-{

-    TSS_VERSION versionInfo;

-    UINT32      modulusLength;

-#ifdef __midl

-    [size_is(modulusLength)] 

-#endif

-    BYTE*       modulus;

-    UINT32      capitalSLength;

-#ifdef __midl

-    [size_is(capitalSLength)] 

-#endif

-    BYTE*       capitalS;

-    UINT32      capitalZLength;

-#ifdef __midl

-    [size_is(capitalZLength)] 

-#endif

-    BYTE*       capitalZ;

-    UINT32      capitalR0Length;

-#ifdef __midl

-    [size_is(capitalR0Length)] 

-#endif

-    BYTE*       capitalR0;

-    UINT32      capitalR1Length;

-#ifdef __midl

-    [size_is(capitalR1Length)] 

-#endif

-    BYTE*       capitalR1;

-    UINT32      gammaLength;

-#ifdef __midl

-    [size_is(gammaLength)] 

-#endif

-    BYTE*       gamma;

-    UINT32      capitalGammaLength;

-#ifdef __midl

-    [size_is(capitalGammaLength)] 

-#endif

-    BYTE*       capitalGamma;

-    UINT32      rhoLength;

-#ifdef __midl

-    [size_is(rhoLength)] 

-#endif

-    BYTE*       rho;

-    UINT32      capitalYLength;         // Length of first dimenstion

-    UINT32      capitalYLength2;        // Length of second dimension

-#ifdef __midl

-    [size_is(capitalYLength,capitalYLength2)] 

-#endif

-    BYTE**      capitalY;

-    UINT32      capitalYPlatformLength;

-    UINT32      issuerBaseNameLength;

-#ifdef __midl

-    [size_is(issuerBaseName)] 

-#endif

-    BYTE*       issuerBaseName;

-    UINT32      numPlatformAttributes;

-    UINT32      numIssuerAttributes;

-} TSS_DAA_PK;

-

-typedef struct tdTSS_DAA_PK_PROOF

-{

-    TSS_VERSION versionInfo;

-    UINT32      challengeLength;

-#ifdef __midl

-    [size_is(challengeLength)] 

-#endif

-    BYTE*       challenge;

-    UINT32      responseLength;         // Length of first dimension

-    UINT32      responseLength2;        // Length of second dimension

-#ifdef __midl

-    [size_is(responseLength,responseLength2)] 

-#endif

-    BYTE**      response;

-} TSS_DAA_PK_PROOF;

-

-typedef struct tdTSS_DAA_SK

-{

-    TSS_VERSION versionInfo;

-    UINT32      productPQprimeLength;

-#ifdef __midl

-    [size_is(productPQprimeLength)] 

-#endif

-    BYTE*       productPQprime;

-} TSS_DAA_SK;

-

-

-typedef struct tdTSS_DAA_KEY_PAIR

-{

-    TSS_VERSION versionInfo;

-    TSS_DAA_SK  secretKey;

-    TSS_DAA_PK  publicKey;

-} TSS_DAA_KEY_PAIR;

-

-typedef struct tdTSS_DAA_AR_PK

-{

-    TSS_VERSION versionInfo;

-    UINT32      etaLength;

-#ifdef __midl

-    [size_is(etaLength)] 

-#endif

-    BYTE*       eta;

-    UINT32      lambda1Length;

-#ifdef __midl

-    [size_is(lambda1Length)] 

-#endif

-    BYTE*       lambda1;

-    UINT32      lambda2Length;

-#ifdef __midl

-    [size_is(lambda2Length)] 

-#endif

-    BYTE*       lambda2;

-    UINT32      lambda3Length;

-#ifdef __midl

-    [size_is(lambda3Length)] 

-#endif

-    BYTE*       lambda3;

-} TSS_DAA_AR_PK;

-

-typedef struct tdTSS_DAA_AR_SK

-{

-    TSS_VERSION versionInfo;

-    UINT32      x0Length;

-#ifdef __midl

-    [size_is(x0Length)] 

-#endif

-    BYTE*       x0;

-    UINT32      x1Length;

-#ifdef __midl

-    [size_is(x1Length)] 

-#endif

-    BYTE*       x1;

-    UINT32      x2Length;

-#ifdef __midl

-    [size_is(x2Length)] 

-#endif

-    BYTE*       x2;

-    UINT32      x3Length;

-#ifdef __midl

-    [size_is(x3Length)] 

-#endif

-    BYTE*       x3;

-    UINT32      x4Length;

-#ifdef __midl

-    [size_is(x4Length)] 

-#endif

-    BYTE*       x4;

-    UINT32      x5Length;

-#ifdef __midl

-    [size_is(x5Length)] 

-#endif

-    BYTE*       x5;

-} TSS_DAA_AR_SK;

-

-typedef struct tdTSS_DAA_AR_KEY_PAIR

-{

-    TSS_VERSION   versionInfo;

-    TSS_DAA_AR_SK secretKey;

-    TSS_DAA_AR_PK publicKey;

-} TSS_DAA_AR_KEY_PAIR;

-

-typedef struct tdTSS_DAA_CRED_ISSUER

-{

-    TSS_VERSION versionInfo;

-    UINT32      capitalALength;

-#ifdef __midl

-    [size_is(capitalALength)] 

-#endif

-    BYTE*       capitalA;

-    UINT32      eLength;

-#ifdef __midl

-    [size_is(eLength)] 

-#endif

-    BYTE*       e;

-    UINT32      vPrimePrimeLength;

-#ifdef __midl

-    [size_is(vPrimePrimeLength)] 

-#endif

-    BYTE*       vPrimePrime;

-    UINT32      attributesIssuerLength;         // Length of first dimension

-    UINT32      attributesIssuerLength2;        // Length of second dimension

-#ifdef __midl

-    [size_is(attributesIssuerLength,attributesIssuerLength2)] 

-#endif

-    BYTE**      attributesIssuer;

-    UINT32      cPrimeLength;

-#ifdef __midl

-    [size_is(cPrimeLength)] 

-#endif

-    BYTE*       cPrime;

-    UINT32      sELength;

-#ifdef __midl

-    [size_is(sELength)] 

-#endif

-    BYTE*       sE;

-} TSS_DAA_CRED_ISSUER;

-

-typedef struct tdTSS_DAA_CREDENTIAL

-{

-    TSS_VERSION versionInfo;

-    UINT32      capitalALength;

-#ifdef __midl

-    [size_is(capitalALength)] 

-#endif

-    BYTE*       capitalA;

-    UINT32      exponentLength;

-#ifdef __midl

-    [size_is(exponentLength)] 

-#endif

-    BYTE*       exponent;

-    UINT32      vBar0Length;

-#ifdef __midl

-    [size_is(vBar0Length)] 

-#endif

-    BYTE*       vBar0;

-    UINT32      vBar1Length;

-#ifdef __midl

-    [size_is(vBar1Length)] 

-#endif

-    BYTE*       vBar1;

-    UINT32      attributesLength;       // Length of first dimension

-    UINT32      attributesLength2;      // Length of second dimension

-#ifdef __midl

-    [size_is(attributesLength,attributesLength2)] 

-#endif

-    BYTE**      attributes;

-    TSS_DAA_PK  issuerPK;

-    UINT32      tpmSpecificEncLength;

-#ifdef __midl

-    [size_is(tpmSpecificEncLength)]

-#endif

-    BYTE*       tpmSpecificEnc;

-    UINT32      daaCounter;

-} TSS_DAA_CREDENTIAL;

-

-typedef struct tdTSS_DAA_ATTRIB_COMMIT

-{

-    TSS_VERSION versionInfo;

-    UINT32      betaLength;

-#ifdef __midl

-    [size_is(betaLength)]

-#endif

-    BYTE*       beta;

-    UINT32      sMuLength;

-#ifdef __midl

-    [size_is(sMuLength)]

-#endif

-    BYTE*       sMu;

-} TSS_DAA_ATTRIB_COMMIT;

-

-typedef struct tdTSS_DAA_CREDENTIAL_REQUEST

-{

-    TSS_VERSION versionInfo;

-    UINT32      capitalULength;

-#ifdef __midl

-    [size_is(capitalULength)]

-#endif

-    BYTE*       capitalU;

-    UINT32      capitalNiLength;

-#ifdef __midl

-    [size_is(capitalNiLength)]

-#endif

-    BYTE*       capitalNi;

-    UINT32      authenticationProofLength;

-#ifdef __midl

-    [size_is(authenticationProofLength)]

-#endif

-    BYTE*       authenticationProof;

-    UINT32      challengeLength;

-#ifdef __midl

-    [size_is(challengeLength)]

-#endif

-    BYTE*       challenge;

-    UINT32      nonceTpmLength;

-#ifdef __midl

-    [size_is(nonceTpmLength)]

-#endif

-    BYTE*       nonceTpm;

-    UINT32      noncePlatformLength;

-#ifdef __midl

-    [size_is(noncePlatformLength)]

-#endif

-    BYTE*       noncePlatform;

-    UINT32      sF0Length;

-#ifdef __midl

-    [size_is(sF0Length)]

-#endif

-    BYTE*       sF0;

-    UINT32      sF1Length;

-#ifdef __midl

-    [size_is(sF1Length)]

-#endif

-    BYTE*       sF1;

-    UINT32      sVprimeLength;

-#ifdef __midl

-    [size_is(sVprimeLength)]

-#endif

-    BYTE*       sVprime;

-    UINT32      sVtildePrimeLength;

-#ifdef __midl

-    [size_is(sVtildePrimeLength)]

-#endif

-    BYTE*       sVtildePrime;

-    UINT32      sALength;       // Length of first dimension

-    UINT32      sALength2;      // Length of second dimension

-#ifdef __midl

-    [size_is(sALength,sALength2)]

-#endif

-    BYTE**      sA;

-    UINT32      attributeCommitmentsLength;

-    TSS_DAA_ATTRIB_COMMIT* attributeCommitments;

-} TSS_DAA_CREDENTIAL_REQUEST;

-

-typedef struct tdTSS_DAA_SELECTED_ATTRIB

-{

-    TSS_VERSION versionInfo;

-    UINT32      indicesListLength;

-#ifdef __midl

-    [size_is(indicesListLength)]

-#endif

-    TSS_BOOL*   indicesList;

-} TSS_DAA_SELECTED_ATTRIB;

-

-typedef struct tdTSS_DAA_PSEUDONYM

-{

-    TSS_VERSION versionInfo;

-    TSS_FLAG    payloadFlag;

-    UINT32      payloadLength;

-#ifdef __midl

-    [size_is(payloadLength)]

-#endif

-    BYTE*       payload;

-} TSS_DAA_PSEUDONYM;

-

-typedef struct tdTSS_DAA_PSEUDONYM_PLAIN

-{

-    TSS_VERSION versionInfo;

-    UINT32      capitalNvLength;

-#ifdef __midl

-    [size_is(capitalNvLength)]

-#endif

-    BYTE*       capitalNv;

-} TSS_DAA_PSEUDONYM_PLAIN;

-

-typedef struct tdTSS_DAA_PSEUDONYM_ENCRYPTED

-{

-    TSS_VERSION versionInfo;

-    UINT32      delta1Length;

-#ifdef __midl

-    [size_is(delta1Length)]

-#endif

-    BYTE*       delta1;

-    UINT32      delta2Length;

-#ifdef __midl

-    [size_is(delta2Length)]

-#endif

-    BYTE*       delta2;

-    UINT32      delta3Length;

-#ifdef __midl

-    [size_is(delta3Length)]

-#endif

-    BYTE*       delta3;

-    UINT32      delta4Length;

-#ifdef __midl

-    [size_is(delta4Length)]

-#endif

-    BYTE*       delta4;

-    UINT32      sTauLength;

-#ifdef __midl

-    [size_is(sTauLength)]

-#endif

-    BYTE*       sTau;

-} TSS_DAA_PSEUDONYM_ENCRYPTED;

-

-typedef struct tdTSS_DAA_SIGN_CALLBACK

-{

-    TSS_VERSION versionInfo;

-    TSS_HHASH   challenge;

-    TSS_FLAG    payloadFlag;

-    UINT32      payloadLength;

-#ifdef __midl

-    [size_is(payloadLength)]

-#endif

-    BYTE*       payload;

-} TSS_DAA_SIGN_CALLBACK;

-

-typedef struct tdTSS_DAA_SIGNATURE

-{

-    TSS_VERSION            versionInfo;

-    UINT32                 zetaLength;

-#ifdef __midl

-    [size_is(zetaLength)]

-#endif

-    BYTE*                  zeta;

-    UINT32                 capitalTLength;

-#ifdef __midl

-    [size_is(capitalTLength)]

-#endif

-    BYTE*                  capitalT;

-    UINT32                 challengeLength;

-#ifdef __midl

-    [size_is(challengeLength)]

-#endif

-    BYTE*                  challenge;

-    UINT32                 nonceTpmLength;

-#ifdef __midl

-    [size_is(nonceTpmLength)]

-#endif

-    BYTE*                  nonceTpm;

-    UINT32                 sVLength;

-#ifdef __midl

-    [size_is(sVLength)]

-#endif

-    BYTE*                  sV;

-    UINT32                 sF0Length;

-#ifdef __midl

-    [size_is(sF0Length)]

-#endif

-    BYTE*                  sF0;

-    UINT32                 sF1Length;

-#ifdef __midl

-    [size_is(sF1Length)]

-#endif

-    BYTE*                  sF1;

-    UINT32                 sELength;

-#ifdef __midl

-    [size_is(sELength)]

-#endif

-    BYTE*                  sE;

-    UINT32                 sALength;    // Length of first dimension

-    UINT32                 sALength2;   // Length of second dimension

-#ifdef __midl

-    [size_is(sALength,sALength2)]

-#endif

-    BYTE**                 sA;

-    UINT32                 attributeCommitmentsLength;

-#ifdef __midl

-    [size_is(attributeCommitmentsLength)]

-#endif

-    TSS_DAA_ATTRIB_COMMIT* attributeCommitments;

-    TSS_DAA_PSEUDONYM      signedPseudonym;

-    TSS_DAA_SIGN_CALLBACK  callbackResult;

-} TSS_DAA_SIGNATURE;

-

-typedef struct tdTSS_DAA_IDENTITY_PROOF

-{

-    TSS_VERSION versionInfo;

-    UINT32      endorsementLength;

-#ifdef __midl

-    [size_is(endorsementLength)]

-#endif

-    BYTE*       endorsementCredential;

-    UINT32      platformLength;

-#ifdef __midl

-    [size_is(platformLength)]

-#endif

-    BYTE*       platform;

-    UINT32      conformanceLength;

-#ifdef __midl

-    [size_is(conformanceLength)]

-#endif

-    BYTE*       conformance;

-} TSS_DAA_IDENTITY_PROOF;

-

-

-////////////////////////////////////////////////////////////////////

-

-typedef UINT32 TSS_FAMILY_ID;

-typedef BYTE   TSS_DELEGATION_LABEL;

-// Values are TSS_DELEGATIONTYPE_KEY or TSS_DELEGATIONTYPE_OWNER

-typedef UINT32 TSS_DELEGATION_TYPE;

-

-typedef struct tdTSS_PCR_INFO_SHORT

-{

-    UINT32               sizeOfSelect;

-#ifdef __midl

-    [size_is(sizeOfSelect)]

-#endif

-    BYTE                *selection;

-    BYTE                 localityAtRelease;

-    UINT32               sizeOfDigestAtRelease;

-#ifdef __midl

-    [size_is(sizeOfDigestAtRelease)]

-#endif

-    BYTE                *digestAtRelease;

-} TSS_PCR_INFO_SHORT;

-

-typedef struct tdTSS_FAMILY_TABLE_ENTRY

-{

-    TSS_FAMILY_ID        familyID;

-    TSS_DELEGATION_LABEL label;

-    UINT32               verificationCount;

-    TSS_BOOL             enabled;

-    TSS_BOOL             locked;

-} TSS_FAMILY_TABLE_ENTRY;

-

-typedef struct tdTSS_DELEGATION_TABLE_ENTRY

-{

-    UINT32               tableIndex;

-    TSS_DELEGATION_LABEL label;

-    TSS_PCR_INFO_SHORT   pcrInfo;

-    UINT32               per1;

-    UINT32               per2;

-    TSS_FAMILY_ID        familyID;

-    UINT32               verificationCount;

-} TSS_DELEGATION_TABLE_ENTRY;

-

-typedef struct tdTSS_PLATFORM_CLASS

-{

-    UINT32 platformClassSimpleIdentifier;

-    UINT32 platformClassURISize;

-    BYTE*  pPlatformClassURI;

-} TSS_PLATFORM_CLASS;

-

-#endif // __TSS_STRUCTS_H__

-

+/*++
+
+TSS structures for TSS
+
+*/
+
+#ifndef __TSS_STRUCTS_H__
+#define __TSS_STRUCTS_H__
+
+#include <tss/platform.h>
+#include <tss/tss_typedef.h>
+#include <tss/tpm.h>
+
+typedef struct tdTSS_VERSION 
+{
+    BYTE   bMajor;
+    BYTE   bMinor;
+    BYTE   bRevMajor;
+    BYTE   bRevMinor;
+} TSS_VERSION;
+
+typedef struct tdTSS_PCR_EVENT 
+{
+    TSS_VERSION   versionInfo;
+    UINT32        ulPcrIndex;
+    TSS_EVENTTYPE eventType;
+    UINT32        ulPcrValueLength;
+#ifdef __midl
+    [size_is(ulPcrValueLength)] 
+#endif
+    BYTE*         rgbPcrValue;
+    UINT32        ulEventLength;
+#ifdef __midl
+    [size_is(ulEventLength)] 
+#endif 
+    BYTE*         rgbEvent;
+} TSS_PCR_EVENT;
+
+
+typedef struct tdTSS_EVENT_CERT
+{
+    TSS_VERSION       versionInfo;
+    UINT32    ulCertificateHashLength;
+#ifdef __midl
+    [size_is(ulCertificateHashLength)] 
+#endif
+    BYTE*     rgbCertificateHash;
+    UINT32    ulEntityDigestLength;
+#ifdef __midl
+    [size_is(ulEntityDigestLength)] 
+#endif
+    BYTE*     rgbentityDigest;
+    TSS_BOOL  fDigestChecked;
+    TSS_BOOL  fDigestVerified;
+    UINT32    ulIssuerLength;
+#ifdef __midl
+    [size_is(ulIssuerLength)]
+#endif
+    BYTE*     rgbIssuer;
+} TSS_EVENT_CERT;
+
+typedef struct tdTSS_UUID 
+{
+    UINT32  ulTimeLow;
+    UINT16  usTimeMid;
+    UINT16  usTimeHigh;
+    BYTE   bClockSeqHigh;
+    BYTE   bClockSeqLow;
+    BYTE   rgbNode[6];
+} TSS_UUID;
+
+typedef struct tdTSS_KM_KEYINFO 
+{
+    TSS_VERSION  versionInfo;
+    TSS_UUID     keyUUID;
+    TSS_UUID     parentKeyUUID;
+    BYTE         bAuthDataUsage;   // whether auth is needed to load child keys
+    TSS_BOOL     fIsLoaded;           // TRUE: actually loaded in TPM
+    UINT32       ulVendorDataLength;  // may be 0
+#ifdef __midl
+    [size_is(ulVendorDataLength)]
+#endif
+    BYTE        *rgbVendorData;       // may be NULL
+} TSS_KM_KEYINFO;
+
+
+typedef struct tdTSS_KM_KEYINFO2
+{
+    TSS_VERSION  versionInfo;
+    TSS_UUID     keyUUID;
+    TSS_UUID     parentKeyUUID;
+    BYTE         bAuthDataUsage;   // whether auth is needed to load child keys
+    TSS_FLAG     persistentStorageType;
+    TSS_FLAG     persistentStorageTypeParent;
+    TSS_BOOL     fIsLoaded;           // TRUE: actually loaded in TPM
+    UINT32       ulVendorDataLength;  // may be 0
+#ifdef __midl
+    [size_is(ulVendorDataLength)]
+#endif
+    BYTE        *rgbVendorData;       // may be NULL
+} TSS_KM_KEYINFO2;
+
+
+typedef struct tdTSS_NONCE
+{
+    BYTE  nonce[TPM_SHA1BASED_NONCE_LEN];
+} TSS_NONCE;
+
+
+typedef struct tdTSS_VALIDATION
+{ 
+    TSS_VERSION  versionInfo;
+    UINT32       ulExternalDataLength;
+#ifdef __midl
+    [size_is(ulExternalDataLength)]
+#endif
+    BYTE*        rgbExternalData;
+    UINT32       ulDataLength;
+#ifdef __midl
+    [size_is(ulDataLength)]
+#endif
+    BYTE*     rgbData;
+    UINT32    ulValidationDataLength;
+#ifdef __midl
+    [size_is(ulValidationDataLength)]
+#endif
+    BYTE*     rgbValidationData;
+} TSS_VALIDATION;
+
+
+typedef struct tdTSS_CALLBACK
+{
+    PVOID            callback;
+    PVOID            appData;
+    TSS_ALGORITHM_ID alg;
+} TSS_CALLBACK;
+
+
+typedef struct tdTSS_DAA_PK
+{
+    TSS_VERSION versionInfo;
+    UINT32      modulusLength;
+#ifdef __midl
+    [size_is(modulusLength)] 
+#endif
+    BYTE*       modulus;
+    UINT32      capitalSLength;
+#ifdef __midl
+    [size_is(capitalSLength)] 
+#endif
+    BYTE*       capitalS;
+    UINT32      capitalZLength;
+#ifdef __midl
+    [size_is(capitalZLength)] 
+#endif
+    BYTE*       capitalZ;
+    UINT32      capitalR0Length;
+#ifdef __midl
+    [size_is(capitalR0Length)] 
+#endif
+    BYTE*       capitalR0;
+    UINT32      capitalR1Length;
+#ifdef __midl
+    [size_is(capitalR1Length)] 
+#endif
+    BYTE*       capitalR1;
+    UINT32      gammaLength;
+#ifdef __midl
+    [size_is(gammaLength)] 
+#endif
+    BYTE*       gamma;
+    UINT32      capitalGammaLength;
+#ifdef __midl
+    [size_is(capitalGammaLength)] 
+#endif
+    BYTE*       capitalGamma;
+    UINT32      rhoLength;
+#ifdef __midl
+    [size_is(rhoLength)] 
+#endif
+    BYTE*       rho;
+    UINT32      capitalYLength;         // Length of first dimenstion
+    UINT32      capitalYLength2;        // Length of second dimension
+#ifdef __midl
+    [size_is(capitalYLength,capitalYLength2)] 
+#endif
+    BYTE**      capitalY;
+    UINT32      capitalYPlatformLength;
+    UINT32      issuerBaseNameLength;
+#ifdef __midl
+    [size_is(issuerBaseName)] 
+#endif
+    BYTE*       issuerBaseName;
+    UINT32      numPlatformAttributes;
+    UINT32      numIssuerAttributes;
+} TSS_DAA_PK;
+
+typedef struct tdTSS_DAA_PK_PROOF
+{
+    TSS_VERSION versionInfo;
+    UINT32      challengeLength;
+#ifdef __midl
+    [size_is(challengeLength)] 
+#endif
+    BYTE*       challenge;
+    UINT32      responseLength;         // Length of first dimension
+    UINT32      responseLength2;        // Length of second dimension
+#ifdef __midl
+    [size_is(responseLength,responseLength2)] 
+#endif
+    BYTE**      response;
+} TSS_DAA_PK_PROOF;
+
+typedef struct tdTSS_DAA_SK
+{
+    TSS_VERSION versionInfo;
+    UINT32      productPQprimeLength;
+#ifdef __midl
+    [size_is(productPQprimeLength)] 
+#endif
+    BYTE*       productPQprime;
+} TSS_DAA_SK;
+
+
+typedef struct tdTSS_DAA_KEY_PAIR
+{
+    TSS_VERSION versionInfo;
+    TSS_DAA_SK  secretKey;
+    TSS_DAA_PK  publicKey;
+} TSS_DAA_KEY_PAIR;
+
+typedef struct tdTSS_DAA_AR_PK
+{
+    TSS_VERSION versionInfo;
+    UINT32      etaLength;
+#ifdef __midl
+    [size_is(etaLength)] 
+#endif
+    BYTE*       eta;
+    UINT32      lambda1Length;
+#ifdef __midl
+    [size_is(lambda1Length)] 
+#endif
+    BYTE*       lambda1;
+    UINT32      lambda2Length;
+#ifdef __midl
+    [size_is(lambda2Length)] 
+#endif
+    BYTE*       lambda2;
+    UINT32      lambda3Length;
+#ifdef __midl
+    [size_is(lambda3Length)] 
+#endif
+    BYTE*       lambda3;
+} TSS_DAA_AR_PK;
+
+typedef struct tdTSS_DAA_AR_SK
+{
+    TSS_VERSION versionInfo;
+    UINT32      x0Length;
+#ifdef __midl
+    [size_is(x0Length)] 
+#endif
+    BYTE*       x0;
+    UINT32      x1Length;
+#ifdef __midl
+    [size_is(x1Length)] 
+#endif
+    BYTE*       x1;
+    UINT32      x2Length;
+#ifdef __midl
+    [size_is(x2Length)] 
+#endif
+    BYTE*       x2;
+    UINT32      x3Length;
+#ifdef __midl
+    [size_is(x3Length)] 
+#endif
+    BYTE*       x3;
+    UINT32      x4Length;
+#ifdef __midl
+    [size_is(x4Length)] 
+#endif
+    BYTE*       x4;
+    UINT32      x5Length;
+#ifdef __midl
+    [size_is(x5Length)] 
+#endif
+    BYTE*       x5;
+} TSS_DAA_AR_SK;
+
+typedef struct tdTSS_DAA_AR_KEY_PAIR
+{
+    TSS_VERSION   versionInfo;
+    TSS_DAA_AR_SK secretKey;
+    TSS_DAA_AR_PK publicKey;
+} TSS_DAA_AR_KEY_PAIR;
+
+typedef struct tdTSS_DAA_CRED_ISSUER
+{
+    TSS_VERSION versionInfo;
+    UINT32      capitalALength;
+#ifdef __midl
+    [size_is(capitalALength)] 
+#endif
+    BYTE*       capitalA;
+    UINT32      eLength;
+#ifdef __midl
+    [size_is(eLength)] 
+#endif
+    BYTE*       e;
+    UINT32      vPrimePrimeLength;
+#ifdef __midl
+    [size_is(vPrimePrimeLength)] 
+#endif
+    BYTE*       vPrimePrime;
+    UINT32      attributesIssuerLength;         // Length of first dimension
+    UINT32      attributesIssuerLength2;        // Length of second dimension
+#ifdef __midl
+    [size_is(attributesIssuerLength,attributesIssuerLength2)] 
+#endif
+    BYTE**      attributesIssuer;
+    UINT32      cPrimeLength;
+#ifdef __midl
+    [size_is(cPrimeLength)] 
+#endif
+    BYTE*       cPrime;
+    UINT32      sELength;
+#ifdef __midl
+    [size_is(sELength)] 
+#endif
+    BYTE*       sE;
+} TSS_DAA_CRED_ISSUER;
+
+typedef struct tdTSS_DAA_CREDENTIAL
+{
+    TSS_VERSION versionInfo;
+    UINT32      capitalALength;
+#ifdef __midl
+    [size_is(capitalALength)] 
+#endif
+    BYTE*       capitalA;
+    UINT32      exponentLength;
+#ifdef __midl
+    [size_is(exponentLength)] 
+#endif
+    BYTE*       exponent;
+    UINT32      vBar0Length;
+#ifdef __midl
+    [size_is(vBar0Length)] 
+#endif
+    BYTE*       vBar0;
+    UINT32      vBar1Length;
+#ifdef __midl
+    [size_is(vBar1Length)] 
+#endif
+    BYTE*       vBar1;
+    UINT32      attributesLength;       // Length of first dimension
+    UINT32      attributesLength2;      // Length of second dimension
+#ifdef __midl
+    [size_is(attributesLength,attributesLength2)] 
+#endif
+    BYTE**      attributes;
+    TSS_DAA_PK  issuerPK;
+    UINT32      tpmSpecificEncLength;
+#ifdef __midl
+    [size_is(tpmSpecificEncLength)]
+#endif
+    BYTE*       tpmSpecificEnc;
+    UINT32      daaCounter;
+} TSS_DAA_CREDENTIAL;
+
+typedef struct tdTSS_DAA_ATTRIB_COMMIT
+{
+    TSS_VERSION versionInfo;
+    UINT32      betaLength;
+#ifdef __midl
+    [size_is(betaLength)]
+#endif
+    BYTE*       beta;
+    UINT32      sMuLength;
+#ifdef __midl
+    [size_is(sMuLength)]
+#endif
+    BYTE*       sMu;
+} TSS_DAA_ATTRIB_COMMIT;
+
+typedef struct tdTSS_DAA_CREDENTIAL_REQUEST
+{
+    TSS_VERSION versionInfo;
+    UINT32      capitalULength;
+#ifdef __midl
+    [size_is(capitalULength)]
+#endif
+    BYTE*       capitalU;
+    UINT32      capitalNiLength;
+#ifdef __midl
+    [size_is(capitalNiLength)]
+#endif
+    BYTE*       capitalNi;
+    UINT32      authenticationProofLength;
+#ifdef __midl
+    [size_is(authenticationProofLength)]
+#endif
+    BYTE*       authenticationProof;
+    UINT32      challengeLength;
+#ifdef __midl
+    [size_is(challengeLength)]
+#endif
+    BYTE*       challenge;
+    UINT32      nonceTpmLength;
+#ifdef __midl
+    [size_is(nonceTpmLength)]
+#endif
+    BYTE*       nonceTpm;
+    UINT32      noncePlatformLength;
+#ifdef __midl
+    [size_is(noncePlatformLength)]
+#endif
+    BYTE*       noncePlatform;
+    UINT32      sF0Length;
+#ifdef __midl
+    [size_is(sF0Length)]
+#endif
+    BYTE*       sF0;
+    UINT32      sF1Length;
+#ifdef __midl
+    [size_is(sF1Length)]
+#endif
+    BYTE*       sF1;
+    UINT32      sVprimeLength;
+#ifdef __midl
+    [size_is(sVprimeLength)]
+#endif
+    BYTE*       sVprime;
+    UINT32      sVtildePrimeLength;
+#ifdef __midl
+    [size_is(sVtildePrimeLength)]
+#endif
+    BYTE*       sVtildePrime;
+    UINT32      sALength;       // Length of first dimension
+    UINT32      sALength2;      // Length of second dimension
+#ifdef __midl
+    [size_is(sALength,sALength2)]
+#endif
+    BYTE**      sA;
+    UINT32      attributeCommitmentsLength;
+    TSS_DAA_ATTRIB_COMMIT* attributeCommitments;
+} TSS_DAA_CREDENTIAL_REQUEST;
+
+typedef struct tdTSS_DAA_SELECTED_ATTRIB
+{
+    TSS_VERSION versionInfo;
+    UINT32      indicesListLength;
+#ifdef __midl
+    [size_is(indicesListLength)]
+#endif
+    TSS_BOOL*   indicesList;
+} TSS_DAA_SELECTED_ATTRIB;
+
+typedef struct tdTSS_DAA_PSEUDONYM
+{
+    TSS_VERSION versionInfo;
+    TSS_FLAG    payloadFlag;
+    UINT32      payloadLength;
+#ifdef __midl
+    [size_is(payloadLength)]
+#endif
+    BYTE*       payload;
+} TSS_DAA_PSEUDONYM;
+
+typedef struct tdTSS_DAA_PSEUDONYM_PLAIN
+{
+    TSS_VERSION versionInfo;
+    UINT32      capitalNvLength;
+#ifdef __midl
+    [size_is(capitalNvLength)]
+#endif
+    BYTE*       capitalNv;
+} TSS_DAA_PSEUDONYM_PLAIN;
+
+typedef struct tdTSS_DAA_PSEUDONYM_ENCRYPTED
+{
+    TSS_VERSION versionInfo;
+    UINT32      delta1Length;
+#ifdef __midl
+    [size_is(delta1Length)]
+#endif
+    BYTE*       delta1;
+    UINT32      delta2Length;
+#ifdef __midl
+    [size_is(delta2Length)]
+#endif
+    BYTE*       delta2;
+    UINT32      delta3Length;
+#ifdef __midl
+    [size_is(delta3Length)]
+#endif
+    BYTE*       delta3;
+    UINT32      delta4Length;
+#ifdef __midl
+    [size_is(delta4Length)]
+#endif
+    BYTE*       delta4;
+    UINT32      sTauLength;
+#ifdef __midl
+    [size_is(sTauLength)]
+#endif
+    BYTE*       sTau;
+} TSS_DAA_PSEUDONYM_ENCRYPTED;
+
+typedef struct tdTSS_DAA_SIGN_CALLBACK
+{
+    TSS_VERSION versionInfo;
+    TSS_HHASH   challenge;
+    TSS_FLAG    payloadFlag;
+    UINT32      payloadLength;
+#ifdef __midl
+    [size_is(payloadLength)]
+#endif
+    BYTE*       payload;
+} TSS_DAA_SIGN_CALLBACK;
+
+typedef struct tdTSS_DAA_SIGNATURE
+{
+    TSS_VERSION            versionInfo;
+    UINT32                 zetaLength;
+#ifdef __midl
+    [size_is(zetaLength)]
+#endif
+    BYTE*                  zeta;
+    UINT32                 capitalTLength;
+#ifdef __midl
+    [size_is(capitalTLength)]
+#endif
+    BYTE*                  capitalT;
+    UINT32                 challengeLength;
+#ifdef __midl
+    [size_is(challengeLength)]
+#endif
+    BYTE*                  challenge;
+    UINT32                 nonceTpmLength;
+#ifdef __midl
+    [size_is(nonceTpmLength)]
+#endif
+    BYTE*                  nonceTpm;
+    UINT32                 sVLength;
+#ifdef __midl
+    [size_is(sVLength)]
+#endif
+    BYTE*                  sV;
+    UINT32                 sF0Length;
+#ifdef __midl
+    [size_is(sF0Length)]
+#endif
+    BYTE*                  sF0;
+    UINT32                 sF1Length;
+#ifdef __midl
+    [size_is(sF1Length)]
+#endif
+    BYTE*                  sF1;
+    UINT32                 sELength;
+#ifdef __midl
+    [size_is(sELength)]
+#endif
+    BYTE*                  sE;
+    UINT32                 sALength;    // Length of first dimension
+    UINT32                 sALength2;   // Length of second dimension
+#ifdef __midl
+    [size_is(sALength,sALength2)]
+#endif
+    BYTE**                 sA;
+    UINT32                 attributeCommitmentsLength;
+#ifdef __midl
+    [size_is(attributeCommitmentsLength)]
+#endif
+    TSS_DAA_ATTRIB_COMMIT* attributeCommitments;
+    TSS_DAA_PSEUDONYM      signedPseudonym;
+    TSS_DAA_SIGN_CALLBACK  callbackResult;
+} TSS_DAA_SIGNATURE;
+
+typedef struct tdTSS_DAA_IDENTITY_PROOF
+{
+    TSS_VERSION versionInfo;
+    UINT32      endorsementLength;
+#ifdef __midl
+    [size_is(endorsementLength)]
+#endif
+    BYTE*       endorsementCredential;
+    UINT32      platformLength;
+#ifdef __midl
+    [size_is(platformLength)]
+#endif
+    BYTE*       platform;
+    UINT32      conformanceLength;
+#ifdef __midl
+    [size_is(conformanceLength)]
+#endif
+    BYTE*       conformance;
+} TSS_DAA_IDENTITY_PROOF;
+
+
+////////////////////////////////////////////////////////////////////
+
+typedef UINT32 TSS_FAMILY_ID;
+typedef BYTE   TSS_DELEGATION_LABEL;
+// Values are TSS_DELEGATIONTYPE_KEY or TSS_DELEGATIONTYPE_OWNER
+typedef UINT32 TSS_DELEGATION_TYPE;
+
+typedef struct tdTSS_PCR_INFO_SHORT
+{
+    UINT32               sizeOfSelect;
+#ifdef __midl
+    [size_is(sizeOfSelect)]
+#endif
+    BYTE                *selection;
+    BYTE                 localityAtRelease;
+    UINT32               sizeOfDigestAtRelease;
+#ifdef __midl
+    [size_is(sizeOfDigestAtRelease)]
+#endif
+    BYTE                *digestAtRelease;
+} TSS_PCR_INFO_SHORT;
+
+typedef struct tdTSS_FAMILY_TABLE_ENTRY
+{
+    TSS_FAMILY_ID        familyID;
+    TSS_DELEGATION_LABEL label;
+    UINT32               verificationCount;
+    TSS_BOOL             enabled;
+    TSS_BOOL             locked;
+} TSS_FAMILY_TABLE_ENTRY;
+
+typedef struct tdTSS_DELEGATION_TABLE_ENTRY
+{
+    UINT32               tableIndex;
+    TSS_DELEGATION_LABEL label;
+    TSS_PCR_INFO_SHORT   pcrInfo;
+    UINT32               per1;
+    UINT32               per2;
+    TSS_FAMILY_ID        familyID;
+    UINT32               verificationCount;
+} TSS_DELEGATION_TABLE_ENTRY;
+
+typedef struct tdTSS_PLATFORM_CLASS
+{
+    UINT32 platformClassSimpleIdentifier;
+    UINT32 platformClassURISize;
+    BYTE*  pPlatformClassURI;
+} TSS_PLATFORM_CLASS;
+
+#endif // __TSS_STRUCTS_H__
+
diff --git a/tss/include/tss/tss_typedef.h b/tss/include/tss/tss_typedef.h
index 1e9b59a..269ce00 100644
--- a/tss/include/tss/tss_typedef.h
+++ b/tss/include/tss/tss_typedef.h
@@ -1,48 +1,48 @@
-/*++

-

-Global typedefs for TSS

- 

-*/

-

-#ifndef __TSS_TYPEDEF_H__

-#define __TSS_TYPEDEF_H__

-

-#include <platform.h>

-

-//--------------------------------------------------------------------

-// definitions for TSS Service Provider (TSP)

-//

-typedef  UINT32  TSS_HANDLE;

-

-typedef  UINT32  TSS_FLAG;  // object attributes

-typedef  UINT32  TSS_RESULT;  // the return code from a TSS function

-

-typedef  UINT32          TSS_HOBJECT;     // basic object handle

-typedef  TSS_HOBJECT     TSS_HCONTEXT;    // context object handle

-typedef  TSS_HOBJECT     TSS_HPOLICY;     // policy object handle

-typedef  TSS_HOBJECT     TSS_HTPM;        // TPM object handle

-typedef  TSS_HOBJECT     TSS_HKEY;        // key object handle

-typedef  TSS_HOBJECT     TSS_HENCDATA;    // encrypted data object handle

-typedef  TSS_HOBJECT     TSS_HPCRS;       // PCR composite object handle

-typedef  TSS_HOBJECT     TSS_HHASH;       // hash object handle

-typedef  TSS_HOBJECT     TSS_HNVSTORE;    // NV storage object handle

-typedef  TSS_HOBJECT     TSS_HMIGDATA;    // migration data utility obj handle

-typedef  TSS_HOBJECT     TSS_HDELFAMILY;  // delegation family object handle

-typedef  TSS_HOBJECT     TSS_HDAA_CREDENTIAL; // daa credential

-typedef  TSS_HOBJECT     TSS_HDAA_ISSUER_KEY; // daa credential issuer keypair

-typedef  TSS_HOBJECT     TSS_HDAA_ARA_KEY;    // daa anonymity revocation

-                                              // authority keypair

-

-typedef UINT32  TSS_EVENTTYPE;

-typedef UINT16  TSS_MIGRATE_SCHEME;

-typedef UINT32  TSS_ALGORITHM_ID;

-typedef UINT32  TSS_KEY_USAGE_ID;

-typedef UINT16  TSS_KEY_ENC_SCHEME;

-typedef UINT16  TSS_KEY_SIG_SCHEME;

-typedef BYTE    TSS_KEY_AUTH_DATA_USAGE;

-typedef UINT32  TSS_CMK_DELEGATE;

-typedef UINT32  TSS_NV_INDEX;

-typedef UINT32  TSS_COUNTER_ID;

-

-#endif // __TSS_TYPEDEF_H__

-

+/*++
+
+Global typedefs for TSS
+ 
+*/
+
+#ifndef __TSS_TYPEDEF_H__
+#define __TSS_TYPEDEF_H__
+
+#include <tss/platform.h>
+
+//--------------------------------------------------------------------
+// definitions for TSS Service Provider (TSP)
+//
+typedef  UINT32  TSS_HANDLE;
+
+typedef  UINT32  TSS_FLAG;  // object attributes
+typedef  UINT32  TSS_RESULT;  // the return code from a TSS function
+
+typedef  UINT32          TSS_HOBJECT;     // basic object handle
+typedef  TSS_HOBJECT     TSS_HCONTEXT;    // context object handle
+typedef  TSS_HOBJECT     TSS_HPOLICY;     // policy object handle
+typedef  TSS_HOBJECT     TSS_HTPM;        // TPM object handle
+typedef  TSS_HOBJECT     TSS_HKEY;        // key object handle
+typedef  TSS_HOBJECT     TSS_HENCDATA;    // encrypted data object handle
+typedef  TSS_HOBJECT     TSS_HPCRS;       // PCR composite object handle
+typedef  TSS_HOBJECT     TSS_HHASH;       // hash object handle
+typedef  TSS_HOBJECT     TSS_HNVSTORE;    // NV storage object handle
+typedef  TSS_HOBJECT     TSS_HMIGDATA;    // migration data utility obj handle
+typedef  TSS_HOBJECT     TSS_HDELFAMILY;  // delegation family object handle
+typedef  TSS_HOBJECT     TSS_HDAA_CREDENTIAL; // daa credential
+typedef  TSS_HOBJECT     TSS_HDAA_ISSUER_KEY; // daa credential issuer keypair
+typedef  TSS_HOBJECT     TSS_HDAA_ARA_KEY;    // daa anonymity revocation
+                                              // authority keypair
+
+typedef UINT32  TSS_EVENTTYPE;
+typedef UINT16  TSS_MIGRATE_SCHEME;
+typedef UINT32  TSS_ALGORITHM_ID;
+typedef UINT32  TSS_KEY_USAGE_ID;
+typedef UINT16  TSS_KEY_ENC_SCHEME;
+typedef UINT16  TSS_KEY_SIG_SCHEME;
+typedef BYTE    TSS_KEY_AUTH_DATA_USAGE;
+typedef UINT32  TSS_CMK_DELEGATE;
+typedef UINT32  TSS_NV_INDEX;
+typedef UINT32  TSS_COUNTER_ID;
+
+#endif // __TSS_TYPEDEF_H__
+