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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Minin  
#11 Оставлено : 15 августа 2025 г. 11:38:11(UTC)
Minin

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

Группы: Участники
Зарегистрирован: 09.03.2023(UTC)
Сообщений: 8

Сказал(а) «Спасибо»: 4 раз
Здравствуйте. Пытаюсь реализовать встроенную подпись XMLDSIG на python.
Требуется подписать всё, что внутри тега <Package>
template.xml (3kb) загружен 0 раз(а).

Если я передаю в метод signed_xml.Sign() второй параметр xpath со значением "//Package[1]" или тем, что в переменной package_signature_xpath, то получаю ошибку "The parameter is incorrect. (0x80070057)".
Если передаю только один параметр signer, то получаю корректную подпись, но подписывается весь документ, как я понимаю. При попытке проставить вторую подпись, то первая подпись становится невалидной.
Подскажите, как правильно передавать xpath или как верно формировать шаблон подписи, чтобы подписывался только тег <Package>, чтобы можно было его подписать несколькими подписями, которые оставались бы валидными?


def sign_xml(self, xml_data):
"""
Подписание XML данных

:param xml_data: XML данные для подписи (bytes)
:return: Подписанные XML данные (bytes)
"""
if not isinstance(xml_data, bytes):
raise XMLSignerError("XML данные должны быть в формате bytes")

try:
certificate = self._get_certificate()

signer = pycades.Signer()
signer.Certificate = certificate
signer.CheckCertificate = True

signed_xml = pycades.SignedXML()
signed_xml.Content = xml_data.decode('utf-8')
# signed_xml.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED
signed_xml.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE
package_signature_xpath = ("/*[local-name()='PackageSchema' and namespace-uri()='']"
"/*[local-name()='Package' and namespace-uri()='']")

signature = signed_xml.Sign(signer)

return signature.encode('utf-8')

except Exception as e:
raise XMLSignerError(f"Ошибка при подписании XML: {str(e)}")

Offline Minin  
#12 Оставлено : 15 августа 2025 г. 17:01:40(UTC)
Minin

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

Группы: Участники
Зарегистрирован: 09.03.2023(UTC)
Сообщений: 8

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате

и потом вызывайте файл,
из него читать настройки + параметры (что там... папка?) и подписываться будет...


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