Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:Вываливается на последней строке, с сообщением "Ошибка". Какой код ошибки? Цитата:2. Если я правильно понимаю в данном выше примере генерируется код который содержит "Сообщение+ЭЦП+Сертификаты"? А если необходимо отдельно получить штам времени на документ, то необходимо использовать TSP SDK? Штампы времени на подпись и на доказательства подписи в данном выше примере будут уже вложены в сообщение. Нет необходимости получать их отдельно. Если же речь идет просто о получении штампа времени на произвольные данные, то нужно использовать TSP SDK. Отредактировано пользователем 25 марта 2010 г. 19:48:45(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.01.2010(UTC) Сообщений: 6
|
Новожилова Елена написал:Saha написал:Скачал последнюю версию CAdESCOM (1.01.0482) и снова появилось окно инсталляции, а затем ошибка 0x800700B7.
Вы можете уточнить условия, при которых возникает ошибка? Ошибка возникает при обращении к библиотеке, подобная ошибка возникала когда билд SDK ассембли были подписаны не там ключом.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
Новожилова Елена написал:Цитата:Вываливается на последней строке, с сообщением "Ошибка". Какой код ошибки? Кто бы знал, как добится от борланда кода ошибки, было бы проще. :( Проверил через Visual Strudio 2008 VB, проверка проходит, значит какой-то косяк в Builder с++, буду копать дальше. Цитата:Цитата:2. Если я правильно понимаю в данном выше примере генерируется код который содержит "Сообщение+ЭЦП+Сертификаты"? А если необходимо отдельно получить штам времени на документ, то необходимо использовать TSP SDK? Штампы времени на подпись и на доказательства подписи в данном выше примере будут уже вложены в сообщение. Нет необходимости получать их отдельно. Если же речь идет просто о получении штампа времени на произвольные данные, то нужно использовать TSP SDK. По моей задаче дело обстоит так: есть некий документ, мне передают хеш этого документа, я подписываю хеш документа и должен вернуть отдельно ЭЦП и отдельно штамп времени, где в другой системе проверят подпись и мне вернут результат приняли подпись ЭЦП или нет.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:По моей задаче дело обстоит так: есть некий документ, мне передают хеш этого документа, я подписываю хеш документа и должен вернуть отдельно ЭЦП и отдельно штамп времени, где в другой системе проверят подпись и мне вернут результат приняли подпись ЭЦП или нет. Довольно странная организация подписи документов. Я правильно понимаю, что в итоге получается подпись не под документом, а только под его хэш-значением? То есть, в создаваемой Вами подписи в качестве подписываемых данных будет выступать переданный Вам хэш? И в процессе подписания этого хэш-значения будет вычисляться хэш уже от него? На какие данные в этом случае Вы планируете получать штамп времени? Цитата:Проверил через Visual Strudio 2008 VB, проверка проходит, значит какой-то косяк в Builder с++, буду копать дальше. Возможно, проблема в том, что подписанное сообщение представляет собой массив байт (в том числе, содержащий нули). А строка возможно считывается только до первого нуля, таким образом в метод Verify подписанное сообщение может попадать не полностью.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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Кб. Хотя проверку проходят и тот и тот вариант. В чем разница может быть?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 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 - сертификат службы штампов - штамп времени на доказательства подлинности
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 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 не переводит объект в новое состояние (уже подписанного сообщения), а лишь возвращает это сообщение.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.06.2010(UTC) Сообщений: 5 Откуда: vli-info.ru
|
Так же если смотерть oSigner.Chain, то происходит исключение Цитата:"Указан неправильный алгоритм." ErrorCode = -2146893816 Отредактировано пользователем 15 июня 2010 г. 12:57:10(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close