最近我开始研究开发一个简单的 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);
该序列是有效的,但所有被注释掉的行都失败了。有什么想法吗?
谢谢!