ClicInSitu
Veiligheid & privacy

Het .clicinsitu-bestandsformaat

Een sjabloon dat vanuit de app wordt gedeeld, of dat u van MVT Conseil krijgt, reist in een .clicinsitu-bestand. Dat bestand is gecodeerd en ondertekend, niet versleuteld: u kunt het zelf lezen, zonder ons.

Wat er in het bestand zit

  1. Eén enkele regel UTF-8-tekst: CLICINSITU_PACK_V1:<inhoud>[.<handtekening>]. Extensie .clicinsitu, type application/vnd.clicinsitu.
  2. De inhoud: de sjablonen in JSON-formaat, gecomprimeerd (gzip) en daarna geschreven in base64url zonder opvulling — precies dezelfde codering als die van de sjabloon-QR-codes.
  3. De JSON: een lijst van sjablonen, of een object {"schema": "clicinsitu/pack/v1", "meta": {…}, "models": […]}. De namen van de sjablonen, de gegevens die ze vragen, hun ontvangers en hun e-mailteksten staan er leesbaar in.
  4. De handtekening, optioneel: ECDSA P-256 (SHA256withECDSA) over de bytes van de inhoud, met de sleutel van MVT Conseil. Geldig: de app toont ‘Door ClicInSitu gecertificeerd sjabloon’. Afwezig: ‘Sjabloon gedeeld door een gebruiker’. Aanwezig maar ongeldig: het bestand wordt geweigerd.
  5. De limieten: 512 KB per bestand, 2 MB JSON, 100 sjablonen, en dezelfde controles als bij een QR-code. Een bestand schakelt de vergrendelde configuratie niet in en bevat geen pincode.

Een bestand lezen

U hebt de app niet nodig om het te lezen; drie regels Python volstaan:

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

Publieke sleutel om de handtekeningen te verifiëren (X.509, base64):

MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErIab062yMtMF0y1xXYI3OVA6Nsl6Ec3FW3nFWlgm9wuOlNo9HJdOjp+4YNpkctfFt443k5gstoMw1/ljh8W/uw==

Een gedocumenteerd formaat, geen afhankelijkheid: uw sjablonen zijn van u. De handtekening vertelt waar een bestand vandaan komt; ze verbergt er niets van.

Terug naar Veiligheid & privacy.