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
>

Reply via email to