Не может быть парс Пресертификат из журнала прозрачности сертификатов - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь проанализировать дополнительные данные сертификата из журнала прозрачности сертификата. Это пресертификат Я пытаюсь разобрать его с кодом:

 String respons = restTemplate.getForObject("https://ct.googleapis.com/logs/argon2020/ct/v1/get-entries?start=253052711&end=253052711", String.class);
 JSONObject responseJson = (JSONObject)JSONValue.parse(response);
 List jSONArray = List<JSONObject> = responseJson.get("entries") ;
 byte[] extraData = Base64.decodeBase64((String)((JSONObject)jSONArray.get(0)).get("extra_data"));
 int length = extraData[2] + extraData[1] * 256 + extraData[0] * 65536 + 3;
 certFactory.generateCertificate(ByteArrayInputStream(extraData.copyOfRange(3, length)));

Но выдает ошибку

java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Incomplete BER/DER data
at java.base/sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:110)
at java.base/java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:355)
at com.segasec.certlogreader.service.LogReader.parsePrecertChainEntry(LogReader.kt:79)
at com.segasec.certlogreader.service.LogReader.parseCertificate(LogReader.kt:65)
at com.segasec.certlogreader.service.LogReader.readLogs(LogReader.kt:44)
at com.segasec.certlogreader.service.LogListFetcher.work(LogListFetcher.kt:19)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:305)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: Incomplete BER/DER data
at java.base/sun.security.provider.X509Factory.readBERInternal(X509Factory.java:759)
at java.base/sun.security.provider.X509Factory.readOneBlock(X509Factory.java:552)
at java.base/sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:96)
... 18 more

Для большинства пресертификатов этот код работает нормально.

Я нашел другой проект , который решает ту же проблему в примере, он работает нормально. Я не очень знаком с эликсиром, но не могу найти различий в решении. Может кто-нибудь объяснить, почему я получаю эту ошибку? спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...