diff options
Diffstat (limited to 'mail/src/main/java/org/spongycastle/mail/smime/SMIMECompressedParser.java')
-rw-r--r-- | mail/src/main/java/org/spongycastle/mail/smime/SMIMECompressedParser.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/mail/src/main/java/org/spongycastle/mail/smime/SMIMECompressedParser.java b/mail/src/main/java/org/spongycastle/mail/smime/SMIMECompressedParser.java new file mode 100644 index 00000000..23214a4d --- /dev/null +++ b/mail/src/main/java/org/spongycastle/mail/smime/SMIMECompressedParser.java @@ -0,0 +1,100 @@ +package org.bouncycastle.mail.smime; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; + +import javax.mail.MessagingException; +import javax.mail.Part; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimePart; + +import org.bouncycastle.cms.CMSCompressedDataParser; +import org.bouncycastle.cms.CMSException; + +/** + * Stream based containing class for an S/MIME pkcs7-mime compressed MimePart. + */ +public class SMIMECompressedParser + extends CMSCompressedDataParser +{ + private final MimePart message; + + private static InputStream getInputStream( + Part bodyPart, + int bufferSize) + throws MessagingException + { + try + { + InputStream in = bodyPart.getInputStream(); + + if (bufferSize == 0) + { + return new BufferedInputStream(in); + } + else + { + return new BufferedInputStream(in, bufferSize); + } + } + catch (IOException e) + { + throw new MessagingException("can't extract input stream: " + e); + } + } + + public SMIMECompressedParser( + MimeBodyPart message) + throws MessagingException, CMSException + { + this(message, 0); + } + + public SMIMECompressedParser( + MimeMessage message) + throws MessagingException, CMSException + { + this(message, 0); + } + + /** + * Create a parser from a MimeBodyPart using the passed in buffer size + * for reading it. + * + * @param message body part to be parsed. + * @param bufferSize bufferSoze to be used. + */ + public SMIMECompressedParser( + MimeBodyPart message, + int bufferSize) + throws MessagingException, CMSException + { + super(getInputStream(message, bufferSize)); + + this.message = message; + } + + /** + * Create a parser from a MimeMessage using the passed in buffer size + * for reading it. + * + * @param message message to be parsed. + * @param bufferSize bufferSoze to be used. + */ + public SMIMECompressedParser( + MimeMessage message, + int bufferSize) + throws MessagingException, CMSException + { + super(getInputStream(message, bufferSize)); + + this.message = message; + } + + public MimePart getCompressedContent() + { + return message; + } +} |