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 'pkix/src/test/java/org/spongycastle/mozilla/test/SPKACTest.java')
-rw-r--r--pkix/src/test/java/org/spongycastle/mozilla/test/SPKACTest.java113
1 files changed, 113 insertions, 0 deletions
diff --git a/pkix/src/test/java/org/spongycastle/mozilla/test/SPKACTest.java b/pkix/src/test/java/org/spongycastle/mozilla/test/SPKACTest.java
new file mode 100644
index 00000000..b8d59f3f
--- /dev/null
+++ b/pkix/src/test/java/org/spongycastle/mozilla/test/SPKACTest.java
@@ -0,0 +1,113 @@
+package org.spongycastle.mozilla.test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.security.PublicKey;
+import java.security.Security;
+
+import org.spongycastle.asn1.ASN1InputStream;
+import org.spongycastle.asn1.ASN1Primitive;
+import org.spongycastle.asn1.DERIA5String;
+import org.spongycastle.asn1.DEROutputStream;
+import org.spongycastle.asn1.mozilla.PublicKeyAndChallenge;
+import org.spongycastle.asn1.x509.SubjectPublicKeyInfo;
+import org.spongycastle.jce.provider.BouncyCastleProvider;
+import org.spongycastle.mozilla.SignedPublicKeyAndChallenge;
+import org.spongycastle.util.encoders.Base64;
+import org.spongycastle.util.test.SimpleTest;
+
+public class SPKACTest
+ extends SimpleTest
+{
+ byte[] spkac = Base64.decode(
+ "MIIBOjCBpDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApne7ti0ibPhV8Iht"+
+ "7Pws5iRckM7x4mtZYxEpeX5/IO8tDsBFdY86ewuY2f2KCca0oMWr43kdkZbPyzf4"+
+ "CSV+0fZm9MJyNMywygZjoOCC+rS8kr0Ef31iHChhYsyejJnjw116Jnn96syhdHY6"+
+ "lVD1rK0nn5ZkHjxU74gjoZu6BJMCAwEAARYAMA0GCSqGSIb3DQEBBAUAA4GBAKFL"+
+ "g/luv0C7gMTI8ZKfFoSyi7Q7kiSQcmSj1WJgT56ouIRJO5NdvB/1n4GNik8VOAU0"+
+ "NRztvGy3ZGqgbSav7lrxcNEvXH+dLbtS97s7yiaozpsOcEHqsBribpLOTRzYa8ci"+
+ "CwkPmIiYqcby11diKLpd+W9RFYNme2v0rrbM2CyV");
+
+
+ public String getName()
+ {
+ return "SignedPubicKeyAndChallenge";
+ }
+
+ public void spkacTest(String testName, byte[] req)
+ throws Exception
+ {
+ SignedPublicKeyAndChallenge spkac;
+
+ spkac = new SignedPublicKeyAndChallenge(req);
+
+ PublicKeyAndChallenge pkac = spkac.getPublicKeyAndChallenge();
+ PublicKey pubKey = spkac.getPublicKey("SC");
+ ASN1Primitive obj = pkac.toASN1Primitive();
+ if (obj == null)
+ {
+ fail("Error - " + testName + " PKAC ASN1Primitive was null.");
+ }
+
+ obj = spkac.toASN1Primitive();
+ if (obj == null)
+ {
+ fail("Error - "+testName+ " SPKAC ASN1Primitive was null.");
+ }
+
+ SubjectPublicKeyInfo spki = pkac.getSubjectPublicKeyInfo();
+ if (spki == null)
+ {
+ fail("Error - "+testName + " SubjectPublicKeyInfo was null.");
+ }
+
+ DERIA5String challenge = pkac.getChallenge();
+ // Most cases this will be a string of length zero.
+ if (challenge == null)
+ {
+ fail(":Error - "+testName+ " challenge was null.");
+ }
+
+ ByteArrayInputStream bIn = new ByteArrayInputStream(req);
+ ASN1InputStream dIn = new ASN1InputStream(bIn);
+
+
+ ByteArrayOutputStream bOut = new ByteArrayOutputStream();
+ DEROutputStream dOut = new DEROutputStream(bOut);
+
+ dOut.writeObject(spkac.toASN1Primitive());
+
+ byte[] bytes = bOut.toByteArray();
+
+ if (bytes.length != req.length)
+ {
+ fail(testName + " failed length test");
+ }
+
+ for (int i = 0; i != req.length; i++)
+ {
+ if (bytes[i] != req[i])
+ {
+ fail(testName + " failed comparison test");
+ }
+ }
+
+ if (!spkac.verify("SC"))
+ {
+ fail(testName + " verification failed");
+ }
+ }
+
+ public void performTest()
+ throws Exception
+ {
+ spkacTest("spkac", spkac);
+ }
+
+ public static void main(String[] args)
+ {
+ Security.addProvider(new BouncyCastleProvider());
+
+ runTest(new SPKACTest());
+ }
+}