16.04.2002 12:57:00 | Последовательность | | Ответов: 5 |
|
vadim | | |
|
Пример CAPICOM подписывает так: Выбирается сертификат(подписант), вызывается SignedData.Sign, идет обращение к ключу. Если ключ чужой, криптопро не пускает. А для задачи надо наоборот: прочитать ключ, проверить по своим правилам, имеет ли этот подписант право подписи и дальше подписывать или прекращать процесс. Что-нибудь посоветуете? |
|
Ответы:
|
|
Немного с вами не согласен.
При создании подписи с использованием CAPICOM, если сертификат имет ключ DSA или RSA подпись производится ма этих алгоритмах.
Если вункциональности CAPICOM 1.0 не хватает, то придется воспользоваться CryptoAPI, а лучше посмотреть новый CAPICOM 2.0 (только вышел). Сейчас это beta. В мае выйдет релиз. Там в подписи уже можно передавать контекст сертификата в CryptoAPI в CryptoAPI.
http://www.microsoft.com/downloads/release.asp?ReleaseID=37986 |
|
|
Тогда сформулирую по другому. Какими ф-циями API можно посмотреть реквизиты (например SubjectName) закрытого ключа на носителе? |
|
|
Собственно в закрытом ключе никаких атрибутов пользователя нет. Закрытый ключ содержит только идентификатор контейнера. И по этому идентификатору контейнера загружается функцией CryptAcquireContext.
В закрытом ключе может (опционально) лежать сертификат. Сертификат можно получить функций CryptGetProvParameters с флагом PP_CERTIFICATE.
Дальше имеете контекст сертификата. Используя CryptDecodeObject можно получить любые поля. Этот пример находится в файле property.c |
|
|
И как эту опциональность задействовать? |
|
|
И как эту опциональность задействовать? |
|