Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/java/org/spongycastle/asn1/test/SMIMETest.java')
-rw-r--r--core/src/test/java/org/spongycastle/asn1/test/SMIMETest.java109
1 files changed, 109 insertions, 0 deletions
diff --git a/core/src/test/java/org/spongycastle/asn1/test/SMIMETest.java b/core/src/test/java/org/spongycastle/asn1/test/SMIMETest.java
new file mode 100644
index 00000000..e6330386
--- /dev/null
+++ b/core/src/test/java/org/spongycastle/asn1/test/SMIMETest.java
@@ -0,0 +1,109 @@
+package org.spongycastle.asn1.test;
+
+import java.io.ByteArrayInputStream;
+
+import org.spongycastle.asn1.ASN1InputStream;
+import org.spongycastle.asn1.ASN1Primitive;
+import org.spongycastle.asn1.DERGeneralizedTime;
+import org.spongycastle.asn1.DEROctetString;
+import org.spongycastle.asn1.cms.RecipientKeyIdentifier;
+import org.spongycastle.asn1.smime.SMIMECapabilitiesAttribute;
+import org.spongycastle.asn1.smime.SMIMECapability;
+import org.spongycastle.asn1.smime.SMIMECapabilityVector;
+import org.spongycastle.asn1.smime.SMIMEEncryptionKeyPreferenceAttribute;
+import org.spongycastle.util.encoders.Base64;
+import org.spongycastle.util.test.SimpleTestResult;
+import org.spongycastle.util.test.Test;
+import org.spongycastle.util.test.TestResult;
+
+public class SMIMETest
+ implements Test
+{
+ byte[] attrBytes = Base64.decode("MDQGCSqGSIb3DQEJDzEnMCUwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMAcGBSsOAwIH");
+ byte[] prefBytes = Base64.decode("MCwGCyqGSIb3DQEJEAILMR2hGwQIAAAAAAAAAAAYDzIwMDcwMzE1MTczNzI5Wg==");
+
+ private boolean isSameAs(
+ byte[] a,
+ byte[] b)
+ {
+ if (a.length != b.length)
+ {
+ return false;
+ }
+
+ for (int i = 0; i != a.length; i++)
+ {
+ if (a[i] != b[i])
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public TestResult perform()
+ {
+ SMIMECapabilityVector caps = new SMIMECapabilityVector();
+
+ caps.addCapability(SMIMECapability.dES_EDE3_CBC);
+ caps.addCapability(SMIMECapability.rC2_CBC, 128);
+ caps.addCapability(SMIMECapability.dES_CBC);
+
+ SMIMECapabilitiesAttribute attr = new SMIMECapabilitiesAttribute(caps);
+
+ SMIMEEncryptionKeyPreferenceAttribute pref = new SMIMEEncryptionKeyPreferenceAttribute(
+ new RecipientKeyIdentifier(new DEROctetString(new byte[8]), new DERGeneralizedTime("20070315173729Z"), null));
+
+ try
+ {
+ if (!isSameAs(attr.getEncoded(), attrBytes))
+ {
+ return new SimpleTestResult(false, getName() + ": Failed attr data check");
+ }
+
+ ByteArrayInputStream bIn = new ByteArrayInputStream(attrBytes);
+ ASN1InputStream aIn = new ASN1InputStream(bIn);
+
+ ASN1Primitive o = aIn.readObject();
+ if (!attr.equals(o))
+ {
+ return new SimpleTestResult(false, getName() + ": Failed equality test for attr");
+ }
+
+ if (!isSameAs(pref.getEncoded(), prefBytes))
+ {
+ return new SimpleTestResult(false, getName() + ": Failed attr data check");
+ }
+
+ bIn = new ByteArrayInputStream(prefBytes);
+ aIn = new ASN1InputStream(bIn);
+
+ o = aIn.readObject();
+ if (!pref.equals(o))
+ {
+ return new SimpleTestResult(false, getName() + ": Failed equality test for pref");
+ }
+
+ return new SimpleTestResult(true, getName() + ": Okay");
+ }
+ catch (Exception e)
+ {
+ return new SimpleTestResult(false, getName() + ": Failed - exception " + e.toString(), e);
+ }
+ }
+
+ public String getName()
+ {
+ return "SMIME";
+ }
+
+ public static void main(
+ String[] args)
+ {
+ SMIMETest test = new SMIMETest();
+ TestResult result = test.perform();
+
+ System.out.println(result);
+ }
+}