87 lines
2.7 KiB
C
87 lines
2.7 KiB
C
// This file was extracted from the TCG Published
|
|
// Trusted Platform Module Library
|
|
// Part 4: Supporting Routines
|
|
// Family "2.0"
|
|
// Level 00 Revision 01.16
|
|
// October 30, 2014
|
|
|
|
#ifndef TCP_TPM_PROTOCOL_H
|
|
#define TCP_TPM_PROTOCOL_H
|
|
//
|
|
// TPM Commands. All commands acknowledge processing by returning a UINT32 == 0 except where
|
|
// noted
|
|
//
|
|
#define TPM_SIGNAL_POWER_ON 1
|
|
#define TPM_SIGNAL_POWER_OFF 2
|
|
#define TPM_SIGNAL_PHYS_PRES_ON 3
|
|
#define TPM_SIGNAL_PHYS_PRES_OFF 4
|
|
#define TPM_SIGNAL_HASH_START 5
|
|
#define TPM_SIGNAL_HASH_DATA 6
|
|
// {UINT32 BufferSize, BYTE[BufferSize] Buffer}
|
|
#define TPM_SIGNAL_HASH_END 7
|
|
#define TPM_SEND_COMMAND 8
|
|
// {BYTE Locality, UINT32 InBufferSize, BYTE[InBufferSize] InBuffer} ->
|
|
// {UINT32 OutBufferSize, BYTE[OutBufferSize] OutBuffer}
|
|
#define TPM_SIGNAL_CANCEL_ON 9
|
|
#define TPM_SIGNAL_CANCEL_OFF 10
|
|
#define TPM_SIGNAL_NV_ON 11
|
|
#define TPM_SIGNAL_NV_OFF 12
|
|
#define TPM_SIGNAL_KEY_CACHE_ON 13
|
|
#define TPM_SIGNAL_KEY_CACHE_OFF 14
|
|
#define TPM_REMOTE_HANDSHAKE 15
|
|
#define TPM_SET_ALTERNATIVE_RESULT 16
|
|
#define TPM_SIGNAL_RESET 17
|
|
#define TPM_SESSION_END 20
|
|
#define TPM_STOP 21
|
|
#define TPM_GET_COMMAND_RESPONSE_SIZES 25
|
|
#define TPM_TEST_FAILURE_MODE 30
|
|
enum TpmEndPointInfo
|
|
{
|
|
tpmPlatformAvailable = 0x01,
|
|
tpmUsesTbs = 0x02,
|
|
tpmInRawMode = 0x04,
|
|
tpmSupportsPP = 0x08
|
|
};
|
|
// Existing RPC interface type definitions retained so that the implementation
|
|
// can be re-used
|
|
typedef struct
|
|
{
|
|
unsigned long BufferSize;
|
|
unsigned char *Buffer;
|
|
} _IN_BUFFER;
|
|
typedef unsigned char *_OUTPUT_BUFFER;
|
|
typedef struct
|
|
{
|
|
uint32_t BufferSize;
|
|
_OUTPUT_BUFFER Buffer;
|
|
} _OUT_BUFFER;
|
|
//** TPM Command Function Prototypes
|
|
void _rpc__Signal_PowerOn(BOOL isReset);
|
|
void _rpc__Signal_PowerOff();
|
|
void _rpc__ForceFailureMode();
|
|
void _rpc__Signal_PhysicalPresenceOn();
|
|
void _rpc__Signal_PhysicalPresenceOff();
|
|
void _rpc__Signal_Hash_Start();
|
|
void _rpc__Signal_Hash_Data(
|
|
_IN_BUFFER input
|
|
);
|
|
void _rpc__Signal_HashEnd();
|
|
void _rpc__Send_Command(
|
|
unsigned char locality,
|
|
_IN_BUFFER request,
|
|
_OUT_BUFFER *response
|
|
);
|
|
void _rpc__Signal_CancelOn();
|
|
void _rpc__Signal_CancelOff();
|
|
void _rpc__Signal_NvOn();
|
|
void _rpc__Signal_NvOff();
|
|
BOOL _rpc__InjectEPS(
|
|
const char* seed,
|
|
int seedSize
|
|
);
|
|
//
|
|
// start the TPM server on the indicated socket. The TPM is single-threaded and will accept connections
|
|
// first-come-first-served. Once a connection is dropped another client can connect.
|
|
//
|
|
BOOL TpmServer(SOCKET ServerSocket);
|
|
#endif
|