	public void testSerializeAndParsePublicJWKSet()
		throws Exception {

		ECKey ecKey = new ECKey.Builder(ECKey.Curve.P_256,
			new Base64URL("abc"),
			new Base64URL("def"))
			.keyUse(KeyUse.ENCRYPTION)
			.algorithm(JWEAlgorithm.ECDH_ES)
			.keyID("1234")
			.build();

		RSAKey rsaKey = new RSAKey.Builder(new Base64URL("abc"), new Base64URL("def"))
			.keyUse(KeyUse.SIGNATURE)
			.algorithm(JWSAlgorithm.RS256)
			.keyID("5678")
			.build();

		JWKSet keySet = new JWKSet();

		keySet.getKeys().add(ecKey);
		keySet.getKeys().add(rsaKey);

		assertEquals(0, keySet.getAdditionalMembers().size());

		keySet.getAdditionalMembers().put("setID", "xyz123");

		assertEquals(1, keySet.getAdditionalMembers().size());

		String s = keySet.toString();
		
		keySet = JWKSet.parse(s);

		assertNotNull(keySet);
		assertEquals(2, keySet.getKeys().size());

		// Check first EC key
		ecKey = (ECKey)keySet.getKeys().get(0);
		assertNotNull(ecKey);
		assertEquals(ECKey.Curve.P_256, ecKey.getCurve());
		assertEquals("abc", ecKey.getX().toString());
		assertEquals("def", ecKey.getY().toString());
		assertEquals(KeyUse.ENCRYPTION, ecKey.getKeyUse());
		assertNull(ecKey.getKeyOperations());
		assertEquals(JWEAlgorithm.ECDH_ES, ecKey.getAlgorithm());
		assertEquals("1234", ecKey.getKeyID());

		// Check second RSA key
		rsaKey = (RSAKey)keySet.getKeys().get(1);
		assertNotNull(rsaKey);
		assertEquals("abc", rsaKey.getModulus().toString());
		assertEquals("def", rsaKey.getPublicExponent().toString());
		assertEquals(KeyUse.SIGNATURE, rsaKey.getKeyUse());
		assertNull(rsaKey.getKeyOperations());
		assertEquals(JWSAlgorithm.RS256, rsaKey.getAlgorithm());
		assertEquals("5678", rsaKey.getKeyID());

		// Check additional JWKSet members
		assertEquals(1, keySet.getAdditionalMembers().size());
		assertEquals("xyz123", (String)keySet.getAdditionalMembers().get("setID"));
	}
The software does not verify, or incorrectly verifies, the cryptographic signature for data.