2015-11-19 2 views
0

Я работаю с библиотекой OpenAS2Server-1.3.3. Там отправка одного документа работает нормально ..Подпишите MimeBodyPart, у которого есть вложения в нем (с Bouncycastle)

Теперь я хотел изменить его, чтобы отправить документ с прикрепленными файлами, например, с электронными письмами. В этом случае все Decription работают хорошо, но проверка подписи не удалась (MIC не соответствует)

Это, как я Тринг отправлять вложения с основным документом: Создать MimeMultipart и добавить два MimeBodyPart в него. (Основной документ и приложение) Наконец обернуть MimeMultipart в MimeBodyPart (я не уверен, что это способ сделать это, но в любом случае BouncyCastle не имеют API подписать MimeMultipart)

Может кто-нибудь сказать мне правильный путь подписать сообщение с приложением?

 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"); 

ответ

0

У меня возникла проблема и решение. Я просто помещаю его сюда для всех, кто попытается сделать такую ​​работу.

Я просто сбрасываю данные, которые используются для расчета MIC, как на стороне отправки, так и на стороне приема. Таким образом, прилагаемое изображение ясно покажет проблему.

Итак, я добавил эти поля заголовка вручную для всех вложений и основного документа на стороне отправки, как показано ниже.

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

Теперь он решил и «MIC соответствует».

LHS: sender, RHS: receiver

Смежные вопросы