| ||||
| ||||
Я использую CryptGetProvParam(...,PP_ENUMCONTAINERS,...,...,...) чтобы получить имена закрытых ключей и в дальнейшем связать сертификат с соотв закрытым ключом. Имя следующего вида: 70013f74-fe34-43c3-b77c-1ed3924e20b7 Но я заметил, что CSP КриптоПро связывает сертификаты с ключами следующего вида: SCARD\ETOKEN_PRO16_42E1A70C\CC00\6B75 в w2k работают оба варианта, но в w98 связи из первого примера не дают требуемого эффекта. Т.е. используя функции Capicom для подписания данных программа вываливается. Я так и не смог найти, какая функция из CryptoAPI возвращает имя контейнера в виде "SCARD\ET..."??? | ||||
Ответы: | ||||
| ||||
Та же самая - CryptGetProvParam, параметр - PP_UNIQUE_CONTAINER. См. нашу документацию http://www.cryptopro.ru/CryptoPro/test/csp_2_0.chm | ||||
| ||||
Может я чего не так делаю, но вместо строки с контейнером, она возвращает такую: $TempUserContext$ | ||||
| ||||
Правильно будет так: CryptAcquireContext(..,CRYPT_VERIFYCONTEXT) CryptGetProvParam(hProv, PP_ENUMCONTAINERS, ..,.., CRYPT_UNIQUE | CRYPT_FIRST); CryptGetProvParam(hProv, PP_ENUMCONTAINERS, ..,.., CRYPT_UNIQUE); Полностью пример есть в файле ctkey.c из проекта http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip | ||||