N.B. I'm running this on Karaf 4.3.3 On Thu, Feb 3, 2022 at 3:09 PM Andrei Petru Mura <mapand...@gmail.com> wrote:
> Hi all, > > I upgraded bouncycastle to 1.69 in karaf. When trying to run this code: > > MimeBodyPart textPart = new MimeBodyPart(); > textPart.setContent(new String(body), "text/plain"); > textPart.setHeader("Content-Type", messageContentType); > textPart.setHeader("Content-Transfer-Encoding", "binary"); > textPart.setHeader("Content-Disposition", "attachment; filename=" + > fileName); > > SMIMESignedGenerator gen = new SMIMESignedGenerator(); > gen.setContentTransferEncoding("base64"); > JcaSimpleSignerInfoGeneratorBuilder signerInfoGenerator = new > JcaSimpleSignerInfoGeneratorBuilder(); > signerInfoGenerator = signerInfoGenerator.setProvider("BC"); > SignerInfoGenerator signerGenerator = > signerInfoGenerator.build(alg.algorithmWithRSA(), privateKey, certificate); > gen.addSignerInfoGenerator(signerGenerator); > > List<X509Certificate> certList = new ArrayList<X509Certificate>(); > certList.add(certificate); > @SuppressWarnings("rawtypes") > Store certs = new JcaCertStore(certList); > > gen.addCertificates(certs); > > MimeMultipart signedReport = gen.generate(replyBody); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > mimeMsg.writeTo(out); //the line which gives problems > out.close(); > > I get this: > > javax.activation.UnsupportedDataTypeException: text/plain > at javax.activation.DataHandler.writeTo(DataHandler.java:75) ~[!/:2.9.0] > at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1670) > ~[!/:1.6.7] > at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:972) > ~[!/:1.6.7] > at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:537) > ~[!/:1.6.7] > > Trying to make the long story short, after investigation, I find that BC > includes a file at META-INF/mailcap > This shouldn't be a problem, but it seems to me that this is a problem. > > If I try to add the mailcap manually before the above code snippet, like > this: > > MailcapCommandMap mc = (MailcapCommandMap) > CommandMap.getDefaultCommandMap(); > mc.addMailcap("text/html;; > x-java-content-handler=com.sun.mail.handlers.text_html"); > mc.addMailcap("text/xml;; > x-java-content-handler=com.sun.mail.handlers.text_xml"); > mc.addMailcap("text/plain;; > x-java-content-handler=com.sun.mail.handlers.text_plain"); > mc.addMailcap("multipart/*;; > x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); > mc.addMailcap("message/rfc822;; > x-java-content-handler=com.sun.mail.handlers.message_rfc822"); > > it has no effect, although I can see that the command handler is set there. > > After all this investigation, I conclude that this is related to OSGI > class loader. Any idea how to fix this or any hints? > > Thanks, > Andrei Mura >