16.04.2002 12:57:00Последовательность Ответов: 5
vadim
Пример CAPICOM подписывает так: Выбирается сертификат(подписант), вызывается SignedData.Sign, идет обращение к ключу. Если ключ чужой, криптопро не пускает. А для задачи надо наоборот: прочитать ключ, проверить по своим правилам, имеет ли этот подписант право подписи и дальше подписывать или прекращать процесс. Что-нибудь посоветуете?
 
Ответы:
17.04.2002 11:33:44kure
Немного с вами не согласен.
При создании подписи с использованием CAPICOM, если сертификат имет ключ DSA или RSA подпись производится ма этих алгоритмах.

Если вункциональности CAPICOM 1.0 не хватает, то придется воспользоваться CryptoAPI, а лучше посмотреть новый CAPICOM 2.0 (только вышел). Сейчас это beta. В мае выйдет релиз. Там в подписи уже можно передавать контекст сертификата в CryptoAPI в CryptoAPI.

http://www.microsoft.com/downloads/release.asp?ReleaseID=37986
17.04.2002 12:49:16vadim
Тогда сформулирую по другому. Какими ф-циями API можно посмотреть реквизиты (например SubjectName) закрытого ключа на носителе?
17.04.2002 15:31:59kure
Собственно в закрытом ключе никаких атрибутов пользователя нет. Закрытый ключ содержит только идентификатор контейнера. И по этому идентификатору контейнера загружается функцией CryptAcquireContext.
В закрытом ключе может (опционально) лежать сертификат. Сертификат можно получить функций CryptGetProvParameters с флагом PP_CERTIFICATE.
Дальше имеете контекст сертификата. Используя CryptDecodeObject можно получить любые поля. Этот пример находится в файле property.c
17.04.2002 15:37:11vadim
И как эту опциональность задействовать?
17.04.2002 15:38:44vadim
И как эту опциональность задействовать?