1

BouncyCastle で OCSP に関する情報を見つけるのに苦労しています。オンラインで見つけた例はせいぜいあいまいなので、ここで質問しようと思いました。

ここに私の問題があります: BouncyCastle for .NET で OCSP を実行しようとしていますが、OCSP 応答に問題があります。特に、応答をシリアル化して送信した後、応答を回復する方法がわかりません。受信者に。

問題は、私が応答自体を間違った方法で作成していることにある可能性が非常に高いです。なぜなら、私が行う方法は、オンラインで見つかった断片と私の側の純粋な「直感」から一緒に石畳になっているからです。応答を作成する方法は次のとおりです。

        X509CrlEntry crlentry = Repository.CRL.GetRevokedCertificate(certToCheck.SerialNumber);
        BasicOcspRespGenerator basicRespGen = new BasicOcspRespGenerator(Repository.Data.BouncyCastlePublicKey);
        if (crlentry == null) {
            //still valid
            basicRespGen.AddResponse(certToCheck, CertificateStatus.Good);
        } else {
            //revoked
            DerGeneralizedTime dt = new DerGeneralizedTime(crlentry.RevocationDate);
            RevokedInfo rinfo = new RevokedInfo(dt, new CrlReason(CrlReason.CessationOfOperation));
            RevokedStatus rstatus = new RevokedStatus(rinfo);
            basicRespGen.AddResponse(certToCheck, rstatus);
        }
        BasicOcspResp response = basicRespGen.Generate("SHA512withRSA", Repository.Data.BouncyCastlePrivateKey, new X509Certificate[] { Repository.Data.MyCertificate }, DateTime.Now);
        byte[] responseBytes = response.GetEncoded;
    //I then send the bytes back to the client who made the request

問題は、シリアル化された byte[] フォームから Response を取得する方法がわからないことです...それを取得するためのファクトリ/パーサーまたはコンストラクターがないようです。byte[] をパラメーターとして受け入れる OcspResp コンストラクターがありますが、OcspResp と BasicOcspResp は別のものであるため、例外がスローされます。

誰でも私を助けることができますか?私は応答自体を間違って構築していますか、それとも逆シリアル化する方法がわからないだけですか?? ヒントはありますか?

よろしくお願いします Master_T

4

1 に答える 1