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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Petrovich_64  
#1 Оставлено : 20 февраля 2021 г. 11:38:00(UTC)
Petrovich_64

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

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

Пытаюсь подписать XML-документ для службы "Национальный каталог".

// g_Cert - Сертификат единственный. Проверен на Вашей тестовой странице
// https://www.cryptopro.ru...s_xmldsig_sample.html#).

Фрагмент программы (Упрощено до предела).

// Создаем объект CAdESCOM.CPSigner
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;


// Тестовый XML с сайта
s_IN := '<?xml version="1.0" encoding="UTF-8"?>' +
'<Envelope xmlns="urn:envelope"><Data>Hello, World!</Data><Node xml:id="nodeID">Hello, Node!</Node></Envelope>';

// Создаем объект CAdESCOM.SignedXML
V_SignedData := CreateOLEObject('CAdESCOM.SignedXML');
V_SignedData.Content := s_ШТ;
if bl_Detached then V_SignedData.SignatureType := CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING
else V_SignedData.SignatureType := CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED;

// V_SignedData.SignatureMethod := 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';
// V_SignedData.DigestMethod := 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';

v_SignedData.Sign(v_Signer);

S_Out := V_SignedData.Content;

На операторе v_SignedData.Sign падает с ошибкой "Ошибка при обработке цифровой подписи XML"

Если раскомментировать строки (константа взята из примеров на Вашем сайте)
V_SignedData.SignatureMethod := 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';
V_SignedData.DigestMethod := 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';

на том же операторе v_SignedData.Sign получим другую ошибку:
"Объект или свойство не найдено"

Offline Андрей *  
#2 Оставлено : 20 февраля 2021 г. 13:34:13(UTC)
Андрей *

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

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

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

А g_Cert как инициализируется?
Техническую поддержку оказываем тут
Наша база знаний
Offline Petrovich_64  
#3 Оставлено : 20 февраля 2021 г. 13:53:22(UTC)
Petrovich_64

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

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


v_Store := CreateOLEObject('CAPICOM.Store');
v_Store.Open(2, // CAPICOM_CURRENT_USER_STORE
'My', // CAPICOM_MY_STORE
2); // CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED

v_Certificates := v_Store.Certificates;

// Поиск по издателю Издатель: CN="ОАО ""ИИТ"""
v_Var1 := v_Certificates.Find(2, g_Cert_Mask, true);

if v_Var1.Count >1 then raise Exception.Create('Сертификат не уникален');
if v_Var1.Count =0 then raise Exception.Create('Сертификат не найден');

g_Cert := v_Var1.Item[1];

Offline Андрей *  
#4 Оставлено : 20 февраля 2021 г. 14:29:34(UTC)
Андрей *

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

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

Сказал «Спасибо»: 372 раз
Поблагодарили: 1483 раз в 1144 постах

signMethod := 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';
digestMethod := 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#5 Оставлено : 20 февраля 2021 г. 14:35:15(UTC)
Андрей *

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

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

Сказал «Спасибо»: 372 раз
Поблагодарили: 1483 раз в 1144 постах
+

oSignedXML.Content := Base64Text; // (закодированный xml-файл)

SignedBase64 := oSignedXML.Sign(oSigner); //

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