08.12.2003 2:30:39CryptAcquireCertificatePrivateKey / MyAcquireContext Ответов: 3
Иван
Здравствуйте.
При создания дескриптора криптопровайдера с помощью MyAcquireContext и впоследствии тестировании различных функций (e.g. MyGenProvParam, MyGetUserKey & so on) всё происходит логично и без ошибок до места с CryptGetUserKey (см. пост выше от 27.11.03) где вылазит ошибка
Error 87 during CryptGetUserKey;
Мне посоветовали:
CryptAcquireContext(&hProv, NULL, NULL, 71, CRYPT_VERIFYCONTEXT);
но ведь(из MSDN):
CRYPT_VERIFYCONTEXT. If this flag is set, then the application will have no access to the private keys and the pszContainer parameter must be set to NULL.
а мне как раз private и нужен.
Что же делать? Подскажите пожалуйста.

А стоит только получить дескриптор криптопровайдера при помощи CryptAcquireCertificatePrivateKey, как ошибка
Error 87 during CryptGetUserKey;
исчезает, а появляются ошибки обращения к памяти при вызове функций MyGenKey и т.д. DLLка КриптоПро прописана выше. При обращении к ф-ии CryptoApi CryptGenKey такой проблемы не возникает. Почему так? Ведь и CryptAcquireCertificatePrivateKey и MyAcquireContext получают handle на криптопровайдер. В чем ошибка? Подскажите пожалуйста.
 
Ответы:
09.12.2003 18:34:41Василий
Давайте уточним постановку задачи.
Что Вы хотите сделать.
Тогда я смогу подсказать Вам пути её решения.
10.12.2003 18:07:38Иван
Надо провести подпись, шифрование и проверку соответствующую, используя алгоритм ГОСТ 28147-89
10.12.2003 19:15:14Василий
1.Есть готовое решение - наш продукт "Приложение командной строки".
Дистрибутив, временная лицензия и описание на странице http://www.cryptopro.ru/CryptoPro/products/command.asp
2.Есть исходники работающего примера, выполняющего, в том числе, названные Вами функции -
http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip