java将atributes放到X500 NameBuilder Bouncy Castle,生成PKCS10
我们正在尝试生成一个PKCS10CertificationRequest(Der格式中称为CSR),我们知道如何完成,我将输入该生成的代码,但是对于X500名称,我们使用的X500名称生成器非常有用,但是我们使用的样式是BCStyle,几乎包含所有需要的数据
问题是我们需要放置另一个不在bcstyle中的数据(数据在这里http://www.alvestrand.no/objectid/2.5.4.45.html和这里http://www.alvestrand.no/objectid/2.5.4.23.html中指定),但实际上看不到如何放置它,我们认为正在创建一个新的X500名称样式,但我们不知道如何做
有人能给我们解释一下怎么做吗
谢谢你的支持
PS:我们正在使用的代码
public PKCS10CertificationRequest generatedCSR(PrivateKey key, PublicKey pkey, Map<String,String> certdata, String CSRAlgorithm, String name, KeyFileManager kfm) throws OperatorCreationException, IOException
{
Log.i(LOGCERT, "iniciando generacion de CSR");
this.mensaje(LogType.MENI, "Se a iniciado la generacion de un CSR");
ContentSigner signer = new JcaContentSignerBuilder(CSRAlgorithm).build(key);
X500NameBuilder namebuilder = new X500NameBuilder(X500Name.getDefaultStyle());
namebuilder.addRDN(BCStyle.CN, certdata.get("CN"));
namebuilder.addRDN(BCStyle.OU, certdata.get("OU"));
namebuilder.addRDN(BCStyle.O, certdata.get("O"));
namebuilder.addRDN(BCStyle.L, certdata.get("L"));
namebuilder.addRDN(BCStyle.ST, certdata.get("ST"));
namebuilder.addRDN(BCStyle.C, certdata.get("C"));
namebuilder.addRDN(BCStyle.EmailAddress, certdata.get("EMAIL"));
PKCS10CertificationRequestBuilder csrbuilder = new JcaPKCS10CertificationRequestBuilder(namebuilder.build(),pkey);
PKCS10CertificationRequest csr = csrbuilder.build(signer);
if(kfm.salvarLlave(csr.getEncoded(), KeyFileManager.CSRFILE, name)){
Log.i(LOGCERT, "CSR Almacenado");
return csr;
}
else{
Log.i(LOGCERT, "CSR no almacenado");
return csr;
}
}
# 1 楼答案
使用此生成器:
像这样:
然后
但是如果您需要添加自定义属性,那么您需要在我发布的构建器中为构建器提供一个
ASN1ObjectIdentifier
,因为BCStyle._
参数只是ASN1ObjectIdentifier
比如说,
# 2 楼答案
我们找到了问题的解决方案我们唯一需要做的就是创建ASN1ObjectIdentifier(“
");, to put the missing data to the CSR
这是正确的密码