public byte[] Decrypt(byte[] rgb, bool fOAEP)
        {
            if (rgb == null)
            {
                throw new ArgumentNullException("rgb");
            }

            // size check -- must be at most the modulus size
            if (rgb.Length > (KeySize / 8))
            {
                throw new CryptographicException(Environment.GetResourceString("Cryptography_Padding_DecDataTooBig", KeySize / 8));
            }

            if (m_disposed)
            {
                throw new ObjectDisposedException("rsa");
            }
            // choose between OAEP or PKCS#1 v.1.5 padding
            AsymmetricKeyExchangeDeformatter def = null;

            if (fOAEP)
            {
                def = new RSAOAEPKeyExchangeDeformatter(rsa);
            }
            else
            {
                def = new RSAPKCS1KeyExchangeDeformatter(rsa);
            }

            return(def.DecryptKeyExchange(rgb));
        }
        public byte[] Decrypt(byte[] rgb, bool fOAEP)
        {
            if (m_disposed)
            {
                throw new ObjectDisposedException("rsa");
            }
            // choose between OAEP or PKCS#1 v.1.5 padding
            AsymmetricKeyExchangeDeformatter def = null;

            if (fOAEP)
            {
                def = new RSAOAEPKeyExchangeDeformatter(rsa);
            }
            else
            {
                def = new RSAPKCS1KeyExchangeDeformatter(rsa);
            }

            return(def.DecryptKeyExchange(rgb));
        }