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)

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));
je vérifie s'il est signé et ou s'il contient une pièce jointe

Si le mail est signé, je dois désencapsuler le contenu signé du message pour pouvoir accéder aux éventuelles pièces jointes.

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();
	}
 
}
 
}
PS : Désolé pour l'indentation un peu foireuse mais ca marche pas...

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