CNG NTE_BAD_KEYSET (0x80090016) при открытии ключей из разных токенов - PullRequest
0 голосов
/ 31 августа 2018


Я нахожусь в ситуации, когда ключи k1 ("b6b99fb4-01 ...") и k2 ("d861b2a8-c5 ...") принадлежат токену T1 и k3 ("p11 # 4e03 ...") к T2. Моя проблема заключается в том, что всякий раз, когда я открываю ключ на данном токене, а затем ключ от другого токена, я получаю сообщение об ошибке NTE_BAD_KEYSET.
k1> k2> k3 - ошибка
k3> k2 - ошибка

Я могу открыть до 9 ключей на одном токене, и никаких проблем не возникает.

NCRYPT_KEY_HANDLE k3;
if ((st = NCryptOpenKey(pProvider, &k3, L"p11#4e03e03341f2f35e", 0, 0)) != ERROR_SUCCESS) 
{
   throw exception("Open key failed !");
}
NCRYPT_KEY_HANDLE k1;
if ((st = NCryptOpenKey(pProvider, &k1, L"b6b99fb4-01c4-fa18-83db-0e2bb1c80476", 0, 0)) != ERROR_SUCCESS)
{
    throw exception("Open key failed !");
}
NCRYPT_KEY_HANDLE k2;
if ((st = NCryptOpenKey(pProvider, &k2, L"d861b2a8-c5fc-1327-af01-518731bd4e0b", 0, 0)) != ERROR_SUCCESS) 
{
    throw exception("Open key failed !");
}

Что я делаю не так?

Спасибо за ваше время.

...