【发布时间】:2021-07-05 15:30:53
【问题描述】:
我使用 Bouncy Castle 创建了一个 CSR,并在 HSM(EC 密钥)上签名。它工作正常!但在 CSR 内容中(以及后来的证书中)没有 EC 曲线名称。相反,有曲线的参数。一些客户对此有问题,例如:Phyton。在屏幕截图中,您可以看到 OpenSSL 是如何做到的。如何强制 Bouncy Castle 在 CSR 中写入曲线名称?
将公钥添加到 CSR 的代码:
IList oids = new ArrayList();
IList values = new ArrayList();
..........
SubjectKeyIdentifier subjectKeyIdentifier = new SubjectKeyIdentifierStructure(publicKey);
X509Extension ski = new X509Extension(true, new DerOctetString(subjectKeyIdentifier));
oids.Add(X509Extensions.SubjectKeyIdentifier);
values.Add(ski);
AttributePkcs attribute = new AttributePkcs(PkcsObjectIdentifiers.Pkcs9AtExtensionRequest,
new DerSet(new X509Extensions(oids, values)));
//End Extensions
// SIGN on HSM
Pkcs10CertificationRequestDelaySigned csr = new Pkcs10CertificationRequestDelaySigned(
signatureAlgorithmStr,
subject,
publicKey,
new DerSet(attribute)
);
......
屏幕截图:使用 Bouncy Castle 和 OpenSSL 的 CSR
【问题讨论】:
标签: c# bouncycastle