System.out.println("JWS header: " + header.toJSONObject());
// Create JWS object
JWSObject jwsObject = new JWSObject(header, payload);
// Create HMAC signer
String sharedKey = "a0a2abd8-6162-41c3-83d6-1cf559b46afc";
System.out.println("HMAC key: " + sharedKey);
JWSSigner signer = new MACSigner(sharedKey.getBytes());
try {
jwsObject.sign(signer);
} catch (JOSEException e) {
System.err.println("Couldn't sign JWS object: " + e.getMessage());
return;
}
// Serialise JWS object to compact format
String s = jwsObject.serialize();
System.out.println("Serialised JWS object: " + s);
// Parse back and check signature
try {
jwsObject = JWSObject.parse(s);
} catch (ParseException e) {
System.err.println("Couldn't parse JWS object: " + e.getMessage());
return;
}
System.out.println("JWS object successfully parsed");
JWSVerifier verifier = new MACVerifier(sharedKey.getBytes());
boolean verifiedSignature = false;
try {
verifiedSignature = jwsObject.verify(verifier);
} catch (JOSEException e) {
System.err.println("Couldn't verify signature: " + e.getMessage());
}
if (verifiedSignature) {
System.out.println("Verified JWS signature!");
}
else {
System.out.println("Bad JWS signature!");
return;
}
System.out.println("Recovered payload message: " + jwsObject.getPayload());
}