| ||||
| ||||
Как программно определить, имеются ли у сертификата все необходимые расширения (чтобы можно было сделать выбор - использовать функции КриптоПро Cades*() или обычные функции CryptoAPI)? Каков список необходимых расширений для Cades*()? | ||||
Ответы: | ||||
| ||||
Здесь должна быть обратная постановка задачи. Т.е. сначала решается: "в такой-то системе надо использовать улучшенную подпись". Это значит, что простую подпись использовать нельзя. Соответственно, программная реализация для этой системы должна всегда использовать кадес. | ||||
| ||||
Дело в том, что пишется приложение для более общих задач... И выбор пользователем проставления простой/расширенной подписи уже реализован. В данном случае задача состоит в том, чтобы невнимательный пользователь не пытался (не давать ему возможность) ставить расширенную подпись, используя сертификат, который для этого не предназначен. Это лучше, чем выдавать малопонятное для него сообщение об ошибке... Я так понял, расширения таковы: szOID_KEY_USAGE szOID_ENHANCED_KEY_USAGE szOID_SUBJECT_KEY_IDENTIFIER szOID_AUTHORITY_KEY_IDENTIFIER2 szOID_CRL_DIST_POINTS szOID_AUTHORITY_INFO_ACCESS Поправьте меня пожалуйста, если где ошибся... То есть, если пользователь хочет поставить расширенную подпись, все эти расширения необходимы, так? Нужно ли сравнивать также их содержимое, или будет достаточно этого списка? То есть, мне бы хотелось знать необходимые и достаточные признаки, чтобы можно было проидентифицировать, что сертификат может использоваться для постановки расширенной подписи. | ||||
| ||||
По содержимому сертификата дать однозначный ответ на такой вопрос нельзя. Усовершенстованную подпись можно создать, если пользователю доступна служба штампов времени, а его сертификат можно проверить с помощью службы OCSP, которая выдаёт достаточно свежие ответы. По сертификату можно судить о возможности проверки сертификата по OCSP, но только косвенно: можно поискать в расширении szOID_AUTHORITY_INFO_ACCESS точку доступа, тип которой - szOID_PKIX_OCSP. Но отсутствие адреса службы OCSP в сертификате вовсе не означает, что он не пригоден для создания усовершенствованной ЭЦП. Адрес может быть задан в групповой политике. "Свежесть" ответов, выдаваемых службой OCSP по сертификату узнать нельзя. | ||||