logo Наши способы организации безопасного удалённого доступа к рабочим местам и корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Advisor  
#1 Оставлено : 21 февраля 2020 г. 17:01:06(UTC)
Advisor

Статус: Участник

Группы: Участники
Зарегистрирован: 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());
Offline Андрей *  
#2 Оставлено : 21 февраля 2020 г. 17:31:16(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,054
Мужчина
Российская Федерация

Сказал «Спасибо»: 333 раз
Поблагодарили: 1302 раз в 1017 постах
Здравствуйте.

Так сравнить ASN.1...
Какой-то атрибут, например, есть.

Приложите файлы подписей или сами посмотрите через ASN.1 Editor\View
Техническую поддержку оказываем тут
Наша база знаний
Offline Advisor  
#3 Оставлено : 21 февраля 2020 г. 17:40:39(UTC)
Advisor

Статус: Участник

Группы: Участники
Зарегистрирован: 13.12.2018(UTC)
Сообщений: 12
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.

Так сравнить ASN.1...
Какой-то атрибут, например, есть.

Приложите файлы подписей или сами посмотрите через ASN.1 Editor\View


Файлы с подписанными данными.
new1.txt (10kb) загружен 2 раз(а).
new2.txt (10kb) загружен 2 раз(а).

К сожалению пока не очень понимаю куда нужно посмотреть.
Offline Андрей *  
#4 Оставлено : 21 февраля 2020 г. 17:48:30(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,054
Мужчина
Российская Федерация

Сказал «Спасибо»: 333 раз
Поблагодарили: 1302 раз в 1017 постах
Разница в подписанных данных:
1 - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF
2 - S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#5 Оставлено : 21 февраля 2020 г. 17:52:32(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,054
Мужчина
Российская Федерация

Сказал «Спасибо»: 333 раз
Поблагодарили: 1302 раз в 1017 постах
Зачем в .NET
dataToSignBase64 := EncodeToBase64(dataToSign);?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 21 февраля 2020 г. 17:54:37(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,054
Мужчина
Российская Федерация

Сказал «Спасибо»: 333 раз
Поблагодарили: 1302 раз в 1017 постах
Byte[] msg = ...
ContentInfo contentInfo = new ContentInfo(msg);
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 21 февраля 2020 г. 17:55:53(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 9,054
Мужчина
Российская Федерация

Сказал «Спасибо»: 333 раз
Поблагодарили: 1302 раз в 1017 постах
Автор: Андрей * Перейти к цитате
Разница в подписанных данных:
1 - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF
2 - S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG


т.е. S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG = это как раз и есть base64('KTGABFFBYPXCYQJGGCKRUVAQHDEQGF');
Это не нужно делать.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Advisor оставлено 21.02.2020(UTC)
Offline Advisor  
#8 Оставлено : 21 февраля 2020 г. 17:58:48(UTC)
Advisor

Статус: Участник

Группы: Участники
Зарегистрирован: 13.12.2018(UTC)
Сообщений: 12
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Автор: Андрей * Перейти к цитате
Автор: Андрей * Перейти к цитате
Разница в подписанных данных:
1 - KTGABFFBYPXCYQJGGCKRUVAQHDEQGF
2 - S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG


т.е. S1RHQUJGRkJZUFhDWVFKR0dDS1JVVkFRSERFUUdG = это как раз и есть base64('KTGABFFBYPXCYQJGGCKRUVAQHDEQGF');
Это не нужно делать.


Огромное спасибо!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.