Статус: Новичок
Группы: Участники
Зарегистрирован: 10.03.2009(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 1 раз
|
Добрый день! Есть действующий сертификат, выданный ФНС. От этого сертификата строится цепочка: ФНС (до 15.11.2037) и Минцифры России (до 08.01.2040). На Windows 10 cоздаю открепленную подпись для строки xString (WideString) в Delphi 10.1 Berlin. Код:var
Certificate, Signer, SignedData : OleVariant;
Result : WideString;
begin
...
Signer := CreateOleObject('CAdESCOM.CPSigner');
Signer.Certificate := Certificate;
Signer.Options := 0;
SignedData := CreateOleObject('CAdESCOM.CadesSignedData');
SignedData.Content := xString;
Result := SignedData.SignCades( Signer, 1, true );
TFile.WriteAllText( fileIn, xString );
TFile.WriteAllText( fileOut, Result );
...
end
Делаю проверку на Госуслугах https://www.gosuslugi.ru/eds, получаю ответ Цитата:Статус подписи - Подпись НЕДЕЙСТВИТЕЛЬНА Статус сертификата подписи - Не проверялся Проверка на https://dss.cryptopro.ru/verify выдает Цитата:Формат подписи - CAdES-BES Результат проверки - Подпись недействительна Подпись не соответствует документу. Возможно, на проверку был передан неправильный документ или документ был изменён. Ошибка: [Неправильное значение хеша] (0x80091007).Сообщение содержит неверную подпись
Тем же сертификатом делаю подпись файла с той же строкой xString утилитой csptest.exe c:\Program Files\Crypto Pro\CSP\csptest.exe -sfsign -sign -detached -in ...body.txt -out ...body.txt.sig -my <thumbprint> -base64 -addНа этот раз проверка на Госуслугах выдает Цитата:Статус подписи - Подпись ДЕЙСТВИТЕЛЬНА Статус сертификата подписи - ДЕЙСТВИТЕЛЕН, сертификат выдан аккредитованным удостоверяющим центром для юридического лица
cryptopro.ru/verify выдает Цитата:Формат подписи - CAdES-BES Результат проверки - Подпись действительна
Полагаю, что для получения подписи использовать csptest.exe не совсем правильно. Что я делаю не так с CADESCOM? В какую сторону копать, чтобы оно заработало? P.S. Через CADESCOM выходной файл с подписью весит 7582 байт, а csptest.exe выдает файл в 4828 байт.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,278 Сказал «Спасибо»: 548 раз Поблагодарили: 2196 раз в 1714 постах
|
Здравствуйте
Не использовать widestring, передавать в base64, предварительно указав на кодировку данных.
Смотреть пример и примечание в примерах для плагина, через js |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,278 Сказал «Спасибо»: 548 раз Поблагодарили: 2196 раз в 1714 постах
|
|
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.03.2009(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 1 раз
|
Спасибо, все получилось. В моем случае требовалась подпись строки, так что заполнение буфера сделал через Код:StringStream := TStringStream.Create(xString, TEncoding.UTF8);
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close