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);
        }