aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/CMSProcessableBodyPartOutbound.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/CMSProcessableBodyPartOutbound.java')
-rw-r--r--libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/CMSProcessableBodyPartOutbound.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/CMSProcessableBodyPartOutbound.java b/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/CMSProcessableBodyPartOutbound.java
new file mode 100644
index 000000000..4c4b3b110
--- /dev/null
+++ b/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/CMSProcessableBodyPartOutbound.java
@@ -0,0 +1,73 @@
+package org.bouncycastle.mail.smime;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.mail.BodyPart;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+
+import org.bouncycastle.cms.CMSException;
+import org.bouncycastle.cms.CMSProcessable;
+import org.bouncycastle.mail.smime.util.CRLFOutputStream;
+
+/**
+ * a holding class for a BodyPart to be processed which does CRLF canocicalisation if
+ * dealing with non-binary data.
+ */
+public class CMSProcessableBodyPartOutbound
+ implements CMSProcessable
+{
+ private BodyPart bodyPart;
+ private String defaultContentTransferEncoding;
+
+ /**
+ * Create a processable with the default transfer encoding of 7bit
+ *
+ * @param bodyPart body part to be processed
+ */
+ public CMSProcessableBodyPartOutbound(
+ BodyPart bodyPart)
+ {
+ this.bodyPart = bodyPart;
+ }
+
+ /**
+ * Create a processable with the a default transfer encoding of
+ * the passed in value.
+ *
+ * @param bodyPart body part to be processed
+ * @param defaultContentTransferEncoding the new default to use.
+ */
+ public CMSProcessableBodyPartOutbound(
+ BodyPart bodyPart,
+ String defaultContentTransferEncoding)
+ {
+ this.bodyPart = bodyPart;
+ this.defaultContentTransferEncoding = defaultContentTransferEncoding;
+ }
+
+ public void write(
+ OutputStream out)
+ throws IOException, CMSException
+ {
+ try
+ {
+ if (SMIMEUtil.isCanonicalisationRequired((MimeBodyPart)bodyPart, defaultContentTransferEncoding))
+ {
+ out = new CRLFOutputStream(out);
+ }
+
+ bodyPart.writeTo(out);
+ }
+ catch (MessagingException e)
+ {
+ throw new CMSException("can't write BodyPart to stream.", e);
+ }
+ }
+
+ public Object getContent()
+ {
+ return bodyPart;
+ }
+}