我有 WinXP 客户端。我的目标是使用 C# 中的 XEnroll 库创建证书请求。我找到了工作代码,因此客户端可以创建请求,但我得到的证书没有密钥和数据加密。我看到,可以使用 CERTENROLLLib 创建这样的请求,但我必须使用 XEnroll。
那么,我怎么能做这样的事情,使用 XEnroll:
// Key Usage Extension
objExtensionKeyUsage.InitializeEncode(
X509KeyUsageFlags.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE |
X509KeyUsageFlags.XCN_CERT_NON_REPUDIATION_KEY_USAGE |
X509KeyUsageFlags.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE |
X509KeyUsageFlags.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE
);
objPkcs10.X509Extensions.Add((CX509Extension)objExtensionKeyUsage);
这是我的代码:
string distNAme = "CN=" +
userName +
",OU=UserUnit" +
",O=CRYPTO-PRO" +
",L=MOSCOW" +
",S=WA" +
",C=RU";
string usage = "1.3.6.1.5.5.7.3.2";
var enroll = new CEnrollClass();
enroll.ProviderType = 75;
enroll.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
string request = enroll.createPKCS10(distNAme, usage);
var dialog = new System.Windows.Forms.SaveFileDialog();
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
System.IO.File.WriteAllText(dialog.FileName, request);
}
谢谢。