public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) { if (data == null) { throw new ArgumentNullException("data"); } if (padding == null) { throw new ArgumentNullException("padding"); } if (padding == RSAEncryptionPadding.Pkcs1) { return(NCryptNative.EncryptDataPkcs1(KeyHandle, data)); } else if (padding.Mode == RSAEncryptionPaddingMode.Oaep) { return(NCryptNative.EncryptDataOaep(KeyHandle, data, padding.OaepHashAlgorithm.Name)); } else { // no other padding possibilities at present, but we might version independently from more being added. throw new CryptographicException(SR.GetString(SR.Cryptography_UnsupportedPaddingMode)); }; }