Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
X509Certificate - где найти ссылку на корневой сертификат ? вроде все перерыл Криптопро CSP показывает. подскажите плиз
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
похоже нужно bouncycastle в проект цеплять, неужели средствами Java нельзя? отладчиком то я все вижу
org.bouncycastle.asn1.x509.AuthorityInformationAccess
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,977 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 708 раз в 669 постах
|
Вариант jcp примерно такой: Код:
// Читаем сертификат.
X509Certificate certificate = (X509Certificate) CertificateFactory.getInstance("X.509")
.generateCertificate(new FileInputStream("cert.cer"));
Asn1BerDecodeBuffer buffer = new Asn1BerDecodeBuffer(certificate.getEncoded());
// Декодируем.
Certificate cproCert = new Certificate();
cproCert.decode(buffer);
// Получаем список расширений.
Extensions extensions = cproCert.tbsCertificate.extensions;
// Искомое расширение.
int[] authInfoId = ALL_CertificateExtensionsValues.id_pe_authorityInfoAccess;
// Указатель на сертификат издателя.
int[] caIssuers = ALL_PKIX1Explicit88Values.id_ad_caIssuers;
for (int i = 0; i < extensions.elements.length; i++) {
Extension extension = extensions.elements[i];
int[] asn1ObjAuthId = extension.extnID.value;
if (Arrays.equals(asn1ObjAuthId, authInfoId)) {
Asn1OctetString authInfoVal = extension.extnValue;
Asn1BerDecodeBuffer authInfoBuf = new Asn1BerDecodeBuffer(authInfoVal.value);
// Декодируем расширение.
AuthorityInfoAccessSyntax authInfoAccess = new AuthorityInfoAccessSyntax();
authInfoAccess.decode(authInfoBuf);
AccessDescription[] accessDescriptions = authInfoAccess.elements;
// Среди дескрипторов ищем ссылки на сертификаты издателя.
for (int j = 0; j < accessDescriptions.length; j++) {
AccessDescription accessDescription = accessDescriptions[j];
int[] accessMethod = accessDescription.accessMethod.value;
if (Arrays.equals(caIssuers, accessMethod)) {
// Декодируем ссылку и выводим ее.
Asn1IA5String val =
(Asn1IA5String) accessDescription.accessLocation.getElement();
System.out.println(val.toString());
}
}
}
}
Или поищите примеры с bc или sun. Отредактировано пользователем 29 ноября 2012 г. 3:20:39(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close