Я пытаюсь использовать TPM для генерации случайных чисел. Это чисто для того, чтобы научиться использовать TPM.
Проблема, с которой я столкнулся, заключается в том, что я не могу получить дескриптор. Когда я использую MS_PLATFORM_CRYPTO_PROVIDER, дескриптор не создается с сообщением STATUS_NOT_FOUND. Работает по умолчанию NULL.
Как правильно настроить дескриптор для использования TPM в качестве ГСЧ?
#include <Windows.h>
#include <bcrypt.h>
#pragma comment(lib, "bcrypt.lib")
...
BCRYPT_ALG_HANDLE *handle;
NTSTATUS handle_status = BCryptOpenAlgorithmProvider(
&handle,
BCRYPT_RNG_ALGORITHM,
MS_PLATFORM_CRYPTO_PROVIDER,
0
);
// Status code 0xC0000225 STATUS_NOT_FOUND
unsigned char *buffer = calloc(BIT_SIZE/sizeof(char), sizeof(char));
NTSTATUS gen_status = BCryptGenRandom(
handle,
buffer,
BIT_SIZE / sizeof(char),
0
);
...
У меня Intel TPM с версией спецификации 2.0. Статус готов.