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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline yaroslav55  
#1 Оставлено : 23 февраля 2025 г. 0:13:43(UTC)
yaroslav55

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте, мне нужно сделать валидацию подписи. Приходит от сервиса xml с:
Цитата:

<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-ee60901f-1e78-48b1-a4dc-da34298b97c5">MIICPTCCAeigAwIBAgIUNbjnKeioQZUkyajF42Uw5VP/If4wDAYIKoUDBwEBAwIFADBvMQswCQYDVQQGEwJSVTEPMA0GA1UECAwGTW9zY293MQ8wDQYDVQQHDAZNb3Njb3cxDjAMBgNVBAoMBUVHSVNaMQwwCgYDVQQLDANJUFMxIDAeBgNVBAMMF2lwcy50ZXN0LnJvc21pbnpkcmF2LnJ1MB4XDTIzMTExNTEyMDAwMloXDTMzMTExMjEyMDAwMlowbzELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0GA1UEBwwGTW9zY293MQ4wDAYDVQQKDAVFR0lTWjEMMAoGA1UECwwDSVBTMSAwHgYDVQQDDBdpcHMudGVzdC5yb3NtaW56ZHJhdi5ydTBmMB8GCCqFAwcBAQEBMBMGByqFAwICIwEGCCqFAwcBAQICA0MABEBDRikZe/7cQGOrsQybQ3SvYapcW8uPPgNcR9XXx0K6LXxz0YRiAz/ZI+WMfR+xLIUYlYIcK5jx2ajLuT5Ila4so1MwUTAdBgNVHQ4EFgQUAHUajP3s/zXNk64KSHqR6mijXI0wHwYDVR0jBBgwFoAUAHUajP3s/zXNk64KSHqR6mijXI0wDwYDVR0TAQH/BAUwAwEB/zAMBggqhQMHAQEDAgUAA0EAS2pA2er56Fs5FUD3M+kRK9GBe8me4267LE82K7hDOWldUiTg8lrrZ5mqJjw9rN7He4WIrC1OQlaJ0RAXHzq8Jg==</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SIG-5079f8b2-b109-4051-af9b-c594d79c87a3">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<ds:Reference URI="#id-9dcc5ec4-a50e-4f24-83ba-48acf87d7442">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>Y1DRWFqn9SSCg5NnGUsjpME10TJTZ6zUG2cQrq9mJmM=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#TS-521fab16-f9cc-4f38-917c-6488c63e3c7b">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>I6V0os/Zkawk5vCTYSypo24Ob7apyikgIgTKtAueHGI=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>EQUyZ9eRe0gNCX+ZLThsnLECrQu9UzLcQHrUCIOW4jC3zi6jPO8hPweYVmpcfX73yfenqbLdrg6TjdrpJCkqDg==</ds:SignatureValue>
<ds:KeyInfo Id="KI-102dfdaa-5f55-460f-a912-40dd70a2ea5a">
<wsse:SecurityTokenReference wsu:Id="STR-9eacf53d-5853-4c3a-b88a-605945a34564">
<wsse:Reference URI="#X509-ee60901f-1e78-48b1-a4dc-da34298b97c5" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsu:Timestamp wsu:Id="TS-521fab16-f9cc-4f38-917c-6488c63e3c7b">
<wsu:Created>2025-02-18T22:40:09.511Z</wsu:Created>
<wsu:Expires>2025-02-18T22:50:09.511Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>


Я беру данные из BinarySecurityToken и перевожу его из base64(это открытый ключ) и сохраняю как remd.cer:
Цитата:

import base64

def convert_base64_to_der(output_file: str):

cert_base64 = "MIICPTCCAeigAwIBAgIUNbjnKeioQZUkyajF42Uw5VP/If4wDAYIKoUDBwEBAwIFADBvMQswCQYDVQQGEwJSVTEPMA0GA1UECAwGTW9zY293MQ8wDQYDVQQHDAZNb3Njb3cxDjAMBgNVBAoMBUVHSVNaMQwwCgYDVQQLDANJUFMxIDAeBgNVBAMMF2lwcy50ZXN0LnJvc21pbnpkcmF2LnJ1MB4XDTIzMTExNTEyMDAwMloXDTMzMTExMjEyMDAwMlowbzELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0GA1UEBwwGTW9zY293MQ4wDAYDVQQKDAVFR0lTWjEMMAoGA1UECwwDSVBTMSAwHgYDVQQDDBdpcHMudGVzdC5yb3NtaW56ZHJhdi5ydTBmMB8GCCqFAwcBAQEBMBMGByqFAwICIwEGCCqFAwcBAQICA0MABEBDRikZe/7cQGOrsQybQ3SvYapcW8uPPgNcR9XXx0K6LXxz0YRiAz/ZI+WMfR+xLIUYlYIcK5jx2ajLuT5Ila4so1MwUTAdBgNVHQ4EFgQUAHUajP3s/zXNk64KSHqR6mijXI0wHwYDVR0jBBgwFoAUAHUajP3s/zXNk64KSHqR6mijXI0wDwYDVR0TAQH/BAUwAwEB/zAMBggqhQMHAQEDAgUAA0EAS2pA2er56Fs5FUD3M+kRK9GBe8me4267LE82K7hDOWldUiTg8lrrZ5mqJjw9rN7He4WIrC1OQlaJ0RAXHzq8Jg=="

cert_der = base64.b64decode(cert_base64)

with open(output_file, "wb") as f:
f.write(cert_der)

# Использование
convert_base64_to_der("remd.cer")

Из SignatureValue значение перевожу из base64 и сохраняю как бинарный файл в remd_raw.sig:
Цитата:

import base64

def convert_base64_to_hex(base64_string: str, output_file: str):

binary_data = base64.b64decode(base64_string)
with open(output_file, "wb") as f:
f.write(binary_data)

base64_string = "EQUyZ9eRe0gNCX+ZLThsnLECrQu9UzLcQHrUCIOW4jC3zi6jPO8hPweYVmpcfX73yfenqbLdrg6TjdrpJCkqDg=="
convert_base64_to_hex(base64_string, "remd_raw.sgn")


Беру все что в теге SignedInfo(вместе с ним и привожу данные в стандарт c14n):
Цитата:

<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"></ds:SignatureMethod><ds:Reference URI="#id-9dcc5ec4-a50e-4f24-83ba-48acf87d7442"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></ds:DigestMethod><ds:DigestValue>Y1DRWFqn9SSCg5NnGUsjpME10TJTZ6zUG2cQrq9mJmM=</ds:DigestValue></ds:Reference><ds:Reference URI="#TS-521fab16-f9cc-4f38-917c-6488c63e3c7b"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></ds:DigestMethod><ds:DigestValue>I6V0os/Zkawk5vCTYSypo24Ob7apyikgIgTKtAueHGI=</ds:DigestValue></ds:Reference></ds:SignedInfo>


При вводе команды:
csptest.exe -keyset -verify GOST12_256 -in remd_file.txt -signature remd_raw.sgn -cert remd.cer
выдает ошибку подписи.
Прошу подсказать, где я ошибся при проверки подписи.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.