web-dev-qa-db-fra.com

Générer X509Certificate à partir d'octet []?

Est-il possible de générer un Java.security.cert.X509Certificate à partir d'un octet []?

44
Alex

Sûr.

Les objets de certificat peuvent être créés par une instance de CertificateFactory - en particulier, configurée pour créer des certificats X509. Cela peut être créé comme suit:

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

Ensuite, vous devez lui transmettre un InputStream contenant les octets du certificat. Cela peut être réalisé en encapsulant votre tableau d'octets dans un ByteArrayInputStream :

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

Vous pouvez faire quelque chose comme:

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