<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Security</title><link>http://forums.asp.net/25.aspx</link><description>All about ASP.NET security (authentication, authorization, membership, roles, etc.) and the Login controls. &lt;a href="http://aspadvice.com/SignUp/list.aspx?l=24&amp;c=17" target="_blank"&gt;Email List&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: How to verify Certificate Revocation using x509chain online check ???</title><link>http://forums.asp.net/thread/1881494.aspx</link><pubDate>Wed, 29 Aug 2007 04:34:16 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1881494</guid><dc:creator>vallamreddy.supraja@gmail.com</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1881494.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1881494</wfw:commentRss><description>&lt;font size="2"&gt;
&lt;p&gt;HI,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I am developing a digital signature verification component&amp;nbsp; in C# .NET.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;In this verification I need to check the Certificate revocation status against a Online CRL stored in a directory?&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;chk the below code by using&amp;nbsp; status online&amp;nbsp; it is working properly while online check. i couldn&amp;#39;t find any exapmle&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string status = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509Chain chain = new X509Chain();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EndCertificateOnly;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 0, 30);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.Build(certificate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (X509ChainStatus s in chain.ChainStatus)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str = s.Status.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!str.Equals(&amp;quot;&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //flag = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = s.Status.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.Reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return status;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please let me know how exactly will do using Online and offline check.&lt;/p&gt;
&lt;p&gt;Thanks-&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: How to verify Certificate Revocation using x509chain online check ???</title><link>http://forums.asp.net/thread/1877744.aspx</link><pubDate>Mon, 27 Aug 2007 05:24:28 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1877744</guid><dc:creator>vallamreddy.supraja@gmail.com</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1877744.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1877744</wfw:commentRss><description>&lt;p&gt;HI,&lt;/p&gt;
&lt;p&gt;Thanks for ur reply...&lt;/p&gt;
&lt;p&gt;Actually i need online check for certificate not for the store certificate?&lt;/p&gt;
&lt;p&gt;could u please send me the example on online check.&lt;/p&gt;
&lt;p&gt;Thanks in Advanced &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: How to verify Certificate Revocation using x509chain online check ???</title><link>http://forums.asp.net/thread/1874943.aspx</link><pubDate>Fri, 24 Aug 2007 08:37:52 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1874943</guid><dc:creator>XiaoYong Dai – MSFT</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1874943.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1874943</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/fan/images/icon-quote.gif"&gt; &lt;strong&gt;vallamreddy.supraja@gmail.com:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
&lt;p&gt;but it is not checking online properly. could you please help me any one .&lt;/p&gt;
&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;X509Chain is used for certificate validation and give a global error status inside ChainStatus. Here is the verification used to check the Certificate revocation status performed online. Hope it helps&lt;/p&gt;&lt;pre class="coloredcode"&gt;            X509Store store = &lt;span class="kwd"&gt;new&lt;/span&gt; X509Store(&lt;span class="st"&gt;&amp;quot;MY&amp;quot;&lt;/span&gt;, StoreLocation.CurrentUser);
            store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);

            &lt;span class="cmt"&gt;//Output store information.&lt;/span&gt;
            &lt;span class="kwd"&gt;string&lt;/span&gt; output = &lt;span class="st"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
            output = &lt;span class="st"&gt;&amp;quot;Store Information&amp;quot;&lt;/span&gt;;
            output += &lt;span class="st"&gt;&amp;quot;Number of certificates in the store: &amp;quot;&lt;/span&gt; + store.Certificates.Count;

            output += &lt;span class="st"&gt;&amp;quot;Store location: &amp;quot;&lt;/span&gt; + store.Location;
            output += &lt;span class="st"&gt;&amp;quot;Store name: &amp;quot;&lt;/span&gt; + store.Name + &lt;span class="st"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; + Environment.NewLine;

            &lt;span class="cmt"&gt;//Put certificates from the store into a collection so user can select one.&lt;/span&gt;

            X509Certificate2Collection fcollection = (X509Certificate2Collection)store.Certificates;
            X509Certificate2Collection collection = X509Certificate2UI.SelectFromCollection(fcollection, &lt;span class="st"&gt;&amp;quot;Select an X509 Certificate&amp;quot;&lt;/span&gt;, &lt;span class="st"&gt;&amp;quot;Choose a certificate to examine.&amp;quot;&lt;/span&gt;, X509SelectionFlag.SingleSelection);

            X509Certificate2 certificate = collection[0];
            X509Certificate2UI.DisplayCertificate(certificate);
            
            
            
            X509Chain chain = &lt;span class="kwd"&gt;new&lt;/span&gt; X509Chain();

            chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;

            chain.ChainPolicy.RevocationMode =

            X509RevocationMode.Online; &lt;span class="cmt"&gt;//  X509RevocationMode.Offline;&lt;/span&gt;

            chain.ChainPolicy.UrlRetrievalTimeout = &lt;span class="kwd"&gt;new&lt;/span&gt; TimeSpan(0, 0, 30);

            chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;

            chain.Build(certificate);

            Console.WriteLine(output);&lt;/pre&gt;&lt;pre class="coloredcode"&gt;            &lt;span class="kwd"&gt;for&lt;/span&gt;( &lt;span class="kwd"&gt;int&lt;/span&gt; i=0;i&amp;lt; chain.ChainStatus.Length;i++)
            
            {
                Console.WriteLine(chain.ChainStatus[i].Status);
            
            }
&lt;/pre&gt;&amp;nbsp;</description></item><item><title>How to verify Certificate Revocation using x509chain online check ???</title><link>http://forums.asp.net/thread/1871022.aspx</link><pubDate>Wed, 22 Aug 2007 12:17:43 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1871022</guid><dc:creator>vallamreddy.supraja@gmail.com</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1871022.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1871022</wfw:commentRss><description>&lt;p&gt;chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain; &lt;/p&gt;
&lt;p&gt;chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(1000); &lt;/p&gt;
&lt;p&gt;chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags; &lt;/p&gt;
&lt;p&gt;chain.ChainPolicy.VerificationTime = DateTime.Now; &lt;/p&gt;
&lt;p&gt;this is code i am using for online check.but it is not checking online properly. could you please help me any one .&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks in Advanced,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>