2013-03-12 114 views
0

我正在開發配置文件證書軟件,並且需要使用V2Form for BasicCertificateID。如何在Bouncy Castle,Java中使用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); 

但這不行,我做錯了什麼?

回答

0

ASN1TaggedObject tagged = new DERTaggedObject(0,baseCertificateID);

應讀

ASN1TaggedObject標記=新DERTaggedObject(假,0,那麼baseCertificateID);

該對象的含義是隱含的,沒有明確標記。

另一件事,在BC你應該總是使用模式V2Form.getInstance()而不是調用一個序列的構造函數。我們正在慢慢將這些標記出來,主要的問題是它不是很安全,在某些情況下,您可能意外地得到類轉換異常,因爲序列構造函數無法處理getInstance()可以處理的所有情況。

對於BC來說,V2Form確實需要更多的構造函數,這些應該會在接下來的幾天出現在下一個測試版(149b09)中。

問候,

大衛

相關問題