Así que estoy tratando de construir un servidor de licencias, donde las licencias de las aplicaciones deben verificarse al iniciar sesión o cuando la aplicación se usa. Pero algunas de esas aplicaciones funcionan sin conexión la mayor parte del tiempo, por lo que necesito tener algún tipo de 'almacenamiento en caché' de la última comprobación de la licencia con una fecha en la que la próxima licencia debería verificarse (digamos que cada semana). Por el momento, estoy almacenando esto en la base de datos de la aplicación, pero debo asegurarme de que el usuario de la aplicación no pueda cambiar esa 'próxima fecha de verificación'.
Entonces se me ocurrió la siguiente idea: cuando una licencia necesita ser verificada (porque ha pasado más de una semana), el servidor verificará la licencia y decidirá la "próxima fecha de verificación". Luego cifrará esa fecha y la enviará a la aplicación que la almacenará en la base de datos. Luego, cuando se utilizará la aplicación, obtendrá esa fecha cifrada, luego la desencripta y la verifica. Entonces, cuando la aplicación intenta cifrar una fecha por sí mismo, no podrá descifrar porque no usa la misma clave que el servidor usó para cifrar.
Al principio pensé que tenía una clave privada en el servidor y una clave pública en la aplicación, pero luego no sería encriptación sino en firma, y eso implicaría enviar la fecha en texto claro, que no es lo que hago. querer. ¿O hay una manera de usar la firma que la aplicación no puede cambiar la fecha?