0

我收到了一个带有 EncryptedData 元素的 SAML2 响应,该元素看起来像下面的 xml 块。数据使用 aes128-gcm 加密。我需要解密数据。

我最接近解决方案的似乎是这段代码,但我未能向 EncryptedXml.DecryptData 方法提供 SymmetricAlgorithm 的实例。

我有一个 pfx 文件及其密码,但如何从中获取 SymmetricAlgorithm?

    var encryptedElement = rawResponse.GetElementsByTagName("xenc:EncryptedData")[0] as XmlElement;
    var encryptedData = new EncryptedData();
    encryptedData.LoadXml(encryptedElement);

    var encryptedDoc = new EncryptedXml();
    encryptedDoc.DecryptData(encryptedData, xxx);

这是xml

<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="_08c07f24af25bc28efc32a88e78cecba" Type="http://www.w3.org/2001/04/xmlenc#Element">
    <xenc:EncryptionMethod xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm" />
    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="_32cb20aabf0978078c5bce424a64daba" Recipient="MyEntityId">
            <xenc:EncryptionMethod xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
                <ds:DigestMethod xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            </xenc:EncryptionMethod>
            <ds:KeyInfo>
                <ds:X509Data>
                    <ds:X509Certificate>MIIDUzCC...bVJ7b</ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
            <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
                <xenc:CipherValue>qQye...cFuI6RUw==</xenc:CipherValue>
            </xenc:CipherData>
        </xenc:EncryptedKey>
    </ds:KeyInfo>
    <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
        <xenc:CipherValue>M3nM44...r</xenc:CipherValue>
    </xenc:CipherData>
</xenc:EncryptedData>
4

0 回答 0