aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/x_pkcs7_signature.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/x_pkcs7_signature.java')
-rw-r--r--libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/x_pkcs7_signature.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/x_pkcs7_signature.java b/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/x_pkcs7_signature.java
new file mode 100644
index 000000000..a58fd5310
--- /dev/null
+++ b/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/handlers/x_pkcs7_signature.java
@@ -0,0 +1,90 @@
+package org.bouncycastle.mail.smime.handlers;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.activation.ActivationDataFlavor;
+import javax.activation.DataContentHandler;
+import javax.activation.DataSource;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+
+public class x_pkcs7_signature
+ implements DataContentHandler
+{
+
+ /*
+ *
+ * VARIABLES
+ *
+ */
+
+ private static final ActivationDataFlavor ADF;
+ private static final DataFlavor[] ADFs;
+
+ static
+ {
+ ADF = new ActivationDataFlavor(MimeBodyPart.class, "application/x-pkcs7-signature", "Signature");
+ ADFs = new DataFlavor[] { ADF };
+ }
+
+ public Object getContent(DataSource _ds)
+ throws IOException
+ {
+ return _ds.getInputStream();
+ }
+
+ public Object getTransferData(DataFlavor _df, DataSource _ds)
+ throws IOException
+ {
+ if (ADF.equals(_df))
+ {
+ return getContent(_ds);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public DataFlavor[] getTransferDataFlavors()
+ {
+ return ADFs;
+ }
+
+ public void writeTo(Object _obj, String _mimeType, OutputStream _os)
+ throws IOException
+ {
+ if (_obj instanceof MimeBodyPart)
+ {
+ try
+ {
+ ((MimeBodyPart)_obj).writeTo(_os);
+ }
+ catch (MessagingException ex)
+ {
+ throw new IOException(ex.getMessage());
+ }
+ }
+ else if (_obj instanceof byte[])
+ {
+ _os.write((byte[])_obj);
+ }
+ else if (_obj instanceof InputStream)
+ {
+ int b;
+ InputStream in = (InputStream)_obj;
+
+ while ((b = in.read()) >= 0)
+ {
+ _os.write(b);
+ }
+ }
+ else
+ {
+ throw new IOException("unknown object in writeTo " + _obj);
+ }
+ }
+}