Bonjour à tous,
Je suis actuellement en train de développer un traitement d'envoi/Réception de mail signé/Chiffré par SSL.
J'utilise l'API Bouncy Caste qui, cela dit en passant est plutôt bien complète.
Dans ma partie de réception de message, je dois archiver des mails signé/chiffré d'une boite mail (Protocole IMAP) et extraire les pièces jointes éventuelle.
Pour cela, j'ouvre le mail signé (préalablement exporté au format eml)
je vérifie s'il est signé et ou s'il contient une pièce jointe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 String nomFic = 'monMessage.eml'; MimeMessage mess = new MimeMessage(mailSession, new FileInputStream(nomFic));
Si le mail est signé, je dois désencapsuler le contenu signé du message pour pouvoir accéder aux éventuelles pièces jointes.
PS : Désolé pour l'indentation un peu foireuse mais ca marche pas...
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
38
39
40
41
42
43
44
45 // Il y a des pieces jointes if (mimeType.indexOf("multipart") > -1) { MimeMultipart mp = (MimeMultipart) mess.getContent(); // on vérifie si le mail est signé. if (mimeType.indexOf("signed") > -1) { SMIMESignedParser sParser = new SMIMESignedParser((MimeMultipart) mess.getContent()); mp = (MimeMultipart) sParser.getContentWithSignature(); } // extraction des pièces jointes int nbrPj = mp.getCount(); // Nombre de PJ for (int j = 0; j < nbrPj; j++) { MimeBodyPart part = (MimeBodyPart) mp.getBodyPart(j); String disposition = part.getDisposition(); if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT) || (disposition .equals(Part.INLINE))))) { File save = new File("C:\\XXX\\OUTPUT_PJ\\" + part.getFileName()); FileWriter ecriture = new FileWriter(save); InputStreamReader lecture = new InputStreamReader(part .getInputStream()); int flux; while ((flux = lecture.read()) != -1) { ecriture.write(flux); } lecture.close(); ecriture.close(); } } }
Mon problème est que justement je ne capte pas comment désencapsuler ce contenu signé.
Si je ne le fais pas, mon extraction de pièce jointe extrait le clé public *.p7s et zappe du coup ma vrai pièce jointe.
J'en appelle à votre aide légendaire pour me sortir de la panade...
Merci d'avance
Partager