CryptoTestHelper.java
package com.auth0.jwt.algorithms;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.fail;
public abstract class CryptoTestHelper {
private static final Pattern authHeaderPattern = Pattern.compile("^([\\w-]+)\\.([\\w-]+)\\.([\\w-]+)");
public static String asJWT(Algorithm algorithm, String header, String payload) {
byte[] signatureBytes = algorithm.sign(header.getBytes(StandardCharsets.UTF_8), payload.getBytes(StandardCharsets.UTF_8));
String jwtSignature = Base64.getUrlEncoder().withoutPadding().encodeToString(signatureBytes);
return String.format("%s.%s.%s", header, payload, jwtSignature);
}
public static void assertSignatureValue(String jwt, String expectedSignature) {
String jwtSignature = jwt.substring(jwt.lastIndexOf('.') + 1);
assertThat(jwtSignature, is(expectedSignature));
}
public static void assertSignaturePresent(String jwt) {
Matcher matcher = authHeaderPattern.matcher(jwt);
if (!matcher.find() || matcher.groupCount() < 3) {
fail("No signature present in " + jwt);
}
assertThat(matcher.group(3), not(is(emptyString())));
}
}