You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.7 KiB
87 lines
2.7 KiB
// 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
|
|
|