WIP (doc)

This commit is contained in:
NicolasCantu 2024-02-16 18:15:04 +01:00
parent 664e50775f
commit ea801d3b6e
12 changed files with 96 additions and 79 deletions

View File

@ -33,7 +33,7 @@ Ce système couvrira la conception et le développement de l'architecture d'auth
## 3. <a name='Documentsderfrence'></a>Documents de référence ## 3. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='Authentificationdesutilisateurs'></a>Authentification des utilisateurs ## 4. <a name='Authentificationdesutilisateurs'></a>Authentification des utilisateurs

View File

@ -24,7 +24,7 @@
## 3. <a name='Documentsderfrence'></a>3. Documents de référence ## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
### 3.1. <a name='TypesdItems'></a>Types d'Items ### 3.1. <a name='TypesdItems'></a>Types d'Items

View File

@ -60,7 +60,7 @@ Ce document concerne les messages de type `Message` et de type `MessageConnect`
## 3. <a name='Documentsderfrence'></a>3. Documents de référence ## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='4.VariableSharedPeerListduSDKWasm'></a>## 4. Variable `SharedPeerList` du SDK (Wasm) ## 4. <a name='4.VariableSharedPeerListduSDKWasm'></a>## 4. Variable `SharedPeerList` du SDK (Wasm)

View File

@ -52,7 +52,7 @@ La spécification couvre la conception, le développement, et l'application prat
## 3. <a name='Documentsderfrence'></a>3. Documents de référence ## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='CommunauxRequestPcdetRequestPrd'></a>Commun aux `RequestPcd` et RequestPrd ## 4. <a name='CommunauxRequestPcdetRequestPrd'></a>Commun aux `RequestPcd` et RequestPrd
@ -92,10 +92,10 @@ Les `Item` ainsi échangés via les `RequestPcd` sont vérifiés par les `Reques
La création d'un `RequestPcd` suit plusieurs étapes : La création d'un `RequestPcd` suit plusieurs étapes :
1. **Chargement de la dernière version de la liste ( RequestPcd)**: Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage. 1. Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage.
2. **Mise à jour**: Ajouts et modifications eventuelles des `Item` 2. Ajouts et modifications eventuelles des `Item`
3. **Chiffrement des attributs**: Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)). 3. Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
4. **Chiffrement du RequestPcd**: Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné. 4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
5. Traitements communs aux `RequestPcd` et RequestPrd 5. Traitements communs aux `RequestPcd` et RequestPrd
### 5.2. <a name='Rception-1'></a>Réception ### 5.2. <a name='Rception-1'></a>Réception
@ -146,15 +146,16 @@ Tous les échanges sont complétés de l'empreinte du device de l'emetteur envoy
La création d'un `RequestPrd` suit plusieurs étapes : La création d'un `RequestPrd` suit plusieurs étapes :
1. **Chargement des clés de chiffrement confidentiel'**: Récupération des clés de chiffrement confidentiel des attributs des items d'un RequestPcd. 1. Récupération des clés de chiffrement confidentiel des attributs des items d'un RequestPcd.
2. **Chiffrement du RequestPrd**: Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné. 2. Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné.
3. **Création de l'adresse SP**: Création d'une`adresse SP` SP pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain. 3. Création d'une`adresse SP` SP pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain.
4. **Création du message**: Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, l'adresse de faucet 4. Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, l'adresse de faucet
5. **Sélection des relais pour le message**: Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées. 5. Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
6. **Sélection des noeuds de signet pour la transaction silent Payment (SP) \***: (Sauf `RequestPRDKeyBackup`) Sélection de 4 noeuds de signet pour l'envoi de la`transaction SP`. 6. Sélection de 4 noeuds de signet pour l'envoi de la`transaction SP`.
7. **Chiffrement des données confidentielles du `request_prd`**: Chiffrement des données confidentielles du `request_prd` avec la `KeyConfidential` de la`transaction SP`. 7. Chiffrement des données confidentielles du `request_prd` avec la `KeyConfidential` de la`transaction SP`.
8. **Envoi du message**: Envoi du message aux relais 8. Envoi du message aux relais
9. **Envoi de la transaction**: envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la`transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`. 9. Envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la`transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`.
10. Mis à jour du cache avec les nouveaux `RequestPrd` envoyé (pas de mis en cache du `RequestPrdMessage`)
Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md). Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md).
@ -170,8 +171,9 @@ La réception d'un `RequestPcd` suit plusieurs étapes :
6. Recherche de l'`Item` associé via `item_reference_hash` et attente si nécessaire et traitement de celui ci. 6. Recherche de l'`Item` associé via `item_reference_hash` et attente si nécessaire et traitement de celui ci.
7. (Sauf `RequestPRDKeyBackup`) Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential` de la`transaction SP` correspondante via hash du `RequestPrd` dans l'output `2` de la transaction. 7. (Sauf `RequestPRDKeyBackup`) Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential` de la`transaction SP` correspondante via hash du `RequestPrd` dans l'output `2` de la transaction.
8. Mise à jour du cache pour les traitement des RequestPrd. 8. Mise à jour du cache pour les traitement des RequestPrd.
9. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md). 9. Voir `RequestPrdConfirm` création et envoi (sauf pour les `RequestPrdConfirm` et les `RequestPrdKeyBackup` et les `RequestPrdMessage` ayant un `raw_transaction_list` non vide).
10. Traitements spécifiques au type de RequestPrd. 10. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
11. Traitements spécifiques au type de RequestPrd.
## 7. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd) ## 7. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd)
@ -179,20 +181,18 @@ Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de
### 7.1. <a name='Crationetenvoi-1'></a>Création et envoi ### 7.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdList`. 1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdList` et envoi vers tous les `members` concernés par le `ItemProcess` pour le `Role` correspondant dans le `item_name`
2. Attente du `RequestPrdResponse` avec le `RequestPcd` demandés.
3. voir `RequestPrdResponse` réception.
4. Voir `RequestPcd` réception.
### 7.2. <a name='Rception-1'></a>Réception ### 7.2. <a name='Rception-1'></a>Réception
La réception d'un `RequestPrdList` suit plusieurs étapes : La réception d'un `RequestPrdList` suit plusieurs étapes :
1. Traitements des `RequestPrd` 1. Traitements des `RequestPrd`
2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList` et envoie de la`transaction SP` associée avec 2. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
3. Recherche en cache de la dernière version de la liste du type d'`Item` concerné. 3. Voir `RequestPcd` Création et envoi vers l'émetteur du `RequestPrdList`.
4. Création et envoi d'un `RequestPcd` avec la dernière version de la liste du type d'`Item` concerné.
5. Création et envoi à l'émetteur du `RequestPrdList` d'un `RequestPrdRResponse` avec :
5.1. le hash du `RequestPcd` envoyé dans l'attribut `RequestPcd_reference_hash`
5.2. le hash du `RequestPrdList` reçu dans l'attribut `request_prd_origin_hash`
6. Mise à jour du cache avec les nouveaux `RequestPcd` et `RequestPrdResponse` et `RequestPrdConfirm` envoyés.
## 8. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages ## 8. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
@ -206,17 +206,17 @@ Les `RequestPrdMessage` répondent aux `RequestPrdMessage` sauf en cas d'envoi d
### 8.1. <a name='Crationetenvoi-1'></a>Création et envoi ### 8.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage`. 1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage` vers l'emméteur du `RequestPrdMessage`.
2. Attente du `RequestPrdMessage` éventuel (sauf en cas d'envoi d'une `transaction SP`).
3. Le cas échéant : voir `RequestPrdMessage` Réception
### 8.2. <a name='Rception-1'></a>Réception ### 8.2. <a name='Rception-1'></a>Réception
La réception d'un `RequestPrdMessage` suit plusieurs étapes : La réception d'un `RequestPrdMessage` suit plusieurs étapes :
1. Traitements des `RequestPrd` 1. Traitements des `RequestPrd`
2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList`. 2. Notification et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
3. Notificaiton et attente du retour de l'utilisateur (valeur de la signature et message de réponse) 3. Le cas échéant : voir `RequestPrdMessage` création et envoi vers l'emméteur du `RequestPrdMessage`.
4. Le cas échéant : création et envoi à l'émetteur du `RequestPrdMessage` d'un `RequestPrdMessage` avec :
5.1. le hash du `RequestPrdMessage` reçu dans l'attribut `request_prd_origin_hash`
## 9. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd ## 9. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd
@ -232,10 +232,20 @@ Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_versi
### 9.1. <a name='Crationetenvoi-1'></a>Création et envoi ### 9.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`. 1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`, création d'une nouvelle version de `RequestPcd` et envoi (vers tous les `members` concernés par le `ItemProcess` pour le `Role` correspondant dans le `item_name`)
2. Attente des `RequestPrdResponse` de l'ensemble des `members` concernés (`Role` correspondant dans le `ItemProcess` ).
3. Voir `RequestPrdResponse` Réception
4. Voir `RequestPcd` Réception.
### 9.2. <a name='Rception-1'></a>Réception ### 9.2. <a name='Rception-1'></a>Réception
La réception d'un `RequestPrdUpdate` suit plusieurs étapes :
1. Traitements des `RequestPrd`
2. Notification et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
3. Voir `RequestPrdResponse` création et envoi vers tous les membres de tous les roles du `ItemProcess`.
## 10. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception ## 10. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
Le `RequestPrdConfirm` est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau. Le `RequestPrdConfirm` est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau.
@ -246,10 +256,12 @@ Les `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdMessage`, `RequestPrdRespon
### 10.1. <a name='Crationetenvoi-1'></a>Création et envoi ### 10.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm`. 1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm` envoi vers l'emméteur du `RequestPrd`.
### 10.2. <a name='Rception-1'></a>Réception ### 10.2. <a name='Rception-1'></a>Réception
Traitements des `RequestPrd`, pas de traitement suppplémentaire.
## 11. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande ## 11. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
Le `RequestPrdResponse` permet de répondre spécifiquement à des `RequestPrd` reçus, facilitant un échange interactif d'informations ou de décisions entre les parties. Le `RequestPrdResponse` permet de répondre spécifiquement à des `RequestPrd` reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
@ -262,11 +274,15 @@ Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, pui
### 11.1. <a name='Crationetenvoi-1'></a>Création et envoi ### 11.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse`. 1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse` et envoi en fonction du type de `RequestPrd` d'origine.
2. Pas de traitement supplémentaire.
### 11.2. <a name='Rception-1'></a>Réception ### 11.2. <a name='Rception-1'></a>Réception
## 12. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyHelloBakcup 1. Traitements des `RequestPrd`
2. Notification de l'utilisateur.
## 12. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyBakcup
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` . Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
@ -292,5 +308,6 @@ Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdKey
## 15. <a name='Todo'></a>Todo ## 15. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels. * [ ] Ajouter un tableau : transaction SP, confirmation attendue, réponse attendue, création vers, réponse vers.
* [ ] Compléter RequestPrdKeyHelloBakcup et RequestPrdKeyHello
* [ ] Diagrammes de séquences * [ ] Diagrammes de séquences

View File

@ -39,7 +39,7 @@ Cette section vise à présenter en détail les Documents de Contrat Portable (
## 3. <a name='Documentsderfrence'></a>3. Documents de référence ## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='RlesetSous-Rles'></a>Rôles et Sous-Rôles ## 4. <a name='RlesetSous-Rles'></a>Rôles et Sous-Rôles

View File

@ -19,7 +19,7 @@
## 3. <a name='Documentsderfrence'></a>Documents de référence ## 3. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='Fontion'></a> Fontion ## 4. <a name='Fontion'></a> Fontion

View File

@ -22,7 +22,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence ## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Gestiondeserreurs'></a>Gestion des erreurs ## 2. <a name='Gestiondeserreurs'></a>Gestion des erreurs

View File

@ -15,7 +15,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence ## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Spcifique4NK'></a>Spécifique 4NK ## 2. <a name='Spcifique4NK'></a>Spécifique 4NK

View File

@ -14,7 +14,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence ## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Coderepository'></a>Code repository ## 2. <a name='Coderepository'></a>Code repository

View File

@ -17,7 +17,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence ## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='AESQuantumresistant'></a>AES & Quantum resistant ## 2. <a name='AESQuantumresistant'></a>AES & Quantum resistant

View File

@ -42,7 +42,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence ## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Dtailsdeconception'></a>Détails de conception ## 2. <a name='Dtailsdeconception'></a>Détails de conception