# Endpoint de synchronisation PHP (lecture seule) Alternative au WebDAV pour distribuer l'instantané chiffré du coffre. Le serveur **ne déchiffre rien** : il sert des octets opaques. ## Installation 1. Copier `config.example.php` en `config.php`, y mettre un jeton : ```bash php -r "echo bin2hex(random_bytes(32)), PHP_EOL;" ``` 2. Créer le dossier de données **hors racine web** et y déposer l'instantané produit par l'application Windows (`vault-sync.json`). 3. Servir `sync.php` en HTTPS. Sans TLS, l'endpoint refuse la requête : le jeton circule dans un en-tête à chaque appel. ## Utilisation ``` GET /sync.php Authorization: Bearer ``` - **200** — le conteneur chiffré, avec un `ETag` fort. - **304** — si le client renvoie `If-None-Match` avec l'ETag qu'il détient. - **404** — pas encore d'instantané, *ou* jeton invalide. Les deux répondent pareil : un appelant non authentifié n'apprend pas si quelque chose existe ici. - **405** — toute autre méthode. L'écriture viendra avec le client bidirectionnel. ## Ce que le serveur voit Le conteneur est chiffré côté client (PBKDF2-SHA256 600 k + AES-GCM) avec le **mot de passe de sync**, qui n'est jamais transmis. Un serveur compromis livre donc du chiffré, plus ces métadonnées : la taille du fichier, sa date de modification, et la fréquence des synchronisations. Le jeton authentifie l'**appareil**, pas le coffre. Le voler donne accès au chiffré, pas au contenu. ## Étape suivante L'écriture demandera `PUT` avec `If-Match: ` — c'est ce qui empêche deux appareils de s'écraser mutuellement. Le client Windows sait déjà le faire : il capture l'ETag à la lecture et rejoue le cycle complet sur un **412** (`runSyncNow`, borné à 3 tentatives).