Wed, 31 Dec 2014 07:22:50 +0100
Correct previous dual key logic pending first delivery installment.
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 package org.mozilla.gecko.background.fxa;
6 import java.security.GeneralSecurityException;
8 import org.mozilla.gecko.background.helpers.AndroidSyncTestCase;
9 import org.mozilla.gecko.browserid.BrowserIDKeyPair;
10 import org.mozilla.gecko.browserid.DSACryptoImplementation;
11 import org.mozilla.gecko.browserid.JSONWebTokenUtils;
12 import org.mozilla.gecko.browserid.RSACryptoImplementation;
13 import org.mozilla.gecko.browserid.SigningPrivateKey;
14 import org.mozilla.gecko.browserid.VerifyingPublicKey;
15 import org.mozilla.gecko.sync.ExtendedJSONObject;
16 import org.mozilla.gecko.sync.Utils;
18 public class TestBrowserIDKeyPairGeneration extends AndroidSyncTestCase {
19 public void doTestEncodeDecode(BrowserIDKeyPair keyPair) throws Exception {
20 SigningPrivateKey privateKey = keyPair.getPrivate();
21 VerifyingPublicKey publicKey = keyPair.getPublic();
23 ExtendedJSONObject o = new ExtendedJSONObject();
24 o.put("key", Utils.generateGuid());
26 String token = JSONWebTokenUtils.encode(o.toJSONString(), privateKey);
27 assertNotNull(token);
29 String payload = JSONWebTokenUtils.decode(token, publicKey);
30 assertEquals(o.toJSONString(), payload);
32 try {
33 JSONWebTokenUtils.decode(token + "x", publicKey);
34 fail("Expected exception.");
35 } catch (GeneralSecurityException e) {
36 // Do nothing.
37 }
38 }
40 public void testEncodeDecodeSuccessRSA() throws Exception {
41 doTestEncodeDecode(RSACryptoImplementation.generateKeyPair(1024));
42 doTestEncodeDecode(RSACryptoImplementation.generateKeyPair(2048));
43 }
45 public void testEncodeDecodeSuccessDSA() throws Exception {
46 doTestEncodeDecode(DSACryptoImplementation.generateKeyPair(512));
47 doTestEncodeDecode(DSACryptoImplementation.generateKeyPair(1024));
48 }
49 }