2015-11-19 7 views
0

Je travaille avec la bibliothèque OpenAS2Server-1.3.3. Là envoyer un seul document fonctionne très bien ..Signe MimeBodyPart qui a des pièces jointes (avec Bouncycastle)

Maintenant je voulais le modifier pour envoyer un document avec des pièces jointes, comme nous le faisons avec des courriels. Dans ce scénario, tous les decription fonctionnent bien, mais la vérification de signature a échoué (MIC ne correspond pas)

Voilà comment je suis Tring d'envoyer des pièces jointes avec les principaux doc: Créer un MimeMultipart et ajouter deux MimeBodyPart en elle. (Document principal et la pièce jointe) Enfin envelopper le MimeMultipart dans un MimeBodyPart (je ne suis pas sûr que ce soit la façon de le faire, mais de toute façon bouncycastle n'ont pas l'API pour signer MimeMultipart)

Quelqu'un pourrait-il me dire la bonne façon signer un message avec pièce jointe?

 MimeBodyPart mainBody = new MimeBodyPart(); 
     mainBody.setDataHandler(new DataHandler(byteSource)); 

     MimeBodyPart attachemt1 = new MimeBodyPart(); 
     attachemt1.attachFile("/home/user/Desktop/Test1.txt"); 

     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(mainBody); 
     multipart.addBodyPart(attachemt1); 

     MimeBodyPart body = new MimeBodyPart(); 
     body.setContent(multipart); 
     body.setHeader("Content-Type", multipart.getContentType()); 
     logger.info("--------------Attaching the file... Done"); 

Répondre

0

J'ai été en mesure d'obtenir le problème et la solution. Je le mets juste ici pour quelqu'un d'autre qui va essayer de faire ce genre de travail.

Je viens de vider les données utilisées pour le calcul de MIC, à la fois côté émission et côté réception. Ainsi, l'image ci-jointe montrera clairement le problème.

J'ai donc ajouté ces champs d'en-tête manuellement pour toutes les pièces jointes et le document principal, du côté de l'envoi, comme ci-dessous.

mainBody.setHeader("Content-Type", "application/EDI-X12"); 
mainBody.setHeader("Content-Transfer-Encoding", "7bit"); 

Maintenant, il a résolu et "MIC est apparié".

LHS: sender, RHS: receiver