Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

9 Страницы«<23456>»
Опции
К последнему сообщению К первому непрочитанному
Offline Randoom  
#31 Оставлено : 26 ноября 2009 г. 18:49:50(UTC)
Randoom

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.06.2009(UTC)
Сообщений: 89
Откуда: Уфа, РРЦ &quot;АйТи&quot;

Новожилова Елена написал:
Цитата:
в варианте: sSignedData = oSignedData.CoSignCades(oSignedData.Signers[1], CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64); - Signer находится....

...........вообщем - без коментариев ......................


Это принятое в CAPICOM поведение коллекции Signers - нумерация элементов начинается с единицы.


Microsoft шутит....


Новожилова Елена написал:
Цитата:


В Вашем случае было бы логичнее просто скопировать сертификат, полученный из объекта Signer и использовать данный сертификат для создания подписи CAdES X Long Type 1 (не забудьте про то, что для создания подписи CAdES X Long Type 1 требуется задать адрес службы штампов времени). Хотя не совсем понятно, зачем Вам такие сложности.


Непонятно как бы это провернуть, в полученном врапере Interop.CAdESCOM у oSignedData.Signers[1] нет публичных полей, поэтому ни установить, ни взять не получается. Или можно в наглую кастовать к CPSigner ?


Update^ вроде сработало, не нравится что пароль спрашивается 2 раза - можно ли как то это обойти ?

Отредактировано пользователем 26 ноября 2009 г. 19:04:12(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#32 Оставлено : 26 ноября 2009 г. 19:11:21(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Это особенности взаимодействия .Net и COM. Прочитать об этом можно в MSDN
Offline Новожилова Елена  
#33 Оставлено : 26 ноября 2009 г. 19:15:17(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Randoom написал:
не нравится что пароль спрашивается 2 раза - можно ли как то это обойти ?


Вы дважды создаете подпись (= 2 обращения к закрытому ключу) - естественно, что пароль спрашивается дважды.
Offline Randoom  
#34 Оставлено : 30 ноября 2009 г. 12:21:07(UTC)
Randoom

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.06.2009(UTC)
Сообщений: 89
Откуда: Уфа, РРЦ &quot;АйТи&quot;

Новожилова Елена написал:
Randoom написал:
не нравится что пароль спрашивается 2 раза - можно ли как то это обойти ?


Вы дважды создаете подпись (= 2 обращения к закрытому ключу) - естественно, что пароль спрашивается дважды.


И прям вообще никаких вариантов Think ?


p.s.

1) В качестве упрощения жизни тем кто будет писать аналогичное на шарпе - код + Очень хотелось бы от представителей КриптоПро диагонального осмотра кода на предмет глупостей, которые я, в силу отсутствия опыта в общении с CAPICOM и т.п., могу не увидеть...

Код:

public string Sign(string document)
        {
           
            CadesSignedData oSignedData = new CadesSignedData();
            oSignedData.Content = document;

            //Создание и проверка подписи CAdES BES

            string sSignedData = oSignedData.SignCades(null, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true,
                                      CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
            oSignedData.VerifyCades(sSignedData, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true);

            // Создание параллельной подписи CAdES X Long Type 1
            
            CPSigner cpSigner = new CPSigner();
            cpSigner.TSAAddress = TSPServer;
            cpSigner.Certificate = ((CPSigner) (oSignedData.Signers[1])).Certificate;
            sSignedData = oSignedData.CoSignCades(cpSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1,
                                                  CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
            // Проверка полученных параллельных подписей на соответствие CAdES BES

            oSignedData.VerifyCades(sSignedData, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true);

            // Дополнение подписи CAdES BES до подписи CAdES X Long Type 1 (вторая
            // подпись остается без изменения, так как она уже CAdES X Long Type 1)

            sSignedData = oSignedData.EnhanceCades(CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, TSPServer,
                                                   CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);

            // Проверка полученных параллельных подписей на соответствие CAdES X Long Type 1

            oSignedData.VerifyCades(sSignedData, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, true);

            return sSignedData;
        }


2) Как по хорошему, в случает с указанным кодом, отлавливать отказ от выбора сертификата ?

затачиваться на
Цитата:
System.Runtime.InteropServices.COMException was unhandled
Message="Операция была отменена пользователем. (Исключение из HRESULT: 0x800704C7)"
Source="Interop.CAdESCOM"
ErrorCode=-2147023673
StackTrace:
в CAdESCOM.CadesSignedDataClass.SignCades(Object pSigner, CADESCOM_CADES_TYPE CadesType, Boolean bDetached, CAPICOM_ENCODING_TYPE EncodingType)
в CAdES.CAdESWrapper.Sign(String document) в d:\Avior\Main\3rdParty\CAdES\CAdESWrapper\CAdESWrapper.cs:строка 38
в CAdES.Signer.Sign(XDocument document) в d:\Avior\Main\3rdParty\CAdES\CAdES\Signer.cs:строка 24


? В ней ведь нет ни одного хорошего параметра на который можно полагаться, только если разбором Message="Операция была отменена пользователем. (Исключение из HRESULT: 0x800704C7)" и захардкоживанием отлавливания этой фразы ... Возможно ли формирование более привычного экцепшена ?

3) Если у КриптоПро какой либо тестовый сервис "кошерной" проверки документов подписанный CAdES? Очень хотелось бы прогнать варианты подписанных документов через стороннее проверенное приложение и проверить верность подписывания.

4) Проверяет ли VerifyCades сертификат на отозванность, загружает ли она списки отозванных сертификатов самостоятельно - и какой реакции следует ожидать в случае a) отозванности сертификата б) невозможности загрузки списка отозванных сертификатов ?

5) Возможно ли подписание/проверка документа при использовании стороннего (не_Crypto про и/или не_гостового) сертификата ?

6) Возможна ли проверка сертификата подписанта на отозванность в СА со сторонним СА?

Отредактировано пользователем 1 декабря 2009 г. 14:44:24(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#35 Оставлено : 1 декабря 2009 г. 17:24:05(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
1. А зачем Вам 2 параллельные подписи на одном и том же сертификате, если не секрет? Трудно представить, что кому-то еще потребуется писать что-то аналогичное.

Как я понимаю, основу кода Вы брали из примера на работу с типом подписи CAdES BES. В этом примере просто демонстрируются возможности работы с этим типом подписи - он не предполагает практического применения целиком.

В Вашем случае, если просто требуется создать подпись CAdES X Long Type 1 и не хочется писать код выбора сертификата самостоятельно, можно создать подпись CAdES BES (при помощи функции SignCades), а затем усовершенствовать (при помощи функции EnhanceCades). В промежуточной проверке смысла нет, проверка после создания подписи - ну если только для перестраховки... Кстати, не будет двойного вызова окна ввода пароля.

Но все это, разумеется, в том случае, если Вам действительно не нужны 2 параллельные подписи.

2. Ловить исключение см. ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_mscorlib/html/04d60790-b4b2-e4ba-81a2-548247f88560.htm и проверять код ошибки.

3. Тестового сервиса проверки документов, подписанных CAdES, нет.

4. Сертификат (и всю его цепочку) на отозванность функция VerifyCades проверяет.

Если тип подписи CAdES X Long Type 1, то используются вложенные в подпись доказательства. Подробно о проверке подписи можно прочитать в Стандарте применения усовершенствованной электронной цифровой подписи.

Если тип подписи CAdES BES, то строится цепочка сертификатов и выполняется проверка построенной цепочки. Список отозванных сертификатов должен быть либо установлен в хранилище, либо адрес, по которому его можно скачать, должен присутствовать в расширении CDP проверяемого сертификата.

Если сертификат отозван или проверить его статус не удается (неважно, по какой причине), то функция VerifyCades выдаст исключение с информацией о произошедшей ошибке.

5. Да, возможно.

6. Поясните, пожалуйста, Ваш вопрос.

Отредактировано пользователем 1 декабря 2009 г. 17:24:49(UTC)  | Причина: Не указана

Offline Randoom  
#36 Оставлено : 1 декабря 2009 г. 17:52:49(UTC)
Randoom

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.06.2009(UTC)
Сообщений: 89
Откуда: Уфа, РРЦ &quot;АйТи&quot;

1)
Новожилова Елена написал:
1. А зачем Вам 2 параллельные подписи на одном и том же сертификате, если не секрет? Трудно представить, что кому-то еще потребуется писать что-то аналогичное.

Как я понимаю, основу кода Вы брали из примера на работу с типом подписи CAdES BES. В этом примере просто демонстрируются возможности работы с этим типом подписи - он не предполагает практического применения целиком.

В Вашем случае, если просто требуется создать подпись CAdES X Long Type 1 и не хочется писать код выбора сертификата самостоятельно, можно создать подпись CAdES BES (при помощи функции SignCades), а затем усовершенствовать (при помощи функции EnhanceCades). В промежуточной проверке смысла нет, проверка после создания подписи - ну если только для перестраховки... Кстати, не будет двойного вызова окна ввода пароля.

Но все это, разумеется, в том случае, если Вам действительно не нужны 2 параллельные подписи.

На самом деле требуется Подписание документа + Ваш диалог выбора сертификата + штамп времени относительно этого подписания.
Если это возможно и без использования CAdES BES.
Проверки все носят исключительно параноидальный характер, но без этого - тоже никак )
Также важна проверка при VerifyCades - отозванности сертификата из цепочки.

a) Какие части можно убрать из данного кода для достижения этого результата (а лучше - какие оставить ;) )
б) В контесте ответа на 4-й вопрос - достаточно ли использования только CAdES X Long Type 1 для проверки цепочки сертификатов в онлайн ?

2) Затачиваться на ErrorCode=-2147023673 ? Это константа именно для этой ошибки ?

3) А есть ли просмоторщик (viewer) открепленной подписи ?

6)
Новожилова Елена написал:
6. Поясните, пожалуйста, Ваш вопрос.

Если Сертификат выдан не Сертификационным центром КриптоПро - и отозван, сможет ли об этом узнать CAdESCOM и выбросить исключение ?

Отредактировано пользователем 1 декабря 2009 г. 18:41:26(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#37 Оставлено : 2 декабря 2009 г. 14:49:42(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
а - б. Судя по Вашим вопросам - Вы не очень понимаете, что такое PKI и чего Вы хотите достичь. В таких условиях давать советы по поводу кода представляется несколько затруднительным.

Попробуйте сначала для себя четко сформулировать, что Вы хотите, потом ознакомиться с документацией на то, что Вы собираетесь применять для достижения цели, а если что-то останется непонятным - задавать вопросы. Потому что проверка подписи типа CAdES X Long Type 1 не подразумевает проверки цепочки сертификатов онлайн - наоборот, данный тип подписи создан, чтобы такая проверка была не нужна. И в стандарте, ссылку на который я Вам давала, об этом явно написано.

2. HRESULT: 0x800704C7 константа ошибки (ERROR_CANCELLED).

3. Есть метод Display в интерфейсе ICPSignedData и в интерфейсе ICPSigner2.

6. А что такое "Сертификационный центр КриптоПро"?

Отредактировано пользователем 2 декабря 2009 г. 14:52:53(UTC)  | Причина: Не указана

Offline Randoom  
#38 Оставлено : 2 декабря 2009 г. 15:01:39(UTC)
Randoom

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.06.2009(UTC)
Сообщений: 89
Откуда: Уфа, РРЦ &quot;АйТи&quot;

Новожилова Елена написал:
а - б. Судя по Вашим вопросам - Вы не очень понимаете, что такое PKI и чего Вы хотите достичь. В таких условиях давать советы по поводу кода представляется несколько затруднительным.

Попробуйте сначала для себя четко сформулировать, что Вы хотите, потом ознакомиться с документацией на то, что Вы собираетесь применять для достижения цели, а если что-то останется непонятным - задавать вопросы. Потому что проверка подписи типа CAdES X Long Type 1 не подразумевает проверки цепочки сертификатов онлайн - наоборот, данный тип подписи создан, чтобы такая проверка была не нужна. И в стандарте, ссылку на который я Вам давала, об этом явно написано.


Согласен с моментом непонимания.
Попытаюсь переформулировать желания.
Необходима подпись документа с возможностью онлайн проверок подписи на отозванность сертификатов + необходим штамп времени на эту подпись для решения возможных споров.
CAdES X, насколько понимаю я - отличается поддержкой штампов времени.. если можно использовать другой тип подписи совместно со штампом времени - был бы рад рассказу о том как можно это сделать.

Новожилова Елена написал:


6. А что такое "Сертификационный центр КриптоПро"?

Центр сертификации, как например http://www.cryptopro.ru/certsrv/ ;
т.е. в случае когда иная (не_КриптоПро) организация выдала сертификат и позднее отозвала его.

Отредактировано пользователем 2 декабря 2009 г. 16:23:04(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#39 Оставлено : 2 декабря 2009 г. 21:37:17(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Цитата:
Необходима подпись документа с возможностью онлайн проверок подписи на отозванность сертификатов + необходим штамп времени на эту подпись для решения возможных споров.


В этом случае Вам подойдет формат подписи CAdES-T. Подробнее про этот и другие форматы подписи можно прочитать в стандарте CAdES (ETSI TS 101 733). Версия этого стандарта опубликована в виде RFC 5126 "CMS Advanced Electronic Signatures (CAdES)".

В КриптоПро ЭЦП SDK пока поддерживаются только форматы подписи CAdES BES и CADES-X Long Type 1.

Цитата:
Если Сертификат выдан не Сертификационным центром КриптоПро - и отозван, сможет ли об этом узнать CAdESCOM и выбросить исключение ?

Насчет постороннего центра сертификации - о каком формате подписи идет речь? "Узнать" в какой момент - при создании подписи или ее проверке? В какой момент был отозван сертификат?

Если рассматривать гипотетический сертификат Cert1, то если Cert1 был действителен в момент создания подписи и отозван, например, месяц спустя, то какой реакции Вы ожидали бы при проверке?
Offline Randoom  
#40 Оставлено : 3 декабря 2009 г. 12:27:37(UTC)
Randoom

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.06.2009(UTC)
Сообщений: 89
Откуда: Уфа, РРЦ &quot;АйТи&quot;

Новожилова Елена написал:
Цитата:
Необходима подпись документа с возможностью онлайн проверок подписи на отозванность сертификатов + необходим штамп времени на эту подпись для решения возможных споров.


В этом случае Вам подойдет формат подписи CAdES-T. Подробнее про этот и другие форматы подписи можно прочитать в стандарте CAdES (ETSI TS 101 733). Версия этого стандарта опубликована в виде RFC 5126 "CMS Advanced Electronic Signatures (CAdES)".

В КриптоПро ЭЦП SDK пока поддерживаются только форматы подписи CAdES BES и CADES-X Long Type 1.



1) Исходя из документа и http://en.wikipedia.org/wiki/CAdES_(computing) CADES-X содержит в себе CAdES-T (правильно ли я понял ?)
Про тип CAdES BES google выдает слишком мало информации.
Вообщем, если честно - я окончательно запутался...

2) Итак, имеем: CAdES-T - умеет сохранять штамп времени (из нужного нам) и не умеет проверять цепочку (так?)
3) CAdES BES (не могу найти инфу про формат) - умеет проверять цепочку, но не поддерживает штамп времени?
4) При использовании обоих форматов получаем возможность - и делать штамп времени и проверять цепочку - так?
5) Будут ли проверяться обе подписи, которые делаются кодом, который я писал выше при VerifyCades? Хранятся ли они обе в открепленной подписи - или следующая затирает предыдущую?
6) Возможно ли (дальше вступает в силу непонимание мною разницы между подписями) используя возможности CAdESCOM от КриптоПро добиться подписания документа (с возможностию проверки цепочки онлайн и создания штампа времени) минимальной кровью (т.е. с одним запросом пароля и одним типом подписи) ?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
9 Страницы«<23456>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.