/* * Copyright (c) Contributors, http://www.nsl.tuis.ac.jp * */ using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Xml; using System.Net; using System.Net.Security; using System.Text; using System.Reflection; using System.Security.Cryptography.X509Certificates; using log4net; namespace NSL.Certificate.Tools { // public class NSLCertificateVerify { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private X509Certificate2 m_cacert = null; private X509Chain m_chain = null; public NSLCertificateVerify() { m_cacert = null; m_chain = null; } public NSLCertificateVerify(string certfile) { SetPrivateCA(certfile); } public void SetPrivateCA(string certfile) { m_cacert = new X509Certificate2(certfile); m_chain = new X509Chain(); m_chain.ChainPolicy.ExtraStore.Add(m_cacert); m_chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; m_chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; } /* public void SetPrivateCA(string pfxfile, string passwd) { X509Certificate2 cert = new X509Certificate2(pfxfile, passwd); byte[] bytes = cert.Export(X509ContentType.Cert, passwd); m_cacert = new X509Certificate2(bytes); m_chain = new X509Chain(); m_chain.ChainPolicy.ExtraStore.Add(m_cacert); m_chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; m_chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; } */ // // // public bool CheckPrivateChain(X509Certificate2 cert) { if (m_chain==null || m_cacert==null) { return false; } bool ret = m_chain.Build((X509Certificate2)cert); if (ret) { return true; } for (int i=0; i