diff options
Diffstat (limited to 'libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/examples/ReadLargeEncryptedMail.java')
-rw-r--r-- | libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/examples/ReadLargeEncryptedMail.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/examples/ReadLargeEncryptedMail.java b/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/examples/ReadLargeEncryptedMail.java new file mode 100644 index 000000000..8389b443b --- /dev/null +++ b/libraries/spongycastle/mail/src/main/java/org/spongycastle/mail/smime/examples/ReadLargeEncryptedMail.java @@ -0,0 +1,71 @@ +package org.bouncycastle.mail.smime.examples; + +import java.security.KeyStore; +import java.security.PrivateKey; +import java.security.cert.X509Certificate; +import java.util.Properties; + +import javax.mail.Session; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; + +import org.bouncycastle.cms.RecipientId; +import org.bouncycastle.cms.RecipientInformation; +import org.bouncycastle.cms.RecipientInformationStore; +import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient; +import org.bouncycastle.cms.jcajce.JceKeyTransRecipientId; +import org.bouncycastle.mail.smime.SMIMEEnvelopedParser; +import org.bouncycastle.mail.smime.SMIMEUtil; +import org.bouncycastle.mail.smime.util.SharedFileInputStream; + +/** + * a simple example that reads an encrypted email using the large file model. + * <p> + * The key store can be created using the class in + * org.bouncycastle.jce.examples.PKCS12Example - the program expects only one + * key to be present. + */ +public class ReadLargeEncryptedMail +{ + public static void main( + String args[]) + throws Exception + { + if (args.length != 3) + { + System.err.println("usage: ReadLargeEncryptedMail pkcs12Keystore password outputFile"); + System.exit(0); + } + + // + // Open the key store + // + KeyStore ks = KeyStore.getInstance("PKCS12", "BC"); + String keyAlias = ExampleUtils.findKeyAlias(ks, args[0], args[1].toCharArray()); + + // + // find the certificate for the private key and generate a + // suitable recipient identifier. + // + X509Certificate cert = (X509Certificate)ks.getCertificate(keyAlias); + RecipientId recId = new JceKeyTransRecipientId(cert); + + // + // Get a Session object with the default properties. + // + Properties props = System.getProperties(); + + Session session = Session.getDefaultInstance(props, null); + + MimeMessage msg = new MimeMessage(session, new SharedFileInputStream("encrypted.message")); + + SMIMEEnvelopedParser m = new SMIMEEnvelopedParser(msg); + + RecipientInformationStore recipients = m.getRecipientInfos(); + RecipientInformation recipient = recipients.get(recId); + + MimeBodyPart res = SMIMEUtil.toMimeBodyPart(recipient.getContentStream(new JceKeyTransEnvelopedRecipient((PrivateKey)ks.getKey(keyAlias, null)).setProvider("BC"))); + + ExampleUtils.dumpContent(res, args[2]); + } +} |