package jwt4j.checkers;
import com.google.gson.JsonObject;
import jwt4j.JWTConstants;
import jwt4j.TokenChecker;
import jwt4j.exceptions.ExpiredTokenException;
import jwt4j.exceptions.InvalidTokenException;
import java.time.Instant;
public class ExpirationChecker implements TokenChecker
{
private final int leewaySeconds;
public ExpirationChecker(final int leewaySeconds)
{
this.leewaySeconds = leewaySeconds;
}
@Override
public void check(JsonObject payloadJson)
{
final long timeout;
if (payloadJson.has(JWTConstants.EXPIRATION)) {
timeout = Instant.now().getEpochSecond() -
payloadJson.get(JWTConstants.EXPIRATION).getAsInt() -
leewaySeconds;
} else {
throw new InvalidTokenException("Required expiration (exp) claim not found");
}
if (timeout > 0) {
throw new ExpiredTokenException("Expired of " + timeout + " seconds");
}
}
}