Статус: Участник
Группы: Участники
Зарегистрирован: 13.12.2018(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Здравствуйте, коллеги. Помогите. У меня есть программа написанная на Delphi + cades, которая генерирует подпись для подключения к маркировке ЦРПТ. Хочу сделать аналогичный функционал с помощью .Net. Беру текст, который нужно подписать - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF Подписываю в Delphi - получаю подпись 9432 символа. Подписываю в .Net - получаю подпись 9448 символов. В чем может быть причина? Код на делфи Код:
function fn_Get_Sign_Data(bl_Detached: boolean; S_in: ANSIString; var S_out: AnsiString) :boolean;
const CADESCOM_CADES_TYPE = 1; // Тип усовершенствованной подписи
CADESCOM_BASE64_TO_BINARY = 1;
var v_Signer, v_SignedData : Variant;
begin
try Result := False;
v_Signer := CreateOLEObject('CadesCOM.CPSigner');
v_Signer.Certificate := g_Cert;
v_Signer.KeyPin := g_Cert_Pass;
v_Signer.Options := 1;// CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN := 1;
// Объект CadesSignedData предоставляет свойства и методы для работы с усовершенствованной подписью.
V_SignedData := CreateOLEObject('CAdESCOM.CadesSignedData');
v_SignedData.ContentEncoding := CADESCOM_BASE64_TO_BINARY;
B64Encode(s_in, s_in);
v_SignedData.Content := s_In;
s_out := v_SignedData.SignCades(v_Signer, CADESCOM_CADES_TYPE, bl_Detached,0);
Result := True;
finally
if not VarIsNull(v_Signer) then v_Signer := Unassigned;
if not VarIsNull(v_SignedData) then v_SignedData := Unassigned;
end;
end;
Код .Net Код:
dataToSignBase64 := EncodeToBase64(dataToSign);
prov := oCertificate.PrivateKey;
SecureString := SecureString.SecureString;
FOR i := 1 TO STRLEN(KeyPin) DO BEGIN
SecureString.AppendChar(KeyPin[i]);
END;
prov.SetContainerPassword(SecureString);
ContentInfo := ContentInfo.ContentInfo(Encoding.GetBytes(dataToSignBase64));
SignedCms := SignedCms.SignedCms(ContentInfo,bDetached);
CmsSigner := CmsSigner.CmsSigner(oCertificate);
CmsSigner.IncludeOption := X509IncludeOption.WholeChain; //3- WholeChain
SignedCms.ComputeSignature(CmsSigner);
sSignedMessage := Convert.ToBase64String(SignedCms.Encode());
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Здравствуйте.
Так сравнить ASN.1... Какой-то атрибут, например, есть.
Приложите файлы подписей или сами посмотрите через ASN.1 Editor\View |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.12.2018(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Автор: Андрей * Здравствуйте.
Так сравнить ASN.1... Какой-то атрибут, например, есть.
Приложите файлы подписей или сами посмотрите через ASN.1 Editor\View Файлы с подписанными данными. new1.txt (10kb) загружен 3 раз(а). new2.txt (10kb) загружен 3 раз(а).К сожалению пока не очень понимаю куда нужно посмотреть.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Разница в подписанных данных: 1 - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF 2 - S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Зачем в .NET dataToSignBase64 := EncodeToBase64(dataToSign);?
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Byte[] msg = ... ContentInfo contentInfo = new ContentInfo(msg); |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: Андрей * Разница в подписанных данных: 1 - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF 2 - S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG
т.е. S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG = это как раз и есть base64('KTGABFFBYPXCYQJGGCKRUVAQHDEQGF'); Это не нужно делать. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.12.2018(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Автор: Андрей * Автор: Андрей * Разница в подписанных данных: 1 - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF 2 - S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG
т.е. S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG = это как раз и есть base64('KTGABFFBYPXCYQJGGCKRUVAQHDEQGF'); Это не нужно делать. Огромное спасибо!
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close