最近、単純な 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());
具体的には、受信者ナンス。
問題は、最初のリクエストから属性を取得するのに苦労していることです。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);
シーケンスは有効ですが、コメントアウトされた行はすべて失敗します。何かご意見は?
ありがとう!