c# - 如何使用充气城堡在 CSR 中添加自定义 OID 和值

标签 c# bouncycastle csr pkcs11interop pkcs#10

我正在尝试在 CSR 中添加自定义 OID,如下所示

string subject = "CN=Name,O=Org,C=IN,ST=KA,OU=OrgUn,PostalCode=560103";
X509Name sub = new X509Name(subject);
var oidList = sub.GetOidList();
var valueList = sub.GetValueList();

DerObjectIdentifier Oid1 = new derObjectIdentifier("1.53.4.64");//here 1.53.4.64 is custom OID
oidList.Add(Oid1);
valueList.Add("Some Value");

DerObjectIdentifier Oid2 = new DerObjectIdentifier("1.53.4.65");
oidList.Add(derObjectIdentifier2);
valueList.Add("Some value");

X509Name subjectFinal = new X509Name(oidList, valueList);

Pkcs10CertificationRequestDelaySigned pkcs10 = new Pkcs10CertificationRequestDelaySigned(signatureAlgorihtm, subjectFinal, publicKeyParameters, null);

一切都编译并工作正常,但当我解码并检查 CSR 时,ASN.1 信息中自定义 Oid 名称的值从 1.53.4.65 更改为其他值 2.13.4.64

这是添加自定义 OID 值的正确方法

ASN.1 序列

SET {
 16  11:         SEQUENCE {
 18   3:           OBJECT IDENTIFIER commonName (2 5 4 3)
 23   4:           UTF8String 'Name'
       :           }
       :         }
 29  12:       SET {
 31  10:         SEQUENCE {
 33   3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
 38   3:           UTF8String 'Org'
       :           }
       :         }
 43  11:       SET {
 45   9:         SEQUENCE {
 47   3:           OBJECT IDENTIFIER countryName (2 5 4 6)
 52   2:           PrintableString 'IN'
       :           }
       :         }
 56  11:       SET {
 58   9:         SEQUENCE {
 60   3:           OBJECT IDENTIFIER stateOrProvinceName (2 5 4 8)
 65   2:           UTF8String 'KA'
       :           }
       :         }
 69  14:       SET {
 71  12:         SEQUENCE {
 73   3:           OBJECT IDENTIFIER organizationalUnitName (2 5 4 11)
 78   5:           UTF8String 'OrgUn'
       :           }
       :         }
 85  15:       SET {
 87  13:         SEQUENCE {
 89   3:           OBJECT IDENTIFIER postalCode (2 5 4 17)
 94   6:           UTF8String '560103'
       :           }
       :         }
102  21:       SET {
104  19:         SEQUENCE {
106   3:           OBJECT IDENTIFIER '2 13 4 64'
111  12:           UTF8String 'Some value 1'
       :           }
       :         }
125  21:       SET {
127  19:         SEQUENCE {
129   3:           OBJECT IDENTIFIER '2 13 4 65'
134  12:           UTF8String 'Some value 2'
       :           }
       :         }

最佳答案

添加自定义 OID 属性的代码是正确的,但我们不能使用任何随机数,因为 OID 必须注册为 ex 1.3.6.1.4.1.XXXX.X.X 或者必须具有某种格式。

关于c# - 如何使用充气城堡在 CSR 中添加自定义 OID 和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47986975/

相关文章:

c# - 除了网站链接,是否有类似 folderBrowserDialog 的控件?

java - 使用 JCE 的 AES/EAX 加密 - Mac 在 EAX 中检查失败

java - OpenSSL Hmac 和 BouncyCaSTLe Hmac 不同

java - 通过解析 PKCS10CertificationRequest 读取请求的扩展

java - 以编程方式在 java 中生成 CSR 时添加 SAN 名称

c# - 在浏览器中启动应用程序

c# - 使用 WPF 客户端和 Active Directory ADFS 对 Cloud NodeJS 后端进行身份验证

java - RIJNDAEL 256 CBC加密与Java中的IV

windows - 在 certreq -new 策略 inf 文件中将 KeySpec 定义为 "both"

c# - C# 中包含 1000 条记录的二进制文件格式