如何在Java的Bouncy Castle中使用V2Form?

如何在Java的Bouncy Castle中使用V2Form?,java,security,certificate,bouncycastle,Java,Security,Certificate,Bouncycastle,我正在开发一个配置文件证书软件,需要使用V2Form作为BasicCertificateID issuerGenName = new GeneralNames(new GeneralName(new X500Name(issuerName))); ASN1Integer issuerSerialNumber = new ASN1Integer(Integer.parseInt(mainWindow.getIssuerSerialNumber

我正在开发一个配置文件证书软件,需要使用V2Form作为BasicCertificateID

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

但这行不通,我做错了什么?

ASN1TaggedObject taged=new-DERTaggedObject(0,baseCertificateID)

应该读


ASN1TaggedObject taged=新的DERTaggedObject(false,0,baseCertificateID)

对象是隐式的,而不是显式标记的

还有一件事,在BC中,您应该始终使用模式V2Form.getInstance(),而不是调用接受序列的构造函数。我们正在慢慢地消除这些问题,主要的问题是它并不真正安全,在某些情况下,您可能会意外地得到类强制转换异常,因为序列构造函数无法处理getInstance()可以处理的所有情况

对于BC来说,V2Form确实需要更多的构造函数,它们应该在接下来的几天内的下一个测试版(149b09)中出现

问候,

大卫