internal SecureMimeDigitalCertificate (X509Certificate certificate) { Certificate = certificate; var pubkey = certificate.GetPublicKey (); if (pubkey is DsaKeyParameters) PublicKeyAlgorithm = PublicKeyAlgorithm.Dsa; else if (pubkey is RsaKeyParameters) PublicKeyAlgorithm = PublicKeyAlgorithm.RsaGeneral; else if (pubkey is ElGamalKeyParameters) PublicKeyAlgorithm = PublicKeyAlgorithm.ElGamalGeneral; else if (pubkey is ECKeyParameters) PublicKeyAlgorithm = PublicKeyAlgorithm.EllipticCurve; else if (pubkey is DHKeyParameters) PublicKeyAlgorithm = PublicKeyAlgorithm.DiffieHellman; Fingerprint = certificate.GetFingerprint (); }
/// <summary> /// Gets the database command to select the record matching the specified certificate. /// </summary> /// <remarks> /// Gets the database command to select the record matching the specified certificate. /// </remarks> /// <returns>The database command.</returns> /// <param name="certificate">The certificate.</param> /// <param name="fields">The fields to return.</param> protected override DbCommand GetSelectCommand (X509Certificate certificate, X509CertificateRecordFields fields) { var query = "SELECT " + string.Join (", ", GetColumnNames (fields)) + " FROM CERTIFICATES "; var fingerprint = certificate.GetFingerprint ().ToLowerInvariant (); var serialNumber = certificate.SerialNumber.ToString (); var issuerName = certificate.IssuerDN.ToString (); var command = connection.CreateCommand (); command.CommandText = query + "WHERE ISSUERNAME = @ISSUERNAME AND SERIALNUMBER = @SERIALNUMBER AND FINGERPRINT = @FINGERPRINT LIMIT 1"; command.AddParameterWithValue ("@ISSUERNAME", issuerName); command.AddParameterWithValue ("@SERIALNUMBER", serialNumber); command.AddParameterWithValue ("@FINGERPRINT", fingerprint); command.CommandType = CommandType.Text; return command; }