1#if !defined(_TSPI_H_) 2#define _TSPI_H_ 3 4#include <tss/tss_defines.h> 5#include <tss/tss_typedef.h> 6#include <tss/tss_structs.h> 7#include <tss/tss_error.h> 8#include <tss/tss_error_basics.h> 9 10#if !defined( TSPICALL ) 11 #if !defined(WIN32) || defined (TSP_STATIC) 12 // Linux, or a Win32 static library 13 #define TSPICALL extern TSS_RESULT 14 #elif defined (TSPDLL_EXPORTS) 15 // Win32 DLL build 16 #define TSPICALL extern __declspec(dllexport) TSS_RESULT 17 #else 18 // Win32 DLL import 19 #define TSPICALL extern __declspec(dllimport) TSS_RESULT 20 #endif 21#endif /* TSPICALL */ 22 23#if defined ( __cplusplus ) 24extern "C" { 25#endif /* __cplusplus */ 26 27 28// Class-independent ASN.1 conversion functions 29TSPICALL Tspi_EncodeDER_TssBlob 30( 31 UINT32 rawBlobSize, // in 32 BYTE* rawBlob, // in 33 UINT32 blobType, // in 34 UINT32* derBlobSize, // in, out 35 BYTE* derBlob // out 36); 37 38TSPICALL Tspi_DecodeBER_TssBlob 39( 40 UINT32 berBlobSize, // in 41 BYTE* berBlob, // in 42 UINT32* blobType, // out 43 UINT32* rawBlobSize, // in, out 44 BYTE* rawBlob // out 45); 46 47 48 49// Common Methods 50TSPICALL Tspi_SetAttribUint32 51( 52 TSS_HOBJECT hObject, // in 53 TSS_FLAG attribFlag, // in 54 TSS_FLAG subFlag, // in 55 UINT32 ulAttrib // in 56); 57 58TSPICALL Tspi_GetAttribUint32 59( 60 TSS_HOBJECT hObject, // in 61 TSS_FLAG attribFlag, // in 62 TSS_FLAG subFlag, // in 63 UINT32* pulAttrib // out 64); 65 66TSPICALL Tspi_SetAttribData 67( 68 TSS_HOBJECT hObject, // in 69 TSS_FLAG attribFlag, // in 70 TSS_FLAG subFlag, // in 71 UINT32 ulAttribDataSize, // in 72 BYTE* rgbAttribData // in 73); 74 75TSPICALL Tspi_GetAttribData 76( 77 TSS_HOBJECT hObject, // in 78 TSS_FLAG attribFlag, // in 79 TSS_FLAG subFlag, // in 80 UINT32* pulAttribDataSize, // out 81 BYTE** prgbAttribData // out 82); 83 84TSPICALL Tspi_ChangeAuth 85( 86 TSS_HOBJECT hObjectToChange, // in 87 TSS_HOBJECT hParentObject, // in 88 TSS_HPOLICY hNewPolicy // in 89); 90 91TSPICALL Tspi_ChangeAuthAsym 92( 93 TSS_HOBJECT hObjectToChange, // in 94 TSS_HOBJECT hParentObject, // in 95 TSS_HKEY hIdentKey, // in 96 TSS_HPOLICY hNewPolicy // in 97); 98 99TSPICALL Tspi_GetPolicyObject 100( 101 TSS_HOBJECT hObject, // in 102 TSS_FLAG policyType, // in 103 TSS_HPOLICY* phPolicy // out 104); 105 106 107 108// Tspi_Context Class Definitions 109TSPICALL Tspi_Context_Create 110( 111 TSS_HCONTEXT* phContext // out 112); 113 114TSPICALL Tspi_Context_Close 115( 116 TSS_HCONTEXT hContext // in 117); 118 119TSPICALL Tspi_Context_Connect 120( 121 TSS_HCONTEXT hContext, // in 122 TSS_UNICODE* wszDestination // in 123); 124 125TSPICALL Tspi_Context_FreeMemory 126( 127 TSS_HCONTEXT hContext, // in 128 BYTE* rgbMemory // in 129); 130 131TSPICALL Tspi_Context_GetDefaultPolicy 132( 133 TSS_HCONTEXT hContext, // in 134 TSS_HPOLICY* phPolicy // out 135); 136 137TSPICALL Tspi_Context_CreateObject 138( 139 TSS_HCONTEXT hContext, // in 140 TSS_FLAG objectType, // in 141 TSS_FLAG initFlags, // in 142 TSS_HOBJECT* phObject // out 143); 144 145TSPICALL Tspi_Context_CloseObject 146( 147 TSS_HCONTEXT hContext, // in 148 TSS_HOBJECT hObject // in 149); 150 151TSPICALL Tspi_Context_GetCapability 152( 153 TSS_HCONTEXT hContext, // in 154 TSS_FLAG capArea, // in 155 UINT32 ulSubCapLength, // in 156 BYTE* rgbSubCap, // in 157 UINT32* pulRespDataLength, // out 158 BYTE** prgbRespData // out 159); 160 161TSPICALL Tspi_Context_GetTpmObject 162( 163 TSS_HCONTEXT hContext, // in 164 TSS_HTPM* phTPM // out 165); 166 167TSPICALL Tspi_Context_SetTransEncryptionKey 168( 169 TSS_HCONTEXT hContext, // in 170 TSS_HKEY hKey // in 171); 172 173TSPICALL Tspi_Context_CloseSignTransport 174( 175 TSS_HCONTEXT hContext, // in 176 TSS_HKEY hSigningKey, // in 177 TSS_VALIDATION* pValidationData // in, out 178); 179 180TSPICALL Tspi_Context_LoadKeyByBlob 181( 182 TSS_HCONTEXT hContext, // in 183 TSS_HKEY hUnwrappingKey, // in 184 UINT32 ulBlobLength, // in 185 BYTE* rgbBlobData, // in 186 TSS_HKEY* phKey // out 187); 188 189TSPICALL Tspi_Context_LoadKeyByUUID 190( 191 TSS_HCONTEXT hContext, // in 192 TSS_FLAG persistentStorageType, // in 193 TSS_UUID uuidData, // in 194 TSS_HKEY* phKey // out 195); 196 197TSPICALL Tspi_Context_RegisterKey 198( 199 TSS_HCONTEXT hContext, // in 200 TSS_HKEY hKey, // in 201 TSS_FLAG persistentStorageType, // in 202 TSS_UUID uuidKey, // in 203 TSS_FLAG persistentStorageTypeParent, // in 204 TSS_UUID uuidParentKey // in 205); 206 207TSPICALL Tspi_Context_UnregisterKey 208( 209 TSS_HCONTEXT hContext, // in 210 TSS_FLAG persistentStorageType, // in 211 TSS_UUID uuidKey, // in 212 TSS_HKEY* phkey // out 213); 214 215TSPICALL Tspi_Context_GetKeyByUUID 216( 217 TSS_HCONTEXT hContext, // in 218 TSS_FLAG persistentStorageType, // in 219 TSS_UUID uuidData, // in 220 TSS_HKEY* phKey // out 221); 222 223TSPICALL Tspi_Context_GetKeyByPublicInfo 224( 225 TSS_HCONTEXT hContext, // in 226 TSS_FLAG persistentStorageType, // in 227 TSS_ALGORITHM_ID algID, // in 228 UINT32 ulPublicInfoLength, // in 229 BYTE* rgbPublicInfo, // in 230 TSS_HKEY* phKey // out 231); 232 233TSPICALL Tspi_Context_GetRegisteredKeysByUUID 234( 235 TSS_HCONTEXT hContext, // in 236 TSS_FLAG persistentStorageType, // in 237 TSS_UUID* pUuidData, // in 238 UINT32* pulKeyHierarchySize, // out 239 TSS_KM_KEYINFO** ppKeyHierarchy // out 240); 241 242TSPICALL Tspi_Context_GetRegisteredKeysByUUID2 243( 244 TSS_HCONTEXT hContext, // in 245 TSS_FLAG persistentStorageType, // in 246 TSS_UUID* pUuidData, // in 247 UINT32* pulKeyHierarchySize, // out 248 TSS_KM_KEYINFO2** ppKeyHierarchy // out 249); 250 251 252// Policy class definitions 253TSPICALL Tspi_Policy_SetSecret 254( 255 TSS_HPOLICY hPolicy, // in 256 TSS_FLAG secretMode, // in 257 UINT32 ulSecretLength, // in 258 BYTE* rgbSecret // in 259); 260 261TSPICALL Tspi_Policy_FlushSecret 262( 263 TSS_HPOLICY hPolicy // in 264); 265 266TSPICALL Tspi_Policy_AssignToObject 267( 268 TSS_HPOLICY hPolicy, // in 269 TSS_HOBJECT hObject // in 270); 271 272 273 274// TPM Class Definitions 275TSPICALL Tspi_TPM_KeyControlOwner 276( 277 TSS_HTPM hTPM, // in 278 TSS_HKEY hKey, // in 279 UINT32 attribName, // in 280 TSS_BOOL attribValue, // in 281 TSS_UUID* pUuidData // out 282); 283 284TSPICALL Tspi_TPM_CreateEndorsementKey 285( 286 TSS_HTPM hTPM, // in 287 TSS_HKEY hKey, // in 288 TSS_VALIDATION* pValidationData // in, out 289); 290 291TSPICALL Tspi_TPM_CreateRevocableEndorsementKey 292( 293 TSS_HTPM hTPM, // in 294 TSS_HKEY hKey, // in 295 TSS_VALIDATION* pValidationData, // in, out 296 UINT32* pulEkResetDataLength, // in, out 297 BYTE** rgbEkResetData // in, out 298); 299 300TSPICALL Tspi_TPM_RevokeEndorsementKey 301( 302 TSS_HTPM hTPM, // in 303 UINT32 ulEkResetDataLength, // in 304 BYTE* rgbEkResetData // in 305); 306 307TSPICALL Tspi_TPM_GetPubEndorsementKey 308( 309 TSS_HTPM hTPM, // in 310 TSS_BOOL fOwnerAuthorized, // in 311 TSS_VALIDATION* pValidationData, // in, out 312 TSS_HKEY* phEndorsementPubKey // out 313); 314 315TSPICALL Tspi_TPM_OwnerGetSRKPubKey 316( 317 TSS_HTPM hTPM, // in 318 UINT32* pulPubKeyLength, // out 319 BYTE** prgbPubKey // out 320); 321 322TSPICALL Tspi_TPM_TakeOwnership 323( 324 TSS_HTPM hTPM, // in 325 TSS_HKEY hKeySRK, // in 326 TSS_HKEY hEndorsementPubKey // in 327); 328 329TSPICALL Tspi_TPM_ClearOwner 330( 331 TSS_HTPM hTPM, // in 332 TSS_BOOL fForcedClear // in 333); 334 335TSPICALL Tspi_TPM_CollateIdentityRequest 336( 337 TSS_HTPM hTPM, // in 338 TSS_HKEY hKeySRK, // in 339 TSS_HKEY hCAPubKey, // in 340 UINT32 ulIdentityLabelLength, // in 341 BYTE* rgbIdentityLabelData, // in 342 TSS_HKEY hIdentityKey, // in 343 TSS_ALGORITHM_ID algID, // in 344 UINT32* pulTCPAIdentityReqLength, // out 345 BYTE** prgbTCPAIdentityReq // out 346); 347 348TSPICALL Tspi_TPM_ActivateIdentity 349( 350 TSS_HTPM hTPM, // in 351 TSS_HKEY hIdentKey, // in 352 UINT32 ulAsymCAContentsBlobLength, // in 353 BYTE* rgbAsymCAContentsBlob, // in 354 UINT32 ulSymCAAttestationBlobLength, // in 355 BYTE* rgbSymCAAttestationBlob, // in 356 UINT32* pulCredentialLength, // out 357 BYTE** prgbCredential // out 358); 359 360TSPICALL Tspi_TPM_CreateMaintenanceArchive 361( 362 TSS_HTPM hTPM, // in 363 TSS_BOOL fGenerateRndNumber, // in 364 UINT32* pulRndNumberLength, // out 365 BYTE** prgbRndNumber, // out 366 UINT32* pulArchiveDataLength, // out 367 BYTE** prgbArchiveData // out 368); 369 370TSPICALL Tspi_TPM_KillMaintenanceFeature 371( 372 TSS_HTPM hTPM // in 373); 374 375TSPICALL Tspi_TPM_LoadMaintenancePubKey 376( 377 TSS_HTPM hTPM, // in 378 TSS_HKEY hMaintenanceKey, // in 379 TSS_VALIDATION* pValidationData // in, out 380); 381 382TSPICALL Tspi_TPM_CheckMaintenancePubKey 383( 384 TSS_HTPM hTPM, // in 385 TSS_HKEY hMaintenanceKey, // in 386 TSS_VALIDATION* pValidationData // in, out 387); 388 389TSPICALL Tspi_TPM_SetOperatorAuth 390( 391 TSS_HTPM hTPM, // in 392 TSS_HPOLICY hOperatorPolicy // in 393); 394 395TSPICALL Tspi_TPM_SetStatus 396( 397 TSS_HTPM hTPM, // in 398 TSS_FLAG statusFlag, // in 399 TSS_BOOL fTpmState // in 400); 401 402TSPICALL Tspi_TPM_GetStatus 403( 404 TSS_HTPM hTPM, // in 405 TSS_FLAG statusFlag, // in 406 TSS_BOOL* pfTpmState // out 407); 408 409TSPICALL Tspi_TPM_GetCapability 410( 411 TSS_HTPM hTPM, // in 412 TSS_FLAG capArea, // in 413 UINT32 ulSubCapLength, // in 414 BYTE* rgbSubCap, // in 415 UINT32* pulRespDataLength, // out 416 BYTE** prgbRespData // out 417); 418 419TSPICALL Tspi_TPM_GetCapabilitySigned 420( 421 TSS_HTPM hTPM, // in 422 TSS_HKEY hKey, // in 423 TSS_FLAG capArea, // in 424 UINT32 ulSubCapLength, // in 425 BYTE* rgbSubCap, // in 426 TSS_VALIDATION* pValidationData, // in, out 427 UINT32* pulRespDataLength, // out 428 BYTE** prgbRespData // out 429); 430 431TSPICALL Tspi_TPM_SelfTestFull 432( 433 TSS_HTPM hTPM // in 434); 435 436TSPICALL Tspi_TPM_CertifySelfTest 437( 438 TSS_HTPM hTPM, // in 439 TSS_HKEY hKey, // in 440 TSS_VALIDATION* pValidationData // in, out 441); 442 443TSPICALL Tspi_TPM_GetTestResult 444( 445 TSS_HTPM hTPM, // in 446 UINT32* pulTestResultLength, // out 447 BYTE** prgbTestResult // out 448); 449 450TSPICALL Tspi_TPM_GetRandom 451( 452 TSS_HTPM hTPM, // in 453 UINT32 ulRandomDataLength, // in 454 BYTE** prgbRandomData // out 455); 456 457TSPICALL Tspi_TPM_StirRandom 458( 459 TSS_HTPM hTPM, // in 460 UINT32 ulEntropyDataLength, // in 461 BYTE* rgbEntropyData // in 462); 463 464TSPICALL Tspi_TPM_GetEvent 465( 466 TSS_HTPM hTPM, // in 467 UINT32 ulPcrIndex, // in 468 UINT32 ulEventNumber, // in 469 TSS_PCR_EVENT* pPcrEvent // out 470); 471 472TSPICALL Tspi_TPM_GetEvents 473( 474 TSS_HTPM hTPM, // in 475 UINT32 ulPcrIndex, // in 476 UINT32 ulStartNumber, // in 477 UINT32* pulEventNumber, // in, out 478 TSS_PCR_EVENT** prgPcrEvents // out 479); 480 481TSPICALL Tspi_TPM_GetEventLog 482( 483 TSS_HTPM hTPM, // in 484 UINT32* pulEventNumber, // out 485 TSS_PCR_EVENT** prgPcrEvents // out 486); 487 488TSPICALL Tspi_TPM_Quote 489( 490 TSS_HTPM hTPM, // in 491 TSS_HKEY hIdentKey, // in 492 TSS_HPCRS hPcrComposite, // in 493 TSS_VALIDATION* pValidationData // in, out 494); 495 496TSPICALL Tspi_TPM_Quote2 497( 498 TSS_HTPM hTPM, // in 499 TSS_HKEY hIdentKey, // in 500 TSS_BOOL fAddVersion, // in 501 TSS_HPCRS hPcrComposite, // in 502 TSS_VALIDATION* pValidationData, // in, out 503 UINT32* versionInfoSize, // out 504 BYTE** versionInfo // out 505); 506 507TSPICALL Tspi_TPM_PcrExtend 508( 509 TSS_HTPM hTPM, // in 510 UINT32 ulPcrIndex, // in 511 UINT32 ulPcrDataLength, // in 512 BYTE* pbPcrData, // in 513 TSS_PCR_EVENT* pPcrEvent, // in 514 UINT32* pulPcrValueLength, // out 515 BYTE** prgbPcrValue // out 516); 517 518TSPICALL Tspi_TPM_PcrRead 519( 520 TSS_HTPM hTPM, // in 521 UINT32 ulPcrIndex, // in 522 UINT32* pulPcrValueLength, // out 523 BYTE** prgbPcrValue // out 524); 525 526TSPICALL Tspi_TPM_PcrReset 527( 528 TSS_HTPM hTPM, // in 529 TSS_HPCRS hPcrComposite // in 530); 531 532TSPICALL Tspi_TPM_AuthorizeMigrationTicket 533( 534 TSS_HTPM hTPM, // in 535 TSS_HKEY hMigrationKey, // in 536 TSS_MIGRATE_SCHEME migrationScheme, // in 537 UINT32* pulMigTicketLength, // out 538 BYTE** prgbMigTicket // out 539); 540 541TSPICALL Tspi_TPM_CMKSetRestrictions 542( 543 TSS_HTPM hTPM, // in 544 TSS_CMK_DELEGATE CmkDelegate // in 545); 546 547TSPICALL Tspi_TPM_CMKApproveMA 548( 549 TSS_HTPM hTPM, // in 550 TSS_HMIGDATA hMaAuthData // in 551); 552 553TSPICALL Tspi_TPM_CMKCreateTicket 554( 555 TSS_HTPM hTPM, // in 556 TSS_HKEY hVerifyKey, // in 557 TSS_HMIGDATA hSigData // in 558); 559 560TSPICALL Tspi_TPM_ReadCounter 561( 562 TSS_HTPM hTPM, // in 563 UINT32* counterValue // out 564); 565 566TSPICALL Tspi_TPM_ReadCurrentTicks 567( 568 TSS_HTPM hTPM, // in 569 TPM_CURRENT_TICKS* tickCount // out 570); 571 572TSPICALL Tspi_TPM_DirWrite 573( 574 TSS_HTPM hTPM, // in 575 UINT32 ulDirIndex, // in 576 UINT32 ulDirDataLength, // in 577 BYTE* rgbDirData // in 578); 579 580TSPICALL Tspi_TPM_DirRead 581( 582 TSS_HTPM hTPM, // in 583 UINT32 ulDirIndex, // in 584 UINT32* pulDirDataLength, // out 585 BYTE** prgbDirData // out 586); 587 588TSPICALL Tspi_TPM_Delegate_AddFamily 589( 590 TSS_HTPM hTPM, // in, must not be NULL 591 BYTE bLabel, // in 592 TSS_HDELFAMILY* phFamily // out 593); 594 595TSPICALL Tspi_TPM_Delegate_GetFamily 596( 597 TSS_HTPM hTPM, // in, must not NULL 598 UINT32 ulFamilyID, // in 599 TSS_HDELFAMILY* phFamily // out 600); 601 602TSPICALL Tspi_TPM_Delegate_InvalidateFamily 603( 604 TSS_HTPM hTPM, // in, must not be NULL 605 TSS_HDELFAMILY hFamily // in 606); 607 608TSPICALL Tspi_TPM_Delegate_CreateDelegation 609( 610 TSS_HOBJECT hObject, // in 611 BYTE bLabel, // in 612 UINT32 ulFlags, // in 613 TSS_HPCRS hPcr, // in, may be NULL 614 TSS_HDELFAMILY hFamily, // in 615 TSS_HPOLICY hDelegation // in, out 616); 617 618TSPICALL Tspi_TPM_Delegate_CacheOwnerDelegation 619( 620 TSS_HTPM hTPM, // in, must not be NULL 621 TSS_HPOLICY hDelegation, // in, out 622 UINT32 ulIndex, // in 623 UINT32 ulFlags // in 624); 625 626TSPICALL Tspi_TPM_Delegate_UpdateVerificationCount 627( 628 TSS_HTPM hTPM, // in 629 TSS_HPOLICY hDelegation // in, out 630); 631 632TSPICALL Tspi_TPM_Delegate_VerifyDelegation 633( 634 TSS_HPOLICY hDelegation // in, out 635); 636 637TSPICALL Tspi_TPM_Delegate_ReadTables 638( 639 TSS_HCONTEXT hContext, // in 640 UINT32* pulFamilyTableSize, // out 641 TSS_FAMILY_TABLE_ENTRY** ppFamilyTable, // out 642 UINT32* pulDelegateTableSize, // out 643 TSS_DELEGATION_TABLE_ENTRY** ppDelegateTable // out 644); 645 646TSPICALL Tspi_TPM_DAA_JoinInit 647( 648 TSS_HTPM hTPM, // in 649 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 650 UINT32 daaCounter, // in 651 UINT32 issuerAuthPKsLength, // in 652 TSS_HKEY* issuerAuthPKs, // in 653 UINT32 issuerAuthPKSignaturesLength, // in 654 UINT32 issuerAuthPKSignaturesLength2, // in 655 BYTE** issuerAuthPKSignatures, // in 656 UINT32* capitalUprimeLength, // out 657 BYTE** capitalUprime, // out 658 TSS_DAA_IDENTITY_PROOF** identityProof, // out 659 UINT32* joinSessionLength, // out 660 BYTE** joinSession // out 661); 662 663TSPICALL Tspi_TPM_DAA_JoinCreateDaaPubKey 664( 665 TSS_HTPM hTPM, // in 666 TSS_HDAA_CREDENTIAL hDAACredential, // in 667 UINT32 authenticationChallengeLength, // in 668 BYTE* authenticationChallenge, // in 669 UINT32 nonceIssuerLength, // in 670 BYTE* nonceIssuer, // in 671 UINT32 attributesPlatformLength, // in 672 UINT32 attributesPlatformLength2, // in 673 BYTE** attributesPlatform, // in 674 UINT32 joinSessionLength, // in 675 BYTE* joinSession, // in 676 TSS_DAA_CREDENTIAL_REQUEST** credentialRequest // out 677); 678 679TSPICALL Tspi_TPM_DAA_JoinStoreCredential 680( 681 TSS_HTPM hTPM, // in 682 TSS_HDAA_CREDENTIAL hDAACredential, // in 683 TSS_DAA_CRED_ISSUER* credIssuer, // in 684 UINT32 joinSessionLength, // in 685 BYTE* joinSession // in 686); 687 688TSPICALL Tspi_TPM_DAA_Sign 689( 690 TSS_HTPM hTPM, // in 691 TSS_HDAA_CREDENTIAL hDAACredential, // in 692 TSS_HDAA_ARA_KEY hARAKey, // in 693 TSS_DAA_SELECTED_ATTRIB* revealAttributes, // in 694 UINT32 verifierNonceLength, // in 695 BYTE* verifierNonce, // in 696 UINT32 verifierBaseNameLength, // in 697 BYTE* verifierBaseName, // in 698 TSS_HOBJECT signData, // in 699 TSS_DAA_SIGNATURE** daaSignature // out 700); 701 702TSPICALL Tspi_TPM_GetAuditDigest 703( 704 TSS_HTPM hTPM, // in 705 TSS_HKEY hKey, // in 706 TSS_BOOL closeAudit, // in 707 UINT32* pulAuditDigestSize, // out 708 BYTE** prgbAuditDigest, // out 709 TPM_COUNTER_VALUE* pCounterValue, // out 710 TSS_VALIDATION* pValidationData, // out 711 UINT32* ordSize, // out 712 UINT32** ordList // out 713); 714 715 716 717// PcrComposite Class Definitions 718TSPICALL Tspi_PcrComposite_SelectPcrIndex 719( 720 TSS_HPCRS hPcrComposite, // in 721 UINT32 ulPcrIndex // in 722); 723 724TSPICALL Tspi_PcrComposite_SelectPcrIndexEx 725( 726 TSS_HPCRS hPcrComposite, // in 727 UINT32 ulPcrIndex, // in 728 UINT32 direction // in 729); 730 731TSPICALL Tspi_PcrComposite_SetPcrValue 732( 733 TSS_HPCRS hPcrComposite, // in 734 UINT32 ulPcrIndex, // in 735 UINT32 ulPcrValueLength, // in 736 BYTE* rgbPcrValue // in 737); 738 739TSPICALL Tspi_PcrComposite_GetPcrValue 740( 741 TSS_HPCRS hPcrComposite, // in 742 UINT32 ulPcrIndex, // in 743 UINT32* pulPcrValueLength, // out 744 BYTE** prgbPcrValue // out 745); 746 747TSPICALL Tspi_PcrComposite_SetPcrLocality 748( 749 TSS_HPCRS hPcrComposite, // in 750 UINT32 LocalityValue // in 751); 752 753TSPICALL Tspi_PcrComposite_GetPcrLocality 754( 755 TSS_HPCRS hPcrComposite, // in 756 UINT32* pLocalityValue // out 757); 758 759TSPICALL Tspi_PcrComposite_GetCompositeHash 760( 761 TSS_HPCRS hPcrComposite, // in 762 UINT32* pLen, // in 763 BYTE** ppbHashData // out 764); 765 766 767 768// Key Class Definition 769TSPICALL Tspi_Key_LoadKey 770( 771 TSS_HKEY hKey, // in 772 TSS_HKEY hUnwrappingKey // in 773); 774 775TSPICALL Tspi_Key_UnloadKey 776( 777 TSS_HKEY hKey // in 778); 779 780TSPICALL Tspi_Key_GetPubKey 781( 782 TSS_HKEY hKey, // in 783 UINT32* pulPubKeyLength, // out 784 BYTE** prgbPubKey // out 785); 786 787TSPICALL Tspi_Key_CertifyKey 788( 789 TSS_HKEY hKey, // in 790 TSS_HKEY hCertifyingKey, // in 791 TSS_VALIDATION* pValidationData // in, out 792); 793 794TSPICALL Tspi_Key_CreateKey 795( 796 TSS_HKEY hKey, // in 797 TSS_HKEY hWrappingKey, // in 798 TSS_HPCRS hPcrComposite // in, may be NULL 799); 800 801TSPICALL Tspi_Key_WrapKey 802( 803 TSS_HKEY hKey, // in 804 TSS_HKEY hWrappingKey, // in 805 TSS_HPCRS hPcrComposite // in, may be NULL 806); 807 808TSPICALL Tspi_Key_CreateMigrationBlob 809( 810 TSS_HKEY hKeyToMigrate, // in 811 TSS_HKEY hParentKey, // in 812 UINT32 ulMigTicketLength, // in 813 BYTE* rgbMigTicket, // in 814 UINT32* pulRandomLength, // out 815 BYTE** prgbRandom, // out 816 UINT32* pulMigrationBlobLength, // out 817 BYTE** prgbMigrationBlob // out 818); 819 820TSPICALL Tspi_Key_ConvertMigrationBlob 821( 822 TSS_HKEY hKeyToMigrate, // in 823 TSS_HKEY hParentKey, // in 824 UINT32 ulRandomLength, // in 825 BYTE* rgbRandom, // in 826 UINT32 ulMigrationBlobLength, // in 827 BYTE* rgbMigrationBlob // in 828); 829 830TSPICALL Tspi_Key_MigrateKey 831( 832 TSS_HKEY hMaKey, // in 833 TSS_HKEY hPublicKey, // in 834 TSS_HKEY hMigData // in 835); 836 837TSPICALL Tspi_Key_CMKCreateBlob 838( 839 TSS_HKEY hKeyToMigrate, // in 840 TSS_HKEY hParentKey, // in 841 TSS_HMIGDATA hMigrationData, // in 842 UINT32* pulRandomLength, // out 843 BYTE** prgbRandom // out 844); 845 846TSPICALL Tspi_Key_CMKConvertMigration 847( 848 TSS_HKEY hKeyToMigrate, // in 849 TSS_HKEY hParentKey, // in 850 TSS_HMIGDATA hMigrationData, // in 851 UINT32 ulRandomLength, // in 852 BYTE* rgbRandom // in 853); 854 855 856 857// Hash Class Definition 858TSPICALL Tspi_Hash_Sign 859( 860 TSS_HHASH hHash, // in 861 TSS_HKEY hKey, // in 862 UINT32* pulSignatureLength, // out 863 BYTE** prgbSignature // out 864); 865 866TSPICALL Tspi_Hash_VerifySignature 867( 868 TSS_HHASH hHash, // in 869 TSS_HKEY hKey, // in 870 UINT32 ulSignatureLength, // in 871 BYTE* rgbSignature // in 872); 873 874TSPICALL Tspi_Hash_SetHashValue 875( 876 TSS_HHASH hHash, // in 877 UINT32 ulHashValueLength, // in 878 BYTE* rgbHashValue // in 879); 880 881TSPICALL Tspi_Hash_GetHashValue 882( 883 TSS_HHASH hHash, // in 884 UINT32* pulHashValueLength, // out 885 BYTE** prgbHashValue // out 886); 887 888TSPICALL Tspi_Hash_UpdateHashValue 889( 890 TSS_HHASH hHash, // in 891 UINT32 ulDataLength, // in 892 BYTE* rgbData // in 893); 894 895TSPICALL Tspi_Hash_TickStampBlob 896( 897 TSS_HHASH hHash, // in 898 TSS_HKEY hIdentKey, // in 899 TSS_VALIDATION* pValidationData // in 900); 901 902 903 904// EncData Class Definition 905TSPICALL Tspi_Data_Bind 906( 907 TSS_HENCDATA hEncData, // in 908 TSS_HKEY hEncKey, // in 909 UINT32 ulDataLength, // in 910 BYTE* rgbDataToBind // in 911); 912 913TSPICALL Tspi_Data_Unbind 914( 915 TSS_HENCDATA hEncData, // in 916 TSS_HKEY hKey, // in 917 UINT32* pulUnboundDataLength, // out 918 BYTE** prgbUnboundData // out 919); 920 921TSPICALL Tspi_Data_Seal 922( 923 TSS_HENCDATA hEncData, // in 924 TSS_HKEY hEncKey, // in 925 UINT32 ulDataLength, // in 926 BYTE* rgbDataToSeal, // in 927 TSS_HPCRS hPcrComposite // in 928); 929 930TSPICALL Tspi_Data_Unseal 931( 932 TSS_HENCDATA hEncData, // in 933 TSS_HKEY hKey, // in 934 UINT32* pulUnsealedDataLength, // out 935 BYTE** prgbUnsealedData // out 936); 937 938 939 940// NV Class Definition 941TSPICALL Tspi_NV_DefineSpace 942( 943 TSS_HNVSTORE hNVStore, // in 944 TSS_HPCRS hReadPcrComposite, // in, may be NULL 945 TSS_HPCRS hWritePcrComposite // in, may be NULL 946); 947 948TSPICALL Tspi_NV_ReleaseSpace 949( 950 TSS_HNVSTORE hNVStore // in 951); 952 953TSPICALL Tspi_NV_WriteValue 954( 955 TSS_HNVSTORE hNVStore, // in 956 UINT32 offset, // in 957 UINT32 ulDataLength, // in 958 BYTE* rgbDataToWrite // in 959); 960 961TSPICALL Tspi_NV_ReadValue 962( 963 TSS_HNVSTORE hNVStore, // in 964 UINT32 offset, // in 965 UINT32* ulDataLength, // in, out 966 BYTE** rgbDataRead // out 967); 968 969 970// DAA Utility functions (optional, do not require a TPM or TCS) 971TSPICALL Tspi_DAA_IssuerKeyVerify 972( 973 TSS_HDAA_CREDENTIAL hDAACredential, // in 974 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 975 TSS_BOOL* isCorrect // out 976); 977 978TSPICALL Tspi_DAA_Issuer_GenerateKey 979( 980 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 981 UINT32 issuerBaseNameLength, // in 982 BYTE* issuerBaseName // in 983); 984 985TSPICALL Tspi_DAA_Issuer_InitCredential 986( 987 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 988 TSS_HKEY issuerAuthPK, // in 989 TSS_DAA_IDENTITY_PROOF* identityProof, // in 990 UINT32 capitalUprimeLength, // in 991 BYTE* capitalUprime, // in 992 UINT32 daaCounter, // in 993 UINT32* nonceIssuerLength, // out 994 BYTE** nonceIssuer, // out 995 UINT32* authenticationChallengeLength, // out 996 BYTE** authenticationChallenge, // out 997 UINT32* joinSessionLength, // out 998 BYTE** joinSession // out 999); 1000 1001TSPICALL Tspi_DAA_Issuer_IssueCredential 1002( 1003 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 1004 TSS_DAA_CREDENTIAL_REQUEST* credentialRequest, // in 1005 UINT32 issuerJoinSessionLength, // in 1006 BYTE* issuerJoinSession, // in 1007 TSS_DAA_CRED_ISSUER** credIssuer // out 1008); 1009 1010TSPICALL Tspi_DAA_Verifier_Init 1011( 1012 TSS_HDAA_CREDENTIAL hDAACredential, // in 1013 UINT32* nonceVerifierLength, // out 1014 BYTE** nonceVerifier, // out 1015 UINT32* baseNameLength, // out 1016 BYTE** baseName // out 1017); 1018 1019TSPICALL Tspi_DAA_VerifySignature 1020( 1021 TSS_HDAA_CREDENTIAL hDAACredential, // in 1022 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 1023 TSS_HDAA_ARA_KEY hARAKey, // in 1024 TSS_HHASH hARACondition, // in 1025 UINT32 attributesLength, // in 1026 UINT32 attributesLength2, // in 1027 BYTE** attributes, // in 1028 UINT32 verifierNonceLength, // in 1029 BYTE* verifierNonce, // in 1030 UINT32 verifierBaseNameLength, // in 1031 BYTE* verifierBaseName, // in 1032 TSS_HOBJECT signData, // in 1033 TSS_DAA_SIGNATURE* daaSignature, // in 1034 TSS_BOOL* isCorrect // out 1035); 1036 1037TSPICALL Tspi_DAA_ARA_GenerateKey 1038( 1039 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 1040 TSS_HDAA_ARA_KEY hARAKey // in 1041); 1042 1043TSPICALL Tspi_DAA_ARA_RevokeAnonymity 1044( 1045 TSS_HDAA_ARA_KEY hARAKey, // in 1046 TSS_HHASH hARACondition, // in 1047 TSS_HDAA_ISSUER_KEY hIssuerKey, // in 1048 TSS_DAA_PSEUDONYM_ENCRYPTED* encryptedPseudonym, // in 1049 TSS_DAA_PSEUDONYM_PLAIN** pseudonym // out 1050); 1051 1052 1053 1054// Callback typedefs 1055typedef TSS_RESULT (*Tspicb_CallbackHMACAuth) 1056( 1057 PVOID lpAppData, // in 1058 TSS_HOBJECT hAuthorizedObject, // in 1059 TSS_BOOL ReturnOrVerify, // in 1060 UINT32 ulPendingFunction, // in 1061 TSS_BOOL ContinueUse, // in 1062 UINT32 ulSizeNonces, // in 1063 BYTE* rgbNonceEven, // in 1064 BYTE* rgbNonceOdd, // in 1065 BYTE* rgbNonceEvenOSAP, // in 1066 BYTE* rgbNonceOddOSAP, // in 1067 UINT32 ulSizeDigestHmac, // in 1068 BYTE* rgbParamDigest, // in 1069 BYTE* rgbHmacData // in, out 1070); 1071 1072typedef TSS_RESULT (*Tspicb_CallbackXorEnc) 1073( 1074 PVOID lpAppData, // in 1075 TSS_HOBJECT hOSAPObject, // in 1076 TSS_HOBJECT hObject, // in 1077 TSS_FLAG PurposeSecret, // in 1078 UINT32 ulSizeNonces, // in 1079 BYTE* rgbNonceEven, // in 1080 BYTE* rgbNonceOdd, // in 1081 BYTE* rgbNonceEvenOSAP, // in 1082 BYTE* rgbNonceOddOSAP, // in 1083 UINT32 ulSizeEncAuth, // in 1084 BYTE* rgbEncAuthUsage, // out 1085 BYTE* rgbEncAuthMigration // out 1086); 1087 1088typedef TSS_RESULT (*Tspicb_CallbackTakeOwnership) 1089( 1090 PVOID lpAppData, // in 1091 TSS_HOBJECT hObject, // in 1092 TSS_HKEY hObjectPubKey, // in 1093 UINT32 ulSizeEncAuth, // in 1094 BYTE* rgbEncAuth // out 1095); 1096 1097typedef TSS_RESULT (*Tspicb_CallbackSealxMask) 1098( 1099 PVOID lpAppData, // in 1100 TSS_HKEY hKey, // in 1101 TSS_HENCDATA hEncData, // in 1102 TSS_ALGORITHM_ID algID, // in 1103 UINT32 ulSizeNonces, // in 1104 BYTE* rgbNonceEven, // in 1105 BYTE* rgbNonceOdd, // in 1106 BYTE* rgbNonceEvenOSAP, // in 1107 BYTE* rgbNonceOddOSAP, // in 1108 UINT32 ulDataLength, // in 1109 BYTE* rgbDataToMask, // in 1110 BYTE* rgbMaskedData // out 1111); 1112 1113typedef TSS_RESULT (*Tspicb_CallbackChangeAuthAsym) 1114( 1115 PVOID lpAppData, // in 1116 TSS_HOBJECT hObject, // in 1117 TSS_HKEY hObjectPubKey, // in 1118 UINT32 ulSizeEncAuth, // in 1119 UINT32 ulSizeAuthLink, // in 1120 BYTE* rgbEncAuth, // out 1121 BYTE* rgbAuthLink // out 1122); 1123 1124typedef TSS_RESULT (*Tspicb_CollateIdentity) 1125( 1126 PVOID lpAppData, // in 1127 UINT32 ulTCPAPlainIdentityProofLength, // in 1128 BYTE* rgbTCPAPlainIdentityProof, // in 1129 TSS_ALGORITHM_ID algID, // in 1130 UINT32 ulSessionKeyLength, // out 1131 BYTE* rgbSessionKey, // out 1132 UINT32* pulTCPAIdentityProofLength, // out 1133 BYTE* rgbTCPAIdentityProof // out 1134); 1135 1136 1137typedef TSS_RESULT (*Tspicb_ActivateIdentity) 1138( 1139 PVOID lpAppData, // in 1140 UINT32 ulSessionKeyLength, // in 1141 BYTE* rgbSessionKey, // in 1142 UINT32 ulSymCAAttestationBlobLength, // in 1143 BYTE* rgbSymCAAttestationBlob, // in 1144 UINT32* pulCredentialLength, // out 1145 BYTE* rgbCredential // out 1146); 1147 1148 1149typedef TSS_RESULT (*Tspicb_DAA_Sign) 1150( 1151 PVOID lpAppData, // in 1152 TSS_HDAA_ISSUER_KEY daaPublicKey, // in 1153 UINT32 gammasLength, // in 1154 BYTE** gammas, // in 1155 UINT32 attributesLength, // in 1156 BYTE** attributes, // in 1157 UINT32 randomAttributesLength, // in 1158 BYTE** randomAttributes, // in 1159 UINT32 attributeCommitmentsLength,// in 1160 TSS_DAA_ATTRIB_COMMIT* attributeCommitments, // in 1161 TSS_DAA_ATTRIB_COMMIT* attributeCommitmentsProof, // in 1162 TSS_DAA_PSEUDONYM_PLAIN* pseudonym, // in 1163 TSS_DAA_PSEUDONYM_PLAIN* pseudonymTilde, // in 1164 TSS_DAA_PSEUDONYM_ENCRYPTED* pseudonymEncrypted, // in 1165 TSS_DAA_PSEUDONYM_ENCRYPTED* pseudonymEncProof, // in 1166 TSS_DAA_SIGN_CALLBACK** additionalProof // out 1167); 1168 1169typedef TSS_RESULT (*Tspicb_DAA_VerifySignature) 1170( 1171 PVOID lpAppData, // in 1172 UINT32 challengeLength, // in 1173 BYTE* challenge, // in 1174 TSS_DAA_SIGN_CALLBACK* additionalProof, // in 1175 TSS_HDAA_ISSUER_KEY daaPublicKey, // in 1176 UINT32 gammasLength, // in 1177 BYTE** gammas, // in 1178 UINT32 sAttributesLength, // in 1179 BYTE** sAttributes, // in 1180 UINT32 attributeCommitmentsLength,// in 1181 TSS_DAA_ATTRIB_COMMIT* attributeCommitments, // in 1182 TSS_DAA_ATTRIB_COMMIT* attributeCommitmentsProof, // in 1183 UINT32 zetaLength, // in 1184 BYTE* zeta, // in 1185 UINT32 sFLength, // in 1186 BYTE* sF, // in 1187 TSS_DAA_PSEUDONYM* pseudonym, // in 1188 TSS_DAA_PSEUDONYM* pseudonymProof, // in 1189 TSS_BOOL* isCorrect // out 1190); 1191 1192 1193#if defined ( __cplusplus ) 1194} 1195#endif /* __cplusplus */ 1196 1197 1198#endif /* _TSPI_H_ */ 1199