/// <summary> /// Gets the certificate details /// </summary> /// <param name="certificatePath">Certificate File Path</param> /// <param name="password">Password is set any</param> /// <returns>Certificate Details <see cref="CertificateDetails"/></returns> public static CertificateDetails GetCertificateDetails(string certificatePath, string password = null) { X509Certificate2 _certificate = new X509Certificate2(certificatePath, password); CertificateDetails details = new CertificateDetails(); details.SerialNumber = _certificate.SerialNumber; details.IssuedBy = _certificate.Issuer.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Where(x => x.Contains("CN")).FirstOrDefault().Replace("CN=", string.Empty); details.IssuedTo = _certificate.Subject.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Where(x => x.Contains("CN")).FirstOrDefault().Replace("CN=", string.Empty); details.Issuer = _certificate.Issuer; details.StartDate = _certificate.NotBefore; details.ExpiryDate = _certificate.NotAfter; details.SignatureAlgorithm = new Oid("", _certificate.SignatureAlgorithm.FriendlyName); details.PrivateKeyExportable = _certificate.HasPrivateKey; details.KeyLength = _certificate.PublicKey.Key.KeySize; return(details); }
/// <summary> /// Determines whether the specified <see cref="System.Object"/> is equal to this instance. /// </summary> /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param> /// <returns> /// <c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>. /// </returns> public override bool Equals(object obj) { CertificateDetails other = (CertificateDetails)obj; return(this.IssuedTo == other.IssuedTo && this.Issuer == other.Issuer && this.IssuedBy == other.IssuedBy && this.StartDate == other.StartDate && this.ExpiryDate == other.ExpiryDate); }