C#创建一个PKCS#10(p10)的证书请求文件
2013-09-24 17:44
441 查看
CX509PrivateKey pkey=new CX509PrivateKeyClass();
CX509CertificateRequestPkcs10 req=new CX509CertificateRequestPkcs10Class();
try
{
var template =
session.QueryOver<CaTemplate>().Where(o => o.Name == templatename).Take(1).SingleOrDefault();
//加密服务提供者,这里是默认的
var cspName = "Microsoft RSA SChannel Cryptographic Provider";
pkey.ProviderName = cspName;
//提供者类型,与加密服务提供者是一一对应的
pkey.ProviderType=X509ProviderType.XCN_PROV_RSA_SCHANNEL;
//私钥的密钥长度
pkey.Length = (int) template.KeyLength;
pkey.KeySpec = X509KeySpec.XCN_AT_KEYEXCHANGE;
pkey.MachineContext = false;
pkey.ContainerNamePrefix = "IDRIX";
//创建私钥
pkey.ExportPolicy |= X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_EXPORT_FLAG | X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG;
pkey.Create();
}
catch (Exception ex)
{
throw;
}
try
{
req.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextMachine, pkey,"");
}
catch (Exception)
{
throw;
}
req.SmimeCapabilities = true;
string dn = "CN={0},E={1},O={2},OU={3},L={4},DC={5},C={6}";
dn = string.Format(dn, name, email, company, department, city, province, country);
req.Subject=new CX500DistinguishedName();
req.Subject.Encode(dn,X500NameFlags.XCN_CERT_X500_NAME_STR);
try
{
req.Encode();
}
catch (Exception)
{
throw;
}
string reqBase64 = req.get_RawData(EncodingType.XCN_CRYPT_STRING_BASE64REQUESTHEADER);
pkey.Close();
return reqBase64;
CX509CertificateRequestPkcs10 req=new CX509CertificateRequestPkcs10Class();
try
{
var template =
session.QueryOver<CaTemplate>().Where(o => o.Name == templatename).Take(1).SingleOrDefault();
//加密服务提供者,这里是默认的
var cspName = "Microsoft RSA SChannel Cryptographic Provider";
pkey.ProviderName = cspName;
//提供者类型,与加密服务提供者是一一对应的
pkey.ProviderType=X509ProviderType.XCN_PROV_RSA_SCHANNEL;
//私钥的密钥长度
pkey.Length = (int) template.KeyLength;
pkey.KeySpec = X509KeySpec.XCN_AT_KEYEXCHANGE;
pkey.MachineContext = false;
pkey.ContainerNamePrefix = "IDRIX";
//创建私钥
pkey.ExportPolicy |= X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_EXPORT_FLAG | X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG;
pkey.Create();
}
catch (Exception ex)
{
throw;
}
try
{
req.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextMachine, pkey,"");
}
catch (Exception)
{
throw;
}
req.SmimeCapabilities = true;
string dn = "CN={0},E={1},O={2},OU={3},L={4},DC={5},C={6}";
dn = string.Format(dn, name, email, company, department, city, province, country);
req.Subject=new CX500DistinguishedName();
req.Subject.Encode(dn,X500NameFlags.XCN_CERT_X500_NAME_STR);
try
{
req.Encode();
}
catch (Exception)
{
throw;
}
string reqBase64 = req.get_RawData(EncodingType.XCN_CRYPT_STRING_BASE64REQUESTHEADER);
pkey.Close();
return reqBase64;
相关文章推荐
- c# 如何获取项目的根目录
- c#动画设计初探 循环切换图片达到动画效果
- C# WinForm RDLC报表不预览直接连续打印
- C#的数据类型整数类型
- 深入简出 AutoCAD.NET二次开发 简摘
- C#中的委托
- C#判断输入的字符十分偶为小写,大写,或数字。
- c# 类中的静态方法
- C#读取execl到datatable,设置execl单元格颜色
- c#的DateTime.Now函数详解
- C#的switch与二维数组.....
- c# in deep 之委托
- C#中使用全局Hotkey
- C#正则表达式查找匹配循环替换内容
- c#调用dll详解
- C#注释标签
- C#中HashTable的用法
- 利用dynamic类型对C#泛型参数运算
- C# winfrom利用多线程实现滚动条效果
- CLR via C#(第3版).pdf 清晰版.带自己整的 目录