diff --git a/doc/Auth-Specs.md b/doc/Auth-Specs.md
index 3e21aac..d4f6c3e 100644
--- a/doc/Auth-Specs.md
+++ b/doc/Auth-Specs.md
@@ -1,7 +1,7 @@
* 1. [Objectif](#Objectif)
* 2. [Portée](#Porte)
-* 3. [3. Documents de référence](#Documentsderfrence)
+* 3. [Documents de référence](#Documentsderfrence)
* 4. [Authentification des utilisateurs](#Authentificationdesutilisateurs)
* 5. [Connexion via des tiers](#Connexionviadestiers)
* 6. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
@@ -31,7 +31,7 @@ Développer un système de login sécurisé utilisant les clés cryptographiques
Ce système couvrira la conception et le développement de l'architecture d'authentification, incluant la génération, la gestion, et la validation des identités numériques à travers des formats de conformité spécifiques (Portable Contract Document et Portable Request Document). Il intégrera également l'authentification des utilisateurs, la connexion via des tiers, la récupération d'identités, et une gestion de session basée sur un cache avec des contraintes de sécurité renforcées. La solution sera conçue pour des environnements hautement sécurisés, nécessitant une haute disponibilité, performance, et évolutivité.
-## 3. 3. Documents de référence
+## 3. Documents de référence
Voir [Doc_references.md](Doc_references.md).
@@ -55,7 +55,7 @@ Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API d
En cas d'oubli de mot de passe, les utilisateurs pourront récupérer leur accès depuis une nouvelle identité (`recover`) après avoir révoqué l'ancienne identité, via un processus sécurisé, impliquant une vérification d'identité et l'échange de secrets chiffrés conformément aux protocoles établis.
-Une image de révocation est générée à la création d'une identité pour pouvoir dépenser un UTXO dit alors de révocation, avec les flux RequestPCD et RequestPRD correspondants.
+Une image de révocation est générée à la création d'une identité pour pouvoir dépenser un UTXO dit alors de révocation, avec les flux RequestPcd et RequestPrd correspondants.
## 7. Gestion de session basée sur un cache
@@ -138,7 +138,7 @@ Cette clé est d'abord décomposée, avant d'être partiellement distribuée. Vo
2. Une `pre-id Part1EncHash` qui identifie l'utilisateur est générée par le hash (SHA 256) de la `Part1` et du mot de passe de l'utilisateur.
-3. Création d'un `RequestPRDKeyBackup` par membre (1 shard par membre), par RequestPRD :
+3. Création d'un `RequestPrdKeyBackup` par membre (1 shard par membre), par RequestPrd :
3.1. Génération d'une clé de chiffrement dite `sp_shared_secret` qui sera transmise dans le Diffie-Hellman de la transaction SP.
@@ -148,7 +148,7 @@ Cette clé est d'abord décomposée, avant d'être partiellement distribuée. Vo
3.4. Définition de l'attribut `shard_enc_by_sp_shared_secret` et chiffrement avec `sp_shared_secret`.
-4. Création des messages de type `Message` correspondant aux RequestPRD, envoi des messages aux relais connectés.
+4. Création des messages de type `Message` correspondant aux RequestPrd, envoi des messages aux relais connectés.
Dans l'ordre on réalise donc les opérations suivantes donc :
@@ -163,18 +163,18 @@ Dans l'ordre on réalise donc les opérations suivantes donc :
Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant les membres du rôle `member` du `process` choisi.
-Chacun de ses membres sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `RequestPRDResponse` en réponse à un `RequestPRDKeyBackup`.
+Chacun de ses membres sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `RequestPrdResponse` en réponse à un `RequestPrdKeyBackup`.
Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
-1. Création de `RequestPRDKeyBackup` à destination du membre
-2. Création de `Message` du `RequestPRDKeyBackup` à destination du membre.
-3. Envoi de la transaction SP du `Message` du `RequestPRDKeyBackup` à destination du membre.
-4. Envoi du `Message` du `RequestPRDKeyBackup` à destination du membre.
-5. Atttente de la réception des `RequestPRDResponse` en réponse aux `RequestPRDKeyBackup` (confirmations).
-6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPRDResponse`.
+1. Création de `RequestPrdKeyBackup` à destination du membre
+2. Création de `Message` du `RequestPrdKeyBackup` à destination du membre.
+3. Envoi de la transaction SP du `Message` du `RequestPrdKeyBackup` à destination du membre.
+4. Envoi du `Message` du `RequestPrdKeyBackup` à destination du membre.
+5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdKeyBackup` (confirmations).
+6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
-6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPRDResponse` de chaque member du role `Member`du process.
+6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du role `Member`du process.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2`
@@ -187,9 +187,9 @@ Pour être `onboard` dans un process, c'est-à-dire avoir un rôle, il faut :
###### Mise à jour de la liste des membres
-Pour mettre à jour la liste des membres il faut envoyer un `RequestPRDUpdate` avec une nouvelle version du RequestPCD de la liste des membres, contenant l'objet `ItemMember` complet aux membres du role `member`. Ce RequestPRD devra recevoir des membres du rôle `Member` du process les `RequestPRDResponse` correspondant aux critères de validation du `process`.
+Pour mettre à jour la liste des membres il faut envoyer un `RequestPrdUpdate` avec une nouvelle version du RequestPcd de la liste des membres, contenant l'objet `ItemMember` complet aux membres du role `member`. Ce RequestPrd devra recevoir des membres du rôle `Member` du process les `RequestPrdResponse` correspondant aux critères de validation du `process`.
-C'est à ce moment-là que l'on transmet toutes les clés privées dans l'objet `ItemMember`, en tant que `metadadata` privée (chiffrée par la clé de dépense du signet) dans un RequestPCD (et les `RequestPRDUpdate` correspondant).
+C'est à ce moment-là que l'on transmet toutes les clés privées dans l'objet `ItemMember`, en tant que `metadadata` privée (chiffrée par la clé de dépense du signet) dans un RequestPcd (et les `RequestPrdUpdate` correspondant).
Les adresses SP correspondantes sont aussi transmises en tant que données publiques, ainsi que l'adresse SP de la clé de dépense du login du signet.
@@ -198,37 +198,37 @@ Les metadatas des membres propres au process sont décrits dans le process et do
L'`ItemMember` est décrit dans la spécification [Specs-Datamodel.md](Specs-Datamodel.md).
1. Création d'un `ItemMember` correspondant à l'utilisateur.
-2. Création d'une nouvelle version du RequestPCD avec l'ajout de l'`ItemMember` créé.
-3. Création de `RequestPRDKeyHello` à destination du membre.
-4. Création de `Message` du `RequestPRDKeyHello` à destination du membre.
-5. Envoi de la transaction SP du `Message` du `RequestPRDKeyHello` à destination du membre.
-6. Envoi du `Message` du `RequestPRDKeyHello` à destination du membre.
-7. Réception des `RequestPRDResponse` en réponse aux `RequestPRDKeyHello` et mise à jour des listes depuis les `RequestPCD` correspondants.
-8. Attente de la validation (`RequestPRDResponse`) du `RequestPRDUpdate`.
+2. Création d'une nouvelle version du RequestPcd avec l'ajout de l'`ItemMember` créé.
+3. Création de `RequestPrdKeyHello` à destination du membre.
+4. Création de `Message` du `RequestPrdKeyHello` à destination du membre.
+5. Envoi de la transaction SP du `Message` du `RequestPrdKeyHello` à destination du membre.
+6. Envoi du `Message` du `RequestPrdKeyHello` à destination du membre.
+7. Réception des `RequestPrdResponse` en réponse aux `RequestPrdKeyHello` et mise à jour des listes depuis les `RequestPcd` correspondants.
+8. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
###### Mise à jour de la liste des process
-Pour mettre à jour la liste des process il faut envoyer un `RequestPRDUpdate` avec une nouvelle version du RequestPCD de la liste des process, contenant l'objet `ItemProcess` complet aux membres du role `process`. Ce RequestPRD devra recevoir des membres du rôle `Process` du process les `RequestPRDResponse` correspondant aux critères de validation du `process`.
+Pour mettre à jour la liste des process il faut envoyer un `RequestPrdUpdate` avec une nouvelle version du RequestPcd de la liste des process, contenant l'objet `ItemProcess` complet aux membres du role `process`. Ce RequestPrd devra recevoir des membres du rôle `Process` du process les `RequestPrdResponse` correspondant aux critères de validation du `process`.
L'`ItemProcess` est décrit dans la spécification [Specs-Datamodel.md](Specs-Datamodel.md).
-Demande d'update de la liste des membres ( RequestPCD) d'un process vers chaque membre du rôle `Member` du process.:
+Demande d'update de la liste des membres ( RequestPcd) d'un process vers chaque membre du rôle `Member` du process.:
1. Création d'un `ItemProcess` correspondant à l'utilisateur.
-2. Création d'une nouvelle version du RequestPCD avec l'ajout de l'`ItemProcess` créé.
-3. Création de `RequestPRDKeyHello` à destination du membre.
-4. Création de `Message` du `RequestPRDKeyHello` à destination du membre.
-5. Envoi de la transaction SP du `Message` du `RequestPRDKeyHello` à destination du membre.
-6. Envoi du `Message` du `RequestPRDKeyHello` à destination du membre.
-7. Réception des `RequestPRDResponse` en réponse aux `RequestPRDKeyHello` et mise à jour des listes depuis les `RequestPCD` correspondants.
-8. Attente de la validation (`RequestPRDResponse`) du `RequestPRDUpdate`.
+2. Création d'une nouvelle version du RequestPcd avec l'ajout de l'`ItemProcess` créé.
+3. Création de `RequestPrdKeyHello` à destination du membre.
+4. Création de `Message` du `RequestPrdKeyHello` à destination du membre.
+5. Envoi de la transaction SP du `Message` du `RequestPrdKeyHello` à destination du membre.
+6. Envoi du `Message` du `RequestPrdKeyHello` à destination du membre.
+7. Réception des `RequestPrdResponse` en réponse aux `RequestPrdKeyHello` et mise à jour des listes depuis les `RequestPcd` correspondants.
+8. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
9. Redirection vers la page du process sur le relai.
##### Clés de révocation (`revoke`)
Les clés de l'image de révocation sont chiffrées par le mot de passe (ou pas, en option) et stockées directement dans les données exifs de l'image de révocation. Les adresses SP correspondantes sont aussi inscrites dans les données exif.
-L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `RequestPRDKeyBackup` 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).
+L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `RequestPrdKeyBackup` 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).
##### Clés de third parties
@@ -236,39 +236,39 @@ Au moment de l'update de l'`ItemMember` il est possible de charger des addresses
Les clés privées associées sont générées lors de l'update d'un membre, à la validation de l'update il est possible de télécharger des images correspondantes (clés + hash du process) dans une interface 2FA.
-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 RequestPRD concernés.
+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 RequestPrd concernés.
#### 9.1.3. Connexions avec une identité crée (`recover`)
-Pour recrééer sa clé privée et envoyer un `RequestPRDKeyHello` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
+Pour recrééer sa clé privée et envoyer un `RequestPrdKeyHello` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
1. Récupération de Part1Enc en cache
2. Création de la pré-image avec le mot de passe
Puis depuis la liste des membres du process, pour chacun des membres :
-1. Création de `RequestPRDKeyHello` à destination du membre 1.
-2. Création de `Message` du `RequestPRDKeyHello` à destination du membre.
-3. Envoi de la transaction SP du `Message` du `RequestPRDKeyHello` à destination du membre.
-4. Envoi du `Message` du `RequestPRDKeyHello` à destination du membre.
-5. Attente de la validation (`RequestPRDResponse`) du `RequestPRDUpdate`.
-6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPRDResponse`.
+1. Création de `RequestPrdKeyHello` à destination du membre 1.
+2. Création de `Message` du `RequestPrdKeyHello` à destination du membre.
+3. Envoi de la transaction SP du `Message` du `RequestPrdKeyHello` à destination du membre.
+4. Envoi du `Message` du `RequestPrdKeyHello` à destination du membre.
+5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
+6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
-6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPRDResponse` de chaque member du role `Member`du process.
+6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du role `Member`du process.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2`
-Demande d'update de la liste des membres ( RequestPCD) d'un process :
+Demande d'update de la liste des membres ( RequestPcd) d'un process :
-1. Création et envoi des `RequestPRDList`.
-2. Réception des `RequestPRDResponse` en réponse aux `RequestPRDList` et mise à jour des listes depuis les `RequestPCD` correspondants.
+1. Création et envoi des `RequestPrdList`.
+2. Réception des `RequestPrdResponse` en réponse aux `RequestPrdList` et mise à jour des listes depuis les `RequestPcd` correspondants.
3. Création d'un `ItemMember` correspondant à l'utilisateur avec les clés chiffrées (hors clés de révocation) dans la partie data des métadonnées privées et les adresses SP dans les données publiques.
-4. Création d'une nouvelle version du RequestPCD avec l'ajout de l'`ItemMember` créé.
+4. Création d'une nouvelle version du RequestPcd avec l'ajout de l'`ItemMember` créé.
5. Redirection vers la page du process sur le relai.
## 10. Exemples de Code
## 11. Todo
-* [ ] Extraits de code illustrant l'utilisation des RequestPCD et RequestPRD dans des scénarios réels.
+* [ ] Extraits de code illustrant l'utilisation des RequestPcd et RequestPrd dans des scénarios réels.
* [ ] Diagrammes de séquences
diff --git a/doc/Doc_references.md b/doc/Doc_references.md
index c4842f3..f28e33f 100644
--- a/doc/Doc_references.md
+++ b/doc/Doc_references.md
@@ -2,6 +2,7 @@
* 1. [Worfklows](#Worfklows)
* 2. [Transverse](#Transverse)
* 3. [3.3. Diagrammes d'architecture](#Diagrammesdarchitecture)
+* 4. [Todo](#Todo)
# Documents de référence
-## 1. Worfklows
+## 1. Worfklows
* **Authentification**: [Auth.md](Auth-Specs.md)
* **Items**: [Item-Specs.md](Item-Specs.md)
-* ** RequestPRD et RequestPCD**: [ RequestPRD- RequestPCD-Specs.md]( RequestPRD- RequestPCD-Specs.md)
+* **RequestPrd et RequestPcd**: [ RequestPrd- RequestPcd-Specs.md]( RequestPrd- RequestPcd-Specs.md)
* **Messages et transactions SP**: [Message-SP-Specs.md]
* **Process et roles**: [Process-Role-Specs.md](Process-Role-Specs.md)
+* **Transactions Silent Payment**: [Silent-Payment-Specs.md](Silent-Payment-Specs.md)
-## 2. Transverse
+## 2. Transverse
* **Datamodel**: [Specs-Datamodel.md](Specs-Datamodel.md)
* **Définitions et abréviations.**: [Specs-Definition.md]
@@ -27,7 +29,9 @@
* **Maintenance, environnement de déploiement**: [Specs-Deployment.md]
* **References**: [Specs-References.md](Specs-References.md)
-## 3. 3.3. Diagrammes d'architecture
+## 3. 3.3. Diagrammes d'architecture
* **Diagramme d'architecture montrant les composants principaux du système de login.**
[SheatSheet 4NK](https://cryptpad.fr/diagram/#/2/diagram/view/3UG+7ccutUvJlwJ1-bR40RhgOA+rb5eEmw42wtkN19A)
+
+## 4. Todo
diff --git a/doc/Item-Specs.md b/doc/Item-Specs.md
index 2611618..7cc8668 100644
--- a/doc/Item-Specs.md
+++ b/doc/Item-Specs.md
@@ -2,16 +2,15 @@
* 1. [Objectif](#Objectif)
* 2. [Portée](#Porte)
* 3. [3. Documents de référence](#Documentsderfrence)
- * 3.1. [Worfklows](#Worfklows)
- * 3.2. [Transverse](#Transverse)
- * 3.3. [Types d'Items](#TypesdItems)
- * 3.4. [Composition et Fonction](#CompositionetFonction)
- * 3.4.1. [Cas d'utilisation](#Casdutilisation)
- * 3.5. [MetaData - Gestion des Attributs d'Items](#MetaData-GestiondesAttributsdItems)
- * 3.5.1. [Composition et Fonction](#CompositionetFonction-1)
- * 3.5.2. [Cas d'utilisation](#Casdutilisation-1)
+ * 3.1. [Types d'Items](#TypesdItems)
+ * 3.2. [Composition et Fonction](#CompositionetFonction)
+ * 3.2.1. [Cas d'utilisation](#Casdutilisation)
+ * 3.3. [MetaData - Gestion des Attributs d'Items](#MetaData-GestiondesAttributsdItems)
+ * 3.3.1. [Composition et Fonction](#CompositionetFonction-1)
+ * 3.3.2. [Cas d'utilisation](#Casdutilisation-1)
* 4. [ItemProcess](#ItemProcess)
* 5. [Exemples de Code](#ExemplesdeCode)
+* 6. [Todo](#Todo)
-# RequestPRD et RequestPCD - Specs
+# RequestPrd et RequestPcd - Specs
-## 1. Objectif
+## 1. Objectif
-Le but de cette section est d'introduire les Portable Contract Document ( RequestPCD) et Portable Request Document ( RequestPRD) comme éléments fondamentaux du système 4NK. Ces documents jouent un rôle crucial dans la sécurisation des échanges de données et la gestion des identités numériques au sein d'un réseau décentralisé. Ils permettent de définir des contrats numériques, de gérer les permissions d'accès, et de faciliter les communications et les opéraations sécurisées entre les différents acteurs du réseau.
+Le but de cette section est d'introduire les Portable Contract Document ( RequestPcd) et Portable Request Document ( RequestPrd) comme éléments fondamentaux du système 4NK. Ces documents jouent un rôle crucial dans la sécurisation des échanges de données et la gestion des identités numériques au sein d'un réseau décentralisé. Ils permettent de définir des contrats numériques, de gérer les permissions d'accès, et de faciliter les communications et les opéraations sécurisées entre les différents acteurs du réseau.
-## 2. Portée
+## 2. Portée
-La spécification couvre la conception, le développement, et l'application pratique des RequestPCD et RequestPRD. Elle vise à expliquer leur fonctionnement, leur structure, et la manière dont ils contribuent à l'écosystème 4NK en offrant une méthode sécurisée et efficace pour le partage d'informations et la validation des transactions. Les RequestPCD et RequestPRD encapsulent les données contractuelles et les requêtes dans un format standardisé, assurant l'intégrité, la confidentialité, l'authenticité et la validation des informations échangées.
+La spécification couvre la conception, le développement, et l'application pratique des RequestPcd et RequestPrd. Elle vise à expliquer leur fonctionnement, leur structure, et la manière dont ils contribuent à l'écosystème 4NK en offrant une méthode sécurisée et efficace pour le partage d'informations et la validation des transactions. Les RequestPcd et RequestPrd encapsulent les données contractuelles et les requêtes dans un format standardisé, assurant l'intégrité, la confidentialité, l'authenticité et la validation des informations échangées.
-## 3. 3. Documents de référence
+## 3. 3. Documents de référence
Voir [Doc_references.md](Doc_references.md).
-## 4. Commun aux RequestPCD et RequestPRD
+## 4. Commun aux RequestPcd et RequestPrd
-### 4.1. Création et envoi
+### 4.1. Création et envoi
-Les RequestPCD et les RequestPRD sont envoyés sous forme de `message` (JSON) depuis les websockets des relais.
+Les RequestPcd et les RequestPrd sont envoyés sous forme de `message` (JSON) depuis les websockets des relais.
-Les messages contiennent des RequestPRD ou des RequestPCD encapsulés dans l'attribut `request_enc`, chiffré par la clé `ProcessKey` du `process` concerné.
+Les messages contiennent des RequestPrd ou des RequestPcd encapsulés dans l'attribut `request_enc`, chiffré par la clé `ProcessKey` du `process` concerné.
**Création du message et envoi**: voir [Message-SP-Specs.md](Message-SP-Specs.md).
-### 4.2. Réception
+### 4.2. Réception
-Les RequestPCD et les RequestPRD sont reçus sous forme de `message` (JSON) depuis les websockets des relais.
+Les RequestPcd et les RequestPrd sont reçus sous forme de `message` (JSON) depuis les websockets des relais.
-Les messages contiennent des RequestPRD ou des RequestPCD encapsulés dans l'attribut `request_enc`, chiffré par la clé `ProcessKey` du `process` concerné.
+Les messages contiennent des RequestPrd ou des RequestPcd encapsulés dans l'attribut `request_enc`, chiffré par la clé `ProcessKey` du `process` concerné.
-A la réception des messages, ils sont tous déchiffrés puis conservés ou non en fonction du `process hash` du RequestPCD ou du RequestPRD (dans l'attribut `request`). Si le `process hash` n'est pas reconnu, le message est ignoré.
+A la réception des messages, ils sont tous déchiffrés puis conservés ou non en fonction du `process hash` du RequestPcd ou du RequestPrd (dans l'attribut `request`). Si le `process hash` n'est pas reconnu, le message est ignoré.
-Les RequestPRD et RequestPCD sont au format JSON. Voir [Specs-Datamodel.md](Specs-Datamodel.md).
+Les RequestPrd et RequestPcd sont au format JSON. Voir [Specs-Datamodel.md](Specs-Datamodel.md).
-Les types RequestPRD et RequestPCD sont distingués par l'attribut `request_type` dans le `message`.
+Les types RequestPrd et RequestPcd sont distingués par l'attribut `request_type` dans le `message`.
-En cas de RequestPCD ou RequestPRD en relation via `RequestPCD_reference_hash` ou `RequestPRD_reference_hash` ou `RequestPCD_origin_hash` ou `RequestPRD_origin_hash` ou `item_reference_hash` (dans des RequestPCD), il avoir reçu ou attendre ces documents pour traiter le message.
+En cas de RequestPcd ou RequestPrd en relation via `RequestPcd_reference_hash` ou `RequestPrd_reference_hash` ou `RequestPcd_origin_hash` ou `RequestPrd_origin_hash` ou `item_reference_hash` (dans des RequestPcd), il avoir reçu ou attendre ces documents pour traiter le message.
**Réception du message**: voir [Message-SP-Specs.md](Message-SP-Specs.md).
-Pour les RequestPCD et les RequestPRD il faut vérifier que le hash du document n'est pas déjà en cas, si c'est le cas, le message est ignoré.
+Pour les RequestPcd et les RequestPrd il faut vérifier que le hash du document n'est pas déjà en cas, si c'est le cas, le message est ignoré.
-## 5. Fonction des RequestPCD
+## 5. Fonction des RequestPcd
-Les Portable Contract Documents ( RequestPCD) sont des documents JSON qui encapsulent les listes versionnées d'`Item` dont les attributs sont chiffrés soit en public, soit en confidentiel par rôles soit en privé (cf. [Specs-Security.md](Specs-Security.md)).
+Les Portable Contract Documents ( RequestPcd) sont des documents JSON qui encapsulent les listes versionnées d'`Item` dont les attributs sont chiffrés soit en public, soit en confidentiel par rôles soit en privé (cf. [Specs-Security.md](Specs-Security.md)).
-Les `Item` ainsi échangés via les RequestPCD sont vérifiés par les `RequestPRDResponse` afin de vérifier les validations de ces données et leurs conformités avec les `process` et les `members` concernés.
+Les `Item` ainsi échangés via les RequestPcd sont vérifiés par les `RequestPrdResponse` afin de vérifier les validations de ces données et leurs conformités avec les `process` et les `members` concernés.
-### 5.1. Création et envoi
+### 5.1. Création et envoi
-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. **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.
2. **Mise à jour**: 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)).
-4. **Chiffrement du RequestPCD**: Chiffrement du RequestPCD avec la clé `ProcessKey` du `process` concerné.
-5. Traitements communs aux RequestPCD et RequestPRD
+4. **Chiffrement du RequestPcd**: Chiffrement du RequestPcd avec la clé `ProcessKey` du `process` concerné.
+5. Traitements communs aux RequestPcd et RequestPrd
-### 5.2. Réception
+### 5.2. Réception
-La réception d'un RequestPCD suit plusieurs étapes :
+La réception d'un RequestPcd suit plusieurs étapes :
-1. Traitements communs aux RequestPCD et RequestPRD
-2. Recherche des RequestPRD en relation via `RequestPCD_reference_hash` et `RequestPCD_origin_hash` de ces RequestPRD et attente si nécessaire.
-3. Déchiffrage des attributs publics des `Item` des RequestPCD avec la `ProcessKey` du `process` concerné.
-4. Déchiffrage des attributs confidentiels des `Item` des RequestPCD avec les clés de déchiffrement depuis l'attribut `RequestPCD_keys_role_confidential_list_enc_by_shared_secret` des RequestPRD.
-5. Déchiffrage des attributs privés des `Item` des RequestPCD avec la clé privée `KeyRecover`
-6. Mise à jour du cache pour les traitement des RequestPRD.
+1. Traitements communs aux RequestPcd et RequestPrd
+2. Recherche des RequestPrd en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash` de ces RequestPrd et attente si nécessaire.
+3. Déchiffrage des attributs publics des `Item` des RequestPcd avec la `ProcessKey` du `process` concerné.
+4. Déchiffrage des attributs confidentiels des `Item` des RequestPcd avec les clés de déchiffrement depuis l'attribut `RequestPcd_keys_role_confidential_list_enc_by_shared_secret` des RequestPrd.
+5. Déchiffrage des attributs privés des `Item` des RequestPcd avec la clé privée `KeyRecover`
+6. Mise à jour du cache pour les traitement des RequestPrd.
-## 6. Fonction des RequestPRD
+## 6. Fonction des RequestPrd
-Les Portable Request Documents ( RequestPRD) sont des documents JSON qui encapsulent les valeurs de signatures et les clés de déchiffrement nécessaires à l'interprétation des RequestPCD via l'attribut `RequestPCD_keys_role_confidential_list_enc_by_shared_secret`. Ils sont utilisés pour demander des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
+Les Portable Request Documents ( RequestPrd) sont des documents JSON qui encapsulent les valeurs de signatures et les clés de déchiffrement nécessaires à l'interprétation des RequestPcd via l'attribut `RequestPcd_keys_role_confidential_list_enc_by_shared_secret`. Ils sont utilisés pour demander des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
-Les clés de chiffrement des attributs confidentiels par rôles des `Item` des RequestPCD sont chiffrées dans les RequestPRD avec le chiffrement du RequestPRD par la clé `KeyConfidential` d'une transaction Silent Payment SP (cf. [Specs-Security.md](Specs-Security.md)). Ces clés ne sont distribués qu'aux `members` concernés par les `Item` des RequestPCD (rôles dans les `process`).
+Les clés de chiffrement des attributs confidentiels par rôles des `Item` des RequestPcd sont chiffrées dans les RequestPrd avec le chiffrement du RequestPrd par la clé `KeyConfidential` d'une transaction Silent Payment SP (cf. [Specs-Security.md](Specs-Security.md)). Ces clés ne sont distribués qu'aux `members` concernés par les `Item` des RequestPcd (rôles dans les `process`).
-Les RequestPRD sont de plusieurs types tels que `RequestPRDList`, `RequestPRDMessage`, `RequestPRDUpdate`, etc.: Variations de `RequestPRD` pour différentes actions, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
+Les RequestPrd sont de plusieurs types tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc.: Variations de `RequestPrd` pour différentes actions, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
-### 6.1. Fonctionnalités optionnelles
+### 6.1. Fonctionnalités optionnelles
-L'attribut `sig_value` permet de donner une valeur aux signatures. Les valeurs des signatures sont définies par rôles dans les `ItemProcess` avec des valeurs valant pour `OK` ou `KO` pour `none` pour les validations des `RequestPRD`.
+L'attribut `sig_value` permet de donner une valeur aux signatures. Les valeurs des signatures sont définies par rôles dans les `ItemProcess` avec des valeurs valant pour `OK` ou `KO` pour `none` pour les validations des `RequestPrd`.
-Lorsque que la réponse fait référence à un RequestPCD il est précisé dans `RequestPCD_reference_hash`, idem pour les RequestPRD avec `RequestPRD_reference_hash`.
+Lorsque que la réponse fait référence à un RequestPcd il est précisé dans `RequestPcd_reference_hash`, idem pour les RequestPrd avec `RequestPrd_reference_hash`.
-Lorsque que la réponse fait suite directement à un RequestPCD il est précisé dans `RequestPCD_origin_hash`, idem pour les RequestPRD avec `RequestPRD_origin_hash`.
+Lorsque que la réponse fait suite directement à un RequestPcd il est précisé dans `RequestPcd_origin_hash`, idem pour les RequestPrd avec `RequestPrd_origin_hash`.
-Les `RequestPRDResponse` signalent de façon confidentielle :
+Les `RequestPrdResponse` signalent de façon confidentielle :
-* soient des conditions ad'hoc déjà remplies via l'attribut `payment_method_enc_by_shared_secret`, `deposit_method_enc_by_shared_secret`, `commitment_method_enc_by_shared_secret`, `commitment_ RequestPCD_hash_list` pour les paiements et preuves ad'hoc éventuellements associés aux RequestPCD de la nouvelle version.
+* soient des conditions ad'hoc déjà remplies via l'attribut `payment_method_enc_by_shared_secret`, `deposit_method_enc_by_shared_secret`, `commitment_method_enc_by_shared_secret`, `commitment_request_pcd_hash_list` pour les paiements et preuves ad'hoc éventuellements associés aux RequestPcd de la nouvelle version.
* soient des appels pour recevoir les moyens de satisfaire ces conditions via les attributs `ask_payment_method_enc_by_shared_secret`, `ask_deposit_method_enc_by_shared_secret`, `ask_commitment_method_enc_by_shared_secret`.
-Les `Item` associés sont référencés dans des RequestPCD identifiés par `payment_ RequestPCD_hash_list_enc_by_shared_secret`, `cap_ RequestPCD_hash_list_enc_by_shared_secret` (cas des payments temporaires en l'attente du passage d'un cap), `deposit_ RequestPCD_hash_list_enc_by_shared_secret` et `commitment_ RequestPCD_hash_list_enc_by_shared_secret`.
+Les `Item` associés sont référencés dans des RequestPcd identifiés par `payment_request_pcd_hash_list_enc_by_shared_secret`, `cap_request_pcd_hash_list_enc_by_shared_secret` (cas des payments temporaires en l'attente du passage d'un cap), `deposit_request_pcd_hash_list_enc_by_shared_secret` et `commitment_request_pcd_hash_list_enc_by_shared_secret`.
-Des champs messages peuvent accompagner les RequestPRD via `message_public`, `message_confidential`, `message_private`.
+Des champs messages peuvent accompagner les RequestPrd via `message_public`, `message_confidential`, `message_private`.
Il est aussi possible de partager des clés de chiffrement ad'hoc via `certif_key_enc_by_shared_secret`.
@@ -132,145 +143,163 @@ Les adresses et les roles sont précisés en cas d'utilisateurs ayant plusieurs
Tous les échanges sont complétés de l'empreinte du device de l'emetteur envoyée de façon confidentielle via `device_footprint_enc_by_shared_secret`.
-### 6.2. Fonction des transactions silent payment SP associées aux RequestPRD
+### 6.2. Fonction des transactions silent payment SP associées aux RequestPrd
-La clé `KeyConfidential` d'une transaction Silent Payment SP est utilisée pour chiffrer les RequestPRD. Cette clé est échangée avec le destinataire via un Diffie-Hellman (cf. [Specs-Security.md](Specs-Security.md)) dans la transaction. Cette information est parrallèle aux RequestPRD et permet une meilleur sécurité et confidentialité des échanges.
+La clé `KeyConfidential` d'une transaction Silent Payment SP est utilisée pour chiffrer les RequestPrd. Cette clé est échangée avec le destinataire via un Diffie-Hellman (cf. [Specs-Security.md](Specs-Security.md)) dans la transaction. Cette information est parrallèle aux RequestPrd et permet une meilleur sécurité et confidentialité des échanges.
-La transaction Silent Payment SP a aussi une fonction d'horodate et de preuve de publication des RequestPRD donc de la validation des données des RequestPCD. Les outputs de la transaction Silent Payment SP contiennent les empreintes cryptographiques des `messages` et RequestPRD (sauf `RequestPRDKeyBackup`) et des RequestPCD. Ainsi l'infrastructure blockchain de signet de 4NK permet de vérifier l'intégrité des flux, leur ordre de référence (horodatage) et leur preuve de publication.
+La transaction Silent Payment SP a aussi une fonction d'horodate et de preuve de publication des RequestPrd donc de la validation des données des RequestPcd. Les outputs de la transaction Silent Payment SP contiennent les empreintes cryptographiques des `messages` et RequestPrd (sauf `RequestPrdKeyBackup`) et des RequestPcd. Ainsi l'infrastructure blockchain de signet de 4NK permet de vérifier l'intégrité des flux, leur ordre de référence (horodatage) et leur preuve de publication.
-Les `RequestPRDConfirm` qui sont des accusés automatiques de réception des RequestPRD sont aussi associés à une transaction Silent Payment SP, ce qui permet d'ajouter les preuves de réception des demandes et des validations (ou non).
+Les `RequestPrdConfirm` qui sont des accusés automatiques de réception des RequestPrd sont aussi associés à une transaction Silent Payment SP, ce qui permet d'ajouter les preuves de réception des demandes et des validations (ou non).
-### 6.3. Création et envoi
+### 6.3. Création et envoi
-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.
-2. **Chiffrement du RequestPRD**: Chiffrement du RequestPRD avec la clé `ProcessKey` du `process` concerné.
-3. **Création de l'adresse SP**: Création d'une adresse Silent Payment SP pour le paiement des frais de transaction depuis l'adresse signet de l'utilisateur décrit dans un objet `ItemMember` (cf. [Specs-Datamodel.md](Specs-Datamodel.md)) avec les outupts de la transaction Silent Payment SP correspondants au RequestPRD et aux éventuels RequestPCD associés.
-4. **Création du message**: Création du `message` contenant le RequestPRD chiffré, la preuve de travail, l'adresse de faucet
+1. **Chargement des clés de chiffrement confidentiel'**: 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 `process` concerné.
+3. **Création de l'adresse SP**: Création d'une adresse Silent Payment SP pour le paiement des frais de transaction depuis l'adresse signet de l'utilisateur décrit dans un objet `ItemMember` (cf. [Specs-Datamodel.md](Specs-Datamodel.md)) avec les outupts de la transaction Silent Payment SP correspondants au RequestPrd et aux éventuels RequestPcd associés.
+4. **Création du message**: 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.
6. **Sélection des noeuds de signet pour la transaction silent Payment (SP)**: Sélection de 4 noeuds de signet pour l'envoi de la transaction Silent Payment SP.
7. **Envoi du message**: Envoi du message aux relais et des transactions aux noeuds de signet.
-### 6.4. Réception
+### 6.4. Réception
-La réception d'un RequestPCD suit plusieurs étapes :
+La réception d'un RequestPcd suit plusieurs étapes :
-1. Traitements communs aux RequestPCD et RequestPRD
-2. Recherche des RequestPCD en relation via `RequestPCD_reference_hash` et `RequestPCD_origin_hash` et attente si nécessaire.
-3. Recherche des RequestPRD en relation via `RequestPRD_reference_hash` et `RequestPRD_origin_hash` et attente si nécessaire.
-4. Recherche de l'`Item` associé via `item_reference_hash` et attente si nécessaire.
-5. Déchiffrage des attributs confidentiels notés `_enc_by_shared_secret` depuis la `KeyConfidential` de la transaction silent payment SP correspondante via hash du RequestPRD dans l'output `2` de la transaction.
-6. Mise à jour du cache pour les traitement des RequestPRD.
-7. Traitements spécifiques au type de RequestPRD.
+1. Traitements communs aux RequestPcd et RequestPrd
+2. Recherche des RequestPcd en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash` et attente si nécessaire et traitement de ceux ci.
+3. Vérification de la conformité des RequestPcd en relation.
+4. Recherche des RequestPrd en relation via `RequestPrd_reference_hash` et `RequestPrd_origin_hash` et attente si nécessaire et traitement de ceux ci.
+5. Vérification de la conformité des RequestPrd en relation.
+6. Recherche de l'`Item` associé via `item_reference_hash` et attente si nécessaire et traitement de celui ci.
+7. Déchiffrage des attributs confidentiels notés `_enc_by_shared_secret` depuis la `KeyConfidential` de la transaction silent payment SP correspondante via hash du RequestPrd dans l'output `2` de la transaction.
+8. Mise à jour du cache pour les traitement des RequestPrd.
+9. Traitements spécifiques au type de RequestPrd.
-## 7. RequestPRDList - Demande de Listes ( RequestPCD)
+## 7. RequestPrdList - Demande de Listes ( RequestPcd)
-Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque RequestPCD liste des `Item` d'un même type, par exemple les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc.
+Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque RequestPcd liste des `Item` d'un même type, par exemple les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc.
-### Création et envoi
+### 7.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDList`.
+L'envoi d'un `RequestPrdList` suit plusieurs étapes :
-### Réception
+1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdList`.
+2. Envoi de la transaction Silent Payment SP.
-La réception d'un `RequestPRDList` suit plusieurs étapes :
+### 7.2. Réception
-1. Traitements des RequestPRD
-2.
+La réception d'un `RequestPrdList` suit plusieurs étapes :
-## 8. RequestPRDMessage - Envoi de Messages
+1. Traitements des RequestPrd
+2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList`.
+3. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
+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 `RequestPrd_origin_hash`
+6. Mise à jour du cache avec les nouveaux `RequestPcd` et `RequestPrdResponse` et `RequestPrdConfirm` envoyés.
-Le RequestPRDMessage facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
+## 8. RequestPrdMessage - Envoi de Messages
+
+Le RequestPrdMessage facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
Permet la communication directe et sécurisée au sein du réseau, supportant des échanges d'informations critiques ou des notifications entre parties.
-Les `RequestPRDMessage` répondent aux `RequestPRDMessage`.
+Les `RequestPrdMessage` répondent aux `RequestPrdMessage`.
-### Création et envoi
+### 8.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDMessage`.
+Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdMessage`.
-### Réception
+### 8.2. Réception
-## 9. RequestPRDUpdate - Mises à Jour de RequestPCD
+La réception d'un `RequestPrdMessage` suit plusieurs étapes :
-`RequestPRDUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `RequestPCD`.
+1. Traitements des RequestPrd
+2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList`.
+3. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
+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 `RequestPrd_origin_hash`
-Basé sur le `RequestPRD`. avec des additions pour spécifier les modifications demandées, y compris de nouveaux attributs ou valeurs à mettre à jour :
+## 9. RequestPrdUpdate - Mises à Jour de RequestPcd
+
+`RequestPrdUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `RequestPcd`.
+
+Basé sur le `RequestPrd`. avec des additions pour spécifier les modifications demandées, y compris de nouveaux attributs ou valeurs à mettre à jour :
Essentiel pour les utilisateurs ou les processus nécessitant de mettre à jour des informations contractuelles ou des attributs d'items, assurant la pertinence et l'actualité des données dans le système.
Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `process`, la mise à jour de la liste des `process` permettra de leur affecter un nouveau role.
-Les `RequestPRDUpdate` signalent au réseau via l'attribut `RequestPCD_new_version_hash` les nouvelles version des RequestPCD.
+Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_version_hash` les nouvelles version des RequestPcd.
-### Création et envoi
+### 9.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDUpdate`.
+Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`.
-### Réception
+### 9.2. Réception
+## 10. 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.
-## 10. RequestPRDConfirm - Confirmation de Réception
+Les `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdMessage`, `RequestPrdResponse` et `RequestPrdKeyHello` reçoivent systématiquement un `RequestPrdConfirm` depuis leur réception par le destinataire.
-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.
-
-Les `RequestPRDList`, `RequestPRDUpdate`, `RequestPRDMessage`, `RequestPRDResponse` et `RequestPRDKeyHello` reçoivent systématiquement un `RequestPRDConfirm` depuis leur réception par le destinataire.
-
-`code_confirm_enc_by_shared_secret`: Un code de confirmation chiffré qui valide l'authenticité et l'intégrité de la réponse, assurant que la confirmation est sécurisée et provient de la source attendue. Dans ce cas un output spécifique chiffré par la clé `KeyConfidential` précise ce code, à confirmer dans le RequestPRDConfirm.
+`code_confirm_enc_by_shared_secret`: Un code de confirmation chiffré qui valide l'authenticité et l'intégrité de la réponse, assurant que la confirmation est sécurisée et provient de la source attendue. Dans ce cas un output spécifique chiffré par la clé `KeyConfidential` précise ce code, à confirmer dans le RequestPrdConfirm.
Crucial pour les processus qui nécessitent une confirmation explicite de réception ou d'acceptation, comme la finalisation d'une transaction ou la validation d'un changement d'état dans un contrat.
-### Création et envoi
+### 10.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDConfirm`.
+Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm`.
-### Réception
+### 10.2. Réception
-## 11. RequestPRDResponse - Répondre à une Demande
+## 11. 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.
-Les `RequestPRDResponse` répondent aux `RequestPRDList`, `RequestPRDUpdate`, `RequestPRDKeyBackup` et `RequestPRDKeyHello`.
+Les `RequestPrdResponse` répondent aux `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdKeyBackup` et `RequestPrdKeyHello`.
Utilisé pour fournir des feedbacks, des confirmations, ou des instructions supplémentaires en réponse à des demandes initiales, supportant une communication bidirectionnelle sécurisée et vérifiable.
Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, puis de partager le payload de ces actions.
-### Création et envoi
+### 11.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDResponse`.
+Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse`.
-### Réception
+### 11.2. Réception
-## 12. RequestPRDKeyHelloBakcup
+## 12. RequestPrdKeyHelloBakcup
-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` .
-### Création et envoi
+### 12.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDRRequestPRDKeyHelloBakcupesponse`.
+Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdRRequestPrdKeyHelloBakcupesponse`.
-### Réception
+### 12.2. Réception
-## 13. RequestPRDKeyHello - Échange de Clés et d'Identités
+## 13. RequestPrdKeyHello - Échange de Clés et d'Identités
-RequestPRDKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau.
+RequestPrdKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau.
Important pour les processus d'onboarding de nouveaux membres, de réinitialisation des accès, ou de renouvellement des clés, facilitant une intégration sécurisée et la mise à jour des identités dans le réseau.
-### Création et envoi
+### 13.1. Création et envoi
-Traitements des RequestPRD, avec le `type_request` spécifique à `RequestPRDKeyHello`.
+Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdKeyHello`.
-### Réception
+### 13.2. Réception
+## 14. Exemples de Code
-## 15. Exemples de Code
+## 15. Todo
-## 16. Todo
-
-* [ ] Extraits de code illustrant l'utilisation des RequestPCD et RequestPRD dans des scénarios réels.
+* [ ] Extraits de code illustrant l'utilisation des RequestPcd et RequestPrd dans des scénarios réels.
* [ ] Diagrammes de séquences
diff --git a/doc/Process-roles-Specs.md b/doc/Process-roles-Specs.md
index 912b542..8211ffa 100644
--- a/doc/Process-roles-Specs.md
+++ b/doc/Process-roles-Specs.md
@@ -2,8 +2,6 @@
* 1. [Objectif](#Objectif)
* 2. [Portée](#Porte)
* 3. [3. Documents de référence](#Documentsderfrence)
- * 3.1. [Worfklows](#Worfklows)
- * 3.2. [Transverse](#Transverse)
* 4. [Rôles et Sous-Rôles](#RlesetSous-Rles)
* 5. [Précisions sur les rôles](#Prcisionssurlesrles)
* 5.1. [RolesGroup - Gestion des Rôles](#RolesGroup-GestiondesRles)
@@ -25,6 +23,7 @@
* 7.1. [Composition et Utilisation](#CompositionetUtilisation)
* 8. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus)
* 9. [Exemples de Code](#ExemplesdeCode)
+* 10. [Todo](#Todo)
# Process et roles
-## 1. Objectif
+## 1. Objectif
-Cette section vise à présenter en détail les Documents de Contrat Portable ( RequestPCD) et les Documents de Demande Portable ( RequestPRD), qui constituent les piliers du système 4NK. Essentiels pour sécuriser les transactions de données et gérer les identités numériques, les RequestPCD et RequestPRD assurent l'intégrité et la confidentialité au cœur d'un réseau décentralisé.
+Cette section vise à présenter en détail les Documents de Contrat Portable ( RequestPcd) et les Documents de Demande Portable ( RequestPrd), qui constituent les piliers du système 4NK. Essentiels pour sécuriser les transactions de données et gérer les identités numériques, les RequestPcd et RequestPrd assurent l'intégrité et la confidentialité au cœur d'un réseau décentralisé.
-## 2. Portée
+## 2. Portée
-## 3. 3. Documents de référence
+## 3. 3. Documents de référence
Voir [Doc_references.md](Doc_references.md).
-## 4. Rôles et Sous-Rôles
+## 4. Rôles et Sous-Rôles
Les rôles déterminent les permissions et les responsabilités des participants dans le système 4NK. Ils sont essentiels pour contrôler l'accès aux données et les autorisations au sein des `process`. Les `rôles` principaux incluent :
@@ -53,36 +52,36 @@ Les rôles déterminent les permissions et les responsabilités des participants
Chaque rôle peut comporter des sous-rôles spécifiques, tels que `RolePayment`, `RoleDeposit`, et `RoleCommitment`, chacun avec des responsabilités et des interactions uniques dans le cadre des processus qu'ils soutiennent.
-## 5. Précisions sur les rôles
+## 5. Précisions sur les rôles
-### 5.1. RolesGroup - Gestion des Rôles
+### 5.1. RolesGroup - Gestion des Rôles
La structure RolesGroup est essentielle pour définir et gérer les groupes de rôles au sein du système 4NK, permettant une organisation claire des permissions et des responsabilités.
-#### 5.1.1. Composition et Fonction
+#### 5.1.1. Composition et Fonction
* **role_peer**: Définit le rôle des pairs dans le réseau, responsables de la facilitation des communications et des transactions.
* **role_member**: Spécifie le rôle des membres, ou utilisateurs, qui participent activement dans les processus et les interactions.
* **role_process**: Représente les entités chargées de définir et de gérer les processus au sein du système.
* **role_artefact_list**: Une liste de rôles d'artefacts, permettant la personnalisation et l'extension des fonctionnalités et des interactions au-delà des rôles standards.
-#### 5.1.2. Cas d'utilisation
+#### 5.1.2. Cas d'utilisation
Cette structure permet une gestion flexible des rôles au sein du système, facilitant l'assignation de permissions spécifiques et la délimitation des responsabilités pour une sécurité et une efficacité accrues.
-### 5.2. TransactionModeDistribution et TransactionModeDirect
+### 5.2. TransactionModeDistribution et TransactionModeDirect
Les modes de transaction, tels que TransactionModeDistribution et TransactionModeDirect, déterminent comment les demandes et les réponses sont distribuées et traitées au sein du réseau 4NK, influençant l'efficacité et la sécurité des interactions.
-### 5.3. TransactionModeDistribution
+### 5.3. TransactionModeDistribution
Permet la distribution des demandes ou des informations à plusieurs rôles ou entités, facilitant une communication large et la collaboration au sein du système.
-#### 5.3.1. TransactionModeDirect
+#### 5.3.1. TransactionModeDirect
Concentre l'échange d'informations ou de demandes directement entre un émetteur et un destinataire spécifique, garantissant une interaction ciblée et sécurisée.
-### 5.4. Cas d'utilisation
+### 5.4. Cas d'utilisation
Ces modes supportent divers scénarios de communication, de la diffusion large d'informations ou de mises à jour, à des échanges directs pour des opérations spécifiques, offrant ainsi une flexibilité dans la gestion des flux d'informations.
@@ -90,58 +89,61 @@ Ces modes supportent divers scénarios de communication, de la diffusion large d
La structure Role est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation.
-#### 5.4.1. Composition et Fonction
+#### 5.4.1. Composition et Fonction
* **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions.
* **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques.
* **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus.
* **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte.
-#### 5.4.2. Cas d'utilisation
+#### 5.4.2. Cas d'utilisation
Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global.
-### 5.5. Role - Définition et Gestion des Rôles Spécifiques
+### 5.5. Role - Définition et Gestion des Rôles Spécifiques
La structure Role est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation.
-#### 5.5.1. Composition et Fonction
+#### 5.5.1. Composition et Fonction
* **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions.
* **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques.
* **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus.
* **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte.
-#### 5.5.2. Cas d'utilisation
+#### 5.5.2. Cas d'utilisation
Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global.
-## 6. Gestion des Engagements et Transactions
+## 6. Gestion des Engagements et Transactions
Les engagements dans le système 4NK, tels que représentés par les structures RoleCommitment, RoleDeposit, et RolePayment, jouent un rôle crucial dans la formalisation des transactions et des obligations entre les parties.
-### 6.1. RoleCommitment
+### 6.1. RoleCommitment
* **item_name**: Identifie l'engagement spécifique ou l'obligation prise par une partie.
* **role**: Définit les permissions, les conditions et les critères associés à cet engagement, assurant une exécution et une validation conformes aux attentes.
-### 6.2. RoleDeposit et RolePayment
+### 6.2. RoleDeposit et RolePayment
Ces structures gèrent respectivement les dépôts de garantie et les paiements, en spécifiant les conditions sous lesquelles les fonds sont déposés, retenus ou transférés, contribuant ainsi à la confiance et à la fluidité des transactions au sein du réseau.
-## 7. Sécurisation des Communications
+## 7. Sécurisation des Communications
La structure MetaData et ses sous-structures comme MetadataContractPublic, MetadataRoleConfidential, et MetadataPrivate fournissent un cadre pour sécuriser les communications et les données au sein du système 4NK, permettant une distinction claire entre les informations accessibles publiquement, celles réservées à certains rôles, et celles strictement privées.
-### 7.1. Composition et Utilisation
+### 7.1. Composition et Utilisation
* **meta_data**: Chaque instance de MetaData encapsule des informations détaillées, des attributs et des clés de chiffrement liés à un item, facilitant la gestion sécurisée et la distribution ciblée des données.
* **key_list**: Un élément crucial pour le chiffrement et la sécurisation des données, assurant que seules les parties autorisées peuvent accéder aux informations confidentielles.
-## 8. Intégration et Orchestration des Processus
+## 8. Intégration et Orchestration des Processus
L'ItemProcess et ItemProcessPublicAttributeGroup offrent un cadre pour l'intégration et l'orchestration des processus dans le système 4NK, permettant la définition, la gestion et l'exécution de workflows complexes de manière sécurisée et efficace.
-## 9. Exemples de Code
+## 9. Exemples de Code
-Extraits de code illustrant l'utilisation des RequestPCD et RequestPRD dans des scénarios réels.
+## 10. Todo
+
+* [ ] Extraits de code illustrant l'utilisation des RequestPcd et RequestPrd dans des scénarios réels.
+* [ ] Diagrammes de séquences
diff --git a/doc/Silent-Payment-Specs.md b/doc/Silent-Payment-Specs.md
new file mode 100644
index 0000000..b182307
--- /dev/null
+++ b/doc/Silent-Payment-Specs.md
@@ -0,0 +1,18 @@
+
+* 1. [Objectif](#Objectif)
+* 2. [Portée](#Porte)
+* 3. [3. Documents de référence](#Documentsderfrence)
+
+
+
+## 1. Objectif
+
+
+## 2. Portée
+
+## 3. 3. Documents de référence
+
+Voir [Doc_references.md](Doc_references.md).
diff --git a/doc/Specs-Code.md b/doc/Specs-Code.md
index 0cc7650..1db3a80 100644
--- a/doc/Specs-Code.md
+++ b/doc/Specs-Code.md
@@ -11,6 +11,8 @@
* 6. [Critères d'acceptation](#Critresdacceptation)
* 7. [CI/CD](#CICD)
* 8. [Maintenance](#Maintenance)
+* 9. [Exemples de Code](#ExemplesdeCode)
+* 10. [Todo](#Todo)
-* 1. [Spécifique 4NK](#Spcifique4NK)
-* 2. [Bitcoin](#Bitcoin)
-* 3. [Chiffrement](#Chiffrement)
-* 4. [Data](#Data)
+* 1. [Documents de référence](#Documentsderfrence)
+* 2. [Spécifique 4NK](#Spcifique4NK)
+* 3. [Bitcoin](#Bitcoin)
+* 4. [Chiffrement](#Chiffrement)
+* 5. [Data](#Data)
+* 6. [Exemples de Code](#ExemplesdeCode)
+* 7. [Todo](#Todo)
* 1. [Documents de référence](#Documentsderfrence)
-* 2. [2. Code repository](#Coderepository)
+* 2. [Code repository](#Coderepository)
+* 3. [Exemples de Code](#ExemplesdeCode)
+* 4. [Todo](#Todo)