Android - преобразование строки сертификата pkcs12 в объект сертификата x509 для хранилища ключей bks

Я пишу приложение для Android, которое требует сертификации SSL для определенных веб-запросов. В отличие от вариантов, которые я вижу в Интернете для создания файлов хранилища ключей с использованием файла сертификата, мне нужно сделать первоначальный веб-запрос, который возвращает сертификат в виде строки в ответе json.

Данные JSON отформатированы следующим образом ... (примечание: следующий сертификат сокращен, "..." не существует в фактическом ответе)

"result":{
    "pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},

Я декодирую это значение с помощью Base64.deocode, чтобы сохраните его как byte []

ssl.setPkcs12( Base64.decode( jsonObject.optString( "pkcs12" ) ) );

Затем я пытаюсь создать X509Certificate, используя byte []

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]".

. Я потратил много времени, пытаясь исправить то, что кажется простой проблемой, но безуспешно. Любая помощь была бы потрясающей!

5
задан calebisstupid 18 October 2011 в 19:01
поделиться