# System.Security.Cryptography.X509Certificates

``` diff
 namespace System.Security.Cryptography.X509Certificates {
     public sealed class PublicKey {
+        public PublicKey(AsymmetricAlgorithm key);
+        public static PublicKey CreateFromSubjectPublicKeyInfo(ReadOnlySpan<byte> source, out int bytesRead);
+        public byte[] ExportSubjectPublicKeyInfo();
+        public DSA GetDSAPublicKey();
+        public ECDiffieHellman GetECDiffieHellmanPublicKey();
+        public ECDsa GetECDsaPublicKey();
+        public RSA GetRSAPublicKey();
+        public bool TryExportSubjectPublicKeyInfo(Span<byte> destination, out int bytesWritten);
     }
     public class X509Certificate2 : X509Certificate {
+        public X509Certificate2 CopyWithPrivateKey(ECDiffieHellman privateKey);
+        public static X509Certificate2 CreateFromPem(ReadOnlySpan<char> certPem);
+        public ECDiffieHellman GetECDiffieHellmanPrivateKey();
+        public ECDiffieHellman GetECDiffieHellmanPublicKey();
     }
-    public class X509Certificate2Collection : X509CertificateCollection {
+    public class X509Certificate2Collection : X509CertificateCollection, IEnumerable, IEnumerable<X509Certificate2> {
+        IEnumerator<X509Certificate2> System.Collections.Generic.IEnumerable<System.Security.Cryptography.X509Certificates.X509Certificate2>.GetEnumerator();
     }
-    public sealed class X509Certificate2Enumerator : IEnumerator {
+    public sealed class X509Certificate2Enumerator : IDisposable, IEnumerator, IEnumerator<X509Certificate2> {
+        void System.IDisposable.Dispose();
     }
-    public sealed class X509ChainElementCollection : ICollection, IEnumerable {
+    public sealed class X509ChainElementCollection : ICollection, IEnumerable, IEnumerable<X509ChainElement> {
+        IEnumerator<X509ChainElement> System.Collections.Generic.IEnumerable<System.Security.Cryptography.X509Certificates.X509ChainElement>.GetEnumerator();
     }
-    public sealed class X509ChainElementEnumerator : IEnumerator {
+    public sealed class X509ChainElementEnumerator : IDisposable, IEnumerator, IEnumerator<X509ChainElement> {
+        void System.IDisposable.Dispose();
     }
-    public sealed class X509ExtensionCollection : ICollection, IEnumerable {
+    public sealed class X509ExtensionCollection : ICollection, IEnumerable, IEnumerable<X509Extension> {
+        IEnumerator<X509Extension> System.Collections.Generic.IEnumerable<System.Security.Cryptography.X509Certificates.X509Extension>.GetEnumerator();
     }
-    public sealed class X509ExtensionEnumerator : IEnumerator {
+    public sealed class X509ExtensionEnumerator : IDisposable, IEnumerator, IEnumerator<X509Extension> {
+        void System.IDisposable.Dispose();
     }
 }
```

