2013-05-31 7 views
0

Я пытаюсь использовать 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, который может быть передан, если «вы не используете закрытый ключ, который хранится в контейнере ключей». Когда в этом контексте означает «сохраняющийся закрытый ключ»?

+0

Я уверен, что вы имеете в виду «стойкие», верно? – ypnos

+0

Точная цитата из MS Support говорит, что «сохраняется». Я вижу, как «постоянный» будет взаимозаменяемым в этом контексте. – ajs410

+0

«Сохранение» означает сохранение для повторного использования. Например, если вы проверяете подпись, вам нужен только временный доступ к открытому ключу; когда подпись проверяется (или не проверяется), ключ может быть уничтожен. Ошибка указывает, что контейнер ключей по умолчанию уже используется. –

ответ

0

Поскольку никто не ответил, я думаю, что постоянный закрытый ключ - это тот, который помещается в хранилище ключей. Я не использую хранилище ключей, и я не знаю почему, но для XP требуется CRYPT_VERIFYCONTEXT и Vista +, нет.

Смежные вопросы