public static void Encrypt(Stream toEncrypt, RsaKeyParameters key, out KeyInfo keyInfo, out EncryptionMethod encryptionMethod, out CipherData cipherData) { var random = new SecureRandom(); var keyData = new byte[128 / 8]; var ivData = new byte[128 / 8]; random.NextBytes(ivData); random.NextBytes(keyData); var sessionKey = new ParametersWithIV(new KeyParameter(keyData), ivData); encryptionMethod = new EncryptionMethod(NS.XmlEncAES128Url); keyInfo = new KeyInfo(); EncryptedKey encKey; keyInfo.AddClause( new KeyInfoEncryptedKey( encKey = new EncryptedKey() { CipherData = new CipherData(XmlEncryption.EncryptKey(keyData, key, useOAEP: true)), EncryptionMethod = new EncryptionMethod(NS.XmlEncRSAOAEPUrl) })); encKey.KeyInfo.AddClause(new RsaKeyValue(key)); byte[] dataToEncrypt = new byte[toEncrypt.Length]; toEncrypt.Read(dataToEncrypt, 0, (int)toEncrypt.Length); var encryptedXml = new XmlEncryption(); encryptedXml.SetPadding("PKCS7"); encryptedXml.SetMode("CBC"); byte[] encryptedData = encryptedXml.EncryptData(dataToEncrypt, sessionKey); cipherData = new CipherData(encryptedData); }
public void Properties() { XmlEncryption exml = new XmlEncryption(); exml.SetXmlDSigSearchDepth(10); exml.SetResolver(null); exml.SetPadding("NOPADDING"); exml.SetMode("CBC"); exml.SetEncoding(Encoding.ASCII); exml.Recipient = "Recipient"; Assert.Equal(10, exml.GetXmlDSigSearchDepth()); Assert.Null(exml.GetResolver()); Assert.Equal("NOPADDING", exml.GetPadding()); Assert.Equal("CBC", exml.GetMode()); Assert.Equal(Encoding.ASCII, exml.GetEncoding()); Assert.Equal("Recipient", exml.Recipient); }