index updated (doc)

This commit is contained in:
NicolasCantu 2024-04-04 13:51:32 +02:00
parent 3c79a75819
commit 15a722ee33

View File

@ -23,21 +23,22 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 8. [Connexion via des tiers](#Connexionviadestiers)
* 9. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
* 10. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
* 11. [Wallet](#Wallet)
* 11.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
* 12. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
* 12.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
* 12.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
* 12.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
* 12.1.3. [Onboarding](#Onboarding-1)
* 12.2. [Member complété des champs du process sélectionné et mise à jour de la liste des Members du process](#MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess)
* 12.3. [Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
* 12.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
* 13. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
* 14. [Clés de third parties](#Clsdethirdparties)
* 15. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
* 16. [Exemples de Code](#ExemplesdeCode)
* 17. [Todo](#Todo)
* 11. [Principe de fonctionnement](#Principedefonctionnement)
* 12. [Wallet](#Wallet)
* 12.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
* 13. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
* 13.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
* 13.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
* 13.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
* 13.1.3. [Onboarding](#Onboarding-1)
* 13.2. [Member complété des champs du process sélectionné et mise à jour de la liste des Members du process](#MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess)
* 13.3. [Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
* 13.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
* 14. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
* 15. [Clés de third parties](#Clsdethirdparties)
* 16. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
* 17. [Exemples de Code](#ExemplesdeCode)
* 18. [Todo](#Todo)
<!-- vscode-markdown-toc-config
numbering=true
@ -113,7 +114,7 @@ Une image de révocation est générée à la création d'une identité pour pou
Le système ne maintiendra pas de session traditionnelle sur le serveur. La navigation de l'utilisateur persiste grâce à un cache local dans IndexedDB ou en mémoire, avec une politique de sécurité stricte forçant la resaisie du mot de passe après un rafraîchissement de la page ou une inactivité prolongée, déterminée par une durée maximale sans login.
## Principe de fonctionnement
## 11. <a name='Principedefonctionnement'></a>Principe de fonctionnement
A la création d'une identité numérique, l'utilisateur génère une clé privée Bitcoin pour les transactions SP (Silent Payments) et une clé privée pour la révocation de cette identité. Ces clés sont stockées dans les données exif d'une image de login et d'une image de révocation, respectivement.
@ -129,7 +130,7 @@ De même, les `PRDResponse` en réponse au `PRDUpdate` de la liste des `Member`
Si l'utilisateur a aussi envoyé un `PRDUpdate` de la liste des `Process`, les `PRDResponse` en réponse contiendront la valeur de leur signature pour valider ou non la demande de mise à jour de la liste des `Process` ainsi que les clés chiffrées des champs confidentiels des `Process`.
## 11. <a name='Wallet'></a>Wallet
## 12. <a name='Wallet'></a>Wallet
Les transactions SP ont besoin de 2 clés privées Bitcoin, l'une critique sur la dépense des jetons, l'autre qui lève la confidentialité (partageable dans certains cas) :
@ -158,7 +159,7 @@ Dans l'ordre on génère donc :
5. Clé privée de dépense mainnet `spend_mainnet`.
6. Clé privée de scan du mainnet `scan_mainnet`.
### 11.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
### 12.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
Le relais retournent des jetons à la connexion et à l'envoi de messages afin de créer les `UTXO` nécessaires pour les transactions SP.
@ -168,11 +169,11 @@ A chaque nouveau message il génère de nouvelles addresses pour la clé qui va
Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envoyés aux relais cf [Messages-Specs.md](Messages-Specs.md Messages Specs) pour la générantion d'une wallet temporaire qui versera les fonds reçus du faucet sur l'adresse silent payment de l'utilisateur.
## 12. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
## 13. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
### 12.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
### 13.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
#### 12.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
#### 13.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
La clé privée `spend_recover` est la clé principale pour forger les identités.
@ -204,15 +205,15 @@ pre_id=sha256(part1_spend_recover_enc, MDP, random_seed)
2. Création d'un `PrdList` par Member (1 shard par Member) par `Prd` cf [PRD-PCD](PRD-PCD-Specs.md PRD-PCD) :
#### 12.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
#### 13.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
Les relais initialisent le SDK (Wasm) par défaut avec une liste `ProcessList` contenant `Process` choisi.
Chacun de des managers des Members sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `PrdResponse` en réponse au `PrdList` envoyé.
#### 12.1.3. <a name='Onboarding-1'></a>Onboarding
#### 13.1.3. <a name='Onboarding-1'></a>Onboarding
### 12.2. <a name='MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess'></a>Member complété des champs du process sélectionné et mise à jour de la liste des Members du process
### 13.2. <a name='MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess'></a>Member complété des champs du process sélectionné et mise à jour de la liste des Members du process
Le role `Member` de `Process` sélectionné contient un `Item` avec des `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` contenant chacun une `render_template_list` dont le premier élément du tableau est le formulaire de création de l'identité pour champs concernés (publiques ou confidentiels ou privés).
@ -220,23 +221,23 @@ Ces formulaires permettront de créé les champs attendus par `condition_attribu
Une fois `Member` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `Process` sélectionné via un `PrdUpdate`.
### 12.3. <a name='ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
### 13.3. <a name='ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
Pour le ou les roles sélectionnés, l'attribut `request_prd_sp_address_list` de `condition_prd_address_set_list` est complété par l'adresse SP de l'utilisateur.
Une fois `Process` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `Process` sélectionné via un `PrdUpdate`.
### 12.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)
### 13.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)
Envoi d'un `PrdList` pour chaque Member de chaque rôle du process sélectionné.
## 13. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
## 14. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
Les clés de l'image de révocation sont chiffrées par le mot de passe et stockées directement dans les données exifs de l'image de révocation.
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `PrdList` mais la transaction SP est envoyée depuis l'adresse de révocation (la clé aura dû être chargée au préalable depuis l'interface).
## 14. <a name='Clsdethirdparties'></a>Clés de third parties
## 15. <a name='Clsdethirdparties'></a>Clés de third parties
Au moment de l'update de `Member` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `Process`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `Member`.
@ -244,7 +245,7 @@ Les clés privées associées sont générées lors de l'update d'un Member, à
Lorsqu'une transaction est reçue sur l'application de 2FA, celle-ci demande de confirmer ou non. Si il y a une confirmation dans l'interface alors une transaction SP est envoyée au dispositif initial, en dépensant l'UTXO reçue et avec les mêmes Hash dans les outputs que la transaction reçue afin que le dispositif initial puisse collecter les `Prd` concernés.
## 15. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
## 16. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
Pour recrééer sa clé privée et envoyer un `PrdList` à chaque Member du rôle `Member` du process, il faut réaliser les opérations suivantes :
@ -265,8 +266,8 @@ Puis depuis la liste des Members du process, pour chacun des Members :
6.4. Concaténation de `Part1` et `Part2`
7. Réception des flux PCD et PRDResponse des gestionnaires des Members
## 16. <a name='ExemplesdeCode'></a>Exemples de Code
## 17. <a name='ExemplesdeCode'></a>Exemples de Code
## 17. <a name='Todo'></a>Todo
## 18. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.