anchorage_layer_simple/features/userwallet-validation-conformite.md
ncantu c3c11f0ef0 Update userwallet components, services and documentation
**Motivations:**
- Add new features and fixes for userwallet application
- Update documentation for pairing, login state machine, and sync
- Add new utilities for bloom filters, nonce store, and contract versioning
- Fix mempool websocket offline issues

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

**Correctifs:**
- Fix mempool websocket offline handling
- Update ESLint configuration

**Evolutions:**
- Add login state machine service and hook
- Add sync loop service
- Add bloom filter utilities for anti-replay and state visibility
- Add nonce store and contract version utilities
- Update pairing confirmation and graph resolver services
- Add new documentation for features and fixes
- Update userwallet components (LoginScreen, SyncScreen)
- Update types for contract, identity, and messages

**Pages affectées:**
- userwallet/src/components/LoginScreen.tsx
- userwallet/src/components/SyncScreen.tsx
- userwallet/src/hooks/useChannel.ts
- userwallet/src/hooks/useLoginStateMachine.ts (new)
- userwallet/src/services/graphResolver.ts
- userwallet/src/services/pairingConfirm.ts
- userwallet/src/services/syncService.ts
- userwallet/src/services/syncLoop.ts (new)
- userwallet/src/services/loginStateMachine.ts (new)
- userwallet/src/types/contract.ts
- userwallet/src/types/identity.ts
- userwallet/src/types/message.ts
- userwallet/src/utils/canonical.ts
- userwallet/src/utils/identity.ts
- userwallet/src/utils/indexedDbStorage.ts
- userwallet/src/utils/relay.ts
- userwallet/src/utils/verification.ts
- userwallet/src/utils/bloom.ts (new)
- userwallet/src/utils/contractVersion.ts (new)
- userwallet/src/utils/nonceStore.ts (new)
- userwallet/eslint.config.mjs
- userwallet/package.json
- userwallet/package-lock.json
- userwallet/docs/synthese.md
- userwallet/docs/specs-champs-obligatoires-cnil.md (new)
- api-relay/README.md
- features/userwallet-pairing-words-only-finalise.md
- features/userwallet-anti-rejeu-etats-visibles-bloom.md (new)
- features/userwallet-bloom-usage-sync.md (new)
- features/userwallet-contrat-login-reste-a-faire.md (new)
- features/userwallet-ecrans-login-a-valider.md (new)
- features/userwallet-eslint-fix.md (new)
- features/userwallet-login-state-machine.md (new)
- features/userwallet-validation-conformite.md (new)
- fixKnowledge/mempool-websocket-offline-fix.md (new)
- mempool (submodule)
- hash_list.txt
- hash_list_cache.txt
2026-01-26 14:00:32 +01:00

2.2 KiB
Raw Blame History

UserWallet Validation et conformité (3.5)

Author: Équipe 4NK
Date: 2026-01-26

Objectif

Renforcer la validation : validateurs stricts, clé autorisée, version des contrats (specs).

Impacts

  • Clé autorisée : vérification stricte des signatures avant publication login ; rejet si cle_publique non autorisée par les validateurs (X_PUBKEY_NOT_AUTHORIZED).
  • Version contrats : contrats en version non supportée exclus du graphe (sync) ; affichage de la version dans le chemin login.

Modifications

Vérification stricte

  • utils/verification.ts : filterSignaturesByAuthorizedPubkeys, verifyMessageSignaturesStrict. Garde verifyMessageSignatures (crypto seule) pour usage générique.
  • LoginScreen : avant publish, si loginPath.signatures_requises comporte des cle_publique, construction de allowedPubkeys ; appel à verifyMessageSignaturesStrict sur la preuve ; si aucune signature autorisée ou présence de non autorisées → erreur X_PUBKEY_NOT_AUTHORIZED, pas de publication.

Version contrats

  • utils/contractVersion.ts : SUPPORTED_CONTRACT_VERSIONS (ex. ['1.0']), isContractVersionSupported(version).
  • SyncService.updateGraph : pour chaque message de type contrat, test isContractVersionSupported ; si non supporté, log warning et skip (contrat isolé, non ajouté au graphe).
  • LoginPath : ajout de contrat_version?: string. GraphResolver.resolveLoginPath renseigne contrat_version dès quun contrat est résolu.
  • LoginScreen : affichage « Version contrat » dans la section chemin lorsque contrat_version est défini.

Modalités de déploiement

Déploiement classique du front userwallet.

Modalités danalyse

  • Contrat en base avec version non supportée → sync : log « Contrat … version … not supported, skipped », absent du graphe.
  • Login path résolu avec contrat → « Version contrat » affiché.
  • Preuve avec signature dont cle_publique hors validateurs (si cle_publique dans requirements) → X_PUBKEY_NOT_AUTHORIZED avant publish.

Références

  • features/userwallet-contrat-login-reste-a-faire.md (§ 3.5)
  • userwallet/docs/specs.md (validateurs, version)