# UserWallet – Acceptation d'une version d'objet et validateurs **Author:** Équipe 4NK **Date:** 2026-01-26 ## Règle On ne peut accepter une version d'un objet que si elle est **signée des validateurs conformément aux conditions de signatures de cette action de validation**. ## Concrètement - **Objets concernés** : tout message « à valider » (`MessageAValider`) : Contrat, Champ, Action, Membre. Chacun porte un champ `validateurs` (membres_du_role, signatures_obligatoires). - **Acceptation** : lors du sync, un message est ajouté au graphe uniquement si : 1. Hash canonique et timestamp valides ; 2. Pour un `MessageAValider` : les signatures jointes (fetch par hash) satisfont les validateurs : - au moins une `cle_publique` dans les `signatures_obligatoires` (sinon on ne peut pas vérifier) ; - toutes les signatures sont crypto-valides et leurs clés sont autorisées par les validateurs ; - au moins une signature autorisée (refus si aucune). - **Refus** : si validateurs présents mais non vérifiables (aucune `cle_publique`), ou signatures manquantes / non autorisées → message **non** ajouté au graphe, compté « non valide ». ## Implémentation - **`utils/validatorsAccept`** : `buildAllowedPubkeysFromValidateurs`, `canVerifyValidateurs`, `validateSignaturesAgainstValidateurs`, `getValidateursIfMessageAValider`, `validateMessageAValiderForSync`. - **`syncValidate` / `syncUpdateGraph` / `SyncService`** : `validateDecryptedMessage` puis `updateGraphFromMessage` ; pour `MessageAValider`, exige signatures et conformité validateurs ; pour Service / Pair, hash + timestamp + crypto seul si sigs présentes. ## Limites actuelles - **Cardinalité et dépendances** : non appliquées lors du sync (nécessitent résolution pairs / graphe). Seule la conformité « clés autorisées » + au moins une sig est vérifiée. - **Pairs** : la résolution pair ↔ membre n’est pas utilisée en sync ; seules les `cle_publique` explicites dans `signatures_obligatoires` le sont. ## Références - `userwallet/docs/specs.md` : validateurs, « Contrat invalide (hash/signature/validateurs non satisfaits) », « Interdire l’acceptation d’une signature valide cryptographiquement mais non autorisée contractuellement ». - `features/userwallet-validation-conformite.md` : validation login, clés autorisées, cardinalité.