来自SCEP请求的Java PKI头

来自SCEP请求的Java PKI头,java,certificate,pki,Java,Certificate,Pki,最近,我开始考虑开发一个简单的CA/SCEP服务器。虽然CA不是什么大问题(也不是什么大问题),但SCEP服务器在某个特定的位置让我有点犹豫 到目前为止,我正确地响应了“GetCACert”和“GetCACaps”请求。现在我正在尝试响应“PKI操作”请求。事实上,我可以创建一个带有请求的证书,签署它和所有好东西。问题是我必须在响应中添加一些“属性” gen1.addSigner(this.rootKeyPair.getPrivate(), this.getRootCertificate(),

最近,我开始考虑开发一个简单的CA/SCEP服务器。虽然CA不是什么大问题(也不是什么大问题),但SCEP服务器在某个特定的位置让我有点犹豫

到目前为止,我正确地响应了“GetCACert”和“GetCACaps”请求。现在我正在尝试响应“PKI操作”请求。事实上,我可以创建一个带有请求的证书,签署它和所有好东西。问题是我必须在响应中添加一些“属性”

gen1.addSigner(this.rootKeyPair.getPrivate(), this.getRootCertificate(), CMSSignedGenerator.DIGEST_SHA1, new AttributeTable(attributes), null);
CMSSignedData finalData = gen1.generate(msg, true, new BouncyCastleProvider());
具体地说是接受方

问题是我正努力从初始请求中获取属性。由于ReceipItemNonce应该是SenderOnce的副本,所以我一直在尝试从PKI操作消息中提取该特定属性。这是我到目前为止的代码

Base64 base64 = new Base64();
ASN1Object object = ASN1Object.fromByteArray(base64.decode(request));
//The "request" is the "message" from scep 
ASN1Sequence sequence = ASN1Sequence.getInstance(object);
//   PKIMessage.getInstance(sequence);
//   PKIHeader.getInstance(sequence);
//   PKIConfirmContent.getInstance(sequence);
//   PKIBody.getInstance(sequence);
//   PKIStatusInfo.getInstance(sequence);
//   PKIFreeText.getInstance(sequence);
//   PKIFailureInfo.getInstance(sequence);
//   PKIStatus.getInstance(sequence);
序列有效,但所有注释掉的行都失败。有什么想法吗

谢谢

找到了。有一个名为“PKIMessage”的类,它为您执行所有解析