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

Уведомление

Icon
Error

9 Страницы«<56789>
Опции
К последнему сообщению К первому непрочитанному
Offline Новожилова Елена  
#61 Оставлено : 25 марта 2010 г. 19:48:14(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Цитата:
Вываливается на последней строке, с сообщением "Ошибка".


Какой код ошибки?

Цитата:
2. Если я правильно понимаю в данном выше примере генерируется код который содержит "Сообщение+ЭЦП+Сертификаты"?
А если необходимо отдельно получить штам времени на документ, то необходимо использовать TSP SDK?


Штампы времени на подпись и на доказательства подписи в данном выше примере будут уже вложены в сообщение. Нет необходимости получать их отдельно.

Если же речь идет просто о получении штампа времени на произвольные данные, то нужно использовать TSP SDK.

Отредактировано пользователем 25 марта 2010 г. 19:48:45(UTC)  | Причина: Не указана

Offline Saha  
#62 Оставлено : 25 марта 2010 г. 20:05:19(UTC)
Saha

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.01.2010(UTC)
Сообщений: 6

Новожилова Елена написал:
Saha написал:
Скачал последнюю версию CAdESCOM (1.01.0482) и снова появилось окно инсталляции, а затем ошибка 0x800700B7.


Вы можете уточнить условия, при которых возникает ошибка?


Ошибка возникает при обращении к библиотеке, подобная ошибка возникала когда билд SDK ассембли были подписаны не там ключом.
Offline ZaaZ  
#63 Оставлено : 25 марта 2010 г. 20:36:16(UTC)
ZaaZ

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

Группы: Участники
Зарегистрирован: 08.04.2009(UTC)
Сообщений: 30
Откуда: Череповец

Поблагодарили: 1 раз в 1 постах
Новожилова Елена написал:
Цитата:
Вываливается на последней строке, с сообщением "Ошибка".


Какой код ошибки?

Кто бы знал, как добится от борланда кода ошибки, было бы проще. :(
Проверил через Visual Strudio 2008 VB, проверка проходит, значит какой-то косяк в Builder с++, буду копать дальше.

Цитата:

Цитата:
2. Если я правильно понимаю в данном выше примере генерируется код который содержит "Сообщение+ЭЦП+Сертификаты"?
А если необходимо отдельно получить штам времени на документ, то необходимо использовать TSP SDK?

Штампы времени на подпись и на доказательства подписи в данном выше примере будут уже вложены в сообщение. Нет необходимости получать их отдельно.
Если же речь идет просто о получении штампа времени на произвольные данные, то нужно использовать TSP SDK.

По моей задаче дело обстоит так: есть некий документ, мне передают хеш этого документа, я подписываю хеш документа и должен вернуть отдельно ЭЦП и отдельно штамп времени, где в другой системе проверят подпись и мне вернут результат приняли подпись ЭЦП или нет.
Offline Новожилова Елена  
#64 Оставлено : 29 марта 2010 г. 17:37:32(UTC)
Новожилова Елена

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

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

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


Довольно странная организация подписи документов. Я правильно понимаю, что в итоге получается подпись не под документом, а только под его хэш-значением? То есть, в создаваемой Вами подписи в качестве подписываемых данных будет выступать переданный Вам хэш? И в процессе подписания этого хэш-значения будет вычисляться хэш уже от него?

На какие данные в этом случае Вы планируете получать штамп времени?

Цитата:
Проверил через Visual Strudio 2008 VB, проверка проходит, значит какой-то косяк в Builder с++, буду копать дальше.


Возможно, проблема в том, что подписанное сообщение представляет собой массив байт (в том числе, содержащий нули). А строка возможно считывается только до первого нуля, таким образом в метод Verify подписанное сообщение может попадать не полностью.
Offline ZaaZ  
#65 Оставлено : 29 марта 2010 г. 21:14:57(UTC)
ZaaZ

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

Группы: Участники
Зарегистрирован: 08.04.2009(UTC)
Сообщений: 30
Откуда: Череповец

Поблагодарили: 1 раз в 1 постах
Цитата:
Довольно странная организация подписи документов. Я правильно понимаю, что в итоге получается подпись не под документом, а только под его хэш-значением? То есть, в создаваемой Вами подписи в качестве подписываемых данных будет выступать переданный Вам хэш? И в процессе подписания этого хэш-значения будет вычисляться хэш уже от него?

Слегка не так, а чуть проще.
1. Для проведения ЭЦП с нашей стороны, Мы запрашиваем Информацию о документе.
2. Нам присылают информацию, Мы подписываем ее ЭЦП своим сертификатом + необходимо отдельно сформировать Штамп-времени (вот с этим не понятно) и передаем ее обратно.
3. На другой стороне проверяют подпись и если все хорошо, документ уходит в работу.

Вообще это взаимодействие АСУ-АСУ в системе ЭТРАН.

Цитата:

На какие данные в этом случае Вы планируете получать штамп времени?



Цитата:
Проверил через Visual Strudio 2008 VB, проверка проходит, значит какой-то косяк в Builder с++, буду копать дальше.


Возможно, проблема в том, что подписанное сообщение представляет собой массив байт (в том числе, содержащий нули). А строка возможно считывается только до первого нуля, таким образом в метод Verify подписанное сообщение может попадать не полностью.

Да, наверное вы правы.

Еще заметил такую особенность. Есть документ размером 1кб. Операция: подпись документа ЭЦП, подпись совмещенная + штамп времени.
С помощью программы cryptcp получаю подписанное сообщение размером порядка 5кб.
Подписываю через cadescom указав тип CAdES X Long Type 1, получаю подписанное сообщение размером порядка 16Кб.
Хотя проверку проходят и тот и тот вариант.
В чем разница может быть?

Offline Новожилова Елена  
#66 Оставлено : 29 марта 2010 г. 21:49:39(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Цитата:
Подписываю через cadescom указав тип CAdES X Long Type 1, получаю подписанное сообщение размером порядка 16Кб.
Хотя проверку проходят и тот и тот вариант.
В чем разница может быть?


А проверку при помощи чего проходит и тот и другой вариант?
Разница в том, что подписанное сообщение формата CAdES X Long Type 1 содержит не только штамп времени на подпись, а еще (см. Стандарт ETSI TS 101 733):
- все сертификаты (включая корневой и цепочку сертификации) для сертификата подписи, службы штампов времени и службы OCSP.
- доказательства подлинности сертификатов (OCSP-ответы, CRL).
- штамп времени на доказательства подлинности.

То есть, по сравнению с вариантом подпись совмещенная + штамп времени, добавляются как минимум:
- сертификат подписи
- корневой сертификат
- OCSP-ответ
- сертификат службы OCSP
- сертификат службы штампов
- штамп времени на доказательства подлинности
Offline ZaaZ  
#67 Оставлено : 30 марта 2010 г. 18:55:56(UTC)
ZaaZ

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

Группы: Участники
Зарегистрирован: 08.04.2009(UTC)
Сообщений: 30
Откуда: Череповец

Поблагодарили: 1 раз в 1 постах
Новожилова Елена написал:

А проверку при помощи чего проходит и тот и другой вариант?

Проверку проводил с помощью программы cryptcp.

Цитата:

Разница в том, что подписанное сообщение формата CAdES X Long Type 1 содержит не только штамп времени на подпись, а еще (см. Стандарт ETSI TS 101 733):

Спасибо. Все понятно.
А тогда с помощью программы cryptcp.exe можно создать подпись типа CAdES X Long Type 1, какие параметры необходимо указать?

И чтобы не отходить от топика далеко, выложу рабочие исходники проверки Cades X. Елена, вы были абсолютно правы, все дело в переданной на проверку информации.
Цитата:
Variant oSignedData;
oSignedData = Variant::CreateObject("CAdESCOM.CadesSignedData");
// Загрузка подписанных данных для проверки.
AnsiString Message = Memo1->Lines->Text;
// char *Message = Memo1->Lines->Text.c_str();
// Подпись совмещенная.
try {
oSignedData.OleFunction("VerifyCades",Message.c_str(),CADESCOM_CADES_X_LONG_TYPE_1,False);
ShowMessage("Ошибок нет");
}
catch (Exception& e) {
ShowMessage(e.Message);
}
}


И еще вопрос интересный:
Цитата:
Set oSigner = CreateObject("CAdESCOM.CPSigner")
' Укажите правильный адрес службы штампов времени.
Dim sTSAAddress : sTSAAddress = "http://domain/tsp/tsp.srf"

oSigner.Certificate = GetSignerCertificate(sSerialNumber)
oSigner.TSAAddress = sTSAAddress

Dim oSignedData
Dim oSettings
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
oSignedData.Content = "Some very significant message"
Dim sSignedData
sSignedData = oSignedData.Sign(oSigner, False)


В данном устанавливается адрес сервера штампа-времени.
Но после подписания при вызове oSignedData.Display() , в "Список подписей" поле "Штамп Времени" пустое. Хотя если использовать тип подписи CADESCOM_CADES_X_LONG_TYPE_1, поле со штампом заполнено. Соответственно в данном примере Штамп времени не устанавливается?

И еще непонятнось:
Делаю подпись документа
sSignedData = oSignedData.OleFunction("SignCades",oSigner, CADESCOM_CADES_BES, True, CAPICOM_ENCODE_BASE64);

сразу вызываю oSignedData.Display()
и в форме Сведения получаю: "Эта цифровая подпись не действительна. Сообщение содержит неверную подпись".
Делаю проверку полученного ЭЦП через oSignedData.OleFunction("VerifyCades",Message.c_str(),CADESCOM_CADES_BES,True);
и опять же вызываю oSignedData.Display()
И тут уже в Сведениях пишется: "Эта цифровая подпись действительна".

Отредактировано пользователем 30 марта 2010 г. 20:28:16(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#68 Оставлено : 30 марта 2010 г. 21:32:54(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Цитата:
А тогда с помощью программы cryptcp.exe можно создать подпись типа CAdES X Long Type 1, какие параметры необходимо указать?


Программа cryptcp.exe не поддерживает тип подписи CAdES X Long Type 1.

Цитата:
сразу вызываю oSignedData.Display()
и в форме Сведения получаю: "Эта цифровая подпись не действительна. Сообщение содержит неверную подпись".


В данном случае имеет значение состояние объекта oSignedData. Проблема в том, что в CAPICOM используется один и тот же объект для сообщения, которое только будет подписано, и уже подписанного.

Подписанное сообщение в oSignedData будет находиться только просле вызова метода Verify или VerifyCades.
Метод Sign не переводит объект в новое состояние (уже подписанного сообщения), а лишь возвращает это сообщение.
Offline vli-info.ru  
#69 Оставлено : 11 июня 2010 г. 16:18:58(UTC)
vli-info.ru

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.06.2010(UTC)
Сообщений: 5
Откуда: vli-info.ru

Здравствуйте. Мне необходимо подписать данные с помощью КриптоПро. Я разбираю самый простой пример. Пишу на C#, используя CAdESCOM.

Код:
CAdESCOM.CPSigner oSigner = new CAdESCOM.CPSignerClass();
            oSigner.Certificate = ClientCert;

            CAdESCOM.CadesSignedData SignedData = new CAdESCOM.CadesSignedDataClass();
            SignedData.Content = data;
            _signedContent = SignedData.Sign(oSigner, true, CAPICOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);

на последней строчке возникает ошибка
Цитата:
"Элемент не найден. (Исключение из HRESULT: 0x80070490)"

Что я не так делаю? Сертификат я получаю у вас же здесь: http://www.cryptopro.ru/certsrv/certcarc.asp
Находится он верно, вот функция:

Код:
CAPICOM.Store store = new CAPICOM.Store();

store.Open(isMachineStore?CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_LOCAL_MACHINE_STORE:CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, 
					certStore, CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY);
				foreach (CAPICOM.Certificate cert in store.Certificates) 
				{				
					if(cert.SubjectName.IndexOf(subjectName)>0)
					{
						ClientCert = cert;	
						return;		
					}
				}

Отредактировано пользователем 15 июня 2010 г. 12:58:15(UTC)  | Причина: Не указана

Offline vli-info.ru  
#70 Оставлено : 11 июня 2010 г. 18:08:30(UTC)
vli-info.ru

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.06.2010(UTC)
Сообщений: 5
Откуда: vli-info.ru

Так же если смотерть oSigner.Chain, то происходит исключение
Цитата:
"Указан неправильный алгоритм." ErrorCode = -2146893816

Отредактировано пользователем 15 июня 2010 г. 12:57:10(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (4)
9 Страницы«<56789>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.