public void AddCertificate() { FileInfo[] files = this.getAllCerts(); foreach (var file in files) { System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(file.FullName); byte[] hashBytes = cert.GetRawCertData(); X509CertificateStore certstore = new X509CertificateStore(); certstore.Import(hashBytes); IEnumerable <X509Certificate> ix509Cert = certstore.Certificates; foreach (var item in ix509Cert) { X509Certificate cert2 = item; X509CertificateRecord certrecord = _database.Find(cert2, X509CertificateRecordFields.Certificate); if (certrecord == null) { certrecord = new X509CertificateRecord(cert2); _database.Add(certrecord); } } } }
/// <summary> /// Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate. /// </summary> /// <remarks> /// Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate. /// </remarks> /// <param name="certificate">The certificate.</param> /// <param name="algorithms">The encryption algorithm capabilities of the client (in preferred order).</param> /// <param name="timestamp">The timestamp in coordinated universal time (UTC).</param> protected override void UpdateSecureMimeCapabilities(X509Certificate certificate, EncryptionAlgorithm[] algorithms, DateTime timestamp) { X509CertificateRecord record; if ((record = dbase.Find(certificate, AlgorithmFields)) == null) { record = new X509CertificateRecord(certificate); record.AlgorithmsUpdated = timestamp; record.Algorithms = algorithms; dbase.Add(record); } else if (timestamp > record.AlgorithmsUpdated) { record.AlgorithmsUpdated = timestamp; record.Algorithms = algorithms; dbase.Update(record, AlgorithmFields); } }