je cherche à implémenter une méthode qui gènère un PKCS12 à partir des fichiers suivant.
la clé privé _.key
le certificat publique _.cer
et en option le certificat de l'autorité de certification _.cer
en spécifiant le mot de passe du PKCS12
j'utilse le code suivant pour le moment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 try{ KeyStore ks = KeyStore.getInstance("PKCS12"); CertificatX509 cert=new CertificatX509(fileMyCert); PrivateKey pk=this.loadPrivateKey(new File(fileMyKey)); ks.load(null, null); Certificate[] chain = new Certificate[] {cert.getX_cert()}; ks.setKeyEntry("0", pk, pkcs12Pass.toCharArray(), chain); ks.store(new FileOutputStream(outFilePKCS12),pkcs12Pass.toCharArray()); }catch (Exception e){ e.printStackTrace(); } le problème c'est que la méthode: private PrivateKey loadPrivateKey(File privateKeyFile) throws Exception me génère des erreurs. voila le corps de la méthode: private PrivateKey loadPrivateKey(File privateKeyFile) throws Exception { FileInputStream privateKeyInputStream = new FileInputStream(privateKeyFile); byte[] keyBytes = new byte[(int) privateKeyFile.length()]; privateKeyInputStream.read(keyBytes); privateKeyInputStream.close(); try { // Load the private key System.out.println("mounting..."); PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA","BC"); PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec); System.out.println("Loaded " + privateKey.getAlgorithm() + " " + privateKey.getFormat() + " private key."); return privateKey; } catch (Exception e) { e.printStackTrace(); } return null; }
Partager