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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Дамир Шамуков  
#1 Оставлено : 17 июля 2024 г. 13:42:26(UTC)
Дамир Шамуков

Статус: Активный участник

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

Сказал «Спасибо»: 14 раз
Доброго времени
В настоящий момент удалось подписать файл методом .SignCades
на выходе получаю либо присоединенный файл либо отдельный файл подписи .sig

Скажите пожалуйста как осуществляется установка нескольких подписей на одном файл, (2 человека = 2 сертификата).
Если подписать 2-мя сертификатами отвязанными подписями я получу 2 файла sig тут все понятно, но как получить один файл .sig после двойного подписания?
В данном методе не пойму как учитывается ранее созданная подпись
Online Андрей *  
#2 Оставлено : 17 июля 2024 г. 13:49:56(UTC)
Андрей *

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

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

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

В документации доступен поиск, который выдает ссылку на пример № 5

проверить существующую подпись - VerifyCades, а потом вызвать CoSignCades - добавить новую.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Дамир Шамуков оставлено 17.07.2024(UTC)
Offline Дамир Шамуков  
#3 Оставлено : 17 июля 2024 г. 16:11:25(UTC)
Дамир Шамуков

Статус: Активный участник

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

Сказал «Спасибо»: 14 раз
При подписании файла совмещенной подписью
Цитата:
Dim fromFile
Dim toFile
fromFile = "C:\Users\makhmudov.damir\Downloads\cr\f.pdf"
toFile = "C:\Users\makhmudov.damir\Downloads\cr\b.sig"

Const CADES_BES = 1
Const CADES_DEFAULT = 0
Const CAPICOM_ENCODE_BASE64 = 0


' Укажите правильный серийный номер сертификата.
Dim sSerialNumber : sSerialNumber = "1200648CA874DF6832C1AFCB12000200648CA8"

Dim oSigner
Set oSigner = CreateObject("CAdESCOM.CPSigner")
oSigner.Certificate = GetSignerCertificate(sSerialNumber)

Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
Content = LoadFilew(fromFile)
oSignedData.Content = Content

Dim sSignedData
' Создание и проверка подписи CAdES BES
sSignedData = oSignedData.SignCades(oSigner, CADES_BES, false, CAPICOM_ENCODE_BASE64)
SaveFile toFile, sSignedData


Получаю файл b.sig

При проверке этого файла утилитой КриптоПРО Tools проверка проходит успешно

При попытке проверить ее скриптом:
Цитата:
Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")

Dim Message
Message = LoadFile("C:\Users\makhmudov.damir\Downloads\cr\b.sig")

res = oSignedData.VerifyCades (Message, 1, false)
msgbox res


получаю пустое сообщение, в доках написано: Возвращаемое значение имеет тип HRESULT. Значение S_OK означает успешное выполнение.
что я делаю не так при проверке?


При подписании отделенной подписью:


Цитата:
Dim fromFile
Dim toFile
fromFile = "C:\Users\makhmudov.damir\Downloads\cr\f.pdf"
toFile = "C:\Users\makhmudov.damir\Downloads\cr\b.sig"

Const CADES_BES = 1
Const CADES_DEFAULT = 0
Const CAPICOM_ENCODE_BASE64 = 0


' Укажите правильный серийный номер сертификата.
Dim sSerialNumber : sSerialNumber = "1200648CA874DF6832C1AFCB12000200648CA8"

Dim oSigner
Set oSigner = CreateObject("CAdESCOM.CPSigner")
oSigner.Certificate = GetSignerCertificate(sSerialNumber)

Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
Content = LoadFilew(fromFile)
oSignedData.Content = Content

Dim sSignedData
' Создание и проверка подписи CAdES BES
sSignedData = oSignedData.SignCades(oSigner, CADES_BES, true, CAPICOM_ENCODE_BASE64)
SaveFile toFile, sSignedData


Получаю файл e.sig (меньшего размера естественно)
Но при попытке проверить его с помощью Крипто ПРО Tools указывая файл e.sig и оригинальный файл f.pdf
Получаю ошибку:
Цитата:
Подпись 1/1:
Ошибка при проверке (0x80091007: Неправильное значение хеша.)
Cубъект: E=samrukov@gmail.com, CN=Damir, OU=TDMS, O=CSoft, L=Kazan, C=RU
Отпечаток: F16E348A9B4DFA05B90F84E4046F65AC2FDC1972
Время подписания: 17/07/2024 12:54:02 UTC
Цепочка: CRYPTO-PRO Test Center 2 → Damir


При попытке проверить подпись скриптом:
Цитата:
Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
' Загрузка подписанных данных для проверки
fromFile = "C:\Users\makhmudov.damir\Downloads\cr\f.pdf"
toFile = "C:\Users\makhmudov.damir\Downloads\cr\e.sig"

Dim Content : Content = LoadFile(fromFile)
Dim Message : Message = LoadFile(toFile)
oSignedData.Content = Content

' Проверка отделенной подписи
res = oSignedData.VerifyCades(Message, 1, True)
msgbox res


Получаю также пустое сообщение

Online Андрей *  
#4 Оставлено : 17 июля 2024 г. 16:25:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2207 раз в 1722 постах
Возвращаемое значение имеет тип HRESULT. Значение S_OK

это не строка, зачем msgbox.

Если будет ошибка - будет исключение.


Или прикладывайте тестовые файлы (pdf или txt + к ним sig)
или смотрите что там внутри (asn1 редакторы или утилита у меня в подписи, покажет хеши из sig\сверить с хешем из присоединенной, файл же pdf не менялся?)
Техническую поддержку оказываем тут
Наша база знаний
Offline Дамир Шамуков  
#5 Оставлено : 17 июля 2024 г. 16:47:42(UTC)
Дамир Шамуков

Статус: Активный участник

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

Сказал «Спасибо»: 14 раз
Не нашел утилит в подписи.


f.pdf (171kb) загружен 1 раз(а). - оригинальный файл
e.zip (2kb) загружен 1 раз(а). - файл подписи (пришлось запаковать тк диалог загрузки не поддерживает файл sig)
Online Андрей *  
#6 Оставлено : 17 июля 2024 г. 16:57:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2207 раз в 1722 постах
хеш у файла pdf: 18B8F01F801A33352D68AA8C16215F5D178291C2880496143C5A73C49B6CD994
а в файле sig: 6EB884A3C147A1A661D9FB4ECFE2A5372C7C15D2909FAA3F2C943DB635E60C93

предлагаю сделать как в js - закодировать в base64, указать, что данные закодированы и потом присвоить content

вот в этом месте:
Цитата:
Content = LoadFilew(fromFile)
oSignedData.Content = Content


Читать - здесь.
Пример на js - здесь

участок:
Код:

oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
                // Значение свойства ContentEncoding должно быть задано
                // до заполнения свойства Content
                yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
                yield oSignedData.propset_Content(dataInBase64);




Snimok ehkrana ot 2024-07-17 17-45-58.png (16kb) загружен 2 раз(а). Snimok ehkrana ot 2024-07-17 17-45-04.png (32kb) загружен 2 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Дамир Шамуков  
#7 Оставлено : 17 июля 2024 г. 17:23:10(UTC)
Дамир Шамуков

Статус: Активный участник

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

Сказал «Спасибо»: 14 раз
сделал как вы сказали

Цитата:
Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
oSignedData.ContentEncoding = 0
Content_o = LoadFilew(fromFile)
Content = Base64Encode(Content_o)
oSignedData.Content = Content


указал ContentEncoding = 0 как сказано тут

провернул фарш в bas64
Цитата:
Content = Base64Encode(Content_o)

предварительно проверил на обычном тексте что ф-я точно отдает base64

создал подпись e.sig
Утилита Крипто ПРО дает ту же ошибку неверного хэша

Online Андрей *  
#8 Оставлено : 17 июля 2024 г. 17:50:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2207 раз в 1722 постах
Автор: Дамир Шамуков Перейти к цитате
сделал как вы сказали

Цитата:
Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
oSignedData.ContentEncoding = 0
Content_o = LoadFilew(fromFile)
Content = Base64Encode(Content_o)
oSignedData.Content = Content


указал ContentEncoding = 0 как сказано тут

провернул фарш в bas64
Цитата:
Content = Base64Encode(Content_o)

предварительно проверил на обычном тексте что ф-я точно отдает base64

создал подпись e.sig
Утилита Крипто ПРО дает ту же ошибку неверного хэша



Внимательно перечитывать.
В примере указано что? CADESCOM_BASE64_TO_BINARY

Вводим слева в поиск и находим раздел.
CADESCOM_BASE64_TO_BINARY Кодировка BASE64. 0x01

А то, что сделано - указано 0 = бинарные данные, а они в base64 - хеш от base64 внутри рассчитался.



Техническую поддержку оказываем тут
Наша база знаний
Online Андрей *  
#9 Оставлено : 17 июля 2024 г. 17:53:07(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2207 раз в 1722 постах
Код:
  // Значение свойства ContentEncoding должно быть задано
                // до заполнения свойства Content
                yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
                yield oSignedData.propset_Content(dataInBase64);


это для безопасной передачи бинарных данных внутрь плагина и далее в CSP - сообщаем, что данные dataInBase64 - это base64,
внутри происходит декодирование.
Техническую поддержку оказываем тут
Наша база знаний
Offline Дамир Шамуков  
#10 Оставлено : 17 июля 2024 г. 18:02:41(UTC)
Дамир Шамуков

Статус: Активный участник

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

Сказал «Спасибо»: 14 раз
Прошу прощения, а что именно туда указать из:
CADESCOM_BASE64_TO_BINARY Кодировка BASE64. 0x01
CADESCOM_STRING_TO_UCS2LE Кодировка UTF-8 или UNICODE. 0x00

при 0 и 1 подпись создает но неверный хэш

Текущий скрипт
Цитата:
oSignedData.ContentEncoding = 1
Content_o = LoadFilew(fromFile)
Content = Base64Encode(Content_o)
oSignedData.Content = Content

Отредактировано пользователем 17 июля 2024 г. 18:05:39(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.