KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(512);
KeyPair keyPair = keyGen.genKeyPair();
RSAPublicKey publicKey = (RSAPublicKey)keyPair.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey)keyPair.getPrivate();
RSAKey key = new RSAKey.Builder(publicKey).
privateKey(privateKey).
keyUse(null).
keyOperations(ops).
algorithm(JWSAlgorithm.RS256).
keyID("1").
x509CertURL(x5u).
x509CertThumbprint(x5t).
x509CertChain(x5c).
build();
// Test getters
assertNull(key.getKeyUse());
assertTrue(key.getKeyOperations().contains(KeyOperation.SIGN));
assertTrue(key.getKeyOperations().contains(KeyOperation.VERIFY));
assertEquals(2, key.getKeyOperations().size());
assertEquals(JWSAlgorithm.RS256, key.getAlgorithm());
assertEquals("1", key.getKeyID());
assertEquals(x5u.toString(), key.getX509CertURL().toString());
assertEquals(x5t.toString(), key.getX509CertThumbprint().toString());
assertEquals(x5c.size(), key.getX509CertChain().size());
assertTrue(publicKey.getModulus().equals(key.getModulus().decodeToBigInteger()));
assertTrue(publicKey.getPublicExponent().equals(key.getPublicExponent().decodeToBigInteger()));
assertTrue(privateKey.getPrivateExponent().equals(key.getPrivateExponent().decodeToBigInteger()));
assertTrue(key.getOtherPrimes().isEmpty());
assertTrue(key.isPrivate());
String jwkString = key.toJSONObject().toString();
key = RSAKey.parse(jwkString);
// Test getters
assertNull(key.getKeyUse());
assertTrue(key.getKeyOperations().contains(KeyOperation.SIGN));
assertTrue(key.getKeyOperations().contains(KeyOperation.VERIFY));
assertEquals(2, key.getKeyOperations().size());
assertEquals(JWSAlgorithm.RS256, key.getAlgorithm());
assertEquals("1", key.getKeyID());
assertEquals(x5u.toString(), key.getX509CertURL().toString());
assertEquals(x5t.toString(), key.getX509CertThumbprint().toString());
assertEquals(x5c.size(), key.getX509CertChain().size());
assertTrue(publicKey.getModulus().equals(key.getModulus().decodeToBigInteger()));
assertTrue(publicKey.getPublicExponent().equals(key.getPublicExponent().decodeToBigInteger()));
assertTrue(privateKey.getPrivateExponent().equals(key.getPrivateExponent().decodeToBigInteger()));
assertTrue(key.getOtherPrimes().isEmpty());
assertTrue(key.isPrivate());
}