示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        /// <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);
            }
        }