0

プロファイル証明書ソフトウェアを開発していますが、BasicCertificateID に V2Form を使用する必要があります。

                    issuerGenName = new GeneralNames(new GeneralName(new X500Name(issuerName)));
        ASN1Integer issuerSerialNumber = new ASN1Integer(Integer.parseInt(mainWindow.getIssuerSerialNumber()));
        //IssuerSerial baseCertificateID = new IssuerSerial(issuerGenName,  issuerSerialNumber);
        ASN1EncodableVector vec = new ASN1EncodableVector();
        ASN1EncodableVector vecS = new ASN1EncodableVector();
        vecS.add(issuerGenName);
        vecS.add(issuerSerialNumber);
        ASN1Sequence seq = new DERSequence(vecS);
        IssuerSerial baseCertificateID  = IssuerSerial.getInstance(seq);
        ASN1TaggedObject tagged = new DERTaggedObject(0, baseCertificateID);
        //TODO Refazer
        vec.add(issuerGenName);
        vec.add(tagged);
        ASN1Sequence seq2 = new DERSequence(vec);

        V2Form teste = new V2Form(seq2);


        issuer = new AttCertIssuer(teste); 
        attIssuer = new AttributeCertificateIssuer(issuer);

しかし、これはうまくいきません。何が間違っていますか?

4

1 に答える 1

0

ASN1TaggedObject tagged = 新しい DERTaggedObject(0, baseCertificateID);

読むべき

ASN1TaggedObject のタグ付け = 新しい DERTaggedObject(false, 0, baseCertificateID);

オブジェクトは、明示的にタグ付けされるのではなく、暗黙的にタグ付けされることを意図しています。

もう 1 つ、BC では、シーケンスを取るコンストラクターを呼び出すのではなく、常にパターン V2Form.getInstance() を使用する必要があります。私たちはゆっくりとこれらを排除しています。主な問題は、実際には安全ではないことです。シーケンス コンストラクターは getInstance() が処理できるすべての状況を処理できないため、状況によってはクラス キャスト例外が予期せず発生する可能性があります。

BC の側では、V2Form には実際にさらにいくつかのコンストラクターが必要です。これらは、数日後にリリースされる次のベータ版 (149b09) で表示されるはずです。

よろしく、

デビッド

于 2013-03-12T23:03:04.817 に答える