diff options
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.java | 73 |
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; + } +} |