Я пишу приложение для Android, которое требует SSL-сертификации для определенных веб-запросов.В отличие от параметров, которые я вижу в Интернете о создании файлов хранилища ключей с использованием файла сертификата, мне нужно сделать первоначальный веб-запрос, который возвращает сертификат в виде строки в ответе json.
Данные JSON форматируются следующим образом... (примечание: следующий сертификат укорочен, "..." не существует в реальном ответе)
"result":{
"pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},
Я декодирую это значение, используя Base64.deocode, чтобы сохранить его как байт[]
ssl.setPkcs12( Base64.decode( jsonObject.optString( "pkcs12" ) ) );
Затем я пытаюсь создать сертификат X509, используя байт []
CertificateFactory certFactory = CertificateFactory.getInstance( "X.509" );
InputStream in = new ByteArrayInputStream( ssl.getPkcs12() );
X509Certificate cert = (X509Certificate) certFactory.generateCertificate( in );
Мой код не работает в методе generateCertificate () с
"java.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 Sequence: mandatory value is missing at [4]".
Я потратил много времени, пытаясь исправить то, что кажется простой проблемой, но безуспешно.Любая помощь будет потрясающей!