web-dev-qa-db-ja.com

byte []からX509Certificateを生成しますか?

Byte []からJava.security.cert.X509Certificateを生成する可能性はありますか?

47
Alex

承知しました。

証明書オブジェクトは、 CertificateFactory のインスタンスによって作成できます。特に、X509証明書を作成するように構成されたものです。これは次のように作成できます。

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");

次に、証明書のバイトを含むInputStreamに渡す必要があります。これは、バイト配列を ByteArrayInputStream でラップすることで実現できます。

InputStream in = new ByteArrayInputStream(bytes);
X509Certificate cert = (X509Certificate)certFactory.generateCertificate(in);
71
Andrzej Doyle

次のようなことができます:

X509Certificate certificate = signature.getKeyInfo().getX509Datas().get(0).getX509Certificates().get(0);

String lexicalXSDBase64Binary = certificate.getValue();
byte[] decoded = DatatypeConverter.parseBase64Binary(lexicalXSDBase64Binary);


CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
Certificate cert = certFactory.generateCertificate(new ByteArrayInputStream(decoded));
0
hal9000