手机
当前位置:查字典教程网 >编程开发 >C#教程 >解析数字签名的substring结构(获取数字签名时间)
解析数字签名的substring结构(获取数字签名时间)
摘要:解析的结构和代码:复制代码代码如下:X509CertificateSubstring#region文件描述#endregion#region...

解析的结构和代码:

复制代码 代码如下:

X509CertificateSubstring

#region 文件描述

#endregion

#region 类修改记录 : 每次修改一组描述

#endregion

using System;

using System.Security.Cryptography.X509Certificates;

namespace DTLEntAdministration.Common

{

/// <summary>

/// 数字签名的Substring结构

/// </summary>

public class X509CertificateSubstring

{

//CN=Shenzhen DriveTheLife Software Technology Co.Ltd, OU=Digital ID Class 3 - Microsoft Software Validation v2, O=Shenzhen DriveTheLife Software Technology Co.Ltd, L=Shenzhen, S=Guangdong, C=CN

#region 私有字段

private string _CN = string.Empty;

private string _OU = string.Empty;

private string _O = string.Empty;

private string _L = string.Empty;

private string _S = string.Empty;

private string _C = string.Empty;

#endregion

#region 公共只读属性

public string CN { get { return _CN; } }

public string OU { get { return _OU; } }

public string O { get { return _O; } }

public string L { get { return _L; } }

public string S { get { return _S; } }

public string C { get { return _C; } }

#endregion

public X509CertificateSubstring() { }

/// <summary>

/// 将Substring字符串解析成结构体

/// </summary>

/// <param name="substring">Substring字符串</param>

/// <returns>X509CertificateSubstring</returns>

public static X509CertificateSubstring Parse(string substring)

{

X509CertificateSubstring xcs = new X509CertificateSubstring();

string[] items = substring.Split(',');

foreach (var item in items)

{

if (item.Trim().StartsWith("CN="))

{

xcs._CN = item.Trim().Substring(3); continue;

}

if (item.Trim().StartsWith("OU="))

{

xcs._OU = item.Trim().Substring(3); continue;

}

if (item.Trim().StartsWith("O="))

{

xcs._O = item.Trim().Substring(2); continue;

}

if (item.Trim().StartsWith("L="))

{

xcs._L = item.Trim().Substring(2); continue;

}

if (item.Trim().StartsWith("S="))

{

xcs._S = item.Trim().Substring(2); continue;

}

if (item.Trim().StartsWith("C="))

{

xcs._C = item.Trim().Substring(2); continue;

}

}

return xcs;

}

/// <summary>

/// 将Substring字符串解析成结构体,并返回数字签名存在与否

/// </summary>

/// <param name="pyFile">读取数字签名的文件的物理路径</param>

/// <param name="xcs">X509CertificateSubstring</param>

/// <returns>bool</returns>

public static bool TryParse(string pyFile, out X509CertificateSubstring xcs)

{

bool result = true;

xcs = new X509CertificateSubstring();

string SubstringCN = string.Empty;

X509Certificate cert = null;

try

{

cert = X509Certificate2.CreateFromSignedFile(pyFile);

}

catch (System.Security.Cryptography.CryptographicException ce)

{

//没有数字签名,忽略此异常.

result = false;

}

catch (Exception ex)

{

result = false;

throw ex;

}

if (cert != null)

{

xcs = X509CertificateSubstring.Parse(cert.Subject);

}

return result;

}

}

}

调用的示例代码:

复制代码 代码如下:

/// <summary>

/// 获取数字签名的名称

/// </summary>

/// <param name="pyFile">读取数字签名的文件的物理路径</param>

/// <returns>数字签名,如果没有数字签名则返回空字符串</returns>

public static string GetX509CertificateSubstringCN(string pyFile)

{

string SubstringCN = string.Empty;

X509CertificateSubstring xcs;

if (X509CertificateSubstring.TryParse(pyFile, out xcs))

{

SubstringCN = xcs.CN;

}

return SubstringCN;

}

【解析数字签名的substring结构(获取数字签名时间)】相关文章:

c# 可选参数、命名参数

如何让C#、VB.NET实现复杂的二进制操作

基于使用递归推算指定位数的斐波那契数列值的解决方法

解决C#中取消方向键对控件焦点控制的实现方法

用C#对ADO.NET数据库完成简单操作的方法

c# 以二进制读取文本文件

深入c# GDI+简单绘图的具体操作步骤(一)

winfrom 打印表格 字符串的封装实现代码 附源码下载

C# 得到某一天的起始和截止时间的代码

C# 运用params修饰符来实现变长参数传递的方法

精品推荐
分类导航