SignXML. При разных флагах получает один и тот же результат

Здравсвуйте.
Код в 1С.
Сначала Использую LoadKeyStore. Загружаю ключ и сертификат.
Потом Пытаюсь подпписать XML
Использую ДЛЛ Калкан
КОД

flags=фп_Сервер.ПолучитьЗначениеСуммыЗначенийКлассификатораКалкан(“KCST_PKCS12”);
KalkanCOMService.LoadKeyStore(flags, ПарольКлюча, ВременнаяСтруктура.ПолныйПутьКФайлу,alias );
flags=фп_Сервер.ПолучитьЗначениеСуммыЗначенийКлассификатораКалкан(ФлагиПодписанияСтрока);
KalkanCOMService.SignXML(
alias // [in] BSTR inCert
, flags // [in] INT flags тут флаг - число 262 144
, // [in] BSTR signNodeId,
, // [in] BSTR parentSignNode
, // [in] BSTR parentNameSpace
, ХМЛ // [in] BSTR inData
, outSign // [out] BSTR* outSign
);

КОНЕЦ КОДА

Требования заказчика, чтобы в подписанном ХМЛ был вот такой тип метода подпсиания
gost34310-gost34311
То есть строка
<ds:SignatureMethod Algorithm=“http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311”/>

Я использую при подписанииХМЛ флаг KC_HASH_GOST95, в 1С это числовое значение
262 144
Но у меня все равно в результате Алгоритм подпсиания
<ds:DigestMethod Algorithm=“http://www.w3.org/2001/04/xmlenc#sha256”/>

Более того опытным путем я устаналивал различные флаги, они ни как не влияют на получаемый резльутат. Всегда один и тот же результат.
Подскажите, пожалуйста, что я делаю не так.
Как мне сделать так, чтобы мето Агоритм подписи был
<ds:SignatureMethod Algorithm=“http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311”/>

Здравствуйте! Вы каким ключом пытаетесь подписать? Надо подписать гостовым ключом, а не rsa.

Есть два ключа. На физ. лицо
AUTH_RSA256_…
RSA256_…
Подписываю ключом RSA256_…
Какой из них GOST?
Сообщите, пожалуйста, какие флаги нужно установить?

Если проверить VerifyXML После подписания XML
То оба ключа дают вот такую информацию в outVerifyInfo

Signature N 1
Id = 1
certificateSerialNumber=…
signatureAlgorithm=sha256WithRSAEncryption(1.2.840.113549.1.1.11)
serialNumber=IIN…
Signature is OK

Signature N 1
Id = 1
certificateSerialNumber=…
signatureAlgorithm=sha256WithRSAEncryption(1.2.840.113549.1.1.11)
serialNumber=…
Signature is OK

Судя по названию, здесь у Вас все ключи, скорее всего, RSA. Вы можете найти тестовые гостовые ключи в SDK по пути SDK/Keys and Certs/CERT. В основном их названия начинается с GOSTKNCA…

Спасибо. Я нашел, они просрочены, сейчас напишу заявку на обновление.

Добрый день, не подскажете где можно скачать библиотеку KalkanCryptCOM.dll

Добрый день!
Необходимо получить SDK.
Информация по получению комплекта разработчика здесь

Добрый день, спасибо за ответ, библиотеку получил, возможно у Вас есть какое то описание интеграции с 1С, примеры ?

Добрый день! Пример для 1С нет в SDK. Можете посмотреть примеры на других языках в SDK\COM(Windows)\examples. Для всех языков интерфейсы одинаковы.

Добрый день, возможно что библиотека которую мне передал заказчик (KalkanCryptCOM.dll) битая или не подходит для подключения к 1с, выполнил все действия по регистрации согласно инструкции, библиотека вроде подключается к 1с, свойства не доступны и при вызове Init() возвращает неопределенно.
Обязательно устанавливать сертификаты гост и рса для подключения к KalkanCryptCOM.dll ?
Версия KalkanCryptCOM - 2.8.0.1

Здравствуйте! Попробуйте подключить dll библиотеки в SDK\C\Windows\KalkanCrypt\lib

0305

  1. При попытке зарегистрировать KalkanCrypt_x64.dll или KalkanCrypt_x86.dll (винда 10- 64, не сервер) ошибка - Модуль “C:\lib\KalkanCrypt_x64.dll” загружен но точка входа DIIRegisterServer не найдена. Проверьте что “C:\lib\KalkanCrypt_x64.dll” является правильным файлом DLL или OCX и повторите попытку.
    2 При регистрации KalkanCryptCOM.dll Успешное выполнение.

Добрый день. Библиотека - KalkanCrypt_x64.dll не является COM-объектом. Ее не надо регистрировать.
В SDK есть пример к данной библиотеке, посмотрите каким образом “подтягивается” данная динамическая библиотека к проекту.

Если Вам необходимо использовать именно COM-библиотеку, то проверьте изначально на примере C# в SDK, что библиотека установлена корректно. Если пример запускается и выполняются различные методы, то значит регистрация выполнена корректно

Для регистрации библиотеки они не нужны. А вот для дальнейшей работы с сертификатами - да

Добрый день.
Каким образом можно проверить корректность подписанного документа ?
Получил результат подписания документа из компоненты java в 1с и из file:///C:/lib/NCALayer/commonbundle_sample/index.html, что с ними делать дальше необходимо прикрепить к подписываемому документу ? Поясните пожалуйста ?

@gelpen, рекомендую ознакомиться со статьей Что такое ЭЦП?, там общая теоретическая часть и про проверку и про электронные документы.

Если говорить про практику, то:

  • проверку ЭЦП под электронными документами можно выполнять с помощью библиотек из SDK НУЦ, их там несколько, Вы с некоторыми из них, судя по этой ветке, уже знакомы;
  • либо для проверки можно пользоваться API сервиса SIGEX;
  • ЭЦП под электронным документом, зачастую, является отдельным блоком данных, могут быть следующие варианты:
    • можно складывать документ и подписи в ZIP архив, это просто, но не слишком удобно для пользователей;
    • можно формировать подписи с встроенными данными так, как это делает ezSigner, но тут есть нюанс заключающийся в том, что чтобы вытащить из такой подписи данные нужна специальная утилита, больше об этом в статье Экспорт подписей в формате ezSigner;
    • можно формировать Карточку электронного документа.