int tpm_socket_read()

in src/tpm_socket_comm.c [251:284]


int tpm_socket_read(TPM_SOCKET_HANDLE handle, unsigned char* tpm_bytes, uint32_t bytes_len)
{
    int result;
    if (handle == NULL || tpm_bytes == NULL || bytes_len == 0)
    {
        LogError("Invalid argument specified handle: %p, tpm_bytes: %p, bytes_len: %d", handle, tpm_bytes, bytes_len);
        result = MU_FAILURE;
    }
    else
    {
        // Do we have enough bytes cached
        result = MU_FAILURE;
        for (size_t index = 0; index < 2; index++)
        {
            if (handle->recv_length >= bytes_len)
            {
                memcpy(tpm_bytes, handle->recv_bytes, bytes_len);
                remove_from_buffer(handle, bytes_len);
                result = 0;
                break;
            }
            else
            {
                if (read_socket_bytes(handle))
                {
                    LogError("Failure reading socket bytes.");
                    result = MU_FAILURE;
                    break;
                }
            }
        }
    }
    return result;
}