All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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