using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography;
using System.Text;
using System.Collections.Generic;
using System.IO;
namespace WebApp
{
public partial class ResolveCertContent : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//解析公钥
byte[] bytes = Encoding.Default.GetBytes(this.TextBox1.Text.Trim());
X509Certificate x509 = new X509Certificate(bytes);
StringBuilder strBuilder = new StringBuilder();
strBuilder.Append("
序 列 号:" + x509.GetSerialNumberString());
string[] issuer1 = x509.Issuer.Split(new string[] { "CN=", ", O" }, StringSplitOptions.RemoveEmptyEntries);
string[] issuer2 = x509.Issuer.Split(new string[] { ", O=", ", C=" }, StringSplitOptions.RemoveEmptyEntries);
string[] issuer3 = x509.Issuer.Split(new string[] { ", C=" }, StringSplitOptions.RemoveEmptyEntries);
strBuilder.Append("
证书类别:" + issuer1[0]);
strBuilder.Append("
颁发机构:" + issuer2[1]);
strBuilder.Append("
国 家:" + issuer3[1]);
string[] subject1 = x509.Subject.Split(new string[] { "L=", ", S=" }, StringSplitOptions.RemoveEmptyEntries);
string[] subject2 = x509.Subject.Split(new string[] { ", S=", ", C=" }, StringSplitOptions.RemoveEmptyEntries);
string[] subject3 = x509.Subject.Split(new string[] { ", C=", ", O=" }, StringSplitOptions.RemoveEmptyEntries);
string[] subject4 = x509.Subject.Split(new string[] { ", O=", ", CN=" }, StringSplitOptions.RemoveEmptyEntries);
string[] subject5 = x509.Subject.Split(new string[] { ", CN=" }, StringSplitOptions.RemoveEmptyEntries);
strBuilder.Append("
所在城市:" + subject1[0]);
strBuilder.Append("
所在省份:" + subject2[1]);
strBuilder.Append("
所在国家:" + subject3[1]);
strBuilder.Append("
名 称:" + subject4[1]);
strBuilder.Append("
主 题:" + subject5[1]);
strBuilder.Append(" 有效日期:" + x509.GetEffectiveDateString() + "-" + x509.GetExpirationDateString());
this.TextBox2.Text = strBuilder.ToString();
}
protected void Button2_Click(object sender, EventArgs e)
{
string strFileUrl = Server.MapPath("/temp/code-3.crl");
FileStream stream = new FileInfo(strFileUrl).OpenRead();
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, Convert.ToInt32(stream.Length));
Mono.Security.X509.X509Crl crl = new Mono.Security.X509.X509Crl(buffer);
for (int i = 0; i < crl.Entries.Count; i++)
{
try
{
byte[] serialByte = crl[i].SerialNumber;
this.TextBox2.Text += "吊销序列号:"+this.ToHexString(serialByte)+"
";
continue;
}
catch (Exception)
{
}
}
}
public string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
{
string hexString = string.Empty;
if (bytes != null)
{
StringBuilder strB = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
strB.Append(bytes[i].ToString("X2"));
}
hexString = strB.ToString();
}
return hexString;
}
}
}