Добрый день.
Необходимо сформировать запрос на сертификат электронной подписи. Использую КриптоПро CSP 4.0, КриптоПро JCP 2.0 с модулем JCSP.
Имеется пример готового запроса (что мне нужно получить) в ASN.1 редакторе.
![](/forum2/Themes/soclean/icon_file.gif)
Chto nuzhno.PNG
(90kb) загружен 49 раз(а).Я смогла получить запрос следующего вида
![](/forum2/Themes/soclean/icon_file.gif)
Chto poluchila.PNG
(82kb) загружен 36 раз(а).Код:
//Генерация ключей KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("GOST3410EL", "JCSP");
KeyPair pair = keyGenerator.generateKeyPair();
// Формирование запроса на сертификатGostCertificateRequest request = new GostCertificateRequest("JCSP");
// Способ использования ключа request.setKeyUsage(GostCertificateRequest.DIGITAL_SIGNATURE |
GostCertificateRequest.NON_REPUDIATION |
GostCertificateRequest.KEY_ENCIPHERMENT |
GostCertificateRequest.DATA_ENCIPHERMENT);
// расширение 2.5.29.19Extension ext = new Extension();
int[] extOid = {2, 5, 29, 19};
ext.extnID = new Asn1ObjectIdentifier(extOid);
ext.critical = new Asn1Boolean(false);
ext.extnValue = new Asn1OctetString();//получается пустая строка
request.addExtension(ext);
//расширение 1.2.643.3.123.3.1Extension ext1 = new Extension();
int[] extOid1 = {1,2,643,3,123,3,1};
ext1.extnID=new Asn1ObjectIdentifier(extOid1);
ext1.critical = new Asn1Boolean(false);
ext1.extnValue = new Asn1OctetString("V2QL0020sИванов".getBytes()); // записываются байты вместо UTF8String
request.addExtension(ext1);
//расширение 1.2.643.3.123.3.4 /* Extension ext2 = new Extension();
int[] extOid2 = {1,2,643,3,123,3,4};
int[] extOid3 = {1,2,643,3,123,5,4};
ext2.extnID=new Asn1ObjectIdentifier(extOid2);
ext2.critical = new Asn1Boolean(false);
ext2.extnValue = ?? не знаю что передать, по идее Asn1ObjectIdentifier(extOid3)
request.addExtension(ext2); */
// определение имени субъекта для создания запроса и подпись сертификата на закрытом ключеrequest.setPublicKeyInfo(pair.getPublic());
request.setSubjectInfo("O=ООО Иванов, C=RU, CN=Иванов Иван Иванович, OU=Тестовое подразделение, T=Тестировщик");
request.encodeAndSign(pair.getPrivate(), JCP.GOST_EL_SIGN_NAME);
Вопрос: как добавить в запрос расширения в требуемом виде?