|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 package org.mozilla.gecko.background.fxa; |
|
5 |
|
6 import java.security.GeneralSecurityException; |
|
7 |
|
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; |
|
17 |
|
18 public class TestBrowserIDKeyPairGeneration extends AndroidSyncTestCase { |
|
19 public void doTestEncodeDecode(BrowserIDKeyPair keyPair) throws Exception { |
|
20 SigningPrivateKey privateKey = keyPair.getPrivate(); |
|
21 VerifyingPublicKey publicKey = keyPair.getPublic(); |
|
22 |
|
23 ExtendedJSONObject o = new ExtendedJSONObject(); |
|
24 o.put("key", Utils.generateGuid()); |
|
25 |
|
26 String token = JSONWebTokenUtils.encode(o.toJSONString(), privateKey); |
|
27 assertNotNull(token); |
|
28 |
|
29 String payload = JSONWebTokenUtils.decode(token, publicKey); |
|
30 assertEquals(o.toJSONString(), payload); |
|
31 |
|
32 try { |
|
33 JSONWebTokenUtils.decode(token + "x", publicKey); |
|
34 fail("Expected exception."); |
|
35 } catch (GeneralSecurityException e) { |
|
36 // Do nothing. |
|
37 } |
|
38 } |
|
39 |
|
40 public void testEncodeDecodeSuccessRSA() throws Exception { |
|
41 doTestEncodeDecode(RSACryptoImplementation.generateKeyPair(1024)); |
|
42 doTestEncodeDecode(RSACryptoImplementation.generateKeyPair(2048)); |
|
43 } |
|
44 |
|
45 public void testEncodeDecodeSuccessDSA() throws Exception { |
|
46 doTestEncodeDecode(DSACryptoImplementation.generateKeyPair(512)); |
|
47 doTestEncodeDecode(DSACryptoImplementation.generateKeyPair(1024)); |
|
48 } |
|
49 } |