Licencias

Svitrio puede actuar como autoridad de licencias para tu producto: cada proyecto contiene una clave de firma Ed25519 y estampa un token firmado y verificable sin conexión en cada licencia. Tu producto verifica con la clave pública del proyecto — sin necesidad de llamar a casa — y opcionalmente puede sondear un endpoint de estado para observar la revocación. Opt-in por proyecto.

Productos y licencias

Define products, luego emite licenses con un public_ref como LIC-7GK2MQ, un plan, seats, datos del cliente y una expiración opcional. El status de una licencia (active / suspended / revoked) solo se mueve a través de una máquina de estados (POST /licenses/{id}/transition); expired se deriva en el momento de la verificación, nunca se almacena.

Formatos

Las mismas claims firmadas se pueden entregar de tres maneras, autodetectadas al verificar:

  • svl1 — un token svl1.<payload>.<sig> compacto (la etiqueta de versión está dentro de la región firmada, lo que bloquea el downgrade).

  • jwt — un JWT EdDSA (RFC 8037); solo se acepta EdDSA, lo que cierra los ataques de confusión de algoritmo.

  • x509 — una hoja PEM firmada por la CA autofirmada del proyecto, con las claims en una extensión de certificado.

Superficies de verificación

Público, sin autenticar: GET /api/p/{ref}/licenses/status?ref=LIC-… (revocación), /licenses/jwks (verifica el formato JWT) y /licenses/ca.pem (verifica el formato x509).