Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро ЭЦП (усовершенствованная ЭЦП)
»
Открепленная подпись, закодированная в base64 и соответствующая типу CAdES в формате pkcs7
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.05.2026(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 5 раз
|
 signature.zip (11kb) загружен 1 раз(а).Автор: Андрей *  Присылайте пример из п.1 и п.2 в ЛС (ссылкой на архив), либо здесь приложите архив, а пароль в ЛС. Либо самостоятельно смотрите, что там внутри, в ASN.1, в чём разница. Высылаю архив со следующими файлами (пароль в личку): (1) Signature Detached - GOOD - made by by CadES in VBA.txt - Подпись, которая принимается НК. Сгенерирована в VBA с помощью библиотеки CadES (2) Signature Detached - BAD - made by CryptoPro Test Page.txt - Подпись, которая НЕ принимается НК. Сгенерирована с помощью Тестовой страницы CryptoPro https://cryptopro.ru/sit...page/cades_bes_file.html(3) Signature Detached - BAD - made by cryptcp.x64.exe -strict -detached.txt - Подпись, которая НЕ принимается НК. Сгенерирована с помощью команды cryptcp.x64_13003.exe -sign -strict -detached -thumbprint {мой отпечаток} файл.расширение Цитата: >(через Пользовательский Интерфейс НК) это публичная страница?
Процесс публикации КТ через Личный Кабинет НК (на сайте) выглядит так: a) сначала заходишь на сайт, с помощью УКЭП (во время входа выбираешь нужный Сертификат); b) уже будучи в ЛК, выбираешь нужный GTIN и публикуешь его с помощью УКЭП (во время публикации выбираешь нужный Сертификат) Автор: Андрей *  Через тестовую страницу пробовали с опцией "Отделенная подпись" получить и отправить? Пробовал, см. пример (2) выше. НК не принимает такую Подпись. Автор: Андрей *  Автор: dn8  Напишите, пожалуйста, полную структуру команды cryptcp.x64.exe для создания Подписи для публикации Карточки Товара в Национальном Каталоге (метод v3/feed-product-sign-pkcs АПИ Национального Каталога). СТРУКТУРА КОМАНДЫ cryptcp.x64.exe Исходя из описания АПИ НК (метод v3/feed-product-sign-pkcs) нужно подписывать как-то так: Код:cryptcp.x64.exe -sign -addchain -strict -detached -thumbprint {MyThumbprint} xmlBase64.txt
Однако Подпись, возвращаемая данной командой, не подходит. ОШИБКАЯ перепробовал все параметры и их сочетания (-addchain, -strict, -detached, -cadesbes) - АПИ НК всегда возвращает ошибку типа: Код:{"apiversion":3,"result":{"signed":[],"errors":[{"goodId":1234567890,"message":"Ваш сертификат не прошел проверку, попробуйте другой сертификат"}]}}
-addchain если убрать - точно ошибка сохраняется такая же? Плагин (на тестовой странице) создаёт в base64(DER) + отсоединенная ЭП Приложение, без -addchain: cryptcp.x64_13003.exe -sign -strict -detached -thumbprint { мой отпечаток} файл.расширение создаёт такой же вариант, только в плагине ещё создаётся еще один подписанный атрибут "имя документа" - но это не влияет на проблему.  plugin vs exe.png (66kb) загружен 5 раз(а). Принял. Спасибо за пояснения! Отредактировано пользователем 15 мая 2026 г. 17:55:26(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Signature Detached - BAD - made by cryptcp.x64.exe -strict -detached - GTIN 4070033672372.txt Неправильное значение хеша Хеш указан: 64BBBA4CDC05C8BD665BB8651579A3CD47D25E2504D1E3245C85268E8634DCA8
Я правильно понимаю, что "исходный xml" - один и тот же? ЭТО ТОЧНО?
Потому что странно будет дальше изучать, если в post запросе с ЭП от cryptcp было что-то другое.
В файле GOOD - исходный xml, так? И хеш там: 71EC64897F5575D1E257FF04239DCEA3FB755F65719DF7363E1C06815560C659
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
dn8 оставлено 18.05.2026(UTC)
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
в GOOD - вложен сертификат АУЦ и пользовательский, в BAD - только пользовательский. Но это уже не влияет. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
dn8 оставлено 18.05.2026(UTC)
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Главный вопрос: cryptcp.x64.exe -sign -addchain -strict -detached -thumbprint {MyThumbprint} xmlBase64.txt
А почему в примере xmlBase64.txt? Вы обязаны подавать в утилиту файл исходный, в правильной кодировке\бинарный. А не преобразованный предварительно в base64.
В post запросе (который внутри файла ...GOOD...) закодирован в base64 файл xml, да. Но подписан то не base64 вариант, а сам xml (2762 байт), именно для него (xml) подпись успешно проходит (созданная при вызове из VBA).
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
dn8 оставлено 18.05.2026(UTC)
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Пришлите xmlBase64.txt, который подписывали в cryptcp. |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Для истории\зрителей: внутри файла (post запрос - это тело запроса, вероятно) содержится: json с идентификатором товара base64(xml) base64(der, цепочка, кроме корня)  Snimok ehkrana 2026-05-15 195546.png (5kb) загружен 0 раз(а).И чтобы проверить корректность ЭП, на стороне сервера происходит: 1) декодирование байтов из строки base64Xml 2) декодирование байтов из строки signature 3) проверка ЭП\сертификатов... p.s. Но ошибка от сервера - по идее должна быть про ошибку с хешем, а не про сертификат, он один и тот же (в составе файлов из архива). |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.05.2026(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 5 раз
|
Автор: Андрей *  Signature Detached - BAD - made by cryptcp.x64.exe -strict -detached - GTIN 4070033672372.txt Неправильное значение хеша Хеш указан: 64BBBA4CDC05C8BD665BB8651579A3CD47D25E2504D1E3245C85268E8634DCA8
Я правильно понимаю, что "исходный xml" - один и тот же? ЭТО ТОЧНО?
Потому что странно будет дальше изучать, если в post запросе с ЭП от cryptcp было что-то другое.
В файле GOOD - исходный xml, так? И хеш там: 71EC64897F5575D1E257FF04239DCEA3FB755F65719DF7363E1C06815560C659
Скажите, пожалуйста, а как из Подписи извлечь хэш? Автор: Андрей *  Главный вопрос: cryptcp.x64.exe -sign -addchain -strict -detached -thumbprint {MyThumbprint} xmlBase64.txt
А почему в примере xmlBase64.txt? Вы обязаны подавать в утилиту файл исходный, в правильной кодировке\бинарный. А не преобразованный предварительно в base64.
В post запросе (который внутри файла ...GOOD...) закодирован в base64 файл xml, да. Но подписан то не base64 вариант, а сам xml (2762 байт), именно для него (xml) подпись успешно проходит (созданная при вызове из VBA).
Большое спасибо! Нашел свою ошибку. Я действительно передавал cryptcp.x64.exe файл для подписи с уже закодированными в base64 данными. И, соответственно, cryptcp.x64.exe их кодировала в base64 по 2-му кругу. Вот такая команда формирует корректную Подпись для Публикации КТ в НК: Код:cryptcp.x64.exe -sign -strict -detached -thumbprint "YourThumbprint" YourFile.txt
На всякий случай напишу, почему передавал cryptcp.x64.exe данные в base64. Может кому полезно будет. Делал это автоматом, так же как и при работе с библиотекой CAdESCOM в VBA. Но там я задавал константу для CAdESCOM.CPSigner Код:Const CADESCOM_BASE64_TO_BINARY = 1 'означает, что входные данные приходят уже в base64
Автор: Андрей *  Для истории\зрителей: внутри файла (post запрос - это тело запроса, вероятно) содержится: json с идентификатором товара base64(xml) base64(der, цепочка, кроме корня)  Snimok ehkrana 2026-05-15 195546.png (5kb) загружен 0 раз(а).И чтобы проверить корректность ЭП, на стороне сервера происходит: 1) декодирование байтов из строки base64Xml 2) декодирование байтов из строки signature 3) проверка ЭП\сертификатов... Да, тело POST-запроса у АПИ-метода НК v3/feed-product-sign-pkcs следующее: Код:[
{
"goodId": "...",
"base64Xml": "...",
"signature": "..."
}
]
goodId - уникальный Идентификатор КТ в НК base64Xml - подписываемый XML КТ в base64 signature - XML КТ подписанная Открепленной Подписью Цитата: p.s. Но ошибка от сервера - по идее должна быть про ошибку с хешем, а не про сертификат, он один и тот же (в составе файлов из архива).
Да, ошибка которую возвращает АПИ НК, в данном случае, не информативна - более того, вводит в заблуждение. Отредактировано пользователем 18 мая 2026 г. 20:59:54(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Автор: dn8  Большое спасибо! Нашел свою ошибку. Я действительно передавал cryptcp.x64.exe файл для подписи с уже закодированными в base64 данными. И, соответственно, cryptcp.x64.exe их кодировала в base64 по 2-му кругу.
Нет, программа хешировала файл "как есть" (base64 строку), а не xml данные. И подпись вычислялась для другого хеша данных в итоге. Для COM - требуется кодировать, да. Особенности представления данных в интерфейсе COMОтредактировано пользователем 18 мая 2026 г. 22:10:44(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
dn8 оставлено 19.05.2026(UTC)
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,159   Сказал «Спасибо»: 618 раз Поблагодарили: 2389 раз в 1880 постах
|
Автор: dn8  Автор: Андрей *  Signature Detached - BAD - made by cryptcp.x64.exe -strict -detached - GTIN 4070033672372.txt Неправильное значение хеша Хеш указан: 64BBBA4CDC05C8BD665BB8651579A3CD47D25E2504D1E3245C85268E8634DCA8
Я правильно понимаю, что "исходный xml" - один и тот же? ЭТО ТОЧНО?
Потому что странно будет дальше изучать, если в post запросе с ЭП от cryptcp было что-то другое.
В файле GOOD - исходный xml, так? И хеш там: 71EC64897F5575D1E257FF04239DCEA3FB755F65719DF7363E1C06815560C659
Скажите, пожалуйста, а как из Подписи извлечь хэш? В подписи (дословно) - нет хеша, это число. Хеш есть в подписанных атрибутах (CMS). icpsignerauthenticatedattributes2пример (не проверял) Код:// 1. Создаем объект CadesSignedData
var oSignedData = await cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
// 2. Загружаем CMS
// Предполагается, что переменная 'signatureBase64' содержит CMS в формате Base64.
// Второй параметр определяет тип проверяемой подписи (например, CADESCOM_CADES_BES).
await oSignedData.VerifyCades(signatureBase64, cadesplugin.CADESCOM_CADES_BES);
// 3. Получаем коллекцию подписантов.
var oSigners = await oSignedData.Signers;
// 4. Получаем первого подписанта (их может быть несколько, порядок не гарантирован).
var oSigner = await oSigners.Item(1);
// 5. Получаем коллекцию его подписанных атрибутов.
var oAttributes = await oSigner.AuthenticatedAttributes2;
// 6. Получаем количество атрибутов.
var attrCount = await oAttributes.Count;
console.log("Найдено подписанных атрибутов: " + attrCount);
// 7. Перебираем атрибуты в цикле.
for (var i = 1; i <= attrCount; i++) {
var oAttr = await oAttributes.Item(i);
var attrName = await oAttr.Name; // OID или имя атрибута
var attrValue = await oAttr.Value; // Значение атрибута
console.log("Атрибут " + i + ": Name=" + attrName + ", Value=" + attrValue);
}
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
dn8 оставлено 19.05.2026(UTC)
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро ЭЦП (усовершенствованная ЭЦП)
»
Открепленная подпись, закодированная в base64 и соответствующая типу CAdES в формате pkcs7
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close