2013-03-12 7 views
0

Я разрабатываю программное обеспечение сертификата профиля, и вам необходимо использовать V2Form для BasicCertificateID.Как использовать V2Form в Bouncy Castle, Java?

    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) в ближайшие пару дней.

С уважением,

Дэвид

Смежные вопросы