
org.bitbucket.gkutiel.Jws Maven / Gradle / Ivy
package org.bitbucket.gkutiel;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.Base64.getEncoder;
import static java.util.Optional.empty;
import static java.util.Optional.of;
import java.util.Optional;
import javax.crypto.Mac;
import com.google.gson.Gson;
public interface Jws {
@SuppressWarnings("unused") public static class Token {
final String data;
final String sig;
Token(final String data, final String sig) {
this.data = data;
this.sig = sig;
}
}
static final Gson gson = new Gson();
default Optional getData(final Token token, final Class c) {
return sign(token.data).equals(token.sig) ? of(gson.fromJson(token.data, c)) : empty();
}
Mac getMac();
default String sign(final String data) {
return getEncoder().encodeToString(getMac().doFinal(data.getBytes(UTF_8)));
}
default Token token(final T t) {
final String data = gson.toJson(t);
return new Token<>(data, sign(data));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy