in src/tpm_socket_comm.c [199:239]
TPM_SOCKET_HANDLE tpm_socket_create(const char* address, unsigned short port)
{
TPM_SOCKET_INFO* result;
if ((result = malloc(sizeof(TPM_SOCKET_INFO))) == NULL)
{
LogError("Failure: malloc socket communication info.");
}
else
{
#ifdef WIN32
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 0), &wsaData);
#endif
memset(result, 0, sizeof(TPM_SOCKET_INFO));
if ((result->socket_conn = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
LogError("Failure: connecting to tpm simulator.");
free(result);
result = NULL;
}
else
{
struct sockaddr_in SockAddr;
memset(&SockAddr, 0, sizeof(SockAddr));
SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons(port);
SockAddr.sin_addr.s_addr = inet_addr(address);
if (connect(result->socket_conn, (struct sockaddr*)&SockAddr, sizeof(SockAddr)) < 0)
{
LogError("Failure: connecting to tpm simulator.");
close_socket(result->socket_conn);
free(result);
result = NULL;
}
}
}
return result;
}