@Test public void testSetKeysFromWBO() throws IOException, ParseException, NonObjectJSONException, CryptoException, NoCollectionKeysSetException { String json = "{\"default\":[\"3fI6k1exImMgAKjilmMaAWxGqEIzFX/9K5EjEgH99vc=\",\"/AMaoCX4hzic28WY94XtokNi7N4T0nv+moS1y5wlbug=\"],\"collections\":{},\"collection\":\"crypto\",\"id\":\"keys\"}"; CryptoRecord rec = new CryptoRecord(json); KeyBundle syncKeyBundle = new KeyBundle("slyjcrjednxd6rf4cr63vqilmkus6zbe", "6m8mv8ex2brqnrmsb9fjuvfg7y"); rec.keyBundle = syncKeyBundle; rec.encrypt(); CollectionKeys ck = new CollectionKeys(); ck.setKeyPairsFromWBO(rec, syncKeyBundle); byte[] input = "3fI6k1exImMgAKjilmMaAWxGqEIzFX/9K5EjEgH99vc=".getBytes("UTF-8"); byte[] expected = Base64.decodeBase64(input); assertSame(expected, ck.defaultKeyBundle().getEncryptionKey()); }
@Test public void testCryptoRecordFromCollectionKeys() throws CryptoException, NoCollectionKeysSetException, IOException, ParseException, NonObjectJSONException { CollectionKeys ck1 = CollectionKeys.generateCollectionKeys(); assertNotNull(ck1.defaultKeyBundle()); assertEquals(ck1.keyBundleForCollection("foobar"), ck1.defaultKeyBundle()); CryptoRecord rec = ck1.asCryptoRecord(); assertEquals(rec.collection, "crypto"); assertEquals(rec.guid, "keys"); JSONArray defaultKey = (JSONArray) rec.payload.get("default"); assertSame( Base64.decodeBase64((String) (defaultKey.get(0))), ck1.defaultKeyBundle().getEncryptionKey()); CollectionKeys ck2 = new CollectionKeys(); ck2.setKeyPairsFromWBO(rec, null); assertSame( ck1.defaultKeyBundle().getEncryptionKey(), ck2.defaultKeyBundle().getEncryptionKey()); }
@Test public void testCreateKeysBundle() throws CryptoException, NonObjectJSONException, IOException, ParseException, NoCollectionKeysSetException { String username = "******"; String friendlyBase32SyncKey = "basuxv2426eqj7frhvpcwkavdi"; KeyBundle syncKeyBundle = new KeyBundle(username, friendlyBase32SyncKey); CollectionKeys ck = CollectionKeys.generateCollectionKeys(); CryptoRecord unencrypted = ck.asCryptoRecord(); unencrypted.keyBundle = syncKeyBundle; CryptoRecord encrypted = unencrypted.encrypt(); CollectionKeys ckDecrypted = new CollectionKeys(); ckDecrypted.setKeyPairsFromWBO(encrypted, syncKeyBundle); // Compare decrypted keys to the keys that were set upon creation assertArrayEquals( ck.defaultKeyBundle().getEncryptionKey(), ckDecrypted.defaultKeyBundle().getEncryptionKey()); assertArrayEquals( ck.defaultKeyBundle().getHMACKey(), ckDecrypted.defaultKeyBundle().getHMACKey()); }