0

最近我开始研究开发一个简单的 CA/SCEP 服务器。虽然 CA 不是什么大问题(CA 也不是什么大问题),但 SCEP 服务器让我在一个特定的地方陷入了一个循环。

到目前为止,我正确响应了“GetCACert”和“GetCACaps”请求。现在我正在尝试响应“PKIOperation”请求。我实际上能够根据请求创建证书,签署它以及所有好东西。问题是我必须在响应中添加一些“属性”......

gen1.addSigner(this.rootKeyPair.getPrivate(), this.getRootCertificate(), CMSSignedGenerator.DIGEST_SHA1, new AttributeTable(attributes), null);
CMSSignedData finalData = gen1.generate(msg, true, new BouncyCastleProvider());

特别是收件人Nonce。

问题是我正在努力从初始请求中获取属性。由于 reciepientNonce 应该是 senderNonce 的副本,因此我一直在尝试从 PKIOperation 消息中提取该特定属性。到目前为止,这是我的代码...

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);

该序列是有效的,但所有被注释掉的行都失败了。有什么想法吗?

谢谢!

4

1 回答 1

2

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

于 2010-09-14T17:43:49.923 回答