JWSHeader header = new JWSHeader(JWSAlgorithm.ES512);
header.setCustomParameter("exp", "2014-04-24");
header.setCriticalHeaders(new HashSet<String>(Arrays.asList("exp")));
KeyPair keyPair = createECKeyPair(EC512SPEC);
ECPublicKey publicKey = (ECPublicKey) keyPair.getPublic();
ECPrivateKey privateKey = (ECPrivateKey) keyPair.getPrivate();
JWSObject jwsObject = new JWSObject(header, new Payload("Hello world!"));
JWSSigner signer = new ECDSASigner(privateKey.getS());
jwsObject.sign(signer);
assertEquals(JWSObject.State.SIGNED, jwsObject.getState());
BigInteger x = publicKey.getW().getAffineX();
BigInteger y = publicKey.getW().getAffineY();
JWSVerifier verifier = new ECDSAVerifier(x, y);
boolean verified = jwsObject.verify(verifier);
assertFalse("Verified signature", verified);