Расшифровать сообщение SOAP

Я пытаюсь расшифровать мыльное сообщение, но получаю следующую ошибку:

Unable to retrieve the decryption key

var doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(stream);
var en = new EncryptedXml(doc);
en.AddKeyNameMapping(KeyName, Alg);
en.DecryptDocument();

Я добавил сертификат в свой локальный ящик. Надо ли их где-то указывать? Я добавил XML-документ. Итак, каким будет имя ключа и алгоритм? Имя ключа то, что находится в хранилище ключей? Алгоритм - это то, что находится в XML-документе (sha1, который вы можете увидеть в документе под тегом DigestMethod Algorithm)?

 <s:Envelope 
        xmlns:s = "http://www.w3.org/2003/05/soap-envelope" 
        xmlns:u = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <s:Header>
            <VsDebuggerCausalityData 
                xmlns = "http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4tYpt6X40FEk+VSAe5mc8MAAAAAP497cBuXfk+uFIOY80O0iuLtIW56q7hLktgVYPhbnHMACQAA
            </VsDebuggerCausalityData>
            <o:Security s:mustUnderstand = "1" 
                xmlns:o = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                <o:BinarySecurityToken u:Id = "uuid-10490fb0-8ee0-4a4c-a8db-77242c9a3b7f-2" ValueType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MIIF+TCCBOGgAwIBAgIQIWv3OdE866kXP/....t</o:BinarySecurityToken>
                <e:EncryptedKey Id = "_0" 
                    xmlns:e = "http://www.w3.org/2001/04/xmlenc#">
                    <e:EncryptionMethod Algorithm = "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
                        <DigestMethod Algorithm = "http://www.w3.org/2000/09/xmldsig#sha1" 
                            xmlns = "http://www.w3.org/2000/09/xmldsig#" />
                    </e:EncryptionMethod>
                    <KeyInfo 
                        xmlns = "http://www.w3.org/2000/09/xmldsig#">
                        <o:SecurityTokenReference>
                            <o:KeyIdentifier ValueType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier" EncodingType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">j0ZKFBmTz3Kj0cQ82rq63MYAR+0=</o:KeyIdentifier>
                        </o:SecurityTokenReference>
                    </KeyInfo>
                    <e:CipherData>
                        <e:CipherValue>ANCElFZ5v....==</e:CipherValue>
                    </e:CipherData>
                    <e:ReferenceList>
                        <e:DataReference URI = "#_2" />
                    </e:ReferenceList>
                </e:EncryptedKey>
                <Signature 
                    xmlns = "http://www.w3.org/2000/09/xmldsig#">
                    <SignedInfo>
                        <CanonicalizationMethod Algorithm = "http://www.w3.org/2001/10/xml-exc-c14n#" />
                        <SignatureMethod Algorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
                        <Reference URI = "#_1">
                            <Transforms>
                                <Transform Algorithm = "http://www.w3.org/2001/10/xml-exc-c14n#" />
                            </Transforms>
                            <DigestMethod Algorithm = "http://www.w3.org/2000/09/xmldsig#sha1" />
                            <DigestValue>akiomlPdi6j1h6r9NDqmh9G1GD0=</DigestValue>
                        </Reference>
                    </SignedInfo>
                    <SignatureValue>LIjqWD/BXsoA0XNR7hv...==</SignatureValue>
                    <KeyInfo>
                        <o:SecurityTokenReference>
                            <o:Reference ValueType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI = "#uuid-10490fb0-8ee0-4a4c-a8db-77242c9a3b7f-2" />
                        </o:SecurityTokenReference>
                    </KeyInfo>
                </Signature>
            </o:Security>
        </s:Header>
        <s:Body u:Id = "_1">
            <e:EncryptedData Id = "_2" Type = "http://www.w3.org/2001/04/xmlenc#Content" 
                xmlns:e = "http://www.w3.org/2001/04/xmlenc#">
                <e:EncryptionMethod Algorithm = "http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
                <e:CipherData>
                    <e:CipherValue>3kESnJnhc8K.....</e:CipherValue>
                </e:CipherData>
            </e:EncryptedData>
        </s:Body>
    </s:Envelope>

пример в документации показывает, что Требуется вызов AddKeyNameMapping, иначе как он узнает, какой алгоритм дешифрования использовать?

RB. 08.04.2018 22:28

Вам нужно предоставить гораздо больше деталей. Также выберите подходящие теги.

Henk Holterman 08.04.2018 22:36

Я добавил XML-документ. Простите.

MindGame 08.04.2018 22:42

@RB Я немного не понимаю, как использовать AddKeyNameMapping с точки зрения сертификата. В большинстве примеров указано, что он будет получен из местных сертификатов. У меня есть сертификаты, установленные на моем компьютере, но он все еще не работает. Любые идеи? В этом примере также говорится, что он должен читать его из локального хранилища stackoverflow.com/questions/45059848/….

MindGame 09.04.2018 16:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
365
0

Другие вопросы по теме