anchorage_layer_simple/userwallet/features/userwallet-acceptation-version-validateurs.md
ncantu 5de870fa13 Update login state machine and add new login components
**Motivations:**
- Continue implementation of login state machine
- Add new login components for collect, share and sign screens
- Add utilities for login signing, validation, and publishing
- Update documentation for CNIL compliance and login workflow
- Add features for timeouts, backoff, and validator acceptance

**Root causes:**
- N/A (feature additions and improvements)

**Correctifs:**
- Update login state machine implementation
- Update graph resolver and sync service

**Evolutions:**
- Add LoginCollectShare and LoginSignScreen components
- Add useSignAndPostLogin hook
- Add login utilities: loginSign, loginPublish, loginValidation, collectSignatures
- Add sync utilities: syncUpdateGraph, syncValidate
- Add validatorsAccept utility
- Update App.tsx and LoginScreen.tsx
- Update loginBuilder and loginStateMachine services
- Add documentation for CNIL compliance, remote collection, timeouts, and validator acceptance
- Update identity types

**Pages affectées:**
- userwallet/src/App.tsx
- userwallet/src/components/LoginScreen.tsx
- userwallet/src/components/LoginCollectShare.tsx (new)
- userwallet/src/components/LoginSignScreen.tsx (new)
- userwallet/src/hooks/useSignAndPostLogin.ts (new)
- userwallet/src/services/graphResolver.ts
- userwallet/src/services/loginBuilder.ts
- userwallet/src/services/loginStateMachine.ts
- userwallet/src/services/syncService.ts
- userwallet/src/services/syncUpdateGraph.ts (new)
- userwallet/src/services/syncValidate.ts (new)
- userwallet/src/types/identity.ts
- userwallet/src/utils/relay.ts
- userwallet/src/utils/collectSignatures.ts (new)
- userwallet/src/utils/loginPublish.ts (new)
- userwallet/src/utils/loginSign.ts (new)
- userwallet/src/utils/loginValidation.ts (new)
- userwallet/src/utils/validatorsAccept.ts (new)
- userwallet/docs/synthese.md
- userwallet/docs/specs-champs-obligatoires-cnil.md
- userwallet/features/userwallet-acceptation-version-validateurs.md (new)
- userwallet/features/userwallet-dh-systematique-scan-fetch.md (new)
- features/userwallet-contrat-login-reste-a-faire.md
- features/userwallet-login-state-machine.md
- features/userwallet-validation-conformite.md
- features/userwallet-champs-obligatoires-cnil.md (new)
- features/userwallet-collecte-distante-2-devices.md (new)
- features/userwallet-timeouts-backoff.md (new)
- mempool (submodule)
- hash_list.txt
- hash_list_cache.txt
2026-01-26 15:04:07 +01:00

2.3 KiB
Raw Permalink Blame History

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 nest 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 lacceptation dune signature valide cryptographiquement mais non autorisée contractuellement ».
  • features/userwallet-validation-conformite.md : validation login, clés autorisées, cardinalité.