示例#1
0
        public CertificateDetails(CertificateRecord certificateRecord)
        {
            this.InitializeComponent();

            this.l_IssuerValue.Text             = certificateRecord.Issuer;
            this.l_SubjectValue.Text            = certificateRecord.Subject;
            this.l_BeginDateValue.Text          = certificateRecord.StartDate.ToString();
            this.l_ExpirationDateValue.Text     = certificateRecord.ExpirationDate.ToString();
            this.l_SignatureAlgorithmValue.Text = certificateRecord.SignatureAlgorithm;
            this.l_SerialNumberValue.Text       = certificateRecord.SerialNumber;
            this.l_ThumbprintValue.Text         = certificateRecord.Thumbprint;
            this.l_VersionValue.Text            = certificateRecord.Version.ToString();
        }
        public void ToStringTest()
        {
            CertificateRecord tag =
                TestUtil.GetCompositeTag <CertificateRecord>(Constants.CertificateRecord.TagType,
                                                             new ITlvTag[]
            {
                new RawTag(Constants.CertificateRecord.CertificateIdTagType, false, false, new byte[] { 0x2 }),
                new RawTag(Constants.CertificateRecord.X509CertificateTagType, false, false, new byte[] { 0x3 }),
            });

            CertificateRecord tag2 = new CertificateRecord(new RawTag(tag.Type, tag.NonCritical, tag.Forward, tag.EncodeValue()));

            Assert.AreEqual(tag.ToString(), tag2.ToString());
        }
        public void CertificationRecordOkTest()
        {
            TlvTagBuilder builder = new TlvTagBuilder(Constants.CertificateRecord.TagType, false, false,
                                                      new ITlvTag[]
            {
                new RawTag(Constants.CertificateRecord.CertificateIdTagType, false, false, new byte[] { 0x2 }),
                new RawTag(Constants.CertificateRecord.X509CertificateTagType, false, false, new byte[] { 0x3 }),
            });

            CertificateRecord tag = new CertificateRecord(builder.BuildTag());

            Assert.That(Util.IsArrayEqual(new byte[] { 0x2 }, tag.CertificateId.Value), "Unexpected certificate id");
            Assert.That(Util.IsArrayEqual(new byte[] { 0x3 }, tag.X509Certificate.Value), "Unexpected X509 certificate.");
        }
        public void CertificationRecordWithoutCertTest()
        {
            TlvException ex = Assert.Throws <TlvException>(delegate
            {
                TlvTagBuilder builder = new TlvTagBuilder(Constants.CertificateRecord.TagType, false, false,
                                                          new ITlvTag[]
                {
                    new RawTag(Constants.CertificateRecord.CertificateIdTagType, false, false, new byte[] { 0x2 }),
                });

                CertificateRecord tag = new CertificateRecord(builder.BuildTag());
            });

            Assert.That(ex.Message.StartsWith("Exactly one certificate must exist in certificate record"), "Unexpected exception message: " + ex.Message);
        }
 // Token: 0x06000005 RID: 5 RVA: 0x00002354 File Offset: 0x00000554
 private void DoScheduledWork(object reloadState)
 {
     try
     {
         List <CertificateRecord> federationTrustCertificates = this.GetFederationTrustCertificates();
         List <CertificateRecord> authCertificates            = this.GetAuthCertificates();
         foreach (CertificateRecord certificateRecord in authCertificates)
         {
             CertificateRecord certificateRecord2 = federationTrustCertificates.Find(new Predicate <CertificateRecord>(certificateRecord.Equals));
             if (certificateRecord2 != null)
             {
                 certificateRecord2.Type |= certificateRecord.Type;
             }
             else
             {
                 federationTrustCertificates.Add(certificateRecord);
             }
         }
         if (federationTrustCertificates.Count > 0)
         {
             this.PerformDistribution(federationTrustCertificates);
         }
     }
     catch (ADTransientException ex)
     {
         Servicelet.Tracer.TraceError <ADTransientException>((long)this.GetHashCode(), "ActiveDirecotry transient  exception occurred during distribution: {0}", ex);
         this.eventLogger.LogEvent(MSExchangeCertificateDeploymentEventLogConstants.Tuple_TransientException, null, new object[]
         {
             ex
         });
     }
     catch (DataSourceOperationException ex2)
     {
         Servicelet.Tracer.TraceError <DataSourceOperationException>((long)this.GetHashCode(), "ActiveDirecotry permanent exception occurred during distribution: {0}", ex2);
         this.eventLogger.LogEvent(MSExchangeCertificateDeploymentEventLogConstants.Tuple_PermanentException, null, new object[]
         {
             ex2
         });
     }
     catch (DataValidationException ex3)
     {
         Servicelet.Tracer.TraceError <DataValidationException>((long)this.GetHashCode(), "ActiveDirecotry permanent exception occurred during distribution: {0}", ex3);
         this.eventLogger.LogEvent(MSExchangeCertificateDeploymentEventLogConstants.Tuple_PermanentException, null, new object[]
         {
             ex3
         });
     }
 }
        private void CmsServerCertificates_Delete_Click(object sender, EventArgs e)
        {
            CertificateRecord certificateRecord = null;
            var selectedIndex = -1;
            var serverName    = string.Empty;

            if (this.dgv_ServerCertificates.CurrentCell == null || this.dgv_ServerCertificates.CurrentCell.RowIndex < 0)
            {
                return;
            }

            try
            {
                selectedIndex     = this.dgv_ServerCertificates.CurrentCell.RowIndex;
                serverName        = this.dgv_ServerCertificates.Rows[selectedIndex].Cells["ServerName"].Value.ToString();
                certificateRecord = this.FindCertificateByServerName(serverName);
            }
            catch
            {
                return;
            }

            if (certificateRecord == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(certificateRecord.FileName))
            {
                return;
            }

            var filePath = Path.Combine(Config.HttpReverseProxyCertrifcateDir, certificateRecord.FileName);

            if (!File.Exists(filePath))
            {
                return;
            }

            Minary.Common.Utils.TryExecute2(() => { File.Delete(filePath); });

            this.RefreshCertificateListing();
        }
示例#7
0
        private CertificateRecord FindCertificateByServerName(string serverName)
        {
            CertificateRecord foundCertificate = null;

            if (string.IsNullOrEmpty(serverName))
            {
                return(foundCertificate);
            }

            try
            {
                int selectedIndex = this.dgv_ServerCertificates.CurrentCell.RowIndex;
                foundCertificate = (from record in this.certificateRecords where record.ServerName == serverName select record).First();
            }
            catch
            {
            }

            return(foundCertificate);
        }
示例#8
0
        private void RefreshCertificateListing()
        {
            this.certificateRecords.Clear();

            if (Directory.Exists(Config.HttpReverseProxyCertrifcateDir))
            {
                foreach (string tmpFile in Directory.GetFiles(Config.HttpReverseProxyCertrifcateDir))
                {
                    try
                    {
                        X509Certificate2Collection certificateCollection = NativeWindowsLib.Crypto.Crypto.GetCertificatesFromStoreFile(tmpFile, string.Empty);
                        CertificateRecord          tmpRecord             = new CertificateRecord();
                        X509Certificate2           theCertificate        = certificateCollection[0];

                        tmpRecord.Issuer             = string.IsNullOrEmpty(theCertificate.Issuer) ? string.Empty : theCertificate.Issuer;
                        tmpRecord.StartDate          = theCertificate.NotBefore == DateTime.MinValue ? DateTime.MinValue : theCertificate.NotBefore;
                        tmpRecord.ExpirationDate     = theCertificate.NotAfter == DateTime.MinValue ? DateTime.MinValue : theCertificate.NotAfter;
                        tmpRecord.SerialNumber       = string.IsNullOrEmpty(theCertificate.SerialNumber) ? string.Empty : theCertificate.SerialNumber;
                        tmpRecord.SignatureAlgorithm = theCertificate.SignatureAlgorithm != null ? theCertificate.SignatureAlgorithm.FriendlyName : string.Empty;
                        tmpRecord.Subject            = string.IsNullOrEmpty(theCertificate.Subject) ? string.Empty : theCertificate.Subject;
                        tmpRecord.Thumbprint         = string.IsNullOrEmpty(theCertificate.Thumbprint) ? string.Empty : theCertificate.Thumbprint;
                        tmpRecord.Version            = theCertificate.Version;

                        if (tmpRecord.Subject.Contains("="))
                        {
                            tmpRecord.ServerName = tmpRecord.Subject.Split(new char[] { '=' }, 2)[1];
                        }
                        else
                        {
                            tmpRecord.ServerName = tmpRecord.Subject;
                        }

                        tmpRecord.FileName = Path.GetFileName(tmpFile);
                        this.certificateRecords.Add(tmpRecord);
                    }
                    catch
                    {
                    }
                }
            }
        }
示例#9
0
        private void DGV_ServerCertificates_DoubleClick(object sender, EventArgs e)
        {
            CertificateRecord certificateRecord = null;
            var selectedIndex = -1;
            var serverName    = string.Empty;

            if (this.dgv_ServerCertificates.CurrentCell == null || this.dgv_ServerCertificates.CurrentCell.RowIndex < 0)
            {
                return;
            }

            try
            {
                selectedIndex     = this.dgv_ServerCertificates.CurrentCell.RowIndex;
                serverName        = this.dgv_ServerCertificates.Rows[selectedIndex].Cells["ServerName"].Value.ToString();
                certificateRecord = this.FindCertificateByServerName(serverName);

                CertificateDetails certificateDetails = new CertificateDetails(certificateRecord);
                certificateDetails.ShowDialog();
            }
            catch
            {
            }
        }
示例#10
0
        // Token: 0x06000009 RID: 9 RVA: 0x00002898 File Offset: 0x00000A98
        private List <CertificateRecord> GetAuthCertificates()
        {
            List <CertificateRecord> list = new List <CertificateRecord>();
            AuthConfig authConfig         = AuthConfig.Read(this.session);

            if (authConfig == null)
            {
                throw new InvalidAuthConfigurationException(DirectoryStrings.ErrorInvalidAuthSettings(string.Empty));
            }
            if (!string.IsNullOrEmpty(authConfig.PreviousCertificateThumbprint))
            {
                CertificateRecord certificateRecord = new CertificateRecord
                {
                    Type       = FederationCertificateType.PreviousCertificate,
                    Thumbprint = authConfig.PreviousCertificateThumbprint
                };
                CertificateRecord certificateRecord2 = list.Find(new Predicate <CertificateRecord>(certificateRecord.Equals));
                if (certificateRecord2 != null)
                {
                    certificateRecord2.Type |= FederationCertificateType.PreviousCertificate;
                }
                else
                {
                    list.Add(certificateRecord);
                }
            }
            if (!string.IsNullOrEmpty(authConfig.CurrentCertificateThumbprint))
            {
                CertificateRecord certificateRecord3 = new CertificateRecord
                {
                    Type       = FederationCertificateType.CurrentCertificate,
                    Thumbprint = authConfig.CurrentCertificateThumbprint
                };
                CertificateRecord certificateRecord4 = list.Find(new Predicate <CertificateRecord>(certificateRecord3.Equals));
                if (certificateRecord4 != null)
                {
                    certificateRecord4.Type |= FederationCertificateType.CurrentCertificate;
                }
                else
                {
                    list.Add(certificateRecord3);
                }
            }
            if (!string.IsNullOrEmpty(authConfig.NextCertificateThumbprint))
            {
                CertificateRecord certificateRecord5 = new CertificateRecord
                {
                    Type       = FederationCertificateType.NextCertificate,
                    Thumbprint = authConfig.NextCertificateThumbprint
                };
                CertificateRecord certificateRecord6 = list.Find(new Predicate <CertificateRecord>(certificateRecord5.Equals));
                if (certificateRecord6 != null)
                {
                    certificateRecord6.Type |= FederationCertificateType.NextCertificate;
                }
                else
                {
                    list.Add(certificateRecord5);
                }
            }
            return(list);
        }
示例#11
0
 // Token: 0x06000007 RID: 7 RVA: 0x0000285C File Offset: 0x00000A5C
 private bool IsCurrentOrNextCertificate(CertificateRecord cert)
 {
     return((cert.Type & FederationCertificateType.CurrentCertificate) == FederationCertificateType.CurrentCertificate || (cert.Type & FederationCertificateType.NextCertificate) == FederationCertificateType.NextCertificate);
 }