X509Certificate2.PrivateKey Property
Gets or sets the AsymmetricAlgorithm object that represents the private key associated with a certificate.
Assembly: System (in System.dll)
Property Value
Type: System.Security.Cryptography.AsymmetricAlgorithmAn AsymmetricAlgorithm object, which is either an RSA or DSA cryptographic service provider.
| Exception | Condition |
|---|---|
| CryptographicException |
The key value is not an RSA or DSA key, or the key is unreadable. |
| ArgumentNullException |
The value being set for this property is null. |
| NotSupportedException |
The key algorithm for this private key is not supported. |
| CryptographicUnexpectedOperationException |
The X.509 keys do not match. |
| ArgumentException |
The cryptographic service provider key is null. |
Currently this property supports only RSA or DSA keys, so it returns either an RSACryptoServiceProvider or a DSACryptoServiceProvider object. If no private key is associated with the certificate, null is returned.
The following code example opens the current user certificate store, selects only active certificates, then allows the user to select one or more certificates. The example then writes certificate information to the console.
using System; using System.Security.Cryptography; using System.Security.Permissions; using System.IO; using System.Security.Cryptography.X509Certificates; class CertSelect { static void Main() { try { X509Store store = new X509Store("MY",StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false); X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection); Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine); foreach (X509Certificate2 x509 in scollection) { byte[] rawdata = x509.RawData; Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine); Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine); Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine); Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine); Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine); Console.WriteLine("Private Key: {0}{1}",x509.PrivateKey.ToXmlString(false),Environment.NewLine); Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine); Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine); Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine); X509Certificate2UI.DisplayCertificate(x509); x509.Reset(); } store.Close(); } catch (CryptographicException) { Console.WriteLine("Information could not be written out for this certificate."); } } }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.