# System.Security.Cryptography ``` diff namespace System.Security.Cryptography { + public sealed class AesCcm : IDisposable { + public AesCcm(byte[] key); + public AesCcm(ReadOnlySpan key); + public static KeySizes NonceByteSizes { get; } + public static KeySizes TagByteSizes { get; } + public void Decrypt(byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[] associatedData = null); + public void Decrypt(ReadOnlySpan nonce, ReadOnlySpan ciphertext, ReadOnlySpan tag, Span plaintext, ReadOnlySpan associatedData = default(ReadOnlySpan)); + public void Dispose(); + public void Encrypt(byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[] associatedData = null); + public void Encrypt(ReadOnlySpan nonce, ReadOnlySpan plaintext, Span ciphertext, Span tag, ReadOnlySpan associatedData = default(ReadOnlySpan)); + } + public sealed class AesGcm : IDisposable { + public AesGcm(byte[] key); + public AesGcm(ReadOnlySpan key); + public static KeySizes NonceByteSizes { get; } + public static KeySizes TagByteSizes { get; } + public void Decrypt(byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[] associatedData = null); + public void Decrypt(ReadOnlySpan nonce, ReadOnlySpan ciphertext, ReadOnlySpan tag, Span plaintext, ReadOnlySpan associatedData = default(ReadOnlySpan)); + public void Dispose(); + public void Encrypt(byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[] associatedData = null); + public void Encrypt(ReadOnlySpan nonce, ReadOnlySpan plaintext, Span ciphertext, Span tag, ReadOnlySpan associatedData = default(ReadOnlySpan)); + } public abstract class AsymmetricAlgorithm : IDisposable { + public virtual byte[] ExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters); + public virtual byte[] ExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters); + public virtual byte[] ExportPkcs8PrivateKey(); + public virtual byte[] ExportSubjectPublicKeyInfo(); + public virtual void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, ReadOnlySpan source, out int bytesRead); + public virtual void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password, ReadOnlySpan source, out int bytesRead); + public virtual void ImportPkcs8PrivateKey(ReadOnlySpan source, out int bytesRead); + public virtual void ImportSubjectPublicKeyInfo(ReadOnlySpan source, out int bytesRead); + public virtual bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public virtual bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public virtual bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritten); + public virtual bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesWritten); } public class CryptoStream : Stream, IDisposable { + public override ValueTask DisposeAsync(); } public abstract class DSA : AsymmetricAlgorithm { + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, ReadOnlySpan source, out int bytesRead); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password, ReadOnlySpan source, out int bytesRead); + public override void ImportPkcs8PrivateKey(ReadOnlySpan source, out int bytesRead); + public override void ImportSubjectPublicKeyInfo(ReadOnlySpan source, out int bytesRead); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritten); + public override bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesWritten); } public abstract class ECDiffieHellman : AsymmetricAlgorithm { + public virtual byte[] ExportECPrivateKey(); + public virtual void ImportECPrivateKey(ReadOnlySpan source, out int bytesRead); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, ReadOnlySpan source, out int bytesRead); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password, ReadOnlySpan source, out int bytesRead); + public override void ImportPkcs8PrivateKey(ReadOnlySpan source, out int bytesRead); + public override void ImportSubjectPublicKeyInfo(ReadOnlySpan source, out int bytesRead); + public virtual bool TryExportECPrivateKey(Span destination, out int bytesWritten); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritten); + public override bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesWritten); } public abstract class ECDsa : AsymmetricAlgorithm { + public virtual byte[] ExportECPrivateKey(); + public virtual void ImportECPrivateKey(ReadOnlySpan source, out int bytesRead); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, ReadOnlySpan source, out int bytesRead); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password, ReadOnlySpan source, out int bytesRead); + public override void ImportPkcs8PrivateKey(ReadOnlySpan source, out int bytesRead); + public override void ImportSubjectPublicKeyInfo(ReadOnlySpan source, out int bytesRead); + public virtual bool TryExportECPrivateKey(Span destination, out int bytesWritten); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritten); + public override bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesWritten); } public sealed class MD5CryptoServiceProvider : MD5 { - protected sealed override void Dispose(bool disposing); + protected override void Dispose(bool disposing); + protected override void HashCore(ReadOnlySpan source); + protected override bool TryHashFinal(Span destination, out int bytesWritten); } + public enum PbeEncryptionAlgorithm { + Aes128Cbc = 1, + Aes192Cbc = 2, + Aes256Cbc = 3, + TripleDes3KeyPkcs12 = 4, + Unknown = 0, + } + public sealed class PbeParameters { + public PbeParameters(PbeEncryptionAlgorithm encryptionAlgorithm, HashAlgorithmName hashAlgorithm, int iterationCount); + public PbeEncryptionAlgorithm EncryptionAlgorithm { get; } + public HashAlgorithmName HashAlgorithm { get; } + public int IterationCount { get; } + } public abstract class RandomNumberGenerator : IDisposable { + public static int GetInt32(int toExclusive); + public static int GetInt32(int fromInclusive, int toExclusive); } public sealed class RNGCryptoServiceProvider : RandomNumberGenerator { + public override void GetBytes(byte[] data, int offset, int count); + public override void GetBytes(Span data); + public override void GetNonZeroBytes(Span data); } public abstract class RSA : AsymmetricAlgorithm { + public virtual byte[] ExportRSAPrivateKey(); + public virtual byte[] ExportRSAPublicKey(); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, ReadOnlySpan source, out int bytesRead); + public override void ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password, ReadOnlySpan source, out int bytesRead); + public override void ImportPkcs8PrivateKey(ReadOnlySpan source, out int bytesRead); + public virtual void ImportRSAPrivateKey(ReadOnlySpan source, out int bytesRead); + public virtual void ImportRSAPublicKey(ReadOnlySpan source, out int bytesRead); + public override void ImportSubjectPublicKeyInfo(ReadOnlySpan source, out int bytesRead); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters, Span destination, out int bytesWritten); + public override bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritten); + public virtual bool TryExportRSAPrivateKey(Span destination, out int bytesWritten); + public virtual bool TryExportRSAPublicKey(Span destination, out int bytesWritten); + public override bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesWritten); } public sealed class SHA1CryptoServiceProvider : SHA1 { - protected sealed override void Dispose(bool disposing); + protected override void Dispose(bool disposing); + protected override void HashCore(ReadOnlySpan source); + protected override bool TryHashFinal(Span destination, out int bytesWritten); } public sealed class SHA256CryptoServiceProvider : SHA256 { - protected sealed override void Dispose(bool disposing); + protected override void Dispose(bool disposing); + protected override void HashCore(ReadOnlySpan source); + protected override bool TryHashFinal(Span destination, out int bytesWritten); } public sealed class SHA384CryptoServiceProvider : SHA384 { - protected sealed override void Dispose(bool disposing); + protected override void Dispose(bool disposing); + protected override void HashCore(ReadOnlySpan source); + protected override bool TryHashFinal(Span destination, out int bytesWritten); } public sealed class SHA512CryptoServiceProvider : SHA512 { - protected sealed override void Dispose(bool disposing); + protected override void Dispose(bool disposing); + protected override void HashCore(ReadOnlySpan source); + protected override bool TryHashFinal(Span destination, out int bytesWritten); } } ```