Я пытаюсь использовать Crypto API Microsoft для выполнения некоторых RSA. В Windows Vista и выше мой код работает без проблем.Что такое «сохраненный закрытый ключ»?
CryptAcquireContext(&m_hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0);
К сожалению, на двух машинах Windows XP, которые я пробовал, я получаю код ошибки NTE_BAD_KEYSET (0x80090016).
Немного поисковой системы, найденной в этой статье, содержится в разделе Поддержка Microsoft. http://support.microsoft.com/kb/238187
Он упоминает флаг CRYPT_VERIFYCONTEXT, который может быть передан, если «вы не используете закрытый ключ, который хранится в контейнере ключей». Когда в этом контексте означает «сохраняющийся закрытый ключ»?
Я уверен, что вы имеете в виду «стойкие», верно? – ypnos
Точная цитата из MS Support говорит, что «сохраняется». Я вижу, как «постоянный» будет взаимозаменяемым в этом контексте. – ajs410
«Сохранение» означает сохранение для повторного использования. Например, если вы проверяете подпись, вам нужен только временный доступ к открытому ключу; когда подпись проверяется (или не проверяется), ключ может быть уничтожен. Ошибка указывает, что контейнер ключей по умолчанию уже используется. –