aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/pkix/src/test/j2me/org/spongycastle/cms/test/BcEnvelopedDataTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/pkix/src/test/j2me/org/spongycastle/cms/test/BcEnvelopedDataTest.java')
-rw-r--r--libraries/spongycastle/pkix/src/test/j2me/org/spongycastle/cms/test/BcEnvelopedDataTest.java119
1 files changed, 119 insertions, 0 deletions
diff --git a/libraries/spongycastle/pkix/src/test/j2me/org/spongycastle/cms/test/BcEnvelopedDataTest.java b/libraries/spongycastle/pkix/src/test/j2me/org/spongycastle/cms/test/BcEnvelopedDataTest.java
new file mode 100644
index 000000000..d4d45831f
--- /dev/null
+++ b/libraries/spongycastle/pkix/src/test/j2me/org/spongycastle/cms/test/BcEnvelopedDataTest.java
@@ -0,0 +1,119 @@
+package org.spongycastle.cms.test;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.spongycastle.asn1.nist.NISTObjectIdentifiers;
+import org.spongycastle.cert.X509CertificateHolder;
+import org.spongycastle.cms.CMSEnvelopedData;
+import org.spongycastle.cms.CMSEnvelopedDataGenerator;
+import org.spongycastle.cms.CMSProcessableByteArray;
+import org.spongycastle.cms.RecipientInformation;
+import org.spongycastle.cms.RecipientInformationStore;
+import org.spongycastle.cms.bc.BcCMSContentEncryptorBuilder;
+import org.spongycastle.cms.bc.BcRSAKeyTransEnvelopedRecipient;
+import org.spongycastle.cms.bc.BcRSAKeyTransRecipientInfoGenerator;
+import org.spongycastle.crypto.AsymmetricCipherKeyPair;
+import org.spongycastle.crypto.params.AsymmetricKeyParameter;
+import org.spongycastle.util.Arrays;
+import org.spongycastle.util.test.SimpleTest;
+
+public class BcEnvelopedDataTest
+ extends SimpleTest
+{
+ private static String _origDN;
+ private static AsymmetricCipherKeyPair _origKP;
+ private static X509CertificateHolder _origCert;
+
+ private static String _signDN;
+ private static AsymmetricCipherKeyPair _signKP;
+ private static X509CertificateHolder _signCert;
+
+ private static String _reciDN;
+ private static String _reciDN2;
+ private static AsymmetricCipherKeyPair _reciKP;
+ private static X509CertificateHolder _reciCert;
+
+ private static boolean _initialised = false;
+
+ public String getName()
+ {
+ return "BcEnvelopedData";
+ }
+
+ private void init()
+ throws Exception
+ {
+ if (!_initialised)
+ {
+ _initialised = true;
+
+ _origDN = "O=Bouncy Castle, C=AU";
+ _origKP = CMSTestUtil.makeKeyPair();
+ _origCert = CMSTestUtil.makeCertificate(_origKP, _origDN, _origKP, _origDN);
+
+ _signDN = "CN=Bob, OU=Sales, O=Bouncy Castle, C=AU";
+ _signKP = CMSTestUtil.makeKeyPair();
+ _signCert = CMSTestUtil.makeCertificate(_signKP, _signDN, _origKP, _origDN);
+
+ _reciDN = "CN=Doug, OU=Sales, O=Bouncy Castle, C=AU";
+ _reciDN2 = "CN=Fred, OU=Sales, O=Bouncy Castle, C=AU";
+ _reciKP = CMSTestUtil.makeKeyPair();
+ _reciCert = CMSTestUtil.makeCertificate(_reciKP, _reciDN, _signKP, _signDN);
+ }
+ }
+
+ private void testKeyTransLight128RC4()
+ throws Exception
+ {
+ byte[] data = "WallaWallaBouncyCastle".getBytes();
+
+ CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator();
+
+ edGen.addRecipientInfoGenerator(new BcRSAKeyTransRecipientInfoGenerator(_reciCert));
+
+ CMSEnvelopedData ed = edGen.generate(
+ new CMSProcessableByteArray(data),
+ new BcCMSContentEncryptorBuilder(NISTObjectIdentifiers.id_aes128_CBC).build());
+
+ RecipientInformationStore recipients = ed.getRecipientInfos();
+
+ if (!ed.getEncryptionAlgOID().equals(NISTObjectIdentifiers.id_aes128_CBC.getId()))
+ {
+ fail("enc oid mismatch");
+ }
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ byte[] recData = recipient.getContent(new BcRSAKeyTransEnvelopedRecipient((AsymmetricKeyParameter)_reciKP.getPrivate()));
+
+ if (!Arrays.areEqual(data, recData))
+ {
+ fail("decryption failed");
+ }
+ }
+ else
+ {
+ fail("no recipient found");
+ }
+ }
+
+ public void performTest()
+ throws Exception
+ {
+ init();
+
+ testKeyTransLight128RC4();
+ }
+
+ public static void main(
+ String[] args)
+ {
+ runTest(new BcEnvelopedDataTest());
+ }
+}