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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline hooper  
#1 Оставлено : 5 сентября 2022 г. 11:47:59(UTC)
hooper

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

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

Сказал(а) «Спасибо»: 5 раз
Добрый день.
Помогите, пожалуйста, решить проблему. Формирую отсоединенную подпись с помощью плагина. Пробовал с разными параметрами. Проверка подписи упорно показывает "Одна или несколько подписей некорректна или нет доверия". Если подписывать вручную, проверка нормальная.
Также вижу, что не добавляются атрибуты (время подписи, название и описание).


Использую:
Версия плагина: 2.0.14590
Версия криптопровайдера: 4.0.9963
Криптопровайдер: Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Платформа: Windows
UserAgent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
КриптоАРМ 5.4.4.4 (для проверки)

Вырезка кода JS:
Код:

  let oStoreCerts = yield oStore.Certificates;
  let oCertificates = yield oStoreCerts.Find(0x01, certSubjectName); // CADESCOM_CERTIFICATE_FIND_SUBJECT_NAME

  var certsCount = yield oCertificates.Count;
  if (certsCount === 0) {
    return "Certificate not found: " + certSubjectName;
  }
  var oCertificate = yield oCertificates.Item(1);
  let oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");

  let attributes = yield oSigner.AuthenticatedAttributes2;

  let oDocumentNameAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
  yield oDocumentNameAttr.propset_Name(0x01); // CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME
  yield oDocumentNameAttr.propset_Value("test.zip");
  yield attributes.Add(oDocumentNameAttr);

  let oDocumentDescriptionAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
  yield oDocumentDescriptionAttr.propset_Name(0x02); // CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION
  yield oDocumentDescriptionAttr.propset_Value("");
  yield attributes.Add(oDocumentDescriptionAttr);

  let oSigningTimeAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
  let oTimeNow = new Date();
  yield oSigningTimeAttr.propset_Name(0x00); // CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME
  yield oSigningTimeAttr.propset_Value(oTimeNow);
  yield attributes.Add(oSigningTimeAttr);

  yield oSigner.propset_Certificate(oCertificate);
  yield oSigner.propset_CheckCertificate(true);
  yield oSigner.propset_Options(0x01); // CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN

  var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
  yield oSignedData.propset_ContentEncoding(0x01); // CADESCOM_BASE64_TO_BINARY
  yield oSignedData.propset_Content(dataInBase64);

  const cadesType = 0xffff; //CADESCOM_PKCS7_TYPE;
  const encodingType = 0x00; // CADESCOM_ENCODE_BASE64;
  let sSignedMessage = "";
  try {
    sSignedMessage = yield oSignedData.SignCades(oSigner, cadesType, true, encodingType);
  } catch (err) {
    return cadesplugin.getLastError(err);
  }
  return sSignedMessage;

Отредактировано пользователем 5 сентября 2022 г. 18:31:49(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 5 сентября 2022 г. 12:10:20(UTC)
Андрей *

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

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

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

вместо cadesType = 0xffff; //CADESCOM_PKCS7_TYPE;

укажите CAdES BES = 0x01



поддержка CADESCOM_PKCS7_TYPE - для проверки.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
hooper оставлено 05.09.2022(UTC)
Offline Андрей *  
#3 Оставлено : 5 сентября 2022 г. 12:14:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
Автор: hooper Перейти к цитате
Проверка подписи упорно показывает "Одна или несколько подписей некорректна или нет доверия". Если подписывать вручную, проверка нормальная.
Также вижу, что не добавляются атрибуты (время подписи, название и описание).


в атрибутах указан хеш: C6F2B8604AA996E8C25333059D27DE412B12D2164ED6A6FC36567974F3630484
у файла: arch_1077760329305_ep_nso_aif_uk_m_q_30d_20220531.zip
хеш: F49007E7332F0004286B93F0E55F2A2CFC083B151654F7D0E4A53851C25D1A9A

кодируете, читаете бинарные данные как?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
hooper оставлено 05.09.2022(UTC)
Offline hooper  
#4 Оставлено : 5 сентября 2022 г. 14:06:35(UTC)
hooper

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

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

Сказал(а) «Спасибо»: 5 раз
Автор: Андрей * Перейти к цитате
Автор: hooper Перейти к цитате
Проверка подписи упорно показывает "Одна или несколько подписей некорректна или нет доверия". Если подписывать вручную, проверка нормальная.
Также вижу, что не добавляются атрибуты (время подписи, название и описание).


в атрибутах указан хеш: C6F2B8604AA996E8C25333059D27DE412B12D2164ED6A6FC36567974F3630484
у файла: arch_1077760329305_ep_nso_aif_uk_m_q_30d_20220531.zip
хеш: F49007E7332F0004286B93F0E55F2A2CFC083B151654F7D0E4A53851C25D1A9A

кодируете, читаете бинарные данные как?


Из бэка отдаем содержание:
Код:

byte[] bytes;
using (var memoryStream = new MemoryStream())
{
    await file.FileStream.CopyToAsync(memoryStream);
    bytes = memoryStream.ToArray();
}

var strBase64 = Convert.ToBase64String(bytes);
return Ok(strBase64);


во фронте используем:

Код:

yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);


Offline Андрей *  
#5 Оставлено : 5 сентября 2022 г. 16:10:17(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
zip файл в примере получается выгружен с сервера или с клиента?
Пробовали strBase64 декодировать? можете в console перед подписанием, на клиентской стороне,
вывести strBase64 и прислать (вложить в архиве txt файл)?

Где-то же портится...
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
hooper оставлено 05.09.2022(UTC)
Offline hooper  
#6 Оставлено : 5 сентября 2022 г. 18:31:16(UTC)
hooper

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

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

Сказал(а) «Спасибо»: 5 раз
Автор: Андрей * Перейти к цитате
zip файл в примере получается выгружен с сервера или с клиента?
Пробовали strBase64 декодировать? можете в console перед подписанием, на клиентской стороне,
вывести strBase64 и прислать (вложить в архиве txt файл)?

Где-то же портится...


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