我收到了一个带有 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>