| // 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 |
| |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <stdint.h> |
| #include <ctype.h> |
| #include <windows.h> |
| #include <strsafe.h> |
| #include "string.h" |
| #include "TpmTcpProtocol.h" |
| #include "..\tpm\include\TpmBuildSwitches.h" |
| #include "..\tpm\include\prototypes\Manufacture_fp.h" |
| #define PURPOSE \ |
| "TPM Reference Simulator.\nCopyright Microsoft 2010, 2011.\n" |
| #define DEFAULT_TPM_PORT 2321 |
| void* MainPointer; |
| int _plat__NVEnable(void* platParameters); |
| void _plat__NVDisable(); |
| int StartTcpServer(int PortNumber); |
| // |
| // |
| // Functions |
| // |
| // Usage() |
| // |
| // This function prints the proper calling sequence for the simulator. |
| // |
| void |
| Usage( |
| char *pszProgramName |
| ) |
| { |
| fprintf_s(stderr, "%s", PURPOSE); |
| fprintf_s(stderr, "Usage:\n"); |
| fprintf_s(stderr, "%s - Starts the TPM server listening on port %d\n", |
| pszProgramName, DEFAULT_TPM_PORT); |
| fprintf_s(stderr, |
| "%s PortNum - Starts the TPM server listening on port PortNum\n", |
| pszProgramName); |
| fprintf_s(stderr, "%s ? - This message\n", pszProgramName); |
| exit(1); |
| } |
| // |
| // |
| // main() |
| // |
| // This is the main entry point for the simulator. |
| // main: register the interface, start listening for clients |
| // |
| void __cdecl |
| main( |
| int argc, |
| char *argv[] |
| ) |
| { |
| int portNum = DEFAULT_TPM_PORT; |
| if(argc>2) |
| { |
| Usage(argv[0]); |
| } |
| if(argc==2) |
| { |
| if(strcmp(argv[1], "?") ==0) |
| { |
| Usage(argv[0]); |
| } |
| portNum = atoi(argv[1]); |
| if(portNum <=0 || portNum>65535) |
| { |
| Usage(argv[0]); |
| } |
| } |
| _plat__NVEnable(NULL); |
| if(TPM_Manufacture(1) != 0) |
| { |
| exit(1); |
| } |
| // Coverage test - repeated manufacturing attempt |
| if(TPM_Manufacture(0) != 1) |
| { |
| exit(2); |
| } |
| // Coverage test - re-manufacturing |
| TPM_TearDown(); |
| if(TPM_Manufacture(1) != 0) |
| { |
| exit(3); |
| } |
| // Disable NV memory |
| _plat__NVDisable(); |
| StartTcpServer(portNum); |
| return; |
| } |