Files
xen/stubdom/vtpmmgr/tpm.h
T
Jason Andryuk 2c8a51eebe vtpmmgr: Convert TPM_Seal to use TPM_PCR_INFO_LONG
Infineon 1.2 TPMs fail TPM_Seal commands with TPM_BAD_PARAMETER when
PCRS are specified by a TPM_PCR_INFO structure.  Using a
TPM_PCR_INFO_LONG structure to specify PCRs succeeds, so update to use
that.  This also requires changes to use TPM_STORED_DATA12 for the
result.

Signed-off-by: Jason Andryuk <andryuk@aero.org>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
2014-04-23 11:57:53 +01:00

185 lines
5.7 KiB
C

/*
* Copyright (c) 2010-2012 United States Government, as represented by
* the Secretary of Defense. All rights reserved.
*
* based off of the original tools/vtpm_manager code base which is:
* Copyright (c) 2005/2006, Intel Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __TPM_H__
#define __TPM_H__
#include "tcg.h"
// ------------------------------------------------------------------
// Exposed API
// ------------------------------------------------------------------
// TPM v1.1B Command Set
// Authorzation
TPM_RESULT TPM_OIAP(
TPM_AUTH_SESSION* auth //out
);
TPM_RESULT TPM_OSAP (
TPM_ENTITY_TYPE entityType, // in
UINT32 entityValue, // in
const TPM_AUTHDATA* usageAuth, //in
TPM_SECRET *sharedSecret, //out
TPM_AUTH_SESSION *auth);
TPM_RESULT TPM_TakeOwnership(
const TPM_PUBKEY *pubEK, //in
const TPM_AUTHDATA* ownerAuth, //in
const TPM_AUTHDATA* srkAuth, //in
const TPM_KEY* inSrk, //in
TPM_KEY* outSrk, //out, optional
TPM_AUTH_SESSION* auth // in, out
);
TPM_RESULT TPM_DisablePubekRead (
const TPM_AUTHDATA* ownerAuth,
TPM_AUTH_SESSION* auth
);
TPM_RESULT TPM_TerminateHandle ( TPM_AUTHHANDLE handle // in
);
TPM_RESULT TPM_FlushSpecific ( TPM_HANDLE handle, // in
TPM_RESOURCE_TYPE resourceType //in
);
// TPM Mandatory
TPM_RESULT TPM_Extend ( TPM_PCRINDEX pcrNum, // in
TPM_DIGEST* inDigest, // in
TPM_PCRVALUE* outDigest // out
);
TPM_RESULT TPM_Reset(TPM_PCR_SELECTION *sel);
TPM_RESULT TPM_Seal(
TCS_KEY_HANDLE keyHandle, // in
UINT32 pcrInfoLongSize, // in
TPM_PCR_INFO_LONG* pcrInfoLong, // in
UINT32 inDataSize, // in
const BYTE* inData, // in
TPM_STORED_DATA12* sealedData, //out
const TPM_SECRET* osapSharedSecret, //in
const TPM_AUTHDATA* sealDataAuth, //in
TPM_AUTH_SESSION* pubAuth // in, out
);
TPM_RESULT TPM_Unseal (
TPM_KEY_HANDLE parentHandle, // in
const TPM_STORED_DATA12* sealedData,
UINT32* outSize, // out
BYTE** out, //out
const TPM_AUTHDATA* key_usage_auth, //in
const TPM_AUTHDATA* data_usage_auth, //in
TPM_AUTH_SESSION* keyAuth, // in, out
TPM_AUTH_SESSION* dataAuth // in, out
);
TPM_RESULT TPM_LoadKey (
TPM_KEY_HANDLE parentHandle, //
const TPM_KEY* key, //in
TPM_HANDLE* keyHandle, // out
const TPM_AUTHDATA* usage_auth,
TPM_AUTH_SESSION* auth
);
TPM_RESULT TPM_FlushSpecific(TPM_HANDLE handle, //in
TPM_RESOURCE_TYPE rt //in
);
TPM_RESULT TPM_GetRandom ( UINT32* bytesRequested, // in, out
BYTE* randomBytes // out
);
TPM_RESULT TPM_ReadPubek (
TPM_PUBKEY* pubEK //out
);
TPM_RESULT TPM_GetCapability(
TPM_CAPABILITY_AREA capArea,
UINT32 subCapSize,
const BYTE* subCap,
UINT32* respSize,
BYTE** resp);
TPM_RESULT TPM_PCR_Read(UINT32 pcr, TPM_DIGEST *value);
TPM_RESULT TPM_SaveState(void);
TPM_RESULT TPM_CreateEndorsementKeyPair(
const TPM_KEY_PARMS* keyInfo,
TPM_PUBKEY* pubEK);
TPM_RESULT TPM_MakeIdentity(
const TPM_AUTHDATA* identityAuth, // in
const TPM_AUTHDATA* privCADigest, // in
const TPM_KEY* kinfo, // in
const TPM_AUTHDATA* srk_auth, // in
const TPM_AUTHDATA* owner_auth, // in
TPM_AUTH_SESSION* srkAuth, // in,out
TPM_AUTH_SESSION* ownAuth, // in,out
TPM_KEY* key, // out
UINT32* identityBindingSize, // out
BYTE** identityBinding); // out
TPM_RESULT TPM_ActivateIdentity(
TPM_KEY_HANDLE aikHandle, // in
BYTE* blob, // in
UINT32 blobSize, // in
const TPM_AUTHDATA* aik_auth, // in
const TPM_AUTHDATA* owner_auth, // in
TPM_AUTH_SESSION* aikAuth, // in,out
TPM_AUTH_SESSION* ownAuth, // in,out
TPM_SYMMETRIC_KEY* symKey); // out
TPM_RESULT TPM_Quote(
TPM_KEY_HANDLE keyh, // in
const TPM_NONCE* data, // in
const TPM_PCR_SELECTION *pcrSelect, // in
const TPM_AUTHDATA* auth, // in
TPM_AUTH_SESSION* oiap, // in,out
TPM_PCR_COMPOSITE *pcrs, // out
BYTE** sig, // out
UINT32* sigSize); // out
TPM_RESULT TPM_TransmitData(
BYTE* in,
UINT32 insize,
BYTE* out,
UINT32* outsize);
#endif //TPM_H