ClicInSitu
Seguridad y privacidad

El formato de archivo .clicinsitu

Una plantilla compartida desde la aplicación, o entregada por MVT Conseil, viaja en un archivo .clicinsitu. Ese archivo está codificado y firmado, no cifrado: puede leerlo sin nosotros.

Qué contiene el archivo

  1. Una sola línea de texto UTF-8: CLICINSITU_PACK_V1:<contenido>[.<firma>]. Extensión .clicinsitu, tipo application/vnd.clicinsitu.
  2. El contenido: las plantillas en formato JSON, comprimidas (gzip) y escritas después en base64url sin relleno, exactamente la misma codificación que los códigos QR de plantilla.
  3. El JSON: una lista de plantillas, o un objeto {"schema": "clicinsitu/pack/v1", "meta": {…}, "models": […]}. Los nombres de las plantillas, la información que piden, sus destinatarios y los textos de sus correos se leen en claro.
  4. La firma, opcional: ECDSA P-256 (SHA256withECDSA) de los bytes del contenido, con la clave de MVT Conseil. Si es válida, la aplicación muestra «Plantilla certificada por ClicInSitu». Si no hay firma: «Plantilla compartida por un usuario». Si hay firma pero es falsa, el archivo se rechaza.
  5. Los límites: 512 KB por archivo, 2 MB de JSON, 100 plantillas, y los mismos controles que un código QR. Un archivo no activa la Configuración bloqueada y no contiene ningún código PIN.

Leer un archivo

No necesita la aplicación para leerlo: bastan tres líneas de Python.

import base64, gzip, json
contenido = open("modele.clicinsitu", encoding="utf-8").read().strip().split(":", 1)[1].split(".")[0]
print(json.dumps(json.loads(gzip.decompress(base64.urlsafe_b64decode(contenido + "=="))), indent=2, ensure_ascii=False))

Clave pública para verificar las firmas (X.509, base64):

MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErIab062yMtMF0y1xXYI3OVA6Nsl6Ec3FW3nFWlgm9wuOlNo9HJdOjp+4YNpkctfFt443k5gstoMw1/ljh8W/uw==

Un formato documentado, sin ninguna dependencia: sus plantillas son suyas. La firma indica de dónde viene un archivo; no oculta nada.

Volver a Seguridad y privacidad.