当前位置: 首页>>代码示例>>C#>>正文


C# X509Certificate2Collection.FindByThumbprint方法代码示例

本文整理汇总了C#中System.Security.Cryptography.X509Certificates.X509Certificate2Collection.FindByThumbprint方法的典型用法代码示例。如果您正苦于以下问题:C# X509Certificate2Collection.FindByThumbprint方法的具体用法?C# X509Certificate2Collection.FindByThumbprint怎么用?C# X509Certificate2Collection.FindByThumbprint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Security.Cryptography.X509Certificates.X509Certificate2Collection的用法示例。


在下文中一共展示了X509Certificate2Collection.FindByThumbprint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: IsTrustedCertificate

        /// <summary>
        /// Validates a certificate by walking the certificate chain for all trust anchor chain, validating the leaf certificate against the chain.
        /// </summary>
        /// <remarks>Currently, all intermediate certificates must be stored in the system.</remarks>
        /// <param name="certificate">The leaf <see cref="X509Certificate2"/> to validate</param>
        /// <param name="anchors">The collection of certificates representing anchors or roots of trust.</param>
        /// <returns><c>true</c> if at least one anchor has a valid chain of certs that verify trust in the leaf certificate,
        /// <c>false</c> if no anchors validate trust in the leaf cert.</returns>
        public bool IsTrustedCertificate(X509Certificate2 certificate, X509Certificate2Collection anchors)
        {
            if (certificate == null)
            {
                throw new ArgumentNullException("certificate");
            }

            // if there are no anchors we should always fail
            if (CollectionExtensions.IsNullOrEmpty(anchors))
            {
                this.NotifyUntrusted(certificate);
                return false;
            }

            X509Chain chainBuilder = new X509Chain();
            chainBuilder.ChainPolicy = m_policy.Clone();
            
            chainBuilder.ChainPolicy.ExtraStore.Add(anchors);
            if (this.HasCertificateResolver)
            {
                this.ResolveIntermediateIssuers(certificate, chainBuilder.ChainPolicy.ExtraStore);
            }
            
            try
            {
                // We're using the system class as a helper to merely build the chain
                // However, we will review each item in the chain ourselves, because we have our own rules...
                chainBuilder.Build(certificate);
                X509ChainElementCollection chainElements = chainBuilder.ChainElements;

                // If we don't have a trust chain, then we obviously have a problem...
                if (chainElements.IsNullOrEmpty())
                {
                    this.NotifyUntrusted(certificate);
                    return false;
                }

                // walk the chain starting at the leaf and see if we hit any issues before the anchor
                foreach (X509ChainElement chainElement in chainElements)
                {                
                    if (this.ChainElementHasProblems(chainElement))
                    {
                        this.NotifyProblem(chainElement);
                        
                        // Whoops... problem with at least one cert in the chain. Stop immediately
                        return false;
                    }

                    bool isAnchor = (anchors.FindByThumbprint(chainElement.Certificate.Thumbprint) != null);
                    if (isAnchor)
                    {
                        // Found a valid anchor!
                        // Because we found an anchor we trust, we can now trust the entire trust chain
                        return true;
                    }
                }
            }
            catch(Exception ex)
            {
                this.NotifyError(certificate, ex);
                // just eat it and drop out to return false
            }
            
            this.NotifyUntrusted(certificate);
            return (false);
        }
开发者ID:DM-TOR,项目名称:nhin-d,代码行数:74,代码来源:TrustChainValidator.cs

示例2: VerifyValidCert

        private void VerifyValidCert(X509Certificate2Collection source, X509Certificate2Collection cached)
        {
            Assert.NotNull(source);
            Assert.NotNull(cached);
            Assert.True(cached.Count > 0);
            Assert.Equal(source.Count, cached.Count);

            source.Enumerate().All((x) => cached.FindByThumbprint(x.Thumbprint) != null);
            cached.Enumerate().All((x) => source.FindByThumbprint(x.Thumbprint) != null);
        }
开发者ID:DM-TOR,项目名称:nhin-d,代码行数:10,代码来源:CertificateResolverFacts.cs


注:本文中的System.Security.Cryptography.X509Certificates.X509Certificate2Collection.FindByThumbprint方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。