X509Certificate2 Class
Assembly: System (in system.dll)
The X.509 structure originated in the International Organization for Standardization (ISO) working groups. This structure can be used to represent various types of information including identity, entitlement, and holder attributes (permissions, age, sex, location, affiliation, and so forth). Although the ISO specifications are most informative on the structure itself, the X509Certificate2 class is designed to model the usage scenarios defined in specifications issued by the Internet Engineering Task Force (IETF) Public Key Infrastructure, X.509 (PKIX) working group. The most informative of these specifications is RFC 3280, "Certificate and Certificate Revocation List (CRL) Profile."
| Topic | Location |
|---|---|
| How to: Encrypt XML Elements with X.509 Certificates | .NET Framework: Security |
| How to: Decrypt XML Elements with X.509 Certificates | .NET Framework: Security |
| How to: Encrypt XML Elements with X.509 Certificates | .NET Framework: Security |
| How to: Decrypt XML Elements with X.509 Certificates | .NET Framework: Security |
The following code example creates a command-line executable that takes a certificate file as an argument and prints various certificate properties to the console.
#using <System.dll> using namespace System; using namespace System::Security::Cryptography; using namespace System::Security::Permissions; using namespace System::IO; using namespace System::Security::Cryptography::X509Certificates; //Reads a file. array<Byte>^ ReadFile( String^ fileName ) { FileStream^ f = gcnew FileStream( fileName,FileMode::Open,FileAccess::Read ); int size = (int)f->Length; array<Byte>^data = gcnew array<Byte>(size); size = f->Read( data, 0, size ); f->Close(); return data; } int main() { array<String^>^args = Environment::GetCommandLineArgs(); //Test for correct number of arguments. if ( args->Length < 2 ) { Console::WriteLine( "Usage: CertInfo <filename>" ); return -1; } try { System::Security::Cryptography::X509Certificates::X509Certificate2 ^ x509 = gcnew System::Security::Cryptography::X509Certificates::X509Certificate2; //Create X509Certificate2 object from .cer file. array<Byte>^rawData = ReadFile( args[ 1 ] ); x509->Import(rawData); //Print to console information contained in the certificate. Console::WriteLine( "{0}Subject: {1}{0}", Environment::NewLine, x509->Subject ); Console::WriteLine( "{0}Issuer: {1}{0}", Environment::NewLine, x509->Issuer ); Console::WriteLine( "{0}Version: {1}{0}", Environment::NewLine, x509->Version ); Console::WriteLine( "{0}Valid Date: {1}{0}", Environment::NewLine, x509->NotBefore ); Console::WriteLine( "{0}Expiry Date: {1}{0}", Environment::NewLine, x509->NotAfter ); Console::WriteLine( "{0}Thumbprint: {1}{0}", Environment::NewLine, x509->Thumbprint ); Console::WriteLine( "{0}Serial Number: {1}{0}", Environment::NewLine, x509->SerialNumber ); Console::WriteLine( "{0}Friendly Name: {1}{0}", Environment::NewLine, x509->PublicKey->Oid->FriendlyName ); Console::WriteLine( "{0}Public Key Format: {1}{0}", Environment::NewLine, x509->PublicKey->EncodedKeyValue->Format(true) ); Console::WriteLine( "{0}Raw Data Length: {1}{0}", Environment::NewLine, x509->RawData->Length ); Console::WriteLine( "{0}Certificate to string: {1}{0}", Environment::NewLine, x509->ToString( true ) ); Console::WriteLine( "{0}Certificate to XML String: {1}{0}", Environment::NewLine, x509->PublicKey->Key->ToXmlString( false ) ); //Add the certificate to a X509Store. X509Store ^ store = gcnew X509Store; store->Open( OpenFlags::MaxAllowed ); store->Add( x509 ); store->Close(); } catch ( DirectoryNotFoundException^ ) { Console::WriteLine( "Error: The directory specified could not be found." ); } catch ( IOException^ ) { Console::WriteLine( "Error: A file in the directory could not be accessed." ); } catch ( NullReferenceException^ ) { Console::WriteLine( "File must be a .cer file. Program does not have access to that type of file." ); } }
System.Security.Cryptography.X509Certificates.X509Certificate
System.Security.Cryptography.X509Certificates.X509Certificate2
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.