aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/mail/src/test/java/org/spongycastle/mail/smime/test/SMIMEMiscTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/mail/src/test/java/org/spongycastle/mail/smime/test/SMIMEMiscTest.java')
-rw-r--r--libraries/spongycastle/mail/src/test/java/org/spongycastle/mail/smime/test/SMIMEMiscTest.java367
1 files changed, 0 insertions, 367 deletions
diff --git a/libraries/spongycastle/mail/src/test/java/org/spongycastle/mail/smime/test/SMIMEMiscTest.java b/libraries/spongycastle/mail/src/test/java/org/spongycastle/mail/smime/test/SMIMEMiscTest.java
deleted file mode 100644
index 690c89cce..000000000
--- a/libraries/spongycastle/mail/src/test/java/org/spongycastle/mail/smime/test/SMIMEMiscTest.java
+++ /dev/null
@@ -1,367 +0,0 @@
-package org.bouncycastle.mail.smime.test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.security.KeyPair;
-import java.security.Security;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-
-import javax.mail.Address;
-import javax.mail.Message;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.bouncycastle.asn1.ASN1EncodableVector;
-import org.bouncycastle.asn1.cms.AttributeTable;
-import org.bouncycastle.asn1.smime.SMIMECapabilitiesAttribute;
-import org.bouncycastle.asn1.smime.SMIMECapability;
-import org.bouncycastle.asn1.smime.SMIMECapabilityVector;
-import org.bouncycastle.cert.X509CertificateHolder;
-import org.bouncycastle.cert.jcajce.JcaCertStore;
-import org.bouncycastle.cms.CMSAlgorithm;
-import org.bouncycastle.cms.CMSException;
-import org.bouncycastle.cms.RecipientInformation;
-import org.bouncycastle.cms.SignerInformation;
-import org.bouncycastle.cms.SignerInformationStore;
-import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoGeneratorBuilder;
-import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
-import org.bouncycastle.cms.jcajce.JcaX509CertSelectorConverter;
-import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
-import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient;
-import org.bouncycastle.cms.jcajce.JceKeyTransRecipientInfoGenerator;
-import org.bouncycastle.cms.jcajce.ZlibCompressor;
-import org.bouncycastle.cms.test.CMSTestUtil;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.bouncycastle.mail.smime.SMIMECompressedGenerator;
-import org.bouncycastle.mail.smime.SMIMEEnveloped;
-import org.bouncycastle.mail.smime.SMIMEEnvelopedGenerator;
-import org.bouncycastle.mail.smime.SMIMESigned;
-import org.bouncycastle.mail.smime.SMIMESignedGenerator;
-import org.bouncycastle.mail.smime.SMIMESignedParser;
-import org.bouncycastle.mail.smime.SMIMEUtil;
-import org.bouncycastle.mail.smime.util.FileBackedMimeBodyPart;
-import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
-import org.bouncycastle.util.Store;
-
-public class SMIMEMiscTest
- extends TestCase
-{
- static MimeBodyPart msg;
-
- static String signDN;
- static KeyPair signKP;
- static X509Certificate signCert;
-
- static String origDN;
- static KeyPair origKP;
- static X509Certificate origCert;
-
- static String reciDN;
- static KeyPair reciKP;
- static X509Certificate reciCert;
-
- private static final JcaX509CertSelectorConverter selectorConverter = new JcaX509CertSelectorConverter();
-
- KeyPair dsaSignKP;
- X509Certificate dsaSignCert;
-
- KeyPair dsaOrigKP;
- X509Certificate dsaOrigCert;
-
- static
- {
- try
- {
- msg = SMIMETestUtil.makeMimeBodyPart("Hello world!\n");
-
- signDN = "O=Bouncy Castle, C=AU";
- signKP = CMSTestUtil.makeKeyPair();
- signCert = CMSTestUtil.makeCertificate(signKP, signDN, signKP, signDN);
-
- origDN = "CN=Eric H. Echidna, E=eric@bouncycastle.org, O=Bouncy Castle, C=AU";
- origKP = CMSTestUtil.makeKeyPair();
- origCert = CMSTestUtil.makeCertificate(origKP, origDN, signKP, signDN);
- }
- catch (Exception e)
- {
- throw new RuntimeException("problem setting up signed test class: " + e);
- }
- }
-
- /*
- *
- * INFRASTRUCTURE
- *
- */
-
- public SMIMEMiscTest(String name)
- {
- super(name);
- }
-
- public static void main(String args[])
- {
- Security.addProvider(new BouncyCastleProvider());
-
- junit.textui.TestRunner.run(SMIMEMiscTest.class);
- }
-
- public static Test suite()
- {
- return new SMIMETestSetup(new TestSuite(SMIMEMiscTest.class));
- }
-
- public void testSHA256WithRSAParserEncryptedWithAES()
- throws Exception
- {
- List certList = new ArrayList();
-
- certList.add(origCert);
- certList.add(signCert);
-
- Store certs = new JcaCertStore(certList);
-
- SMIMEEnvelopedGenerator encGen = new SMIMEEnvelopedGenerator();
-
- encGen.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(origCert).setProvider("BC"));
-
- MimeBodyPart mp = encGen.generate(msg, new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC).setProvider("BC").build());
- ASN1EncodableVector signedAttrs = generateSignedAttributes();
-
- SMIMESignedGenerator gen = new SMIMESignedGenerator();
-
- gen.addSignerInfoGenerator(new JcaSimpleSignerInfoGeneratorBuilder().setProvider("BC").setSignedAttributeGenerator(new AttributeTable(signedAttrs)).build("SHA256withRSA", origKP.getPrivate(), origCert));
- gen.addCertificates(certs);
-
- MimeMultipart smm = gen.generate(mp);
- File tmpFile = File.createTempFile("bcTest", ".mime");
-
- MimeMessage msg = createMimeMessage(tmpFile, smm);
-
- SMIMESignedParser s = new SMIMESignedParser(new JcaDigestCalculatorProviderBuilder().setProvider("BC").build(), (MimeMultipart)msg.getContent());
-
- certs = s.getCertificates();
-
- verifyMessageBytes(mp, s.getContent());
-
- verifySigners(certs, s.getSignerInfos());
-
- tmpFile.delete();
- }
-
- public void testSHA256WithRSACompressed()
- throws Exception
- {
- List certList = new ArrayList();
-
- certList.add(origCert);
- certList.add(signCert);
-
- Store certs = new JcaCertStore(certList);
-
- SMIMECompressedGenerator cGen = new SMIMECompressedGenerator();
-
- MimeBodyPart mp = cGen.generate(msg, new ZlibCompressor());
-
- ASN1EncodableVector signedAttrs = generateSignedAttributes();
-
- SMIMESignedGenerator gen = new SMIMESignedGenerator();
-
- gen.addSignerInfoGenerator(new JcaSimpleSignerInfoGeneratorBuilder().setProvider("BC").setSignedAttributeGenerator(new AttributeTable(signedAttrs)).build("SHA256withRSA", origKP.getPrivate(), origCert));
- gen.addCertificates(certs);
-
- MimeMultipart smm = gen.generate(mp);
- File tmpFile = File.createTempFile("bcTest", ".mime");
-
- MimeMessage msg = createMimeMessage(tmpFile, smm);
-
- SMIMESigned s = new SMIMESigned((MimeMultipart)msg.getContent());
-
- certs = s.getCertificates();
-
- verifyMessageBytes(mp, s.getContent());
-
- verifySigners(certs, s.getSignerInfos());
-
- tmpFile.delete();
- }
-
- public void testQuotePrintableSigPreservation()
- throws Exception
- {
- MimeMessage msg = new MimeMessage((Session)null, getClass().getResourceAsStream("qp-soft-break.eml"));
-
- SMIMEEnvelopedGenerator encGen = new SMIMEEnvelopedGenerator();
-
- encGen.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(origCert).setProvider("BC"));
-
- MimeBodyPart mp = encGen.generate(msg, new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC).setProvider("BC").build());
-
- SMIMEEnveloped env = new SMIMEEnveloped(mp);
- RecipientInformation ri = (RecipientInformation)env.getRecipientInfos().getRecipients().iterator().next();
- MimeBodyPart mm = SMIMEUtil.toMimeBodyPart(ri.getContentStream(new JceKeyTransEnvelopedRecipient(origKP.getPrivate()).setProvider("BC")));
- SMIMESigned s = new SMIMESigned((MimeMultipart)mm.getContent());
- Collection c = s.getSignerInfos().getSigners();
- Iterator it = c.iterator();
- Store certs = s.getCertificates();
-
- while (it.hasNext())
- {
- SignerInformation signer = (SignerInformation)it.next();
- Collection certCollection = certs.getMatches(signer.getSID());
-
- Iterator certIt = certCollection.iterator();
- X509CertificateHolder cert = (X509CertificateHolder)certIt.next();
-
- assertEquals(true, signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert)));
- }
-
- ((FileBackedMimeBodyPart)mm).dispose();
- }
-
- public void testSHA256WithRSAParserCompressed()
- throws Exception
- {
- List certList = new ArrayList();
-
- certList.add(origCert);
- certList.add(signCert);
-
- Store certs = new JcaCertStore(certList);
-
- SMIMECompressedGenerator cGen = new SMIMECompressedGenerator();
-
- MimeBodyPart mp = cGen.generate(msg, new ZlibCompressor());
-
- ASN1EncodableVector signedAttrs = generateSignedAttributes();
-
- SMIMESignedGenerator gen = new SMIMESignedGenerator();
-
- gen.addSignerInfoGenerator(new JcaSimpleSignerInfoGeneratorBuilder().setProvider("BC").setSignedAttributeGenerator(new AttributeTable(signedAttrs)).build("SHA256withRSA", origKP.getPrivate(), origCert));
- gen.addCertificates(certs);
-
- MimeMultipart smm = gen.generate(mp);
- File tmpFile = File.createTempFile("bcTest", ".mime");
-
- MimeMessage msg = createMimeMessage(tmpFile, smm);
-
- SMIMESignedParser s = new SMIMESignedParser(new JcaDigestCalculatorProviderBuilder().setProvider("BC").build(), (MimeMultipart)msg.getContent());
-
- certs = s.getCertificates();
-
- verifyMessageBytes(mp, s.getContent());
-
- verifySigners(certs, s.getSignerInfos());
-
- tmpFile.delete();
- }
-
- public void testBrokenEnvelope()
- throws Exception
- {
- Session session = Session.getDefaultInstance(System.getProperties(), null);
- MimeMessage msg = new MimeMessage(session, getClass().getResourceAsStream("brokenEnv.message"));
-
- try
- {
- new SMIMEEnveloped(msg);
- }
- catch (CMSException e)
- {
- if (!e.getMessage().equals("Malformed content."))
- {
- fail("wrong exception on bogus envelope");
- }
- }
- }
-
- private void verifySigners(Store certs, SignerInformationStore signers)
- throws Exception
- {
- Collection c = signers.getSigners();
- Iterator it = c.iterator();
-
- while (it.hasNext())
- {
- SignerInformation signer = (SignerInformation)it.next();
- Collection certCollection = certs.getMatches(signer.getSID());
-
- Iterator certIt = certCollection.iterator();
- X509CertificateHolder cert = (X509CertificateHolder)certIt.next();
-
- assertEquals(true, signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert)));
- }
- }
-
- private void verifyMessageBytes(MimeBodyPart a, MimeBodyPart b)
- throws Exception
- {
- ByteArrayOutputStream bOut1 = new ByteArrayOutputStream();
-
- a.writeTo(bOut1);
- bOut1.close();
-
- ByteArrayOutputStream bOut2 = new ByteArrayOutputStream();
-
- b.writeTo(bOut2);
- bOut2.close();
-
- assertEquals(true, Arrays.equals(bOut1.toByteArray(), bOut2.toByteArray()));
- }
-
- /**
- * Create a mime message representing the multipart. We need to do
- * this as otherwise no raw content stream for the message will exist.
- */
- private MimeMessage createMimeMessage(File tmpFile, MimeMultipart smm)
- throws Exception
- {
- FileOutputStream fOut = new FileOutputStream(tmpFile);
- Properties props = System.getProperties();
- Session session = Session.getDefaultInstance(props, null);
-
- Address fromUser = new InternetAddress("\"Eric H. Echidna\"<eric@bouncycastle.org>");
- Address toUser = new InternetAddress("example@bouncycastle.org");
-
- MimeMessage body = new MimeMessage(session);
- body.setFrom(fromUser);
- body.setRecipient(Message.RecipientType.TO, toUser);
- body.setSubject("example signed message");
- body.setContent(smm, smm.getContentType());
- body.saveChanges();
-
- body.writeTo(fOut);
-
- fOut.close();
-
- return new MimeMessage(session, new FileInputStream(tmpFile));
- }
-
- private ASN1EncodableVector generateSignedAttributes()
- {
- ASN1EncodableVector signedAttrs = new ASN1EncodableVector();
- SMIMECapabilityVector caps = new SMIMECapabilityVector();
-
- caps.addCapability(SMIMECapability.dES_EDE3_CBC);
- caps.addCapability(SMIMECapability.rC2_CBC, 128);
- caps.addCapability(SMIMECapability.dES_CBC);
-
- signedAttrs.add(new SMIMECapabilitiesAttribute(caps));
-
- return signedAttrs;
- }
-}