Wording (doc)

This commit is contained in:
NicolasCantu 2024-03-22 09:12:15 +01:00
parent 68ae2bc92c
commit 799d87d560
50 changed files with 827 additions and 915 deletions

View File

@ -11,7 +11,7 @@ wasm-bindgen = "0.2.90"
serde = { version = "1.0.193", features = ["derive"] } serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108" serde_json = "1.0.108"
# sp_backend = { git = "https://github.com/Sosthene00/sp-backend.git", branch = "master" } # sp_backend = { git = "https://github.com/Sosthene00/sp-backend.git", branch = "master" }
# silentpayments = { git = "https://github.com/Sosthene00/rust-silentpayments", branch = "utils" } # silentPayments = { git = "https://github.com/Sosthene00/rust-silentPayments", branch = "utils" }
rand = "0.8.5" rand = "0.8.5"
hex = "0.4.3" hex = "0.4.3"
uuid = { version = "1.6.1", features = ["serde", "v4"] } uuid = { version = "1.6.1", features = ["serde", "v4"] }

View File

@ -20,7 +20,7 @@
* 10.1.3. [Onboarding](#Onboarding-1) * 10.1.3. [Onboarding](#Onboarding-1)
* 10.2. [ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process](#ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess) * 10.2. [ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process](#ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess)
* 10.3. [ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess) * 10.3. [ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
* 10.4. [Réception des RequestPcd et RequestPrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesRequestPcdetRequestPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn) * 10.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)
* 11. [Clés de révocation (`revoke`)](#Clsdervocationrevoke) * 11. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
* 12. [Clés de third parties](#Clsdethirdparties) * 12. [Clés de third parties](#Clsdethirdparties)
* 13. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover) * 13. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
@ -31,7 +31,7 @@
## 1. <a name='Objectif'></a>Objectif ## 1. <a name='Objectif'></a>Objectif
Développer un système de login sécurisé utilisant les clés cryptographiques de Bitcoin et sa timechain (via un réseau Signet personnalisé, appelé "side chain") ainsi qu'un système de relais de messages entre parties prenantes. Le concept de Silent Payment est employé pour authentifier les utilisateurs sans réutilisation d'adresses, tout en utilisant une approche de `calcul multipartite (MPC)` pour une gestion sécurisée et distribuée des clés. Déployer une interface de login conforme aux wireframes : Développer un système de login sécurisé utilisant les clés cryptographiques de Bitcoin et sa timechain (via un réseau Signet personnalisé, appelé "side chain") ainsi qu'un système de relais de messages entre parties prenantes. Le concept de Silent Payments est employé pour authentifier les utilisateurs sans réutilisation d'adresses, tout en utilisant une approche de `calcul multipartite (MPC)` pour une gestion sécurisée et distribuée des clés. Déployer une interface de login conforme aux wireframes :
![Wireframes](diagrams/Login-Wireframes.png "Wireframes") ![Wireframes](diagrams/Login-Wireframes.png "Wireframes")
@ -75,7 +75,7 @@ Voir [_Doc_references.md](_Doc_references.md).
Les utilisateurs doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite de login mise en cache dans IndexedDB pour les navigateurs et les applications mobiles, sinon en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de membres choisi par les gestionnaires des membres des `ItemProcess` . Les utilisateurs doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite de login mise en cache dans IndexedDB pour les navigateurs et les applications mobiles, sinon en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de membres choisi par les gestionnaires des membres des `ItemProcess` .
Le système utilisera les clés cryptographiques de Bitcoin pour une authentification sécurisée via un HD Wallet transparent, intégrant le concept de Silent Payment pour éviter la réutilisation d'adresses. Les annuaires présents par rôles dans les contrats sont des listes d'adresses Silent Payments avec leurs `third parties`. Le système utilisera les clés cryptographiques de Bitcoin pour une authentification sécurisée via un HD Wallet transparent, intégrant le concept de Silent Payments pour éviter la réutilisation d'adresses. Les annuaires présents par rôles dans les contrats sont des listes d'adresses Silent Payments avec leurs `third parties`.
Les utilisateurs sont reconnus par une`adresse SP` dans un ou plusieurs rôles dans un `ItemProcess`. Ces `ItemProcess` préalablement publiés et relayés par les relais décrivent les conditions de validation des identités. Par process, les identités appelées techniquement `member`. Les utilisateurs sont reconnus par une`adresse SP` dans un ou plusieurs rôles dans un `ItemProcess`. Ces `ItemProcess` préalablement publiés et relayés par les relais décrivent les conditions de validation des identités. Par process, les identités appelées techniquement `member`.
@ -91,7 +91,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. 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 `Pcd` et `Prd` correspondants.
## 8. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache ## 8. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache
@ -186,13 +186,13 @@ Hash speudo code :
pre_id=sha256(part1_spend_recover_enc, MDP) pre_id=sha256(part1_spend_recover_enc, MDP)
``` ```
3. Création d'un `RequestPrdList` par membre (1 shard par membre), par `RequestPrd` : 3. Création d'un `PrdList` par membre (1 shard par membre), par `Prd` :
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. 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.
3.2. Création d'un `ItemMember` à envoyer avec le `RequestPrdList`. 3.2. Création d'un `ItemMember` à envoyer avec le `PrdList`.
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 Prd, envoi des messages aux relais connectés.
Dans l'ordre on réalise donc les opérations suivantes donc : Dans l'ordre on réalise donc les opérations suivantes donc :
@ -207,18 +207,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 l'`ItemProcess` choisi. Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant l'`ItemProcess` choisi.
Chacun de des managers des 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 au `RequestPrdList` envoyé. Chacun de des managers des membres 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é.
Dans l'ordre on réalise donc les opérations suivantes pour chaque membres : Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
1. Création de `RequestPrdList` à destination du membre 1. Création de `PrdList` à destination du membre
2. Création de `Message` du `RequestPrdList` à destination du membre. 2. Création de `Message` du `PrdList` à destination du membre.
3. Envoi de la transaction SP du `Message` du `RequestList` à destination du membre. 3. Envoi de la transaction SP du `Message` du `RequestList` à destination du membre.
4. Envoi du `Message` du `RequestPrdList` à destination du membre. 4. Envoi du `Message` du `PrdList` à destination du membre.
5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdList` (confirmations). 5. Atttente de la réception des `PrdResponse` en réponse aux `PrdList` (confirmations).
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`. 6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `PrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache. 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 `ItemProcess`. 6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_confidential` des `PrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe 6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2` 6.4. Concaténation de `Part1` et `Part2`
@ -230,23 +230,23 @@ Le role `member` de l'`itemProcess` sélectionné contient un `Item` avec des `m
Ces formulaires permettront de créé les champs attendus par `condition_attribute_encryption_list` dans le role `Member` de l'`ItemProcess` sélectionné, dans l`ItemMember` de l'utilisateur (champs dans `data` des attribut `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` correpsondants). Ces formulaires permettront de créé les champs attendus par `condition_attribute_encryption_list` dans le role `Member` de l'`ItemProcess` sélectionné, dans l`ItemMember` de l'utilisateur (champs dans `data` des attribut `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` correpsondants).
Une fois l'`ItemMember` complété, il est ajouté à la liste des membres pour créer un nouveau `RequestPcd` envoyé pour mises à jours aux managers du rôle `Member` du `ItemProcess` sélectionné via un `RequestPrdUpdate`. Une fois l'`ItemMember` complété, il est ajouté à la liste des membres pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `ItemProcess` sélectionné via un `PrdUpdate`.
### 10.3. <a name='ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process ### 10.3. <a name='ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>ItemProcess 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. 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 l'`ItemProcess` complété, il est ajouté à la liste des membres pour créer un nouveau `RequestPcd` envoyé pour mises à jours aux managers du rôle `Process` du `ItemProcess` sélectionné via un `RequestPrdUpdate`. Une fois l'`ItemProcess` complété, il est ajouté à la liste des membres pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `ItemProcess` sélectionné via un `PrdUpdate`.
### 10.4. <a name='RceptiondesRequestPcdetRequestPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des RequestPcd et RequestPrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné) ### 10.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 `RequestPrdList` pour chaque membre de chaque rôle du process sélectionné. Envoi d'un `PrdList` pour chaque membre de chaque rôle du process sélectionné.
## 11. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`) ## 11. <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 (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. 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 `RequestPrdList` 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 `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).
## 12. <a name='Clsdethirdparties'></a>Clés de third parties ## 12. <a name='Clsdethirdparties'></a>Clés de third parties
@ -254,25 +254,25 @@ 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. 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 `Prd` concernés.
## 13. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`) ## 13. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
Pour recrééer sa clé privée et envoyer un `RequestPrdList` à 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 `PrdList` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
1. Récupération de Part1Enc en cache 1. Récupération de Part1Enc en cache
2. Création de la `pre_id` avec le mot de passe 2. Création de la `pre_id` avec le mot de passe
Puis depuis la liste des membres du process, pour chacun des membres : Puis depuis la liste des membres du process, pour chacun des membres :
1. Création de `RequestPrdList` à destination du membre 1. 1. Création de `PrdList` à destination du membre 1.
2. Création de `Message` du `RequestPrdList` à destination du membre. 2. Création de `Message` du `PrdList` à destination du membre.
3. Envoi de la transaction SP du `Message` du `RequestPrdList` à destination du membre avec la `pre_id`. 3. Envoi de la transaction SP du `Message` du `PrdList` à destination du membre avec la `pre_id`.
4. Envoi du `Message` du `RequestPrdList` à destination du membre. 4. Envoi du `Message` du `PrdList` à destination du membre.
5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`. 5. Attente de la validation (`PrdResponse`) du `PrdUpdate`.
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`. 6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `PrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache. 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 `ItemProcess`. 6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_confidential` des `PrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe 6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2` 6.4. Concaténation de `Part1` et `Part2`
7. Réception des flux PCD et PRDResponse des gestionnaires des membres 7. Réception des flux PCD et PRDResponse des gestionnaires des membres
@ -281,4 +281,4 @@ Puis depuis la liste des membres du process, pour chacun des membres :
## 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. * [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.

View File

@ -16,7 +16,7 @@
## 1. <a name='Objectif'></a>Objectif ## 1. <a name='Objectif'></a>Objectif
Les transactions Silent Payment SP intègrent directement dans l'architecture web de l'application, comme démontré dans le client web. La gestion et l'intégration des SP sont conçues pour être fluides avec les systèmes front-end, assurant une expérience utilisateur transparente tout en maintenant la sécurité et la confidentialité au cœur de l'interaction utilisateur. Les transactions Silent Payments SP intègrent directement dans l'architecture web de l'application, comme démontré dans le client web. La gestion et l'intégration des SP sont conçues pour être fluides avec les systèmes front-end, assurant une expérience utilisateur transparente tout en maintenant la sécurité et la confidentialité au cœur de l'interaction utilisateur.
## 2. <a name='Porte'></a>Portée ## 2. <a name='Porte'></a>Portée
@ -32,16 +32,16 @@ Dans le système 4NK, les items représentent les entités ou les objets appelé
* **Member**: Représente les utilisateurs ou entités participant à un processus. * **Member**: Représente les utilisateurs ou entités participant à un processus.
* **Peer**: Identifie les nœuds ou participants du réseau qui aident à faciliter les communications et les transactions. * **Peer**: Identifie les nœuds ou participants du réseau qui aident à faciliter les communications et les transactions.
* **Artefact** : Un type d'objet générique personnalisable dans les `ItemProcess` , il peut y avoir une quantité infinie de type d'`artefacts` différents par `ItemProcess`. * **Artefact** : Un type d'objet générique personnalisable dans les `ItemProcess` , il peut y avoir une quantité infinie de type d'`artefacts` différents par `ItemProcess`.
* **Payment, Deposit, Commitment**: Représentent divers types de transactions ou d'engagements au sein du réseau, avec des règles et des attributs spécifiques. * **Payments, Deposit, Commitment**: Représentent divers types de transactions ou d'engagements au sein du réseau, avec des règles et des attributs spécifiques.
### 3.2. <a name='CompositionetFonction'></a> Composition et Fonction ### 3.2. <a name='CompositionetFonction'></a> Composition et Fonction
* **uuid**: Identifiant unique de l'item, assurant sa traçabilité et son unicité au sein du système. * **uuid**: Identifiant unique de l'item, assurant sa traçabilité et son unicité au sein du système.
* **version**: Numéro de version de l'item, facilitant le suivi des mises à jour et des modifications. * **version**: Numéro de version de l'item, facilitant le suivi des mises à jour et des modifications.
* **hash**: Optionnel, fournit un hash de l'item pour vérifier son intégrité et son authenticité. * **hash**: Optionnel, fournit un hash de l'item pour vérifier son intégrité et son authenticité.
* **item_type**: Catégorie ou type de l'item, tel que Process, Member, Payment, qui détermine son rôle et son utilisation dans le réseau. * **item_type**: Catégorie ou type de l'item, tel que Process, Member, Payments, qui détermine son rôle et son utilisation dans le réseau.
* **name**: Nom ou description de l'item, offrant un moyen de le référencer ou de l'identifier de manière lisible. * **name**: Nom ou description de l'item, offrant un moyen de le référencer ou de l'identifier de manière lisible.
* **pagination_number_per_request_pcd**: Détermine comment l'item est paginé ou divisé dans le contexte des RequestPcd, affectant la manière dont il est présenté ou accessible. * **pagination_number_per_request_pcd**: Détermine comment l'item est paginé ou divisé dans le contexte des Pcd, affectant la manière dont il est présenté ou accessible.
* **metadata**: Comprend MetadataContractPublic, MetadataRoleConfidential, et MetadataPrivate, encapsulant les attributs de l'item selon différents niveaux de confidentialité. * **metadata**: Comprend MetadataContractPublic, MetadataRoleConfidential, et MetadataPrivate, encapsulant les attributs de l'item selon différents niveaux de confidentialité.
#### 3.2.1. <a name='Casdutilisation'></a>Cas d'utilisation #### 3.2.1. <a name='Casdutilisation'></a>Cas d'utilisation
@ -72,5 +72,5 @@ La richesse et la diversité des métadonnées permettent une personnalisation e
## 6. <a name='Todo'></a>Todo ## 6. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels. * [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.
* [ ] Diagrammes de séquences * [ ] Diagrammes de séquences

View File

@ -22,8 +22,8 @@
* 7.1. [Connexion d'un client à sa liste relais via les messages de type `MessageConnect`](#ConnexiondunclientsalisterelaisvialesmessagesdetypeMessageConnect) * 7.1. [Connexion d'un client à sa liste relais via les messages de type `MessageConnect`](#ConnexiondunclientsalisterelaisvialesmessagesdetypeMessageConnect)
* 7.1.1. [Récupération et choix des relais](#Rcuprationetchoixdesrelais) * 7.1.1. [Récupération et choix des relais](#Rcuprationetchoixdesrelais)
* 7.1.2. [Envoi du message de type `MessageConnect` à chaque relais](#EnvoidumessagedetypeMessageConnectchaquerelais) * 7.1.2. [Envoi du message de type `MessageConnect` à chaque relais](#EnvoidumessagedetypeMessageConnectchaquerelais)
* 7.2. [Envoi de `RequestPcd` sur les relais via les messages de type `Message`](#EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage) * 7.2. [Envoi de `Pcd` sur les relais via les messages de type `Message`](#EnvoidePcdsurlesrelaisvialesmessagesdetypeMessage)
* 7.3. [Envoi de `RequestPrd` sur les relais via les messages de type `Message`](#EnvoideRequestPrdsurlesrelaisvialesmessagesdetypeMessage) * 7.3. [Envoi de `Prd` sur les relais via les messages de type `Message`](#EnvoidePrdsurlesrelaisvialesmessagesdetypeMessage)
* 7.4. [Traitement des messages de type `Message` par les clients](#TraitementdesmessagesdetypeMessageparlesclients) * 7.4. [Traitement des messages de type `Message` par les clients](#TraitementdesmessagesdetypeMessageparlesclients)
* 8. [Traitements par les relais](#Traitementsparlesrelais) * 8. [Traitements par les relais](#Traitementsparlesrelais)
* 8.1. [Traitement des messages de type `MessageConnect` par les relais](#TraitementdesmessagesdetypeMessageConnectparlesrelais) * 8.1. [Traitement des messages de type `MessageConnect` par les relais](#TraitementdesmessagesdetypeMessageConnectparlesrelais)
@ -41,7 +41,7 @@
* 10.6.1. [Clients](#Clients) * 10.6.1. [Clients](#Clients)
* 10.6.2. [Relais](#Relais-1) * 10.6.2. [Relais](#Relais-1)
* 10.7. [Connexion au réseau de nœuds de layer 1](#Connexionaurseaudenudsdelayer1) * 10.7. [Connexion au réseau de nœuds de layer 1](#Connexionaurseaudenudsdelayer1)
* 10.8. [Horodatage et ancrage des `RequestPrd` via les transactions Silent Payment (SP)](#HorodatageetancragedesRequestPrdvialestransactionsSilentPaymentSP) * 10.8. [Horodatage et ancrage des `Prd` via les transactions Silent Payments (SP)](#HorodatageetancragedesPrdvialestransactionsSilentPaymentsP)
* 11. [Transactions mainnet Bitcoin](#TransactionsmainnetBitcoin) * 11. [Transactions mainnet Bitcoin](#TransactionsmainnetBitcoin)
* 11.1. [Horodatage et ancrage des blocs de la side chain sur Bitcoin](#HorodatageetancragedesblocsdelasidechainsurBitcoin) * 11.1. [Horodatage et ancrage des blocs de la side chain sur Bitcoin](#HorodatageetancragedesblocsdelasidechainsurBitcoin)
* 11.2. [Remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin](#RemboursementdesfraisdhorodatageetancragedesblocsdelasidechainsurBitcoin) * 11.2. [Remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin](#RemboursementdesfraisdhorodatageetancragedesblocsdelasidechainsurBitcoin)
@ -84,9 +84,9 @@ Les objets `SharedPeer` définissent les caractéristiques de la preuve de trava
### 5.5. <a name='AdresseSPdefaucet'></a>6.5. Adresse SP de faucet ### 5.5. <a name='AdresseSPdefaucet'></a>6.5. Adresse SP de faucet
L'utilisateur fournit aux relais une adresse SP (Silent Payment) dite de faucet `faucet_sp_address`. Un portefeuille est généré en mémoire pour chaque relais à la réception des fonds, les fonds sont ensuite transférés vers l'adresse SP de l'utilisateur et le portefeuille est supprimé. L'utilisateur fournit aux relais une adresse SP (Silent Payments) dite de faucet `faucet_sp_address`. Un portefeuille est généré en mémoire pour chaque relais à la réception des fonds, les fonds sont ensuite transférés vers l'adresse SP de l'utilisateur et le portefeuille est supprimé.
L'utilisateur reçoit en retour une transaction Silent Payment (SP) contenant des jetons sur l'adresse dite de faucet `faucet_sp_address`, cette transaction inclut un output supplémentaire avec le hash du message de type `MessageConnect` ou `Message` correspondant. L'utilisateur reçoit en retour une transaction Silent Payments (SP) contenant des jetons sur l'adresse dite de faucet `faucet_sp_address`, cette transaction inclut un output supplémentaire avec le hash du message de type `MessageConnect` ou `Message` correspondant.
### Objets `MessageGeneric` contenu dans les types `Message` et `MessageConnect` ### Objets `MessageGeneric` contenu dans les types `Message` et `MessageConnect`
@ -94,7 +94,7 @@ L'utilisateur reçoit en retour une transaction Silent Payment (SP) contenant de
* **`shared_peer_list`** : Une liste de pairs partagés, représentée par des objets `SharedPeer`. Cette liste sert à partager les pairs entre les relais et les clients et les relais entre eux. * **`shared_peer_list`** : Une liste de pairs partagés, représentée par des objets `SharedPeer`. Cette liste sert à partager les pairs entre les relais et les clients et les relais entre eux.
* **`shared_process_list`** : Une liste de processus partagés, représentée par des objets `SharedProcess`. Cette liste sert à partager les processus entre les relais et les clients et les relais entre eux. * **`shared_process_list`** : Une liste de processus partagés, représentée par des objets `SharedProcess`. Cette liste sert à partager les processus entre les relais et les clients et les relais entre eux.
* **`faucet_sp_address`** : L'adresse pour recevoir les fonds du faucet (indispensable pour pouvoir crééer des requètes Silent Payment). * **`faucet_sp_address`** : L'adresse pour recevoir les fonds du faucet (indispensable pour pouvoir crééer des requètes Silent Payments).
* **`pow`** : Représente un défi de Preuve de Travail (PoW), représentée par un objet `Pow`. * **`pow`** : Représente un défi de Preuve de Travail (PoW), représentée par un objet `Pow`.
* **`raw_transaction_list`** : Liste de transactions à diffuser. * **`raw_transaction_list`** : Liste de transactions à diffuser.
@ -138,13 +138,13 @@ La structure `L1Node` détaille un nœud blockchain de niveau 1 pour la validati
* **`reward_send_tx_list`** : Liste des transactions de récompense dépensées par ce noeud. * **`reward_send_tx_list`** : Liste des transactions de récompense dépensées par ce noeud.
* **`anchorage_tx_list`** : Liste des transactions d'ancrage dépensées par ce noeud. * **`anchorage_tx_list`** : Liste des transactions d'ancrage dépensées par ce noeud.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud. * **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud. * **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payments les fonds de ce noeud.
La structure `L1NodeMining` détaille un nœud blockchain de niveau 1 (Layer 1) se concentrant sur les opérations minières. Les attributs ont les fonctions suivantes : La structure `L1NodeMining` détaille un nœud blockchain de niveau 1 (Layer 1) se concentrant sur les opérations minières. Les attributs ont les fonctions suivantes :
* **`block_mined_list`** : Liste des blocs extraits. * **`block_mined_list`** : Liste des blocs extraits.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud. * **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud. * **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payments les fonds de ce noeud.
La structure `L2Node` représente un nœud blockchain de niveau 2 (Layer 2) pour la validation et le relais des transaction. Les attributs ont les fonctions suivantes : La structure `L2Node` représente un nœud blockchain de niveau 2 (Layer 2) pour la validation et le relais des transaction. Les attributs ont les fonctions suivantes :
@ -156,7 +156,7 @@ La structure `L2Node` représente un nœud blockchain de niveau 2 (Layer 2) pou
* **`magic_number`** : Le nombre magique propre à la blochain. * **`magic_number`** : Le nombre magique propre à la blochain.
* **`challenge`** : Le script de signature des blocs. * **`challenge`** : Le script de signature des blocs.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud. * **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud. * **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payments les fonds de ce noeud.
La structure `L2NodeMining` détaille un nœud blockchain de niveau 2 (Layer 2) se concentrant sur les opérations minières. Les attributs ont les fonctions suivantes : La structure `L2NodeMining` détaille un nœud blockchain de niveau 2 (Layer 2) se concentrant sur les opérations minières. Les attributs ont les fonctions suivantes :
@ -164,14 +164,14 @@ La structure `L2NodeMining` détaille un nœud blockchain de niveau 2 (Layer 2)
* **`sp_address_refunder`** : Adresse SP rembourseur. * **`sp_address_refunder`** : Adresse SP rembourseur.
* **`block_hash_mined_list`** : Liste des hashes de blocs extraits. * **`block_hash_mined_list`** : Liste des hashes de blocs extraits.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud. * **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud. * **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payments les fonds de ce noeud.
La structure `L2Certif` spécifie une certification de niveau 2. Les attributs ont les fonctions suivantes : La structure `L2Certif` spécifie une certification de niveau 2. Les attributs ont les fonctions suivantes :
* **`sp_address_certif_l1`** : Adresse de certification de niveau 1. * **`sp_address_certif_l1`** : Adresse de certification de niveau 1.
* **`block_certified_list`** : Liste des blocs certifiés de types `BlockCertif`. * **`block_certified_list`** : Liste des blocs certifiés de types `BlockCertif`.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud. * **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud. * **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payments les fonds de ce noeud.
La structure `BlockCertif` spécifie un bloc certifié. Les attributs ont les fonctions suivantes : La structure `BlockCertif` spécifie un bloc certifié. Les attributs ont les fonctions suivantes :
@ -184,7 +184,7 @@ La structure `BlockCertif` spécifie un bloc certifié. Les attributs ont les f
#### 6.1.1. <a name='Rcuprationetchoixdesrelais'></a>7.1.1. Récupération et choix des relais #### 6.1.1. <a name='Rcuprationetchoixdesrelais'></a>7.1.1. Récupération et choix des relais
Pour discuter avec les relais du réseau et faire relayer des `RequestPcd` et des `RequestPrd` sous forme de `Message`, l'utilisateur doit se connecter à un ou plusieurs relais, quatre par défaut. Pour discuter avec les relais du réseau et faire relayer des `Pcd` et des `Prd` sous forme de `Message`, l'utilisateur doit se connecter à un ou plusieurs relais, quatre par défaut.
L'utilisateur envoie un message de type `MessageConnect` à chaque relais pour se connecter. Ensuite, il peut envoyer des `Message` à chacun des quatre relais connectés et recevoir des `Message` de leur part. L'utilisateur envoie un message de type `MessageConnect` à chaque relais pour se connecter. Ensuite, il peut envoyer des `Message` à chacun des quatre relais connectés et recevoir des `Message` de leur part.
@ -210,7 +210,7 @@ Objet de type `MessageConnect`. Les attributs ont les fonctions suivantes :
* ***message** : Contient le `MessageGeneric` * ***message** : Contient le `MessageGeneric`
### 6.2. <a name='EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage'></a>7.2. Envoi de `Request` sur les relais via les messages de type `Message` ### 6.2. <a name='EnvoidePcdsurlesrelaisvialesmessagesdetypeMessage'></a>7.2. Envoi de `Request` sur les relais via les messages de type `Message`
![MessageSend.png](diagrams/MessageSend.png "MessageSend.") ![MessageSend.png](diagrams/MessageSend.png "MessageSend.")
@ -219,7 +219,7 @@ Objet de type `MessageConnect`. Les attributs ont les fonctions suivantes :
Objet de type `Message`, Les attributs ont les fonctions suivantes : Objet de type `Message`, Les attributs ont les fonctions suivantes :
* **`message`** : Contient le `MessageGeneric` * **`message`** : Contient le `MessageGeneric`
* **`request_enc`** : Contient le `RequestPcd` ou un `RequestPrd` chiffré par la `ProcessKey` * **`request_enc`** : Contient le `Pcd` ou un `Prd` chiffré par la `ProcessKey`
### 6.4. <a name='TraitementdesmessagesdetypeMessageparlesclients'></a>7.4. Traitement des messages de type `Message` par les clients ### 6.4. <a name='TraitementdesmessagesdetypeMessageparlesclients'></a>7.4. Traitement des messages de type `Message` par les clients
@ -279,7 +279,7 @@ Bitcoin gère les bifurcations temporaires de la blockchain, permettant une réo
#### 9.6.1. <a name='Clients'></a>10.6.1. Clients #### 9.6.1. <a name='Clients'></a>10.6.1. Clients
Les clients se connectent au réseau de nœuds de side chain pour recevoir les blocs et les transactions, y compris les transactions Silent Payment (SP) liées aux `RequestPrd`. Les clients se connectent au réseau de nœuds de side chain pour recevoir les blocs et les transactions, y compris les transactions Silent Payments (SP) liées aux `Prd`.
#### 9.6.2. <a name='Relais'></a>10.6.2. Relais #### 9.6.2. <a name='Relais'></a>10.6.2. Relais
@ -289,9 +289,9 @@ Les relais fonctionnent comme des nœuds complets de la side chain, facilitant l
Les relais maintiennent également une connexion au réseau principal (mainnet) pour des opérations d'ancrage et d'horodatage. Les relais maintiennent également une connexion au réseau principal (mainnet) pour des opérations d'ancrage et d'horodatage.
### 9.8. <a name='HorodatageetancragedesRequestPrdvialestransactionsSilentPaymentSP'></a>10.8. Horodatage et ancrage des `RequestPrd` via les transactions Silent Payment (SP) ### 9.8. <a name='HorodatageetancragedesPrdvialestransactionsSilentPaymentsP'></a>10.8. Horodatage et ancrage des `Prd` via les transactions Silent Payments (SP)
Les `RequestPrd` sont ancrés dans la side chain à travers des transactions SP, offrant une preuve immuable de leur existence et de leur intégrité. Les `Prd` sont ancrés dans la side chain à travers des transactions SP, offrant une preuve immuable de leur existence et de leur intégrité.
## 10. <a name='TransactionsmainnetBitcoin'></a>11. Transactions mainnet Bitcoin ## 10. <a name='TransactionsmainnetBitcoin'></a>11. Transactions mainnet Bitcoin
@ -309,5 +309,5 @@ Ces spécifications techniques fournissent une vue d'ensemble de la façon dont
## 12. <a name='Todo'></a>Todo ## 12. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels. * [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.
* [ ] Diagrammes de séquences * [ ] Diagrammes de séquences

View File

@ -4,71 +4,56 @@
* 3. [Documents de référence](#Documentsderfrence) * 3. [Documents de référence](#Documentsderfrence)
* 4. [Définitions](#Dfinitions) * 4. [Définitions](#Dfinitions)
* 5. [Principes de messagerie](#Principesdemessagerie) * 5. [Principes de messagerie](#Principesdemessagerie)
* 5.1. [`RequestPrdConfirm`](#RequestPrdConfirm)
* 5.2. [`RequestPrdResponse`](#RequestPrdResponse)
* 6. [Encryption](#Encryption) * 6. [Encryption](#Encryption)
* 6.1. [Création et envoi](#Crationetenvoi) * 7. [Fonction des Pcd](#FonctiondesPcd)
* 6.2. [Réception](#Rception) * 7.1. [Schéma des flux](#Schmadesflux)
* 7. [Fonction des RequestPcd](#FonctiondesRequestPcd) * 7.2. [Création et envoi](#Crationetenvoi)
* 7.1. [Schéma des flux](#Schmadesflux) * 7.3. [Réception](#Rception)
* 7.2. [Création et envoi](#Crationetenvoi-1) * 8. [Fonction des`Prd`](#FonctiondesPrd)
* 7.3. [Réception](#Rception-1) * 8.1. [Schéma des flux](#Schmadesflux-1)
* 8. [Fonction des`RequestPrd`](#FonctiondesRequestPrd) * 8.2. [Création d'un `Prd`](#CrationdunPrd)
* 8.1. [Schéma des flux](#Schmadesflux-1) * 8.3. [Réception](#Rception-1)
* 8.2. [Fonctionnalités optionnelles](#Fonctionnalitsoptionnelles) * 9. [PrdList - Demande de Listes](#PrdList-DemandedeListes)
* 8.3. [Création et envoi](#Crationetenvoi-1) * 9.1. [Schéma des flux](#Schmadesflux-1)
* 8.4. [Réception](#Rception-1) * 10. [PrdMessage - Envoi de Messages](#PrdMessage-EnvoideMessages)
* 9. [RequestPrdList - Demande de Listes ](#RequestPrdList-DemandedeListesRequestPcd) * 10.1. [Schéma des flux](#Schmadesflux-1)
* 9.1. [Schéma des flux](#Schmadesflux-1) * 11. [PrdUpdate - Mises à Jour de Pcd](#PrdUpdate-MisesJourdePcd)
* 9.2. [Création : Datas spécifiques](#Cration:Datasspcifiques) * 11.1. [Schéma des flux](#Schmadesflux-1)
* 9.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques) * 12. [PrdConfirm - Confirmation de Réception](#PrdConfirm-ConfirmationdeRception)
* 10. [RequestPrdMessage - Envoi de Messages](#RequestPrdMessage-EnvoideMessages) * 12.1. [Schéma des flux](#Schmadesflux-1)
* 10.1. [Schéma des flux](#Schmadesflux-1) * 13. [PrdResponse - Répondre à une Demande](#PrdResponse-RpondreuneDemande)
* 10.2. [Création : Datas spécifiques](#Cration:Datasspcifiques-1) * 13.1. [Schéma des flux](#Schmadesflux-1)
* 10.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques-1)
* 11. [RequestPrdUpdate - Mises à Jour de RequestPcd](#RequestPrdUpdate-MisesJourdeRequestPcd)
* 11.1. [Schéma des flux](#Schmadesflux-1)
* 11.2. [Création : Datas spécifiques](#Cration:Datasspcifiques-1)
* 11.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques-1)
* 12. [RequestPrdConfirm - Confirmation de Réception](#RequestPrdConfirm-ConfirmationdeRception)
* 12.1. [Schéma des flux](#Schmadesflux-1)
* 12.2. [Création : Datas spécifiques](#Cration:Datasspcifiques-1)
* 12.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques-1)
* 13. [RequestPrdResponse - Répondre à une Demande](#RequestPrdResponse-RpondreuneDemande)
* 13.1. [Schéma des flux](#Schmadesflux-1)
* 13.2. [Création : Datas spécifiques](#Cration:Datasspcifiques-1)
* 13.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques-1)
* 14. [Exemples de Code](#ExemplesdeCode) * 14. [Exemples de Code](#ExemplesdeCode)
* 15. [Todo](#Todo) * 15. [Todo](#Todo)
# `RequestPrd` et `RequestPcd` - Specs # `Prd` et `Pcd` - Specs
## 1. <a name='Objectif'></a>Objectif ## 1. <a name='Objectif'></a>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 (`Pcd`) et Portable Request Document (`Prd`) 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. <a name='Porte'></a>Portée ## 2. <a name='Porte'></a>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 `Pcd` et `Prd`.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 `Pcd` et `Prd` 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. <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='Dfinitions'></a>Définitions ## 4. <a name='Dfinitions'></a>Définitions
* **Portable Contract Document (`RequestPcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`). * **Portable Contract Document (`Pcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`).
* **Portable Request Document (`RequestPrd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `RequestPcd`. Les `RequestPrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `RequestPrd` incluent : * **Portable Request Document (`Prd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `Pcd`. Les `PrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `Prd` incluent :
* `RequestPrdList`: Demande de listes d'`Item`. En réponse, une `RequestPcd` est reçue avec les `RequestPrdResponse` correspondants. * `PrdList`: Demande de listes d'`Item`. En réponse, une `Pcd` est reçue avec les `PrdResponse` correspondants.
* `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres. * `PrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `Prd` à diffuser sur le réseau des nœuds de la side chain. Les `PrdMessage` peuvent répondre les uns aux autres.
* `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour. * `PrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `PCD`), qui sera déchiffrée et validée ou non par des `PrdResponse` en retour.
* `RequestPrdConfirm`: Confirmation de la réception des `RequestPrd` (à l'exception de `RequestPrdConfirm` eux-même). * `PrdConfirm`: Confirmation de la réception des `Prd` (à l'exception de `PrdConfirm` eux-même).
* `RequestPrdResponse`: Réponse aux autres types de `RequestPrd` (à l'exception de `RequestPrdConfirm`, et `RequestPrdMessage`). * `PrdResponse`: Réponse aux autres types de `Prd` (à l'exception de `PrdConfirm`, et `PrdMessage`).
* **Message**: Enveloppe commune pour les `RequestPrd` et `RequestPcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `RequestPrd` et `RequestPcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`. * **Message**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
* **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payment correspondant à un `RequestPrd`. * **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payments correspondant à un `Prd`.
* **ProcessKey**: La clé publique de chiffrement d'un `ItemProcess` (trouvée dans un `ItemProcess`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément). * **ProcessKey**: La clé publique de chiffrement d'un `ItemProcess` (trouvée dans un `ItemProcess`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément).
@ -76,111 +61,111 @@ Voir [_Doc_references.md](_Doc_references.md).
* **pre-id**: Pré-identifiant des utilisateurs, constitué du hash de la partie 1 de la `KeyRecover`. * **pre-id**: Pré-identifiant des utilisateurs, constitué du hash de la partie 1 de la `KeyRecover`.
## 5. <a name='Principesdemessagerie'></a>Principes de messagerie ## 5. <a name='Principesdemessagerie'></a>Principes de messagerie
Les `RequestPcd` sont envoyés à tous les participants connectés sans attente de retour spécifique et ne sont pas associés à une `transaction SP`. Les `Pcd` sont envoyés à tous les participants connectés sans attente de retour spécifique et ne sont pas associés à une `transaction SP`.
Les `RequestPrd` sont toujours accompagnés d'une `transaction SP`, transmise dans l'attribut `raw_transaction_list` d'un `RequestPrdMessage` associé (à l'exception des `RequestPrdMessage` eux-mêmes). Les `Prd` sont toujours accompagnés d'une `transaction SP`, transmise dans l'attribut `raw_transaction_list` d'un `PrdMessage` associé (à l'exception des `PrdMessage` eux-mêmes).
Les `RequestPrd` sont des demandes d'actions ou des réponses à ces demandes, interagissant de la manière suivante : Les `Prd` sont des demandes d'actions ou des réponses à ces demandes, interagissant de la manière suivante :
* `RequestPrdList` : Constitue généralement la première requête d'un workflow et ne répond pas à un autre `RequestPrd`. * `PrdList` : Constitue généralement la première requête d'un workflow et ne répond pas à un autre `Prd`.
* `RequestPrdMessage`, avec 2 cas de figure : * `PrdMessage`, avec 2 cas de figure :
* Demande de relais d'une `transaction SP`, dans ce cas, le `RequestPrdMessage` ne répond pas à un autre `RequestPrd`. * Demande de relais d'une `transaction SP`, dans ce cas, le `PrdMessage` ne répond pas à un autre `Prd`.
* Envoi de message, pouvant initier un échange de messagerie ou répondre à un autre `RequestPrdMessage`. * Envoi de message, pouvant initier un échange de messagerie ou répondre à un autre `PrdMessage`.
* `RequestPrdUpdate` : Souvent la première requête d'un workflow, un `RequestPrdUpdate` ne répond pas à un autre `RequestPrd`. * `PrdUpdate` : Souvent la première requête d'un workflow, un `PrdUpdate` ne répond pas à un autre `Prd`.
* `RequestPrdConfirm` : Répond à tous les autres types de `RequestPrd` (à l'exception des `RequestPrdConfirm` eux-mêmes). * `PrdConfirm` : Répond à tous les autres types de `Prd` (à l'exception des `PrdConfirm` eux-mêmes).
* `RequestPrdResponse` : Répond à tous les autres types de `RequestPrd` (à l'exception des `RequestPrdConfirm`, `RequestPrdResponse` eux-mêmes). Dans le cas d'une réponse à un `RequestPrdList` ou d'un `RequestPrdUpdate`, le `RequestPrdResponse` doit obligatoirement être accompagné d'un `RequestPcd`. * `PrdResponse` : Répond à tous les autres types de `Prd` (à l'exception des `PrdConfirm`, `PrdResponse` eux-mêmes). Dans le cas d'une réponse à un `PrdList` ou d'un `PrdUpdate`, le `PrdResponse` doit obligatoirement être accompagné d'un `Pcd`.
Selon le type de `RequestPrd`, les demandes peuvent s'adresser à tous les membres de l'`ItemProcess`, aux gestionnaires du type d'`Item` concerné ou simplement à l'émetteur, selon : Selon le type de `Prd`, les demandes peuvent s'adresser à tous les membres de l'`ItemProcess`, aux gestionnaires du type d'`Item` concerné ou simplement à l'émetteur, selon :
* `RequestPrdList` : Envoyé aux gestionnaires du type d'`Item` concerné. * `PrdList` : Envoyé aux gestionnaires du type d'`Item` concerné.
* `RequestPrdMessage`, avec 2 cas de figure : * `PrdMessage`, avec 2 cas de figure :
* Demande de relais d'une `transaction SP`, dans ce cas, destinée au destinataire du `RequestPrd` associé. * Demande de relais d'une `transaction SP`, dans ce cas, destinée au destinataire du `Prd` associé.
* Envoi de message au destinataire du message. * Envoi de message au destinataire du message.
* `RequestPrdUpdate` : Envoyé aux gestionnaires du type d'`Item` concerné. * `PrdUpdate` : Envoyé aux gestionnaires du type d'`Item` concerné.
* `RequestPrdConfirm` : Envoyé à l'émetteur du `RequestPrd` associé. * `PrdConfirm` : Envoyé à l'émetteur du `Prd` associé.
* `RequestPrdResponse`, avec 2 cas de figure : * `PrdResponse`, avec 2 cas de figure :
* Réponse à un `RequestPrdList` : envoyée à l'émetteur du `RequestPrdList`. * Réponse à un `PrdList` : envoyée à l'émetteur du `PrdList`.
* Réponse à un `RequestPrdUpdate` : envoyée à tous les membres et à l'émetteur du `RequestPrdUpdate`. * Réponse à un `PrdUpdate` : envoyée à tous les membres et à l'émetteur du `PrdUpdate`.
Les traitements pour l'envoi des `RequestPrd` varient selon leur type, principalement autour des aspects suivants : Les traitements pour l'envoi des `Prd` varient selon leur type, principalement autour des aspects suivants :
* **`request_type`**: Est un attribut des `RequestPrd` et des `RequestPcd` permettant de connaître le type de requête. * **`request_type`**: Est un attribut des `Prd` et des `Pcd` permettant de connaître le type de requête.
* **Notification user** : Nécessité de notifier l'utilisateur courant, ou non. * **Notification user** : Nécessité de notifier l'utilisateur courant, ou non.
* **`transaction SP` + `RequestPrdMessage`** : Envoi d'une `transaction SP` dans un `RequestPrdMessage`, ou non. * **`transaction SP` + `PrdMessage`** : Envoi d'une `transaction SP` dans un `PrdMessage`, ou non.
* **`RequestPcd` to send** : Envoi d'un `RequestPcd` en complément du `RequestPrd`. * **`Pcd` to send** : Envoi d'un `Pcd` en complément du `Prd`.
* **`request_type` send to** : Membres qui recevront les `transaction SP` et les `RequestPrdMessage` correspondants, avec les clés de déchiffrement pour les champs confidentiels. * **`request_type` send to** : Membres qui recevront les `transaction SP` et les `PrdMessage` correspondants, avec les clés de déchiffrement pour les champs confidentiels.
* **`RequestPcd` reply waiting** : Attente d'un `RequestPcd` en retour, ou non. * **`Pcd` reply waiting** : Attente d'un `Pcd` en retour, ou non.
* **`RequestPrdResponse` reply waiting** : Attente d'un ou de plusieurs `RequestPrdResponse` en retour, ou non. * **`PrdResponse` reply waiting** : Attente d'un ou de plusieurs `PrdResponse` en retour, ou non.
* **`RequestPrdConfirm` reply waiting** : Attente d'un `RequestPrdConfirm` en retour, ou non. * **`PrdConfirm` reply waiting** : Attente d'un `PrdConfirm` en retour, ou non.
Ce qui est résumé pour l'envoi : Ce qui est résumé pour l'envoi :
| `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting | | `request_type` | Notification user | `transaction SP` + `PrdMessage` | `Pcd` to send | `request_type` send to | `Pcd` reply waiting | `PrdResponse` reply waiting | `PrdConfirm` reply waiting |
|----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------| |----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------|
| `RequestPrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `ItemProcess` | Yes | Yes | Yes | | `PrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `ItemProcess` | Yes | Yes | Yes |
| `RequestPrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `ItemProcess` | No | Yes | Yes | | `PrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `ItemProcess` | No | Yes | Yes |
| `RequestPrdMessage` | waiting `sig_value` + `message_public`, `message_confidential`, `message_private` | if no `raw_transaction_list` | No | a member of the `ItemProcess` | No | No | if no `raw_transaction_list` | | `PrdMessage` | waiting `sig_value` + `message_public`, `message_confidential`, `message_private` | if no `raw_transaction_list` | No | a member of the `ItemProcess` | No | No | if no `raw_transaction_list` |
| `RequestPrdResponse` | waiting `sig_value` | Yes | No | See Received | No | No | Yes | | `PrdResponse` | waiting `sig_value` | Yes | No | See Received | No | No | Yes |
| `RequestPrdConfirm` | (option) Waiting `code_confirm_enc_by_shared_secret` | Yes | No | See Received | No | No | No | | `PrdConfirm` | (option) Waiting `code_confirm_confidential` | Yes | No | See Received | No | No | No |
Les traitements pour la réception des `RequestPrd` varient selon leur type, principalement autour des aspects suivants : Les traitements pour la réception des `Prd` varient selon leur type, principalement autour des aspects suivants :
* **Notification user** : Nécessité de notifier l'utilisateur courant, ou non. * **Notification user** : Nécessité de notifier l'utilisateur courant, ou non.
* **`RequestPrdConfirm` to send**: Envoi d'une confirmation, ou non * **`PrdConfirm` to send**: Envoi d'une confirmation, ou non
* **`RequestPrdResponse` to send**: Envoi d'un `RequestPrdResponse` ou non. * **`PrdResponse` to send**: Envoi d'un `PrdResponse` ou non.
* **`RequestPrdResponse` reply waiting**: Attente d'un `RequestPrdResponse` en retour ou non. * **`PrdResponse` reply waiting**: Attente d'un `PrdResponse` en retour ou non.
* **`RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send )**: Attente d'un `RequestPrdConfirm` en retour ou non. * **`PrdConfirm` reply waiting (from `PrdResponse` send )**: Attente d'un `PrdConfirm` en retour ou non.
Ce qui est résumé Pour la réception : Ce qui est résumé Pour la réception :
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) | | `request_type` | Notification user | `PrdConfirm` to send | `Pcd` to send | `PrdResponse` to send | `PrdResponse` reply waiting | `PrdConfirm` reply waiting (from `PrdResponse` send ) |
|----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------| |----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes | | `PrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
| `RequestPrdUpdate` | RequestPrd | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes | | `PrdUpdate` | Prd | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes |
| `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No | | `PrdMessage` | Waiting `PrdMessage` reply | if no `raw_transaction_list` | No | No | No | No |
| `RequestPrdResponse` | RequestPrd | Yes | No | No | No | No | | `PrdResponse` | Prd | Yes | No | No | No | No |
| `RequestPrdConfirm` | RequestPrd | No | No | No | No | No | | `PrdConfirm` | Prd | No | No | No | No | No |
## 6. <a name='Encryption'></a>Encryption ## 6. <a name='Encryption'></a>Encryption
Schema : Schema :
![PCD_PRD_encryption](diagrams/PCD_PRD_encryption.png "PCD_PRD_encryption") ![PCD_PRD_encryption](diagrams/PCD_PRD_encryption.png "PCD_PRD_encryption")
Les `Metadata` des `Item` des `RequestPcd` et les attributs des `RequestPcd` et `RequestPrd` sont chiffrés de la sorte : Les `Metadata` des `Item` des `Pcd` et les attributs des `Pcd` et `Prd` sont chiffrés de la sorte :
* **Données publiques** : Utilisent un chiffrement symétrique basé sur la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)). Ces données sont ainsi accessibles à tous pour le déchiffrement. * **Données publiques** : Utilisent un chiffrement symétrique basé sur la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)). Ces données sont ainsi accessibles à tous pour le déchiffrement.
* **Données confidentielles destinées aux membres d'un `role` spécifique d'un `ItemProcess` dans les RequestPcd** : Le chiffrement est réalisé symétriquement à partir d'une clé de chiffrement générée à la volée pour chaque champ et pour chaque item d'une liste d'un `RequestPcd`. Ces clés seront ensuite ajoutées aux `RequestPrd` dans l'attribut `RequestPcd_keys_role_confidential_list_enc_by_shared_secret`; lui même alors chiffré par la `KeyConfidential`. * **Données confidentielles destinées aux membres d'un `role` spécifique d'un `ItemProcess` dans les Pcd** : Le chiffrement est réalisé symétriquement à partir d'une clé de chiffrement générée à la volée pour chaque champ et pour chaque item d'une liste d'un `Pcd`. Ces clés seront ensuite ajoutées aux `Prd` dans l'attribut `Pcd_keys_role_confidential_list_confidential`; lui même alors chiffré par la `KeyConfidential`.
* **Données confidentielles destinées aux membres d'un `role` spécifique d'un `ItemProcess` dans les RequestPrd** : Utilisent un chiffrement symétrique basé sur les clés de chiffrement AES-GCM-256, générées à la volée dans les `RequestPcd` et transmises par le `RequestPrd`, chiffrées par la `KeyConfidential` du Diffie-Hellman de la transaction Silent Payment associée à ce `RequestPrd` (cf. [Specs-Definition](SpecsDefinition.md)) d'une transaction `SP`. * **Données confidentielles destinées aux membres d'un `role` spécifique d'un `ItemProcess` dans les Prd** : Utilisent un chiffrement symétrique basé sur les clés de chiffrement AES-GCM-256, générées à la volée dans les `Pcd` et transmises par le `Prd`, chiffrées par la `KeyConfidential` du Diffie-Hellman de la transaction Silent Payments associée à ce `Prd` (cf. [Specs-Definition](SpecsDefinition.md)) d'une transaction `SP`.
* **Données privées** : Chiffrées symétriquement en utilisant la clé de dépense de connexion (`recover`) du signet (voir Login - Specs). * **Données privées** : Chiffrées symétriquement en utilisant la clé de dépense de connexion (`recover`) du signet (voir Login - Specs).
Principaux champs des `Request` contenus dans les `RequestPcd` et `RequestPrd` chiffrés : Principaux champs des `Request` contenus dans les `Pcd` et `Prd` chiffrés :
* **`request_type`** : Type de requête : `RequestPcd`, `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, `RequestPrdConfirm`, `RequestPrdResponse`. * **`request_type`** : Type de requête : `Pcd`, `PrdList`, `PrdMessage`, `PrdUpdate`, `PrdConfirm`, `PrdResponse`.
* **`item_name`** : Noms des items : `peer`, `member`, `process`, `payment`, `deposit`, `commitment`, et les `artefact` personnalisés. * **`item_name`** : Noms des items : `peer`, `member`, `process`, `Payments`, `deposit`, `commitment`, et les `artefact` personnalisés.
* **`version`** : Version de la requête. * **`version`** : Version de la requête.
* **`process_hash`** : Hash de l'`ItemProcess` concerné. * **`process_hash`** : Hash de l'`ItemProcess` concerné.
* **`request_pcd_reference_hash`** : Hash du `RequestPcd` auquel le `RequestPrd` fait référence. * **`request_pcd_reference_hash`** : Hash du `Pcd` auquel le `Prd` fait référence.
* **`request_pcd_origin_hash`** : Hash du `RequestPcd` à l'origine du `RequestPrd`. * **`request_pcd_origin_hash`** : Hash du `Pcd` à l'origine du `Prd`.
* **`request_prd_reference_hash`** : Hash du `RequestPrd` auquel le `RequestPrd` fait référence. * **`request_prd_reference_hash`** : Hash du `Prd` auquel le `Prd` fait référence.
* **`request_prd_origin_hash`** : Hash du `RequestPrd` à l'origine du `RequestPrd`. * **`request_prd_origin_hash`** : Hash du `Prd` à l'origine du `Prd`.
* **`item_reference_hash`** : Hash de l'`Item` auquel le `RequestPcd` fait référence. * **`item_reference_hash`** : Hash de l'`Item` auquel le `Pcd` fait référence.
## 7. <a name='FonctiondesRequestPcd'></a>Fonction des RequestPcd ## 7. <a name='FonctiondesPcd'></a>Fonction des Pcd
Les Portable Contract Documents (`RequestPcd`) sont des documents au format `JSON` encapsulant des listes versionnées d'`Item`, dont les attributs sont chiffsrés selon trois niveaux de confidentialité : public, par rôles spécifiques, ou privé. (cf. [Specs-Security.md](Specs-Security.md)). Les Portable Contract Documents (`Pcd`) sont des documents au format `JSON` encapsulant des listes versionnées d'`Item`, dont les attributs sont chiffsrés selon trois niveaux de confidentialité : public, par rôles spécifiques, ou privé. (cf. [Specs-Security.md](Specs-Security.md)).
Les `Item` échangés via les `RequestPcd` sont soumis à une vérification par les `RequestPrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `ItemProcess` et les `member` du `Role` concerné. Les `Item` échangés via les `Pcd` sont soumis à une vérification par les `PrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `ItemProcess` et les `member` du `Role` concerné.
Principaux champs des `RequestPcd` : Principaux champs des `Pcd` :
* **`request`** : cf la descripton de la structure `Request`. * **`request`** : cf la descripton de la structure `Request`.
* **`item_enc_list`** : Les `Item` chiffrés sous forme `RequestPcdItemGenericEnc` par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste. * **`item_enc_list`** : Les `Item` chiffrés sous forme `PcdItemGenericEnc` par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
* **`pagination`** : La pagination de la liste des `Item`. * **`pagination`** : La pagination de la liste des `Item`.
Principaux champs de la structure `Pagination` : Principaux champs de la structure `Pagination` :
@ -190,72 +175,70 @@ Principaux champs de la structure `Pagination` :
* **`page_index`** : Index de la page. * **`page_index`** : Index de la page.
* **`page_total`** : Nombre total de pages. * **`page_total`** : Nombre total de pages.
Principaux champs de la structure `RequestPcdItemGenericEnc` : Principaux champs de la structure `PcdItemGenericEnc` :
* **`version`** : Version de l'`Item`. * **`version`** : Version de l'`Item`.
* **`item_type`** : Type de l'`Item`. * **`item_type`** : Type de l'`Item`.
* **`name`** : Nom de l'`Item`. * **`name`** : Nom de l'`Item`.
* **`request_pcd_item_enc_attribute_public_list`** : Liste d'objets `RequestPcdItemEncAttributePublic` des attributs publics de l'`Item` chiffré. * **`request_pcd_item_enc_attribute_public_list`** : Liste d'objets `PcdItemEncAttributePublic` des attributs publics de l'`Item` chiffré.
* **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `RequestPcdItemEncAttributeRoleConfidential` des attributs confidentiels de l'`Item` chiffré. * **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `PcdItemEncAttributeRoleConfidential` des attributs confidentiels de l'`Item` chiffré.
* **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `RequestPcdItemEncAttributePrivate` des attributs privés de l'`Item` chiffré. * **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `PcdItemEncAttributePrivate` des attributs privés de l'`Item` chiffré.
Principaux champs de la structure `RequestPcdItemEncAttributePublic` : Principaux champs de la structure `PcdItemEncAttributePublic` :
* **`attribute_name`** : Nom de l'attribut. * **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : Données chiffrées par la clé `ProcessKey` de l'`ItemProcess` concerné. * **`data_enc`** : Données chiffrées par la clé `ProcessKey` de l'`ItemProcess` concerné.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair. * **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair. * **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
Principaux champs de la structure `RequestPcdItemEncAttributeRoleConfidential` : Principaux champs de la structure `PcdItemEncAttributeRoleConfidential` :
* **`attribute_name`** : Nom de l'attribut. * **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : Données chiffrées par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste. * **`data_enc`** : Données chiffrées par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair. * **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair. * **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
Principaux champs de la structure `RequestPcdItemEncAttributePrivate` : Principaux champs de la structure `PcdItemEncAttributePrivate` :
* **`attribute_name`** : Nom de l'attribut. * **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : Données chiffrées par la clé privée `KeyRecover`. * **`data_enc`** : Données chiffrées par la clé privée `KeyRecover`.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair. * **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair. * **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
### 7.1. <a name='Schmadesflux'></a>Schéma des flux ### 7.1. <a name='Schmadesflux'></a>Schéma des flux
![RequestPcd](diagrams/PCD.png "RequestPcd") ![Pcd](diagrams/PCD.png "Pcd")
### 7.2. <a name='Crationetenvoi-1'></a>Création et envoi ### 7.2. <a name='Crationetenvoi'></a>Création et envoi
La création d'un `RequestPcd` suit plusieurs étapes : La création d'un `Pcd` suit plusieurs étapes :
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. 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. Ajouts et modifications éventuelles des `Item`. 2. Ajouts et modifications éventuelles des `Item`.
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)). 3. Chiffrement cf Encryption.
4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné. 4. Envoi du message cf [Messages - Specs](Messages-Specs.md).
### 7.3. <a name='Rception-1'></a>Réception ### 7.3. <a name='Rception'></a>Réception
La réception d'un `RequestPcd` suit plusieurs étapes : La réception d'un `Pcd` suit plusieurs étapes :
2. Recherche des `RequestPrd` en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash` de ces `RequestPrd`, et attente si nécessaire. 1. Recherche des `Prd` en relation via `Pcd_reference_hash` et `Pcd_origin_hash` de ces `Prd`, et attente si nécessaire.
3. Déchiffrage des attributs publics des `Item` des `RequestPcd` avec la `ProcessKey` du `ItemProcess` concerné. 2. Déchiffrement cf Encryption.
4. Déchiffrage des attributs confidentiels des `Item` des `RequestPcd` avec les clés de déchiffrement fournies par 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`.
## 8. <a name='FonctiondesRequestPrd'></a>Fonction des`RequestPrd` ## 8. <a name='FonctiondesPrd'></a>Fonction des`Prd`
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 solliciter 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 (Prd) sont des documents JSON qui encapsulent les valeurs de signatures et les clés de déchiffrement nécessaires à l'interprétation des `Pcd` via l'attribut `Pcd_keys_role_confidential_list_confidential`. Ils sont utilisés pour solliciter des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
Les clés permettant le chiffrement des attributs confidentiels par rôles des `Item` dans les `RequestPcd` sont elles-mêmes chiffrées dans les `RequestPrd` au moyen du chiffrement du `RequestPrd` par la clé `KeyConfidential` d'une `transaction SP` (cf. [Specs-Security.md](Specs-Security.md)). Ces clés sont uniquement distribuées aux `members` concernés par les `Item` des `RequestPcd` (rôles dans les `ItemProcess`). Les clés permettant le chiffrement des attributs confidentiels par rôles des `Item` dans les `Pcd` sont elles-mêmes chiffrées dans les `Prd` au moyen du chiffrement du `Prd` par la clé `KeyConfidential` d'une `transaction SP` (cf. [Specs-Security.md](Specs-Security.md)). Ces clés sont uniquement distribuées aux `members` concernés par les `Item` des `Pcd` (rôles dans les `ItemProcess`).
Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions. Les `Prd` se déclinent en plusieurs types, tels que `PrdList`, `PrdMessage`, `PrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
Principaux champs des `RequestPrd` : Principaux champs des `Prd` :
* **`request`** : cf la descripton de la structure `Request`. * **`request`** : cf la descripton de la structure `Request`.
* **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`). * **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`).
* **`request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` chiffrées par la clé `KeyConfidential` d'une `transaction SP`. * **`request_pcd_reference_keys_role_confidential_list_confidential`** : Clés de déchiffrement des attributs confidentiels des `Item` des `Pcd` chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
* **`request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` du `RequestPCD` de référence, chiffrées par la clé `KeyConfidential` d'une `transaction SP`. * **`request_pcd_origin_hash_keys_role_confidential_list_confidential`** : Clés de déchiffrement des attributs confidentiels des `Item` des `Pcd` du `PCD` de référence, chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
* **`message_public`** : Message public, chiffré par la clé `ProcessKey` du `ItemProcess` concerné. * **`message_public`** : Message public, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
* **`message_confidential`** : Message confidentiel, chiffré par la clé `ProcessKey` du `ItemProcess` concerné. * **`message_confidential`** : Message confidentiel, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
* **`message_private`** : Message privé, chiffré par la clé privée `KeyRecover`. * **`message_private`** : Message privé, chiffré par la clé privée `KeyRecover`.
@ -265,61 +248,59 @@ Principaux champs des `RequestPrd` :
* **`timestamp_declared`** : Horodatage déclaré. * **`timestamp_declared`** : Horodatage déclaré.
* **`role_name_from`** : Nom du rôle de l'émetteur. * **`role_name_from`** : Nom du rôle de l'émetteur.
* **`role_name_to`** : Nom du rôle du destinataire. * **`role_name_to`** : Nom du rôle du destinataire.
* **`payment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `paiement` chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`Payments_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `paiement` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`cap_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP` servant à la validation des paiements temporaires en attente du passage d'un cap. * **`cap_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP` servant à la validation des paiements temporaires en attente du passage d'un cap.
* **`deposit_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`deposit_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`commitment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `commitment` chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`commitment_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `commitment` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_payment_method_enc_by_shared_secret`** : Demande de méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`ask_Payments_method_confidential`** : Demande de méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_deposit_method_enc_by_shared_secret`** : Demande de méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`ask_deposit_method_confidential`** : Demande de méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_commitment_method_enc_by_shared_secret`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`ask_commitment_method_confidential`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`payment_method_enc_by_shared_secret`** : Méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande. * **`Payments_method_confidential`** : Méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`deposit_method_enc_by_shared_secret`** : Méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande. * **`deposit_method_confidential`** : Méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`commitment_method_enc_by_shared_secret`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande. * **`commitment_method_confidential`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`certif_key_enc_by_shared_secret`** : Clé de certification chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`certif_key_confidential`** : Clé de certification chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`device_footprint_enc_by_sp_shared_secret`** : Empreinte du dispositif de l'émetteur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`device_footprint_enc_by_sp_shared_secret`** : Empreinte du dispositif de l'émetteur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma. Pour simplifier, les `PrdConfirm` n'ont pas été inclus dans le schéma.
![RequestPrd](diagrams/PRD.png "RequestPrd") ![Prd](diagrams/PRD.png "Prd")
### 8.3. <a name='Crationetenvoi-1'></a>Création et envoi ### 8.2. <a name='CrationdunPrd'></a>Création d'un `Prd`
La création d'un `RequestPrd` suit plusieurs étapes : 1. Complétion des attributs
2. Création d'une `adresse SP` cf [Silent Payments - Specs](Silent-Payments-Specs.md)
3. Chiffrement cf Encryption.
4. Envoi du message cf [Messages - Specs](Messages-Specs.md).
1. Récupération des clés de chiffrement confidentiel des attributs des items d'un `RequestPcd`. ### 8.3. <a name='Rception-1'></a>Réception
2. Création d'une `adresse SP` pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans un output de la transaction
3. Chiffrement des clés confidentielles avec la `KeyConfidential`.
4. Créer `RequestPrdMessage` pour la publication de la `transaction SP`
Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md). La réception d'un `Prd` suit plusieurs étapes :
### 8.4. <a name='Rception-1'></a>Réception 1. Parcours des `ItemProcess` pour trouver le `ItemProcess` correspondant au `process_hash` du `Prd`
2. Tentative de déchiffrement du `Prd` avec la clé `ProcessKey` du `ItemProcess` correspondant.
3. Recherche des `Pcd` en relation via `Pcd_reference_hash` et `Pcd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
4. Vérification de la conformité des `Pcd` en relation.
5. Recherche des `Prd` en relation via `request_prd_reference_hash` et `request_prd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
6. Vérification de la conformité des `Prd` en relation.
7. Recherche de l'`Item` associé via `item_reference_hash`, attente si nécessaire et traitement de celui-ci.
8. Déchiffrement voir Encryption.
9. Validation des conditions définies dans le `ItemProcess` pour cet `Item`, avec le `Role` correspondant dans le `ItemProcess`, et dans ces rôles, les conditions pour ce type de `Prd` (dans l'attribut `request_prd_type`)
10. Vérification du role de l'utilisateur courant dans le `ItemProcess` et dans le `Item` concerné.
11. Traitements spécifiques au type de `Prd`.
La réception d'un `RequestPrd` suit plusieurs étapes : ## 9. <a name='PrdList-DemandedeListes'></a>PrdList - Demande de Listes
1. Recherche des `RequestPcd` en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash`, attente si nécessaire et traitement de ceux-ci. Utile pour les utilisateurs souhaitant consulter ou explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque `Pcd` liste des `Item` d'un même type, tels que les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayments`, etc.
2. Vérification de la conformité des `RequestPcd` en relation.
3. Recherche des `RequestPrd` en relation via `request_prd_reference_hash` et `request_prd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
4. Vérification de la conformité des `RequestPrd` en relation.
5. Recherche de l'`Item` associé via `item_reference_hash`, attente si nécessaire et traitement de celui-ci.
6. Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential`
7. Déchiffrage les champs confididentiels depuis la `KeyConfidential`
8. Validation des conditions définies dans le `ItemProcess` pour cet `Item`, avec le `Role` correspondant dans le `ItemProcess`, et dans ces rôles, les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`)
9. Traitements spécifiques au type de `RequestPrd`.
## 9. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes
Utile pour les utilisateurs souhaitant 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, tels que les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc.
Workflow: Workflow:
![PRDListFlows](diagrams/PRDListFlows.png "PRDListFlows") ![PRDListFlows](diagrams/PRDListFlows.png "PRDListFlows")
Principaux champs des `RequestPrdList` : Principaux champs des `PrdList` :
* **`request_prd`** : cf la descripton de la structure `RequestPrd`. * **`request_prd`** : cf la descripton de la structure `Prd`.
* **`pagination_start`** : Première "page" de résultats. * **`pagination_start`** : Première "page" de résultats.
* **`pagination_stop`** : Dernière "page" de résultats. * **`pagination_stop`** : Dernière "page" de résultats.
* **`sub_pagination_start`** : Première "page" de résultats dans les items qui contiennent une liste. * **`sub_pagination_start`** : Première "page" de résultats dans les items qui contiennent une liste.
@ -337,7 +318,7 @@ L'`ItemMember` temporaire contient les métadonnées de type `Metadata` suivante
* **`sp_address_revoke_public`** : Adresse publique de révocation de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`. * **`sp_address_revoke_public`** : Adresse publique de révocation de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`third_sp_address_list_public`** : Liste des adresses publiques de devices tiers, chiffré par la `ProcessKey` de l'`ItemProcess`. * **`third_sp_address_list_public`** : Liste des adresses publiques de devices tiers, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`data_size_max`** : Taille maximale des données acceptée par l'utilisateur (par flux), chiffré par la `ProcessKey` de l'`ItemProcess`. * **`data_size_max`** : Taille maximale des données acceptée par l'utilisateur (par flux), chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`payment_method_list_public`** : Liste des méthodes de paiement acceptées par l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`. * **`Payments_method_list_public`** : Liste des méthodes de paiement acceptées par l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`succession_process_hash`** : Hash du processus de succession de l'utilisateur (transmission de l'identité numérique et donc de tous les flux associés), chiffré par la `ProcessKey` de l'`ItemProcess`. * **`succession_process_hash`** : Hash du processus de succession de l'utilisateur (transmission de l'identité numérique et donc de tous les flux associés), chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`device_footprint`** : Empreinte du dispositif de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`. * **`device_footprint`** : Empreinte du dispositif de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
@ -352,135 +333,89 @@ L'`ItemMember` temporaire contient les métadonnées de type `Metadata` suivante
* **`priv_key_mainnet_scan`** : Clé de scan de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`. * **`priv_key_mainnet_scan`** : Clé de scan de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
* **`priv_key_signet_scan`** : Clé de scan du signet de `recover`de l'utilisateur, chiffrée `KeyRecover`. * **`priv_key_signet_scan`** : Clé de scan du signet de `recover`de l'utilisateur, chiffrée `KeyRecover`.
### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma. Pour simplifier, les `PrdConfirm` n'ont pas été inclus dans le schéma.
![RequestPrdList](diagrams/PRDList.png "RequestPrdList") ![PrdList](diagrams/PRDList.png "PrdList")
### 9.2. <a name='Cration:Datasspcifiques'></a>Création : Datas spécifiques ## 10. <a name='PrdMessage-EnvoideMessages'></a>PrdMessage - Envoi de Messages
1. Traitement des `RequestPrd`, avec le `type_request`. Le `PrdMessage` facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
2. `item_member_enc_by_sp_shared_secret` en cas de création d'un nouvel `ItemMember` (création d'une identité numérique), uniquement destiné aux gestionnaires des membres.
3. `pre_id_sp_enc_by_shared_secret` en cas de connexion avec une identité numérique existante, uniquement destiné aux gestionnaires des membres.
### 9.3. <a name='Rception:Datasspcifiques'></a>Réception : Datas spécifiques
La réception d'un `RequestPrdList` suit plusieurs étapes :
1. Traitement des `RequestPrd`.
2. Recherche en cache de la dernière version de la liste du type d'`Item` concerné (voir `RequestPcd` pour la création et l'envoi vers l'émetteur du `RequestPrdList`).
3. En cas de `item_member_enc_by_sp_shared_secret`, pour la création d'un nouvel `ItemMember` (création d'une identité numérique), cette étape est réservée uniquement aux gestionnaires des membres. L'`ItemMember` est ajouté au cache sans modifier la liste des membres et associé au `pre_id` contenu dans l'`ItemMember` créé.
4. En cas de `pre_id_sp_enc_by_shared_secret`, pour la connexion avec une identité numérique existante, cette étape est destinée uniquement aux gestionnaires des membres pour le renvoi du shard correspondant dans le `RequestPrdResponse`.
## 10. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
Le `RequestPrdMessage` facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
Il permet la communication : Il permet la communication :
* Directe et sécurisée au sein du réseau, supportant des échanges d'informations critiques ou des notifications entre parties. * Directe et sécurisée au sein du réseau, supportant des échanges d'informations critiques ou des notifications entre parties.
* Des `transaction SP` au format `raw` dans l'attribut `raw_transaction_list` pour la publication de la transaction dans la side chain. * Des `transaction SP` au format `raw` dans l'attribut `raw_transaction_list` pour la publication de la transaction dans la side chain.
Les `RequestPrdMessage` peuvent répondre aux autres `RequestPrdMessage`, sauf en cas d'envoi de `raw_transaction_list` (dans le cas d'utilisation pour transférer la `transaction SP` depuis un autre `RequestPrd`). Les `PrdMessage` peuvent répondre aux autres `PrdMessage`, sauf en cas d'envoi de `raw_transaction_list` (dans le cas d'utilisation pour transférer la `transaction SP` depuis un autre `Prd`).
Workflow : Workflow :
![PRDMessageFlows](diagrams/PRDMessageFlows.png "PRDMessageFlows") ![PRDMessageFlows](diagrams/PRDMessageFlows.png "PRDMessageFlows")
Principaux champs des `RequestPrdMessage` : Principaux champs des `PrdMessage` :
* **`request_prd`** : cf la descripton de la structure `RequestPrd`. * **`request_prd`** : cf la descripton de la structure `Prd`.
* **`raw_transaction_list`** : Liste des `transaction SP` au format `raw` pour la publication de la transaction dans la side chain. * **`raw_transaction_list`** : Liste des `transaction SP` au format `raw` pour la publication de la transaction dans la side chain.
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma. Exemple d'un `RequestPrdMessage` avec `raw_transaction_list` vide, et son cas correspondant où le `RequestPrdMessage` contient une `raw_transaction_list` non vide. Pour simplifier, les `PrdConfirm` n'ont pas été inclus dans le schéma. Exemple d'un `PrdMessage` avec `raw_transaction_list` vide, et son cas correspondant où le `PrdMessage` contient une `raw_transaction_list` non vide.
![RequestPrdMessage](diagrams/PRDMessage.png "RequestPrdMessage") ![PrdMessage](diagrams/PRDMessage.png "PrdMessage")
### 10.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques ## 11. <a name='PrdUpdate-MisesJourdePcd'></a>PrdUpdate - Mises à Jour de Pcd
1. Traitement des `RequestPrd`, avec le `type_request` spécifiquement attribué au `RequestPrdMessage`. `PrdUpdate` est conçu pour demander des mises à jour des listes via de nouvelles versions de `Pcd`.
2. Cas de la transmission d'une `Transaction SP` depuis un autre `RequestPrd` au format `raw` dans l'attribut `raw_transaction_list`, pour la publication de la transaction dans la side chain.
### 10.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques Basé sur le `Prd`, avec des ajouts pour spécifier les modifications demandées, y compris de nouveaux attributs ou valeurs à mettre à jour :
1. Traitements des `RequestPrd`
## 11. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd
`RequestPrdUpdate` est conçu pour demander des mises à jour des listes via de nouvelles versions de `RequestPcd`.
Basé sur le `RequestPrd`, avec des ajouts 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. 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, la mise à jour de la liste des membres permet d'ajouter de nouveaux utilisateurs à un `ItemProcess`, et la mise à jour de la liste des `ItemProcess` permet de leur affecter un nouveau `Role`. Par exemple, la mise à jour de la liste des membres permet d'ajouter de nouveaux utilisateurs à un `ItemProcess`, et la mise à jour de la liste des `ItemProcess` permet de leur affecter un nouveau `Role`.
Les `RequestPrdUpdate` signalent au réseau, via l'attribut `RequestPcd_new_version_hash`, les nouvelles versions des `RequestPcd`. Les `PrdUpdate` signalent au réseau, via l'attribut `Pcd_new_version_hash`, les nouvelles versions des `Pcd`.
Workflow: Workflow:
![PRDUpdateFlows](diagrams/PRDUpdateFlows.png "PRDUpdateFlows") ![PRDUpdateFlows](diagrams/PRDUpdateFlows.png "PRDUpdateFlows")
Principaux champs des `RequestPrdUpdate` : Principaux champs des `PrdUpdate` :
* **`request_prd`** : cf la descripton de la structure `RequestPrd`. * **`request_prd`** : cf la descripton de la structure `Prd`.
### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma. Pour simplifier, les `PrdConfirm` n'ont pas été représentés dans le schéma.
![RequestPrdUpdate](diagrams/PRDUpdate.png "RequestPrdUpdate") ![PrdUpdate](diagrams/PRDUpdate.png "PrdUpdate")
### 11.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques ## 12. <a name='PrdConfirm-ConfirmationdeRception'></a>PrdConfirm - Confirmation de Réception
1. Traitement des `RequestPrd`, avec le `type_request` spécifiquement attribué aux `RequestPrdUpdate`. Le `PrdConfirm` 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.
2. Pas de données spécifiques.
### 11.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques Les `PrdList`, `PrdUpdate`, `PrdMessage`, `PrdResponse` et `PrdKeyHello` reçoivent systématiquement un `PrdConfirm` suite à leur réception par le destinataire.
La réception d'un `RequestPrdUpdate` suit plusieurs étapes : `code_confirm_confidential` : 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, lequel doit être confirmé dans le `PrdConfirm`.
1. Traitement des `RequestPrd`.
2. Comparaison de la dernière version du `RequestPcd` en cache avec la nouvelle version du `RequestPcd` associée, via `RequestPcd_new_version_hash`, et attente si nécessaire.
## 12. <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.
Les `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdMessage`, `RequestPrdResponse` et `RequestPrdKeyHello` reçoivent systématiquement un `RequestPrdConfirm` suite à 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, lequel doit être confirmé dans le `RequestPrdConfirm`.
Worflow: Worflow:
Voir les diagrammes `PRDUpdateFlows`, `PRDUpdateFlows` et `PRDMessageFlows`. Voir les diagrammes `PRDUpdateFlows`, `PRDUpdateFlows` et `PRDMessageFlows`.
Principaux champs des `RequestPrdConfirm` : Principaux champs des `PrdConfirm` :
* **`request_prd`** : cf la descripton de la structure `RequestPrd`. * **`request_prd`** : cf la descripton de la structure `Prd`.
* **`code_confirm_enc_by_shared_secret`** : Code de confirmation chiffré par la clé `KeyConfidential` d'une `transaction SP` dans le cas d'un 2FA. * **`code_confirm_confidential`** : Code de confirmation chiffré par la clé `KeyConfidential` d'une `transaction SP` dans le cas d'un 2FA.
### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux
![RequestPrdConfirm](diagrams/PRDConfirm.png "RequestPrdConfirm") ![PrdConfirm](diagrams/PRDConfirm.png "PrdConfirm")
### 12.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques ## 13. <a name='PrdResponse-RpondreuneDemande'></a>PrdResponse - Répondre à une Demande
1. Traitement des `RequestPrd`, avec le `type_request` spécifiquement attribué aux `RequestPrdConfirm`. Le `PrdResponse` permet de répondre spécifiquement à des `Prd` reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
2. Communication éventuelle d'un `code_confirm_enc_by_shared_secret` à confirmer dans le `RequestPrdConfirm`.
### 12.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques Les `PrdResponse` sont utilisés pour répondre aux `PrdList`, `PrdUpdate`, facilitant la fourniture de feedbacks, de confirmations, ou d'instructions supplémentaires en réponse aux demandes initiales. Ils supportent une communication bidirectionnelle sécurisée et vérifiable.
1. Traitement des `RequestPrd`, sans traitement supplémentaire.
2. Vérification du `code_confirm_enc_by_shared_secret` dans le `RequestPrdConfirm` reçu.
## 13. <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.
Les `RequestPrdResponse` sont utilisés pour répondre aux `RequestPrdList`, `RequestPrdUpdate`, facilitant la fourniture de feedbacks, de confirmations, ou d'instructions supplémentaires en réponse aux demandes initiales. Ils supportent une communication bidirectionnelle sécurisée et vérifiable.
C'est également le moyen par lequel demander des moyens de paiement, de dépôt, ou de preuve, puis de partager le payload de ces actions. C'est également le moyen par lequel demander des moyens de paiement, de dépôt, ou de preuve, puis de partager le payload de ces actions.
@ -488,41 +423,18 @@ Workflow:
Voir les diagrammes `PRDUpdateFlows` et `PRDUpdateFlows`. Voir les diagrammes `PRDUpdateFlows` et `PRDUpdateFlows`.
Principaux champs des `RequestPrdResponse` : Principaux champs des `PrdResponse` :
* **`request_prd`** : cf la descripton de la structure `RequestPrd`. * **`request_prd`** : cf la descripton de la structure `Prd`.
* **`shared_secret_key_enc_by_sp_shared_secret`** : Clé de chiffrement partagée chiffrée par la clé `KeyConfidential` d'une `transaction SP`. * **`shared_secret_key_enc_by_sp_shared_secret`** : Clé de chiffrement partagée chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`shard_enc_by_sp_shared_secret`** : Shard chiffré par la clé `KeyConfidential` d'une `transaction SP`. * **`shard_enc_by_sp_shared_secret`** : Shard chiffré par la clé `KeyConfidential` d'une `transaction SP`.
### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma. Pour simplifier, les `PrdConfirm` n'ont pas été représentés dans le schéma.
![RequestPrdResponse](diagrams/PRDResponse.png "RequestPrdResponse") ![PrdResponse](diagrams/PRDResponse.png "PrdResponse")
### 13.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques ## 14. <a name='ExemplesdeCode'></a>Exemples de Code
1. Traitement des `RequestPrd`, avec le `type_request` spécifiquement attribué à `RequestPrdResponse`. ## 15. <a name='Todo'></a>Todo
2. Attente de la valeur de la signature de l'utilisateur `sig_value` (si celle-ci n'est pas automatique).
3. En cas de réponse à un `RequestPrdKeyList`, fourniture de `pre_id_enc_by_sp_shared_secret` avec les shards correspondant à la `pre-id` demandée.
4. (Optionnel) Partage d'une clé de chiffrement ad hoc via `shared_secret_key`.
### 13.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
1. Traitement des `RequestPrd`.
2. Vérification des conditions de validation des `RequestPcd` associés.
3. En cas de réponse reçue pour un `RequestPrdList` : récupération des shards correspondant à la `pre-id` demandée et génération de la clé `KeyRecover`.
## 14. <a name='ExemplesdeCode'></a>Exemples de Code
## 15. <a name='Todo'></a>Todo
[ ] Description détaillée de tous les éléments (attributs) qui composent le request-type:
[x] Quy a-t-il dans le request-type?
[x] A quoi sert lattribut X du request-type?
[x] Description un par un des contextes où le request-type est utilisé.
[x] Description pas à pas de lenvoi du request-type.
[ ] Que se passe-t-il dans le système lorsque le request-type est envoyé?
[x] Description pas à pas de la réception du request-type.
[x] Que se passe-t-il dans le système lorsque le request-type est reçu?
[x] Exemple dutilisation.

View File

@ -18,17 +18,17 @@
* 5.5.2. [Cas d'utilisation](#Casdutilisation-1) * 5.5.2. [Cas d'utilisation](#Casdutilisation-1)
* 6. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions) * 6. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions)
* 6.1. [RoleCommitment](#RoleCommitment) * 6.1. [RoleCommitment](#RoleCommitment)
* 6.2. [RoleDeposit et RolePayment](#RoleDepositetRolePayment) * 6.2. [RoleDeposit et RolePayments](#RoleDepositetRolePayments)
* 7. [Sécurisation des Communications](#ScurisationdesCommunications) * 7. [Sécurisation des Communications](#ScurisationdesCommunications)
* 7.1. [Composition et Utilisation](#CompositionetUtilisation) * 7.1. [Composition et Utilisation](#CompositionetUtilisation)
* 8. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus) * 8. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus)
* 9. [Condition RequestPrdAddressSet](#ConditionRequestPrdAddressSet) * 9. [Condition PrdAddressSet](#ConditionPrdAddressSet)
* 9.1. [ Participants](#Participants) * 9.1. [ Participants](#Participants)
* 9.2. [ Valeurs des signatures (`sig_value`)](#Valeursdessignaturessig_value) * 9.2. [ Valeurs des signatures (`sig_value`)](#Valeursdessignaturessig_value)
* 9.3. [Minimums et maximums de valeurs "OK", "KO" et "NONE"](#MinimumsetmaximumsdevaleursOKKOetNONE) * 9.3. [Minimums et maximums de valeurs "OK", "KO" et "NONE"](#MinimumsetmaximumsdevaleursOKKOetNONE)
* 9.4. [Minimums et maximums de scores](#Minimumsetmaximumsdescores) * 9.4. [Minimums et maximums de scores](#Minimumsetmaximumsdescores)
* 10. [ConditionPublish : conditions de publication](#ConditionPublish:conditionsdepublication) * 10. [ConditionPublish : conditions de publication](#ConditionPublish:conditionsdepublication)
* 11. [ConditionPayment : conditions de paiement](#ConditionPayment:conditionsdepaiement) * 11. [ConditionPayments : conditions de paiement](#ConditionPayments:conditionsdepaiement)
* 12. [ConditionCommitment : conditions d'engagement](#ConditionCommitment:conditionsdengagement) * 12. [ConditionCommitment : conditions d'engagement](#ConditionCommitment:conditionsdengagement)
* 13. [ConditionDeposit : conditions de dépôt de garantie](#ConditionDeposit:conditionsdedptdegarantie) * 13. [ConditionDeposit : conditions de dépôt de garantie](#ConditionDeposit:conditionsdedptdegarantie)
* 14. [ConditionOrchestration : conditions d'orchestration des processus](#ConditionOrchestration:conditionsdorchestrationdesprocessus) * 14. [ConditionOrchestration : conditions d'orchestration des processus](#ConditionOrchestration:conditionsdorchestrationdesprocessus)
@ -40,7 +40,7 @@
## 1. <a name='Objectif'></a>Objectif ## 1. <a name='Objectif'></a>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 ( Pcd) et les Documents de Demande Portable ( Prd), 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 `Pcd` et `Prd` assurent l'intégrité et la confidentialité au cœur d'un réseau décentralisé.
## 2. <a name='Porte'></a>Portée ## 2. <a name='Porte'></a>Portée
@ -57,7 +57,7 @@ Les rôles déterminent les permissions et les responsabilités des participants
* **RoleProcess**: Conditions des listes des processus et des versions des listes. * **RoleProcess**: Conditions des listes des processus et des versions des listes.
* **RoleArtefact**: Définit les permissions et les interactions pour les artefacts au sein du réseau et des version de ces listes, par types d'artefacts. * **RoleArtefact**: Définit les permissions et les interactions pour les artefacts au sein du réseau et des version de ces listes, par types d'artefacts.
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. Chaque rôle peut comporter des sous-rôles spécifiques, tels que `RolePayments`, `RoleDeposit`, et `RoleCommitment`, chacun avec des responsabilités et des interactions uniques dans le cadre des processus qu'ils soutiennent.
## 5. <a name='Prcisionssurlesrles'></a>Précisions sur les rôles ## 5. <a name='Prcisionssurlesrles'></a>Précisions sur les rôles
@ -124,14 +124,14 @@ Cette structure permet une personnalisation détaillée des rôles au sein du sy
## 6. <a name='GestiondesEngagementsetTransactions'></a>Gestion des Engagements et Transactions ## 6. <a name='GestiondesEngagementsetTransactions'></a>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. Les engagements dans le système 4NK, tels que représentés par les structures RoleCommitment, RoleDeposit, et RolePayments, jouent un rôle crucial dans la formalisation des transactions et des obligations entre les parties.
### 6.1. <a name='RoleCommitment'></a>RoleCommitment ### 6.1. <a name='RoleCommitment'></a>RoleCommitment
* **item_name**: Identifie l'engagement spécifique ou l'obligation prise par une partie. * **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. * **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. <a name='RoleDepositetRolePayment'></a>RoleDeposit et RolePayment ### 6.2. <a name='RoleDepositetRolePayments'></a>RoleDeposit et RolePayments
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. 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.
@ -148,9 +148,9 @@ La structure MetaData et ses sous-structures comme MetadataContractPublic, Metad
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. 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. <a name='ConditionRequestPrdAddressSet'></a>Condition RequestPrdAddressSet ## 9. <a name='ConditionPrdAddressSet'></a>Condition PrdAddressSet
A l'issue d'un délai `validation_timeout` par `Role` et par * `request_prd_type`, les `RequestPrdRequest` sont collectés afin de vérifier les conditions de validation par roles sont définies en fonction des critères suivants : A l'issue d'un délai `validation_timeout` par `Role` et par * `request_prd_type`, les `PrdRequest` sont collectés afin de vérifier les conditions de validation par roles sont définies en fonction des critères suivants :
Les membres concernés sont identifiés par leurs `adresse SP`. Les membres concernés sont identifiés par leurs `adresse SP`.
@ -192,13 +192,13 @@ Les membres concernés sont identifiés par leurs `adresse SP`.
## 10. <a name='ConditionPublish:conditionsdepublication'></a>ConditionPublish : conditions de publication ## 10. <a name='ConditionPublish:conditionsdepublication'></a>ConditionPublish : conditions de publication
* (option)`request_pcd_data_size_max_unit`: Taille maximale des données de chaque `RequestPcd` en Mo * (option)`request_pcd_data_size_max_unit`: Taille maximale des données de chaque `Pcd` en Mo
* (option)`request_pcd_data_size_max_total`: Taille maximale des données des `RequestPcd` en Mo * (option)`request_pcd_data_size_max_total`: Taille maximale des données des `Pcd` en Mo
* (option)`request_pcd_number_min`: Nombre minimum de publication de `RequestPcd` * (option)`request_pcd_number_min`: Nombre minimum de publication de `Pcd`
* (option)`request_pcd_number_max`: Nombre maximum de publication de `RequestPcd` * (option)`request_pcd_number_max`: Nombre maximum de publication de `Pcd`
* (option)`request_pcd_amount_max_total`: Montant maximum des montants dans les items des `RequestPcd` * (option)`request_pcd_amount_max_total`: Montant maximum des montants dans les items des `Pcd`
* (option)`request_prd_waiting_timeout`: Délai d'attente pour la réception des `RequestPrd` * (option)`request_prd_waiting_timeout`: Délai d'attente pour la réception des `Prd`
* (option)`request_pcd_waiting_timeout`: Délai d'attente pour la réception des `RequestPcd` * (option)`request_pcd_waiting_timeout`: Délai d'attente pour la réception des `Pcd`
## 14. <a name='ConditionOrchestration:conditionsdorchestrationdesprocessus'></a>ConditionOrchestration : conditions d'orchestration des processus ## 14. <a name='ConditionOrchestration:conditionsdorchestrationdesprocessus'></a>ConditionOrchestration : conditions d'orchestration des processus
@ -206,9 +206,9 @@ Les membres concernés sont identifiés par leurs `adresse SP`.
* (option) `role_ok`: `Role` à vérifier en cas de résulats final "OK" * (option) `role_ok`: `Role` à vérifier en cas de résulats final "OK"
* (option) `role_ko`: `Role` à vérifier en cas de résulats final "KO" * (option) `role_ko`: `Role` à vérifier en cas de résulats final "KO"
## 11. <a name='ConditionPayment:conditionsdepaiement'></a>ConditionPayment : conditions de paiement ## 11. <a name='ConditionPayments:conditionsdepaiement'></a>ConditionPayments : conditions de paiement
* (option) `payment_method_list`: Liste des modes de paiement acceptés * (option) `Payments_method_list`: Liste des modes de paiement acceptés
* (option) `role_transaction` : voir `TransactionMode` * (option) `role_transaction` : voir `TransactionMode`
## 12. <a name='ConditionCommitment:conditionsdengagement'></a>ConditionCommitment : conditions d'engagement ## 12. <a name='ConditionCommitment:conditionsdengagement'></a>ConditionCommitment : conditions d'engagement
@ -240,5 +240,5 @@ Les membres concernés sont identifiés par leurs `adresse SP`.
## 17. <a name='Todo'></a>Todo ## 17. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels. * [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.
* [ ] Diagrammes de séquences * [ ] Diagrammes de séquences

View File

@ -5,8 +5,8 @@
* 4. [Fonction](#Fonction) * 4. [Fonction](#Fonction)
* 5. [Structure des outputs](#Structuredesoutputs) * 5. [Structure des outputs](#Structuredesoutputs)
* 6. [Envoi de la transaction SP](#EnvoidelatransactionSP) * 6. [Envoi de la transaction SP](#EnvoidelatransactionSP)
* 6.1. [Dans un `RequestPrdMessage`](#DansunRequestPrdMessage) * 6.1. [Dans un `PrdMessage`](#DansunPrdMessage)
* 6.2. [Dans un `Message` du `RequestPrdMessage`](#DansunMessageduRequestPrdMessage) * 6.2. [Dans un `Message` du `PrdMessage`](#DansunMessageduPrdMessage)
<!-- vscode-markdown-toc-config <!-- vscode-markdown-toc-config
numbering=true numbering=true
@ -25,57 +25,57 @@ Voir [_Doc_references.md](_Doc_references.md).
La transaction SP à plusieurs objectifs : La transaction SP à plusieurs objectifs :
1. Permettre l'horodatage de l'empreinte des `RequestPrd` sur la side chain (`RequestPrdKeyMessage` sans message confidentiel). 1. Permettre l'horodatage de l'empreinte des `Prd` sur la side chain (`PrdKeyMessage` sans message confidentiel).
2. Permettre le partage de la `keyConfidential` pour les `RequestPrd` afin de déchiffrer les données confidentielles, sur d'autres relais que ceux qui ont reçu le `RequestPrd`. 2. Permettre le partage de la `keyConfidential` pour les `Prd` afin de déchiffrer les données confidentielles, sur d'autres relais que ceux qui ont reçu le `Prd`.
La clé `KeyConfidential` d'une`transaction 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. La clé `KeyConfidential` d'une`transaction SP` est utilisée pour chiffrer les `Prd`.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. Cette information est parrallèle aux `Prd` et permet une meilleur sécurité et confidentialité des échanges.
La`transaction 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 SP` contiennent les empreintes cryptographiques des `messages` et `RequestPrd` 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 SP` a aussi une fonction d'horodate et de preuve de publication des `Prd` donc de la validation des données des `Pcd`.Les outputs de la`transaction SP` contiennent les empreintes cryptographiques des `messages` et `Prd` et des `Pcd`.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 `PrdConfirm` qui sont des accusés automatiques de réception des `Prd` sont aussi associés à une transaction Silent Payments SP, ce qui permet d'ajouter les preuves de réception des demandes et des validations (ou non).
Il y a une `transactions SP` pour tous les types de `RequestPrd`. Il y a une `transactions SP` pour tous les types de `Prd`.
## 5. <a name='Structuredesoutputs'></a> Structure des outputs ## 5. <a name='Structuredesoutputs'></a> Structure des outputs
Une fois le `RequestPrd` finalisé, une transaction SP est réalisée, dans cette transaction plusieurs hashs sont ajoutés sur un outputs aux index suivants: Une fois le `Prd` finalisé, une transaction SP est réalisée, dans cette transaction plusieurs hashs sont ajoutés sur un outputs aux index suivants:
0. L'output 0 est toujours un paiment au destinataire 0. L'output 0 est toujours un paiment au destinataire
1. L'output 1 c'est toujours l'op_return avec un tableau de hashs en clair selon un tableau de hashs en JSON avec les index suivants : 1. L'output 1 c'est toujours l'op_return avec un tableau de hashs en clair selon un tableau de hashs en JSON avec les index suivants :
1.1. Le hash du message de type `Message` correspondant 1.1. Le hash du message de type `Message` correspondant
1.2. Le hash du `RequestPrd` 1.2. Le hash du `Prd`
1.3. Le hash du process 1.3. Le hash du process
1.4. Le hash de la valeur de la signature (attribut `sig_value` du RequestPrd) 1.4. Le hash de la valeur de la signature (attribut `sig_value` du Prd)
1.5. Le hash de l'`item_name` de l'`Item` concerné (le cas échéant) 1.5. Le hash de l'`item_name` de l'`Item` concerné (le cas échéant)
1.6. Le hash du `RequestPrd` d'origine associé au `RequestPrd` (le cas échéant) 1.6. Le hash du `Prd` d'origine associé au `Prd` (le cas échéant)
1.7. Le hash du `RequestPcd` d'origine associé au `RequestPrd` (le cas échéant) 1.7. Le hash du `Pcd` d'origine associé au `Prd` (le cas échéant)
1.8. Le hash du `RequestPcd` de référence associé au `RequestPrd` (le cas échéant) 1.8. Le hash du `Pcd` de référence associé au `Prd` (le cas échéant)
1.9. Le hash d'un `Amount` de paiement (le cas échéant) 1.9. Le hash d'un `Amount` de paiement (le cas échéant)
1.10. Le hash d'un `Amount`de dépôt (le cas échéant) 1.10. Le hash d'un `Amount`de dépôt (le cas échéant)
1.11. Un hash d'un engagement externe ou d'un `Number` (le cas échéant) 1.11. Un hash d'un engagement externe ou d'un `Number` (le cas échéant)
Pour des raison de confidentialité, le `Role` associé à l'`item_name` du `RequestPrd` peut définir (option) un salt pour la génération des hashs dans l'attribut `sp_output_salt_enc`. Pour des raison de confidentialité, le `Role` associé à l'`item_name` du `Prd` peut définir (option) un salt pour la génération des hashs dans l'attribut `sp_output_salt_enc`.
## 6. <a name='EnvoidelatransactionSP'></a>Envoi de la transaction SP ## 6. <a name='EnvoidelatransactionSP'></a>Envoi de la transaction SP
Afin d'améliorer la rélisience du broadcast des transactions, la transaction est envoyée à la fois : Afin d'améliorer la rélisience du broadcast des transactions, la transaction est envoyée à la fois :
1. Dans un `RequestPrdMessage` à un membre du rôle `member` du `ItemProcess` concerné et 1. Dans un `PrdMessage` à un membre du rôle `member` du `ItemProcess` concerné et
2. Dans le `Message` du `RequestPrdMessage` sur les relais 2. Dans le `Message` du `PrdMessage` sur les relais
### 6.1. <a name='DansunRequestPrdMessage'></a>Dans un `RequestPrdMessage` ### 6.1. <a name='DansunPrdMessage'></a>Dans un `PrdMessage`
Dans l'attribut `raw_transaction_list` du `RequestPrdMessage` associé à la transaction SP. Dans l'attribut `raw_transaction_list` du `PrdMessage` associé à la transaction SP.
La transaction sera broadcastée par les noeuds de signet du membre du `Role` `member` du `ItemProcess` concerné qui a reçu ce message, il devra alors avoir un noeud de signet pour le broadcast. La transaction sera broadcastée par les noeuds de signet du membre du `Role` `member` du `ItemProcess` concerné qui a reçu ce message, il devra alors avoir un noeud de signet pour le broadcast.
### 6.2. <a name='DansunMessageduRequestPrdMessage'></a>Dans un `Message` du `RequestPrdMessage` ### 6.2. <a name='DansunMessageduPrdMessage'></a>Dans un `Message` du `PrdMessage`
Dans l'attribut `raw_transaction_list` du `Message` associé à la transaction SP. Dans l'attribut `raw_transaction_list` du `Message` associé à la transaction SP.
La transaction sera broadcastée par les noeuds de signet des relais. La transaction sera broadcastée par les noeuds de signet des relais.
## En réception les transactions silent payment SP sont relayées par les relais en temps réel ## En réception les transactions silent Payments SP sont relayées par les relais en temps réel
Le relais récupère les transactions depuis l'interface ZMQ du noeud Bitcoin : https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md. Le relais récupère les transactions depuis l'interface ZMQ du noeud Bitcoin : https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md.
Puis il ajoute le tweak data de la transaction Silent Payments, puis il envoie la transaction à tous les connectés. Puis il ajoute le tweak data de la transaction Silent Payments, puis il envoie la transaction à tous les connectés.

View File

@ -40,7 +40,7 @@ Les parties prenantes ont tous les moyens organisationnels dans les process, pou
## 3. <a name='Journalisationetmonitoring'></a>Journalisation et monitoring ## 3. <a name='Journalisationetmonitoring'></a>Journalisation et monitoring
Tous les utilisateurs reçoivent les mêmes flux qu'ils se relaient et se restituent au démarrage, tous les flux ont une empreinte horodatée sur une timechain et peuvent être demandés unitairement entre parties, avec le même niveau de confidentialité par rôles. Les `RequestPcd` sont les listes à jour de l'état de validation de tous les éléments échangés, et les `RequestPrd` sont toutes les signatures échangées sur les flux; en mémoire côté utilisateur, par "session" sur un nœud, pour un `ItemProcess` (possible de segmenter par zones et services). Tous les utilisateurs reçoivent les mêmes flux qu'ils se relaient et se restituent au démarrage, tous les flux ont une empreinte horodatée sur une timechain et peuvent être demandés unitairement entre parties, avec le même niveau de confidentialité par rôles. Les `Pcd` sont les listes à jour de l'état de validation de tous les éléments échangés, et les `Prd` sont toutes les signatures échangées sur les flux; en mémoire côté utilisateur, par "session" sur un nœud, pour un `ItemProcess` (possible de segmenter par zones et services).
Le monitoring comme la journalisation, ne sont pas possibles et pas pertinents sur les relais qui ne sont pas critiques unitairement, tous les flux sont fongibles, chiffrés, anonymes, et peuvent passer par des relais non révélés. Cependant, l'optimisation des listes de pairs et de contrats, pourrait passer par un système de réputation qui nécessitera un historique. À ce stade, la gestion "qualitative" et "quantitative" des relais et des contrats est gérée en mémoire, non persistée et restaurée par chaque connexion à un nouveau pair. Le monitoring comme la journalisation, ne sont pas possibles et pas pertinents sur les relais qui ne sont pas critiques unitairement, tous les flux sont fongibles, chiffrés, anonymes, et peuvent passer par des relais non révélés. Cependant, l'optimisation des listes de pairs et de contrats, pourrait passer par un système de réputation qui nécessitera un historique. À ce stade, la gestion "qualitative" et "quantitative" des relais et des contrats est gérée en mémoire, non persistée et restaurée par chaque connexion à un nouveau pair.

View File

@ -3,7 +3,7 @@
* 2. [Methods](#Methods) * 2. [Methods](#Methods)
* 2.1. [DepositMethod](#DepositMethod) * 2.1. [DepositMethod](#DepositMethod)
* 2.2. [CommitmentMethod](#CommitmentMethod) * 2.2. [CommitmentMethod](#CommitmentMethod)
* 2.3. [PaymentMethod](#PaymentMethod) * 2.3. [PaymentsMethod](#PaymentsMethod)
* 3. [Items](#Items) * 3. [Items](#Items)
* 3.1. [Item](#Item) * 3.1. [Item](#Item)
* 3.2. [ItemArtefact](#ItemArtefact) * 3.2. [ItemArtefact](#ItemArtefact)
@ -19,10 +19,10 @@
* 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup) * 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup) * 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 3.6. [ItemEnum](#ItemEnum) * 3.6. [ItemEnum](#ItemEnum)
* 3.7. [ItemPayment](#ItemPayment) * 3.7. [ItemPayments](#ItemPayments)
* 3.7.1. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup) * 3.7.1. [ItemPaymentsPublicAttributeGroup](#ItemPaymentsPublicAttributeGroup)
* 3.7.2. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup) * 3.7.2. [ItemPaymentsRoleConfidentialAttributeGroup](#ItemPaymentsRoleConfidentialAttributeGroup)
* 3.7.3. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup) * 3.7.3. [ItemPaymentsPrivateAttributeGroup](#ItemPaymentsPrivateAttributeGroup)
* 3.8. [ItemPeer](#ItemPeer) * 3.8. [ItemPeer](#ItemPeer)
* 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup) * 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup) * 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
@ -52,29 +52,29 @@
* 8.4. [Amount](#Amount) * 8.4. [Amount](#Amount)
* 8.5. [Number](#Number) * 8.5. [Number](#Number)
* 9. [Request](#Request) * 9. [Request](#Request)
* 10. [ RequestPcd](#RequestPcd) * 10. [ Pcd](#Pcd)
* 10.1. [Pagination](#Pagination) * 10.1. [Pagination](#Pagination)
* 10.2. [ RequestPcdItemGenericEnc](#RequestPcdItemGenericEnc) * 10.2. [ PcdItemGenericEnc](#PcdItemGenericEnc)
* 10.2.1. [ RequestPcdItemEncAttributePublic](#RequestPcdItemEncAttributePublic) * 10.2.1. [ PcdItemEncAttributePublic](#PcdItemEncAttributePublic)
* 10.2.2. [ RequestPcdItemEncAttributeRoleConfidential](#RequestPcdItemEncAttributeRoleConfidential) * 10.2.2. [ PcdItemEncAttributeRoleConfidential](#PcdItemEncAttributeRoleConfidential)
* 10.2.3. [ RequestPcdItemEncAttributePrivate](#RequestPcdItemEncAttributePrivate) * 10.2.3. [ PcdItemEncAttributePrivate](#PcdItemEncAttributePrivate)
* 11. [RequestPrd](#RequestPrd) * 11. [Prd](#Prd)
* 11.1. [RequestPrdList](#RequestPrdList) * 11.1. [PrdList](#PrdList)
* 11.2. [RequestPrdUpdate](#RequestPrdUpdate) * 11.2. [PrdUpdate](#PrdUpdate)
* 11.3. [RequestPrdResponse](#RequestPrdResponse) * 11.3. [PrdResponse](#PrdResponse)
* 11.4. [RequestPrdConfirm](#RequestPrdConfirm) * 11.4. [PrdConfirm](#PrdConfirm)
* 11.5. [RequestPrdMessage](#RequestPrdMessage) * 11.5. [PrdMessage](#PrdMessage)
* 11.6. [RequestPrdResponse](#RequestPrdResponse-1) * 11.6. [PrdResponse](#PrdResponse-1)
* 12. [Roles](#Roles) * 12. [Roles](#Roles)
* 12.1. [Role](#Role) * 12.1. [Role](#Role)
* 12.2. [Conditions](#Conditions) * 12.2. [Conditions](#Conditions)
* 12.2.1. [TransactionMode](#TransactionMode) * 12.2.1. [TransactionMode](#TransactionMode)
* 12.2.2. [ConditionPayment](#ConditionPayment) * 12.2.2. [ConditionPayments](#ConditionPayments)
* 12.2.3. [ConditionCommitment](#ConditionCommitment) * 12.2.3. [ConditionCommitment](#ConditionCommitment)
* 12.2.4. [ConditionDeposit](#ConditionDeposit) * 12.2.4. [ConditionDeposit](#ConditionDeposit)
* 12.2.5. [ConditionOrchestration](#ConditionOrchestration) * 12.2.5. [ConditionOrchestration](#ConditionOrchestration)
* 12.2.6. [ConditionCap](#ConditionCap) * 12.2.6. [ConditionCap](#ConditionCap)
* 12.2.7. [ConditionRequestPrdAddressSet](#ConditionRequestPrdAddressSet) * 12.2.7. [ConditionPrdAddressSet](#ConditionPrdAddressSet)
* 12.2.8. [ConditionPublish](#ConditionPublish) * 12.2.8. [ConditionPublish](#ConditionPublish)
* 12.3. [RolesGroup](#RolesGroup) * 12.3. [RolesGroup](#RolesGroup)
* 12.3.1. [RoleArtefact](#RoleArtefact) * 12.3.1. [RoleArtefact](#RoleArtefact)
@ -82,7 +82,7 @@
* 12.3.3. [RoleCommitment](#RoleCommitment) * 12.3.3. [RoleCommitment](#RoleCommitment)
* 12.3.4. [RoleMember](#RoleMember) * 12.3.4. [RoleMember](#RoleMember)
* 12.4. [RolePeer](#RolePeer) * 12.4. [RolePeer](#RolePeer)
* 12.4.1. [RolePayment](#RolePayment) * 12.4.1. [RolePayments](#RolePayments)
* 12.4.2. [RoleProcess](#RoleProcess) * 12.4.2. [RoleProcess](#RoleProcess)
* 13. [Relay side chain data streaming](#Relaysidechaindatastreaming) * 13. [Relay side chain data streaming](#Relaysidechaindatastreaming)
* 14. [Storage](#Storage) * 14. [Storage](#Storage)
@ -91,14 +91,14 @@
* 14.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic) * 14.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic)
* 14.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic) * 14.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic)
* 14.1.4. [StorageMessagePublic](#StorageMessagePublic) * 14.1.4. [StorageMessagePublic](#StorageMessagePublic)
* 14.1.5. [StorageRequestPcdPublic](#StorageRequestPcdPublic) * 14.1.5. [StoragePcdPublic](#StoragePcdPublic)
* 14.1.6. [StorageRequestPrdPublic](#StorageRequestPrdPublic) * 14.1.6. [StoragePrdPublic](#StoragePrdPublic)
* 14.2. [StoragePrivate](#StoragePrivate) * 14.2. [StoragePrivate](#StoragePrivate)
* 14.2.1. [StorageKeysPrivate](#StorageKeysPrivate) * 14.2.1. [StorageKeysPrivate](#StorageKeysPrivate)
* 14.2.2. [StoragePeerPrivate](#StoragePeerPrivate) * 14.2.2. [StoragePeerPrivate](#StoragePeerPrivate)
* 14.2.3. [StorageProcessPrivate](#StorageProcessPrivate) * 14.2.3. [StorageProcessPrivate](#StorageProcessPrivate)
* 14.2.4. [StorageRequestPcdPrivate](#StorageRequestPcdPrivate) * 14.2.4. [StoragePcdPrivate](#StoragePcdPrivate)
* 14.2.5. [StorageRequestPrdPrivate](#StorageRequestPrdPrivate) * 14.2.5. [StoragePrdPrivate](#StoragePrdPrivate)
* 14.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate) * 14.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate)
* 14.2.7. [StorageocketsPrivate](#StorageocketsPrivate) * 14.2.7. [StorageocketsPrivate](#StorageocketsPrivate)
* 14.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate) * 14.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate)
@ -121,7 +121,7 @@
* 2. [Methods](#Methods) * 2. [Methods](#Methods)
* 2.1. [DepositMethod](#DepositMethod) * 2.1. [DepositMethod](#DepositMethod)
* 2.2. [CommitmentMethod](#CommitmentMethod) * 2.2. [CommitmentMethod](#CommitmentMethod)
* 2.3. [PaymentMethod](#PaymentMethod) * 2.3. [PaymentsMethod](#PaymentsMethod)
* 3. [Items](#Items) * 3. [Items](#Items)
* 3.1. [Item](#Item) * 3.1. [Item](#Item)
* 3.2. [ItemArtefact](#ItemArtefact) * 3.2. [ItemArtefact](#ItemArtefact)
@ -137,10 +137,10 @@
* 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup) * 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup) * 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 3.6. [ItemEnum](#ItemEnum) * 3.6. [ItemEnum](#ItemEnum)
* 3.7. [ItemPayment](#ItemPayment) * 3.7. [ItemPayments](#ItemPayments)
* 3.7.1. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup) * 3.7.1. [ItemPaymentsPublicAttributeGroup](#ItemPaymentsPublicAttributeGroup)
* 3.7.2. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup) * 3.7.2. [ItemPaymentsRoleConfidentialAttributeGroup](#ItemPaymentsRoleConfidentialAttributeGroup)
* 3.7.3. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup) * 3.7.3. [ItemPaymentsPrivateAttributeGroup](#ItemPaymentsPrivateAttributeGroup)
* 3.8. [ItemPeer](#ItemPeer) * 3.8. [ItemPeer](#ItemPeer)
* 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup) * 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup) * 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
@ -170,29 +170,29 @@
* 8.4. [Amount](#Amount) * 8.4. [Amount](#Amount)
* 8.5. [Number](#Number) * 8.5. [Number](#Number)
* 9. [Request](#Request) * 9. [Request](#Request)
* 10. [RequestPcd](#RequestPcd) * 10. [Pcd](#Pcd)
* 10.1. [Pagination](#Pagination) * 10.1. [Pagination](#Pagination)
* 10.2. [RequestPcdItemGenericEnc](#RequestPcdItemGenericEnc) * 10.2. [PcdItemGenericEnc](#PcdItemGenericEnc)
* 10.2.1. [RequestPcdItemEncAttributePublic](#RequestPcdItemEncAttributePublic) * 10.2.1. [PcdItemEncAttributePublic](#PcdItemEncAttributePublic)
* 10.2.2. [RequestPcdItemEncAttributeRoleConfidential](#RequestPcdItemEncAttributeRoleConfidential) * 10.2.2. [PcdItemEncAttributeRoleConfidential](#PcdItemEncAttributeRoleConfidential)
* 10.2.3. [RequestPcdItemEncAttributePrivate](#RequestPcdItemEncAttributePrivate) * 10.2.3. [PcdItemEncAttributePrivate](#PcdItemEncAttributePrivate)
* 11. [RequestPrd](#RequestPrd) * 11. [Prd](#Prd)
* 11.1. [RequestPrdList](#RequestPrdList) * 11.1. [PrdList](#PrdList)
* 11.2. [RequestPrdUpdate](#RequestPrdUpdate) * 11.2. [PrdUpdate](#PrdUpdate)
* 11.3. [RequestPrdResponse](#RequestPrdResponse) * 11.3. [PrdResponse](#PrdResponse)
* 11.4. [RequestPrdConfirm](#RequestPrdConfirm) * 11.4. [PrdConfirm](#PrdConfirm)
* 11.5. [RequestPrdMessage](#RequestPrdMessage) * 11.5. [PrdMessage](#PrdMessage)
* 11.6. [RequestPrdResponse](#RequestPrdResponse-1) * 11.6. [PrdResponse](#PrdResponse-1)
* 12. [Roles](#Roles) * 12. [Roles](#Roles)
* 12.1. [Role](#Role) * 12.1. [Role](#Role)
* 12.2. [Conditions](#Conditions) * 12.2. [Conditions](#Conditions)
* 12.2.1. [TransactionMode](#TransactionMode) * 12.2.1. [TransactionMode](#TransactionMode)
* 12.2.2. [ConditionPayment](#ConditionPayment) * 12.2.2. [ConditionPayments](#ConditionPayments)
* 12.2.3. [ConditionCommitment](#ConditionCommitment) * 12.2.3. [ConditionCommitment](#ConditionCommitment)
* 12.2.4. [ConditionDeposit](#ConditionDeposit) * 12.2.4. [ConditionDeposit](#ConditionDeposit)
* 12.2.5. [ConditionOrchestration](#ConditionOrchestration) * 12.2.5. [ConditionOrchestration](#ConditionOrchestration)
* 12.2.6. [ConditionCap](#ConditionCap) * 12.2.6. [ConditionCap](#ConditionCap)
* 12.2.7. [ConditionRequestPrdAddressSet](#ConditionRequestPrdAddressSet) * 12.2.7. [ConditionPrdAddressSet](#ConditionPrdAddressSet)
* 12.2.8. [ConditionPublish](#ConditionPublish) * 12.2.8. [ConditionPublish](#ConditionPublish)
* 12.3. [RolesGroup](#RolesGroup) * 12.3. [RolesGroup](#RolesGroup)
* 12.3.1. [RoleArtefact](#RoleArtefact) * 12.3.1. [RoleArtefact](#RoleArtefact)
@ -200,7 +200,7 @@
* 12.3.3. [RoleCommitment](#RoleCommitment) * 12.3.3. [RoleCommitment](#RoleCommitment)
* 12.3.4. [RoleMember](#RoleMember) * 12.3.4. [RoleMember](#RoleMember)
* 12.4. [RolePeer](#RolePeer) * 12.4. [RolePeer](#RolePeer)
* 12.4.1. [RolePayment](#RolePayment) * 12.4.1. [RolePayments](#RolePayments)
* 12.4.2. [RoleProcess](#RoleProcess) * 12.4.2. [RoleProcess](#RoleProcess)
* 13. [Storage](#Storage) * 13. [Storage](#Storage)
* 13.1. [StoragePublic](#StoragePublic) * 13.1. [StoragePublic](#StoragePublic)
@ -208,14 +208,14 @@
* 13.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic) * 13.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic)
* 13.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic) * 13.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic)
* 13.1.4. [StorageMessagePublic](#StorageMessagePublic) * 13.1.4. [StorageMessagePublic](#StorageMessagePublic)
* 13.1.5. [StorageRequestPcdPublic](#StorageRequestPcdPublic) * 13.1.5. [StoragePcdPublic](#StoragePcdPublic)
* 13.1.6. [StorageRequestPrdPublic](#StorageRequestPrdPublic) * 13.1.6. [StoragePrdPublic](#StoragePrdPublic)
* 13.2. [StoragePrivate](#StoragePrivate) * 13.2. [StoragePrivate](#StoragePrivate)
* 13.2.1. [StorageKeysPrivate](#StorageKeysPrivate) * 13.2.1. [StorageKeysPrivate](#StorageKeysPrivate)
* 13.2.2. [StoragePeerPrivate](#StoragePeerPrivate) * 13.2.2. [StoragePeerPrivate](#StoragePeerPrivate)
* 13.2.3. [StorageProcessPrivate](#StorageProcessPrivate) * 13.2.3. [StorageProcessPrivate](#StorageProcessPrivate)
* 13.2.4. [StorageRequestPcdPrivate](#StorageRequestPcdPrivate) * 13.2.4. [StoragePcdPrivate](#StoragePcdPrivate)
* 13.2.5. [StorageRequestPrdPrivate](#StorageRequestPrdPrivate) * 13.2.5. [StoragePrdPrivate](#StoragePrdPrivate)
* 13.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate) * 13.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate)
* 13.2.7. [StorageocketsPrivate](#StorageocketsPrivate) * 13.2.7. [StorageocketsPrivate](#StorageocketsPrivate)
* 13.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate) * 13.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate)
@ -264,7 +264,7 @@ Pseudo-code:
} }
``` ```
### 2.3. <a name='PaymentMethod'></a>PaymentMethod ### 2.3. <a name='PaymentsMethod'></a>PaymentsMethod
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------- | ------------ | ------ | | -------------- | ------------ | ------ |
@ -358,7 +358,7 @@ Pseudo-code:
| `sp_address_revoke_public_sig` | ```String``` | | | `sp_address_revoke_public_sig` | ```String``` | |
| `third_sp_address_list_public` | ```Vec<String>``` | | | `third_sp_address_list_public` | ```Vec<String>``` | |
| `data_size_max` | ```i64``` | | | `data_size_max` | ```i64``` | |
| `payment_method_list_public` | ```Vec<String>``` | | | `Payments_method_list_public` | ```Vec<String>``` | |
| `succession_process_hash` | ```String``` | | | `succession_process_hash` | ```String``` | |
| `device_footprint` | String | | | `device_footprint` | String | |
@ -372,7 +372,7 @@ Pseudo-code:
"sp_address_revoke_public_sig": "", "sp_address_revoke_public_sig": "",
"third_sp_address_list_public": [], "third_sp_address_list_public": [],
"data_size_max": 0, "data_size_max": 0,
"payment_method_list_public": [], "Payments_method_list_public": [],
"succession_process_hash": "", "succession_process_hash": "",
"device_footprint": "" "device_footprint": ""
} }
@ -570,32 +570,32 @@ Pseudo-code:
* **```Process(ItemProcess)```**: Contains an item of type ItemProcess, representing a process. * **```Process(ItemProcess)```**: Contains an item of type ItemProcess, representing a process.
* **```Peer(ItemPeer)```**: Contains an item of type ItemPeer, representing a peer. * **```Peer(ItemPeer)```**: Contains an item of type ItemPeer, representing a peer.
* **```Member(ItemMember)```**: Contains an item of type ItemMember, representing a member. * **```Member(ItemMember)```**: Contains an item of type ItemMember, representing a member.
* **```Payment(ItemPayment)```**: Contains an item of type ItemPayment, representing a payment. * **```Payments(ItemPayments)```**: Contains an item of type ItemPayments, representing a Payments.
* **```Deposit(ItemDeposit)```**: Contains an item of type ItemDeposit, representing a deposit. * **```Deposit(ItemDeposit)```**: Contains an item of type ItemDeposit, representing a deposit.
* **```Artefact(ItemArtefact)```**: Contains an item of type ItemArtefact, representing an artefact. * **```Artefact(ItemArtefact)```**: Contains an item of type ItemArtefact, representing an artefact.
* **```Commitment(ItemCommitment)```**: Contains an item of type ItemCommitment, representing a commitment. * **```Commitment(ItemCommitment)```**: Contains an item of type ItemCommitment, representing a commitment.
### 3.7. <a name='ItemPayment'></a>ItemPayment ### 3.7. <a name='ItemPayments'></a>ItemPayments
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ----------------------------------- | ----------------------------------------------- | ------ | | ----------------------------------- | ----------------------------------------------- | ------ |
| `item` | ```Item``` | | | `item` | ```Item``` | |
| `public_attribute_group` | ```ItemPaymentPublicAttributeGroup``` | | | `public_attribute_group` | ```ItemPaymentsPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```ItemPaymentRoleConfidentialAttributeGroup``` | | | `role_confidential_attribute_group` | ```ItemPaymentsRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```ItemPaymentPrivateAttributeGroup``` | | | `private_attribute_group` | ```ItemPaymentsPrivateAttributeGroup``` | |
Pseudo-code: Pseudo-code:
```json ```json
{ {
"item": Item, "item": Item,
"public_attribute_group": ItemPaymentPublicAttributeGroup, "public_attribute_group": ItemPaymentsPublicAttributeGroup,
"role_confidential_attribute_group": ItemPaymentRoleConfidentialAttributeGroup, "role_confidential_attribute_group": ItemPaymentsRoleConfidentialAttributeGroup,
"private_attribute_group": ItemPaymentPrivateAttributeGroup "private_attribute_group": ItemPaymentsPrivateAttributeGroup
} }
``` ```
#### 3.7.1. <a name='ItemPaymentPublicAttributeGroup'></a>ItemPaymentPublicAttributeGroup #### 3.7.1. <a name='ItemPaymentsPublicAttributeGroup'></a>ItemPaymentsPublicAttributeGroup
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------------------------- | ----------------- | ------ | | ---------------------------------- | ----------------- | ------ |
@ -617,7 +617,7 @@ Pseudo-code:
``` ```
#### 3.7.2. <a name='ItemPaymentRoleConfidentialAttributeGroup'></a>ItemPaymentRoleConfidentialAttributeGroup #### 3.7.2. <a name='ItemPaymentsRoleConfidentialAttributeGroup'></a>ItemPaymentsRoleConfidentialAttributeGroup
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ------------------------------ | ----------------- | ------ | | ------------------------------ | ----------------- | ------ |
@ -642,7 +642,7 @@ Pseudo-code:
} }
``` ```
#### 3.7.3. <a name='ItemPaymentPrivateAttributeGroup'></a>ItemPaymentPrivateAttributeGroup #### 3.7.3. <a name='ItemPaymentsPrivateAttributeGroup'></a>ItemPaymentsPrivateAttributeGroup
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------------- | ----------------- | ------ | | ---------------------- | ----------------- | ------ |
@ -1215,12 +1215,12 @@ Pseudo-code:
} }
``` ```
## 10. <a name='RequestPcd'></a> RequestPcd ## 10. <a name='Pcd'></a> Pcd
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| --------------- | ------------------------------------ | ------ | | --------------- | ------------------------------------ | ------ |
| `request` | ```Request``` | | | `request` | ```Request``` | |
| `item_enc_list` | ```Vec< RequestPcdItemGenericEnc>``` | | | `item_enc_list` | ```Vec< PcdItemGenericEnc>``` | |
| `pagination` | ```Pagination``` | Yes | | `pagination` | ```Pagination``` | Yes |
Pseudo-code: Pseudo-code:
@ -1253,7 +1253,7 @@ Pseudo-code:
} }
``` ```
### 10.2. <a name='RequestPcdItemGenericEnc'></a> RequestPcdItemGenericEnc ### 10.2. <a name='PcdItemGenericEnc'></a> PcdItemGenericEnc
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ------------------------------------------------------- | ------------------------------------------------------ | ------ | | ------------------------------------------------------- | ------------------------------------------------------ | ------ |
@ -1261,9 +1261,9 @@ Pseudo-code:
| `item_type` | ```String``` | | | `item_type` | ```String``` | |
| `item_name` | `String` | | | `item_name` | `String` | |
| `name` | ```String``` | | | `name` | ```String``` | |
| `request_pcd_item_enc_attribute_public_list` | ```Vec< RequestPcdItemEncAttributePublic>``` | Yes | | `request_pcd_item_enc_attribute_public_list` | ```Vec< PcdItemEncAttributePublic>``` | Yes |
| `request_pcd_item_enc_attribute_role_confidential_list` | ```Vec< RequestPcdItemEncAttributeRoleConfidential>``` | Yes | | `request_pcd_item_enc_attribute_role_confidential_list` | ```Vec< PcdItemEncAttributeRoleConfidential>``` | Yes |
| `request_pcd_item_enc_attribute_private_list` | ```Vec< RequestPcdItemEncAttributePrivate>``` | Yes | | `request_pcd_item_enc_attribute_private_list` | ```Vec< PcdItemEncAttributePrivate>``` | Yes |
Pseudo-code: Pseudo-code:
@ -1278,7 +1278,7 @@ Pseudo-code:
} }
``` ```
#### 10.2.1. <a name='RequestPcdItemEncAttributePublic'></a> RequestPcdItemEncAttributePublic #### 10.2.1. <a name='PcdItemEncAttributePublic'></a> PcdItemEncAttributePublic
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------- | ------------ | ------ | | ---------------- | ------------ | ------ |
@ -1296,7 +1296,7 @@ Pseudo-code:
} }
``` ```
#### 10.2.2. <a name='RequestPcdItemEncAttributeRoleConfidential'></a> RequestPcdItemEncAttributeRoleConfidential #### 10.2.2. <a name='PcdItemEncAttributeRoleConfidential'></a> PcdItemEncAttributeRoleConfidential
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------- | ------------ | ------ | | ---------------- | ------------ | ------ |
@ -1314,7 +1314,7 @@ Pseudo-code:
} }
``` ```
#### 10.2.3. <a name='RequestPcdItemEncAttributePrivate'></a> RequestPcdItemEncAttributePrivate #### 10.2.3. <a name='PcdItemEncAttributePrivate'></a> PcdItemEncAttributePrivate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------- | ------------ | ------ | | ---------------- | ------------ | ------ |
@ -1332,14 +1332,14 @@ Pseudo-code:
} }
``` ```
## 11. <a name='RequestPrd'></a>RequestPrd ## 11. <a name='Prd'></a>Prd
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------------------------------------------------------------------- | ----------------- | ------ | | -------------------------------------------------------------------------- | ----------------- | ------ |
| `request` | ```Request``` | | | `request` | ```Request``` | |
| `sig_value` | ```String``` | | | `sig_value` | ```String``` | |
| `request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret` | ```Vec<String>``` | | | `request_pcd_reference_keys_role_confidential_list_confidential` | ```Vec<String>``` | |
| `request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret` | ```Vec<String>``` | | | `request_pcd_origin_hash_keys_role_confidential_list_confidential` | ```Vec<String>``` | |
| `message_public` | ```String``` | Yes | | `message_public` | ```String``` | Yes |
| `message_confidential` | ```String``` | Yes | | `message_confidential` | ```String``` | Yes |
| `message_private` | ```String``` | Yes | | `message_private` | ```String``` | Yes |
@ -1349,17 +1349,17 @@ Pseudo-code:
| `timestamp_declared` | ```u64``` | | | `timestamp_declared` | ```u64``` | |
| `role_name_from` | ```String``` | | | `role_name_from` | ```String``` | |
| `role_name_to` | ```String``` | | | `role_name_to` | ```String``` | |
| `payment_method_enc_by_shared_secret` | ```String``` | Yes | | `Payments_method_confidential` | ```String``` | Yes |
| `deposit_method_enc_by_shared_secret` | ```String``` | Yes | | `deposit_method_confidential` | ```String``` | Yes |
| `commitment_method_enc_by_shared_secret` | ```String``` | Yes | | `commitment_method_confidential` | ```String``` | Yes |
| `payment_request_pcd_hash_list_enc_by_shared_secret` | ```Vec<String>``` | Yes | | `Payments_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_enc_by_shared_secret` | ```Vec<String>``` | Yes | | `cap_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_enc_by_shared_secret` | ```Vec<String>``` | Yes | | `deposit_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_enc_by_shared_secret` | ```Vec<String>``` | Yes | | `commitment_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `ask_payment_method_enc_by_shared_secret` | ```String``` | Yes | | `ask_Payments_method_confidential` | ```String``` | Yes |
| `ask_deposit_method_enc_by_shared_secret` | ```String``` | Yes | | `ask_deposit_method_confidential` | ```String``` | Yes |
| `ask_commitment_method_enc_by_shared_secret` | ```String``` | Yes | | `ask_commitment_method_confidential` | ```String``` | Yes |
| `certif_key_enc_by_shared_secret` | ```String``` | Yes | | `certif_key_confidential` | ```String``` | Yes |
| `device_footprint_enc_by_sp_shared_secret` | ```String``` | | | `device_footprint_enc_by_sp_shared_secret` | ```String``` | |
Pseudo-code: Pseudo-code:
@ -1368,8 +1368,8 @@ Pseudo-code:
{ {
"request": {}, "request": {},
"sig_value": "", "sig_value": "",
"request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret": [], "request_pcd_reference_keys_role_confidential_list_confidential": [],
"request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret": [], "request_pcd_origin_hash_keys_role_confidential_list_confidential": [],
"message_public": "", "message_public": "",
"message_confidential": "", "message_confidential": "",
"message_private": "", "message_private": "",
@ -1379,26 +1379,26 @@ Pseudo-code:
"timestamp_declared": 0, "timestamp_declared": 0,
"role_name_from": "", "role_name_from": "",
"role_name_to": "", "role_name_to": "",
"payment_method_enc_by_shared_secret": "", "Payments_method_confidential": "",
"deposit_method_enc_by_shared_secret": "", "deposit_method_confidential": "",
"commitment_method_enc_by_shared_secret": "", "commitment_method_confidential": "",
"payment_request_pcd_hash_list_enc_by_shared_secret": [], "Payments_request_pcd_hash_list_confidential": [],
"cap_request_pcd_hash_list_enc_by_shared_secret": [], "cap_request_pcd_hash_list_confidential": [],
"deposit_request_pcd_hash_list_enc_by_shared_secret": [], "deposit_request_pcd_hash_list_confidential": [],
"commitment_request_pcd_hash_list_enc_by_shared_secret": [], "commitment_request_pcd_hash_list_confidential": [],
"ask_payment_method_enc_by_shared_secret": "", "ask_Payments_method_confidential": "",
"ask_deposit_method_enc_by_shared_secret": "", "ask_deposit_method_confidential": "",
"ask_commitment_method_enc_by_shared_secret": "", "ask_commitment_method_confidential": "",
"certif_key_enc_by_shared_secret": "", "certif_key_confidential": "",
"device_footprint_enc_by_sp_shared_secret": "" "device_footprint_enc_by_sp_shared_secret": ""
} }
``` ```
### 11.1. <a name='RequestPrdList'></a>RequestPrdList ### 11.1. <a name='PrdList'></a>PrdList
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ------------------------------------- | ---------------- | ------ | | ------------------------------------- | ---------------- | ------ |
| `request_prd` | ```RequestPrd``` | | | `request_prd` | ```Prd``` | |
| `item_member_enc_by_sp_shared_secret` | ```String``` | Yes | | `item_member_enc_by_sp_shared_secret` | ```String``` | Yes |
| `pagination_start` | ```Number``` | Yes | | `pagination_start` | ```Number``` | Yes |
| `pagination_stop` | ```Number``` | Yes | | `pagination_stop` | ```Number``` | Yes |
@ -1409,7 +1409,7 @@ Pseudo-code:
```json ```json
{ {
"request_prd": RequestPrd, "request_prd": Prd,
"item_member_enc_by_sp_shared_secret": "", "item_member_enc_by_sp_shared_secret": "",
"pagination_start": 0, "pagination_start": 0,
"pagination_stop": 0, "pagination_stop": 0,
@ -1418,25 +1418,25 @@ Pseudo-code:
} }
``` ```
### 11.2. <a name='RequestPrdUpdate'></a>RequestPrdUpdate ### 11.2. <a name='PrdUpdate'></a>PrdUpdate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------- | ---------------- | ------ | | -------------- | ---------------- | ------ |
| `request_prd` | ```RequestPrd``` | | | `request_prd` | ```Prd``` | |
Pseudo-code: Pseudo-code:
```json ```json
{ {
"request_prd": RequestPrd "request_prd": Prd
} }
``` ```
### 11.3. <a name='RequestPrdResponse'></a>RequestPrdResponse ### 11.3. <a name='PrdResponse'></a>PrdResponse
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ------------------------------------------- | ---------------- | ------ | | ------------------------------------------- | ---------------- | ------ |
| `request_prd` | ```RequestPrd``` | | | `request_prd` | ```Prd``` | |
| `shared_secret_key_enc_by_sp_shared_secret` | ```String``` | Yes | | `shared_secret_key_enc_by_sp_shared_secret` | ```String``` | Yes |
| `shard_enc_by_sp_shared_secret` | ```String``` | Yes | | `shard_enc_by_sp_shared_secret` | ```String``` | Yes |
@ -1444,57 +1444,57 @@ Pseudo-code:
```json ```json
{ {
"request_prd": RequestPrd, "request_prd": Prd,
"sig_value": "", "sig_value": "",
"shared_secret_key_enc_by_sp_shared_secret": "", "shared_secret_key_enc_by_sp_shared_secret": "",
"shard_enc_by_sp_shared_secret": "" "shard_enc_by_sp_shared_secret": ""
} }
``` ```
### 11.4. <a name='RequestPrdConfirm'></a>RequestPrdConfirm ### 11.4. <a name='PrdConfirm'></a>PrdConfirm
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ----------------------------------- | ---------------- | ------ | | ----------------------------------- | ---------------- | ------ |
| `request_prd` | ```RequestPrd``` | | | `request_prd` | ```Prd``` | |
| `code_confirm_enc_by_shared_secret` | ```String``` | Yes | | `code_confirm_confidential` | ```String``` | Yes |
Pseudo-code: Pseudo-code:
```json ```json
{ {
"request_prd": RequestPrd, "request_prd": Prd,
"code_confirm_enc_by_shared_secret": "" "code_confirm_confidential": ""
} }
``` ```
### 11.5. <a name='RequestPrdMessage'></a>RequestPrdMessage ### 11.5. <a name='PrdMessage'></a>PrdMessage
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------------- | ----------------- | ------ | | ---------------------- | ----------------- | ------ |
| `request_prd` | ```RequestPrd``` | | | `request_prd` | ```Prd``` | |
| `raw_transaction_list` | ```Vec<String>``` | Yes | | `raw_transaction_list` | ```Vec<String>``` | Yes |
Pseudo-code: Pseudo-code:
```json ```json
{ {
"request_prd": RequestPrd, "request_prd": Prd,
"raw_transaction_list": [] "raw_transaction_list": []
} }
``` ```
### 11.6. <a name='RequestPrdResponse-1'></a>RequestPrdResponse ### 11.6. <a name='PrdResponse-1'></a>PrdResponse
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------- | ---------------- | ------ | | -------------- | ---------------- | ------ |
| `request_prd` | ```RequestPrd``` | | | `request_prd` | ```Prd``` | |
| `sig_value` | ```String``` | | | `sig_value` | ```String``` | |
Pseudo-code: Pseudo-code:
```json ```json
{ {
"request_prd": RequestPrd, "request_prd": Prd,
"sig_value": "" "sig_value": ""
} }
``` ```
@ -1512,7 +1512,7 @@ Pseudo-code:
| `condition_prd_address_set_list` | ```Vec<ConditionPrdAddressSet>``` | | | `condition_prd_address_set_list` | ```Vec<ConditionPrdAddressSet>``` | |
| `condition_publish_list` | ```Vec<ConditionPublish>``` | Yes | | `condition_publish_list` | ```Vec<ConditionPublish>``` | Yes |
| `condition_cap_list` | ```Vec<ConditionCap>``` | Yes | | `condition_cap_list` | ```Vec<ConditionCap>``` | Yes |
| `condition_payment_list` | ```Vec<ConditionPayment>``` | Yes | | `condition_Payments_list` | ```Vec<ConditionPayments>``` | Yes |
| `condition_commitment_list` | ```Vec<ConditionCommitment>``` | Yes | | `condition_commitment_list` | ```Vec<ConditionCommitment>``` | Yes |
| `condition_attribute_encryption_list` | ```Vec<String>``` | | | `condition_attribute_encryption_list` | ```Vec<String>``` | |
| `condition_orchestration_list` | ```Vec<ConditionOrchestration>``` | Yes | | `condition_orchestration_list` | ```Vec<ConditionOrchestration>``` | Yes |
@ -1531,7 +1531,7 @@ Pseudo-code:
"condition_prd_address_set_list": [], "condition_prd_address_set_list": [],
"condition_publish_list": [], "condition_publish_list": [],
"condition_cap_list": [], "condition_cap_list": [],
"condition_payment_list": [], "condition_Payments_list": [],
"condition_commitment_list": [], "condition_commitment_list": [],
"condition_attribute_encryption_list": [], "condition_attribute_encryption_list": [],
"condition_orchestration_list": [], "condition_orchestration_list": [],
@ -1577,13 +1577,13 @@ Pseudo-code:
} }
``` ```
#### 12.2.2. <a name='ConditionPayment'></a>ConditionPayment #### 12.2.2. <a name='ConditionPayments'></a>ConditionPayments
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------------------- | ----------------------------------- | ------ | | -------------------------- | ----------------------------------- | ------ |
| `request_prd_type` | ```String``` | | | `request_prd_type` | ```String``` | |
| `transaction_mode` | ```TransactionMode``` | | | `transaction_mode` | ```TransactionMode``` | |
| `payment_proof_validation` | ```ConditionRequestPrdAddressSet``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | |
| `condition_deposit_list` | ```Vec<ConditionDeposit>``` | Yes | | `condition_deposit_list` | ```Vec<ConditionDeposit>``` | Yes |
Pseudo-code: Pseudo-code:
@ -1592,7 +1592,7 @@ Pseudo-code:
{ {
"request_prd_type": "", "request_prd_type": "",
"transaction_mode": TransactionMode, "transaction_mode": TransactionMode,
"payment_proof_validation": ConditionRequestPrdAddressSet, "Payments_proof_validation": ConditionPrdAddressSet,
"condition_deposit_list": [] "condition_deposit_list": []
} }
``` ```
@ -1603,7 +1603,7 @@ Pseudo-code:
| -------------------------- | ----------------------------------- | ------ | | -------------------------- | ----------------------------------- | ------ |
| `request_prd_type` | ```String``` | | | `request_prd_type` | ```String``` | |
| `transaction_mode` | ```TransactionMode``` | | | `transaction_mode` | ```TransactionMode``` | |
| `payment_proof_validation` | ```ConditionRequestPrdAddressSet``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | |
Pseudo-code: Pseudo-code:
@ -1611,7 +1611,7 @@ Pseudo-code:
{ {
"request_prd_type": "", "request_prd_type": "",
"transaction_mode": TransactionMode, "transaction_mode": TransactionMode,
"payment_proof_validation": ConditionRequestPrdAddressSet "Payments_proof_validation": ConditionPrdAddressSet
} }
``` ```
@ -1621,7 +1621,7 @@ Pseudo-code:
| -------------------------- | ----------------------------------- | ------ | | -------------------------- | ----------------------------------- | ------ |
| `request_prd_type` | ```String``` | | | `request_prd_type` | ```String``` | |
| `transaction_mode` | ```TransactionMode``` | | | `transaction_mode` | ```TransactionMode``` | |
| `payment_proof_validation` | ```ConditionRequestPrdAddressSet``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | |
Pseudo-code: Pseudo-code:
@ -1629,7 +1629,7 @@ Pseudo-code:
{ {
"request_prd_type": "", "request_prd_type": "",
"transaction_mode": TransactionMode, "transaction_mode": TransactionMode,
"payment_proof_validation": ConditionRequestPrdAddressSet "Payments_proof_validation": ConditionPrdAddressSet
} }
``` ```
@ -1640,7 +1640,7 @@ Pseudo-code:
| `request_prd_type` | ```String``` | | | `request_prd_type` | ```String``` | |
| `role_ok` | ```String``` | | | `role_ok` | ```String``` | |
| `role_ko` | ```String``` | | | `role_ko` | ```String``` | |
| `payment_proof_validation` | ```ConditionRequestPrdAddressSet``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | |
Pseudo-code: Pseudo-code:
@ -1649,7 +1649,7 @@ Pseudo-code:
"request_prd_type": "", "request_prd_type": "",
"role_ok": "", "role_ok": "",
"role_ko": "", "role_ko": "",
"payment_proof_validation": ConditionRequestPrdAddressSet "Payments_proof_validation": ConditionPrdAddressSet
} }
``` ```
@ -1659,7 +1659,7 @@ Pseudo-code:
| -------------------------- | ----------------------------------- | ------ | | -------------------------- | ----------------------------------- | ------ |
| `request_prd_type` | ```String``` | | | `request_prd_type` | ```String``` | |
| `transaction_mode` | ```TransactionMode``` | | | `transaction_mode` | ```TransactionMode``` | |
| `payment_proof_validation` | ```ConditionRequestPrdAddressSet``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | |
Pseudo-code: Pseudo-code:
@ -1667,11 +1667,11 @@ Pseudo-code:
{ {
"request_prd_type": "", "request_prd_type": "",
"transaction_mode": "", "transaction_mode": "",
"payment_proof_validation": ConditionRequestPrdAddressSet "Payments_proof_validation": ConditionPrdAddressSet
} }
``` ```
#### 12.2.7. <a name='ConditionRequestPrdAddressSet'></a>ConditionRequestPrdAddressSet #### 12.2.7. <a name='ConditionPrdAddressSet'></a>ConditionPrdAddressSet
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ----------------------------------------------- | ----------------- | ------ | | ----------------------------------------------- | ----------------- | ------ |
@ -1858,7 +1858,7 @@ Pseudo-code:
} }
``` ```
#### 12.4.1. <a name='RolePayment'></a>RolePayment #### 12.4.1. <a name='RolePayments'></a>RolePayments
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------- | ------------ | ------ | | -------------- | ------------ | ------ |
@ -2054,7 +2054,7 @@ Pseudo-code:
} }
``` ```
#### 14.1.5. <a name='StorageRequestPcdPublic'></a>StorageRequestPcdPublic #### 14.1.5. <a name='StoragePcdPublic'></a>StoragePcdPublic
Pseudo-code: Pseudo-code:
@ -2067,9 +2067,9 @@ Pseudo-code:
] ]
``` ```
#### 14.1.6. <a name='StorageRequestPrdPublic'></a>StorageRequestPrdPublic #### 14.1.6. <a name='StoragePrdPublic'></a>StoragePrdPublic
##### 4.6.1. <a name='RequestPrdList'></a>StorageRequestPrdListPublic ##### 4.6.1. <a name='PrdList'></a>StoragePrdListPublic
Pseudo-code: Pseudo-code:
@ -2077,13 +2077,13 @@ Pseudo-code:
[ [
{ {
"hash": "", "hash": "",
"request_prd": RequestPrdList, "request_prd": PrdList,
"validation_status": "pending|ok|ko" "validation_status": "pending|ok|ko"
} }
] ]
``` ```
##### 4.6.2. <a name='RequestPrdUpdate'></a>StorageRequestPrdUpdatePublic ##### 4.6.2. <a name='PrdUpdate'></a>StoragePrdUpdatePublic
Pseudo-code: Pseudo-code:
@ -2091,13 +2091,13 @@ Pseudo-code:
[ [
{ {
"hash": "", "hash": "",
"request_prd": RequestPrdUpdate, "request_prd": PrdUpdate,
"validation_status": "pending|ok|ko" "validation_status": "pending|ok|ko"
} }
] ]
``` ```
##### 4.6.3. <a name='RequestPrdResponse'></a>StorageRequestPrdResponsePublic ##### 4.6.3. <a name='PrdResponse'></a>StoragePrdResponsePublic
Pseudo-code: Pseudo-code:
@ -2105,13 +2105,13 @@ Pseudo-code:
[ [
{ {
"hash": "", "hash": "",
"request_prd": RequestPrdResponse, "request_prd": PrdResponse,
"validation_status": "pending|ok|ko" "validation_status": "pending|ok|ko"
} }
] ]
``` ```
##### 4.6.4. <a name='RequestPrdConfirm'></a>StorageRequestPrdConfirmPublic ##### 4.6.4. <a name='PrdConfirm'></a>StoragePrdConfirmPublic
Pseudo-code: Pseudo-code:
@ -2119,12 +2119,12 @@ Pseudo-code:
[ [
{ {
"hash": "", "hash": "",
"request_prd": RequestPrdConfirm, "request_prd": PrdConfirm,
"validation_status": "pending|ok|ko" "validation_status": "pending|ok|ko"
] ]
``` ```
##### 4.6.5. <a name='RequestPrdMessage'></a>StorageRequestPrdMessagePublic ##### 4.6.5. <a name='PrdMessage'></a>StoragePrdMessagePublic
Pseudo-code: Pseudo-code:
@ -2132,7 +2132,7 @@ Pseudo-code:
[ [
{ {
"hash": "", "hash": "",
"request_prd": RequestPrdMessage, "request_prd": PrdMessage,
"validation_status": "pending|ok|ko" "validation_status": "pending|ok|ko"
} }
] ]
@ -2427,7 +2427,7 @@ Pseudo-code:
} }
``` ```
#### 14.2.4. <a name='StorageRequestPcdPrivate'></a>StorageRequestPcdPrivate #### 14.2.4. <a name='StoragePcdPrivate'></a>StoragePcdPrivate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| ---------------------------- | ----------------- | ------ | | ---------------------------- | ----------------- | ------ |
@ -2443,9 +2443,9 @@ Pseudo-code:
}] }]
``` ```
#### 14.2.5. <a name='StorageRequestPrdPrivate'></a>StorageRequestPrdPrivate #### 14.2.5. <a name='StoragePrdPrivate'></a>StoragePrdPrivate
##### 5.5.1. <a name='RequestPrdUpdate-1'></a>StorageRequestPrdUpdatePrivate ##### 5.5.1. <a name='PrdUpdate-1'></a>StoragePrdUpdatePrivate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------------------------------------------------------- | ----------------- | ------ | | -------------------------------------------------------------- | ----------------- | ------ |
@ -2456,14 +2456,14 @@ Pseudo-code:
| `message_public_decrypted` | ```String``` | | | `message_public_decrypted` | ```String``` | |
| `message_confidential_decrypted` | ```String``` | | | `message_confidential_decrypted` | ```String``` | |
| `message_private_decrypted` | ```String``` | | | `message_private_decrypted` | ```String``` | |
| `payment_method_decrypted` | ```String``` | | | `Payments_method_decrypted` | ```String``` | |
| `deposit_method_decrypted` | ```String``` | | | `deposit_method_decrypted` | ```String``` | |
| `commitment_method_decrypted` | ```String``` | | | `commitment_method_decrypted` | ```String``` | |
| `payment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | | | `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | | | `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | | | `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | | | `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `ask_payment_method_[decrypted` | ```String``` | | | `ask_Payments_method_[decrypted` | ```String``` | |
| `ask_deposit_method_decrypted` | ```String``` | | | `ask_deposit_method_decrypted` | ```String``` | |
| `ask_commitment_method_decrypted` | ```String``` | | | `ask_commitment_method_decrypted` | ```String``` | |
| `certif_key_decrypted` | ```String``` | | | `certif_key_decrypted` | ```String``` | |
@ -2483,14 +2483,14 @@ Pseudo-code:
"message_public_decrypted": "", "message_public_decrypted": "",
"message_confidential_decrypted": "", "message_confidential_decrypted": "",
"message_private_decrypted": "", "message_private_decrypted": "",
"payment_method_decrypted": "", "Payments_method_decrypted": "",
"deposit_method_decrypted": "", "deposit_method_decrypted": "",
"commitment_method_decrypted": "", "commitment_method_decrypted": "",
"payment_request_pcd_hash_list_decrypted": [], "Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [],
"ask_payment_method_[decrypted": "", "ask_Payments_method_[decrypted": "",
"ask_deposit_method_decrypted": "", "ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "", "ask_commitment_method_decrypted": "",
"certif_key_decrypted": "", "certif_key_decrypted": "",
@ -2501,7 +2501,7 @@ Pseudo-code:
] ]
``` ```
##### 5.5.2. <a name='RequestPrdResponse-1'></a>StorageRequestPrdResponsePrivate ##### 5.5.2. <a name='PrdResponse-1'></a>StoragePrdResponsePrivate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------------------------------------------------------- | ------------------------------------------------- | ------ | | -------------------------------------------------------------- | ------------------------------------------------- | ------ |
@ -2512,14 +2512,14 @@ Pseudo-code:
| `message_public_decrypted` | ```String``` | Yes | | `message_public_decrypted` | ```String``` | Yes |
| `message_confidential_decrypted` | ```String``` | Yes | | `message_confidential_decrypted` | ```String``` | Yes |
| `message_private_decrypted` | ```String``` | Yes | | `message_private_decrypted` | ```String``` | Yes |
| `payment_method_decrypted` | ```String``` | Yes | | `Payments_method_decrypted` | ```String``` | Yes |
| `deposit_method_decrypted` | ```String``` | Yes | | `deposit_method_decrypted` | ```String``` | Yes |
| `commitment_method_decrypted` | ```String``` | Yes | | `commitment_method_decrypted` | ```String``` | Yes |
| `payment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `ask_payment_method_[decrypted` | ```String``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes |
| `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes |
| `ask_commitment_method_decrypted` | ```String``` | Yes | | `ask_commitment_method_decrypted` | ```String``` | Yes |
| `certif_key_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes |
@ -2539,14 +2539,14 @@ Pseudo-code:
"message_public_decrypted": "", "message_public_decrypted": "",
"message_confidential_decrypted": "", "message_confidential_decrypted": "",
"message_private_decrypted": "", "message_private_decrypted": "",
"payment_method_decrypted": "", "Payments_method_decrypted": "",
"deposit_method_decrypted": "", "deposit_method_decrypted": "",
"commitment_method_decrypted": "", "commitment_method_decrypted": "",
"payment_request_pcd_hash_list_decrypted": [], "Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [],
"ask_payment_method_[decrypted": "", "ask_Payments_method_[decrypted": "",
"ask_deposit_method_decrypted": "", "ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "", "ask_commitment_method_decrypted": "",
"certif_key_decrypted": "", "certif_key_decrypted": "",
@ -2576,7 +2576,7 @@ Pseudo-code:
} }
``` ```
##### 5.5.3. <a name='RequestPrdConfirm-1'></a>StorageRequestPrdConfirmPrivate ##### 5.5.3. <a name='PrdConfirm-1'></a>StoragePrdConfirmPrivate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------------------------------------------------------- | ----------------- | ------ | | -------------------------------------------------------------- | ----------------- | ------ |
@ -2587,14 +2587,14 @@ Pseudo-code:
| `message_public_decrypted` | ```String``` | Yes | | `message_public_decrypted` | ```String``` | Yes |
| `message_confidential_decrypted` | ```String``` | Yes | | `message_confidential_decrypted` | ```String``` | Yes |
| `message_private_decrypted` | ```String``` | Yes | | `message_private_decrypted` | ```String``` | Yes |
| `payment_method_decrypted` | ```String``` | Yes | | `Payments_method_decrypted` | ```String``` | Yes |
| `deposit_method_decrypted` | ```String``` | Yes | | `deposit_method_decrypted` | ```String``` | Yes |
| `commitment_method_decrypted` | ```String``` | Yes | | `commitment_method_decrypted` | ```String``` | Yes |
| `payment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `ask_payment_method_[decrypted` | ```String``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes |
| `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes |
| `ask_commitment_method_decrypted` | ```String``` | Yes | | `ask_commitment_method_decrypted` | ```String``` | Yes |
| `certif_key_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes |
@ -2613,14 +2613,14 @@ Pseudo-code:
"message_public_decrypted": "", "message_public_decrypted": "",
"message_confidential_decrypted": "", "message_confidential_decrypted": "",
"message_private_decrypted": "", "message_private_decrypted": "",
"payment_method_decrypted": "", "Payments_method_decrypted": "",
"deposit_method_decrypted": "", "deposit_method_decrypted": "",
"commitment_method_decrypted": "", "commitment_method_decrypted": "",
"payment_request_pcd_hash_list_decrypted": [], "Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [],
"ask_payment_method_decrypted": "", "ask_Payments_method_decrypted": "",
"ask_deposit_method_decrypted": "", "ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "", "ask_commitment_method_decrypted": "",
"certif_key_decrypted": "", "certif_key_decrypted": "",
@ -2630,7 +2630,7 @@ Pseudo-code:
] ]
``` ```
##### 5.5.4. <a name='RequestPrdMessage-1'></a>StorageRequestPrdMessagePrivate ##### 5.5.4. <a name='PrdMessage-1'></a>StoragePrdMessagePrivate
| Attribute Name | Type | Option | | Attribute Name | Type | Option |
| -------------------------------------------------------------- | ----------------- | ------ | | -------------------------------------------------------------- | ----------------- | ------ |
@ -2641,14 +2641,14 @@ Pseudo-code:
| `message_public_decrypted` | ```String``` | Yes | | `message_public_decrypted` | ```String``` | Yes |
| `message_confidential_decrypted` | ```String``` | Yes | | `message_confidential_decrypted` | ```String``` | Yes |
| `message_private_decrypted` | ```String``` | Yes | | `message_private_decrypted` | ```String``` | Yes |
| `payment_method_decrypted` | ```String``` | Yes | | `Payments_method_decrypted` | ```String``` | Yes |
| `deposit_method_decrypted` | ```String``` | Yes | | `deposit_method_decrypted` | ```String``` | Yes |
| `commitment_method_decrypted` | ```String``` | Yes | | `commitment_method_decrypted` | ```String``` | Yes |
| `payment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes | | `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `ask_payment_method_[decrypted` | ```String``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes |
| `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes |
| `ask_commitment_method_decrypted` | ```String``` | Yes | | `ask_commitment_method_decrypted` | ```String``` | Yes |
| `certif_key_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes |
@ -2666,14 +2666,14 @@ Pseudo-code:
"message_public_decrypted": "", "message_public_decrypted": "",
"message_confidential_decrypted": "", "message_confidential_decrypted": "",
"message_private_decrypted": "", "message_private_decrypted": "",
"payment_method_decrypted": "", "Payments_method_decrypted": "",
"deposit_method_decrypted": "", "deposit_method_decrypted": "",
"commitment_method_decrypted": "", "commitment_method_decrypted": "",
"payment_request_pcd_hash_list_decrypted": [], "Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [],
"ask_payment_method_[decrypted": "", "ask_Payments_method_[decrypted": "",
"ask_deposit_method_decrypted": "", "ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "", "ask_commitment_method_decrypted": "",
"certif_key_decrypted": "", "certif_key_decrypted": "",

View File

@ -27,18 +27,18 @@ Voir [_Doc_references.md](_Doc_references.md).
* **4NK**: Système décentralisé innovant basé sur les principes du web 5, centré sur la sécurité des données et l'identité numérique. * **4NK**: Système décentralisé innovant basé sur les principes du web 5, centré sur la sécurité des données et l'identité numérique.
* **Portable Contract Document (`RequestPcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`). * **Portable Contract Document (`Pcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`).
* **Portable Request Document (`RequestPrd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `RequestPcd`. Les `RequestPrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `RequestPrd` incluent : * **Portable Request Document (`Prd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `Pcd`. Les `PrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `Prd` incluent :
* `RequestPrdList`: Demande de listes d'`Item`. En réponse, une `RequestPcd` est reçue avec les `RequestPrdResponse` correspondants. * `PrdList`: Demande de listes d'`Item`. En réponse, une `Pcd` est reçue avec les `PrdResponse` correspondants.
* `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres. * `PrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `Prd` à diffuser sur le réseau des nœuds de la side chain. Les `PrdMessage` peuvent répondre les uns aux autres.
* `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour. * `PrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `PCD`), qui sera déchiffrée et validée ou non par des `PrdResponse` en retour.
* `RequestPrdConfirm`: Confirmation de la réception des `RequestPrd` (à l'exception de `RequestPrdConfirm` eux-même). * `PrdConfirm`: Confirmation de la réception des `Prd` (à l'exception de `PrdConfirm` eux-même).
* `RequestPrdResponse`: Réponse aux autres types de `RequestPrd` (à l'exception de `RequestPrdConfirm` et `RequestPrdResponse`). * `PrdResponse`: Réponse aux autres types de `Prd` (à l'exception de `PrdConfirm` et `PrdResponse`).
* **Message**: Enveloppe commune pour les `RequestPrd` et `RequestPcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `RequestPrd` et `RequestPcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`. * **Message**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
* **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payment correspondant à un `RequestPrd`. * **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payments correspondant à un `Prd`.
* **ProcessKey**: La clé publique de chiffrement d'un `ItemProcess` (trouvée dans un `ItemProcess`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément). * **ProcessKey**: La clé publique de chiffrement d'un `ItemProcess` (trouvée dans un `ItemProcess`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément).
@ -60,7 +60,7 @@ Voir [_Doc_references.md](_Doc_references.md).
* **Onboard**: Action de demander un `rôle` dans un `ItemProcess` . * **Onboard**: Action de demander un `rôle` dans un `ItemProcess` .
* **Member**: Une adresse Silent Payment, complétée de métadonnées, par `ItemProcess` et d'une adresse supplémentaire pour la révocation. * **Member**: Une adresse Silent Payments, complétée de métadonnées, par `ItemProcess` et d'une adresse supplémentaire pour la révocation.
* **Third parties**:`adresse SP` complétant un `member` pour reconnaître d'autres dispositifs du `member`. * **Third parties**:`adresse SP` complétant un `member` pour reconnaître d'autres dispositifs du `member`.
@ -74,7 +74,7 @@ Voir [_Doc_references.md](_Doc_references.md).
* **Timechain**: Terme préféré à "blockchain", désignant un intervalle de temps régulier entre des blocs de transactions cryptographiques, sécurisées par cryptographie pour une distribution de la sécurité et de l'ordre des événements de façon identique sur l'ensemble du réseau. * **Timechain**: Terme préféré à "blockchain", désignant un intervalle de temps régulier entre des blocs de transactions cryptographiques, sécurisées par cryptographie pour une distribution de la sécurité et de l'ordre des événements de façon identique sur l'ensemble du réseau.
* **Silent Payment (SP)**: Méthode de paiement permettant d'envoyer et de recevoir des fonds sans réutiliser les adresses Bitcoin, améliorant ainsi la confidentialité des transactions. * **Silent Payments (SP)**: Méthode de paiement permettant d'envoyer et de recevoir des fonds sans réutiliser les adresses Bitcoin, améliorant ainsi la confidentialité des transactions.
## 4. <a name='Chiffrement'></a>Chiffrement ## 4. <a name='Chiffrement'></a>Chiffrement
@ -96,9 +96,9 @@ Cette norme est aujourd'hui utilisée pour le hachage de mot de passe (associé
## 5. <a name='Data'></a>Data ## 5. <a name='Data'></a>Data
* **Cache**: Partie 1 chiffrée de la clé de dépense du signet du login stockée en cache, ainsi que les `ItemProcess` découverts et les pairs du réseau. Une fois identifié auprès des membres d'un `ItemProcess` et avec son identité `member` récupérée, l'objet member et les `RequestPcd` et `RequestPrd` du compte sont stockés en cache. Le cache se compose d'une partie prive jamais partagée et d'une partie publique partagée. * **Cache**: Partie 1 chiffrée de la clé de dépense du signet du login stockée en cache, ainsi que les `ItemProcess` découverts et les pairs du réseau. Une fois identifié auprès des membres d'un `ItemProcess` et avec son identité `member` récupérée, l'objet member et les `Pcd` et `Prd` du compte sont stockés en cache. Le cache se compose d'une partie prive jamais partagée et d'une partie publique partagée.
* **IndexDB**: Base de données de stockage côté client utilisée pour stocker de manière sécurisée les données chiffrées, telles que les `RequestPcd` et RequestPrd, dans les navigateurs web. * **IndexDB**: Base de données de stockage côté client utilisée pour stocker de manière sécurisée les données chiffrées, telles que les `Pcd` et Prd, dans les navigateurs web.
## 6. <a name='ExemplesdeCode'></a>Exemples de Code ## 6. <a name='ExemplesdeCode'></a>Exemples de Code

View File

@ -2,7 +2,7 @@
* 1. [Documents de référence](#Documentsderfrence) * 1. [Documents de référence](#Documentsderfrence)
* 2. [AES & Quantum resistant](#AESQuantumresistant) * 2. [AES & Quantum resistant](#AESQuantumresistant)
* 3. [Crypto](#Crypto) * 3. [Crypto](#Crypto)
* 4. [Bitcoin Silent Payment](#BitcoinSilentPayment) * 4. [Bitcoin Silent Payments](#BitcoinSilentPayments)
* 5. [Bitcoin wallet](#Bitcoinwallet) * 5. [Bitcoin wallet](#Bitcoinwallet)
* 6. [Bitcoin protocols](#Bitcoinprotocols) * 6. [Bitcoin protocols](#Bitcoinprotocols)
* 7. [Data anchoring](#Dataanchoring) * 7. [Data anchoring](#Dataanchoring)
@ -28,7 +28,7 @@ Voir [_Doc_references.md](_Doc_references.md).
* <https://en.wikipedia.org/wiki/Scrypt> * <https://en.wikipedia.org/wiki/Scrypt>
## 4. <a name='BitcoinSilentPayment'></a>Bitcoin Silent Payment ## 4. <a name='BitcoinSilentPayments'></a>Bitcoin Silent Payments
* <https://github.com/bitcoin/bitcoin/issues/28536> * <https://github.com/bitcoin/bitcoin/issues/28536>
* <https://github.com/genjix/bips/blob/master/bip-stealth.mediawiki> * <https://github.com/genjix/bips/blob/master/bip-stealth.mediawiki>

View File

@ -4,7 +4,7 @@
* 3. [Mot de passe](#Motdepasse) * 3. [Mot de passe](#Motdepasse)
* 4. [Cache](#Cache) * 4. [Cache](#Cache)
* 5. [Chiffrement des communications](#Chiffrementdescommunications) * 5. [Chiffrement des communications](#Chiffrementdescommunications)
* 6. [Confidentialité des `RequestPcd` et RequestPrd](#ConfidentialitdesRequestPcdetRequestPrd) * 6. [Confidentialité des `Pcd` et Prd](#ConfidentialitdesPcdetPrd)
* 7. [Confidentialité des messages sur les relais](#Confidentialitdesmessagessurlesrelais) * 7. [Confidentialité des messages sur les relais](#Confidentialitdesmessagessurlesrelais)
* 8. [Clé de chiffrement robuste](#Cldechiffrementrobuste) * 8. [Clé de chiffrement robuste](#Cldechiffrementrobuste)
* 8.1. [Résistance aux attaques cryptanalytiques](#Rsistanceauxattaquescryptanalytiques) * 8.1. [Résistance aux attaques cryptanalytiques](#Rsistanceauxattaquescryptanalytiques)
@ -67,29 +67,29 @@ Stockage sécurisé du cache par un chiffrement par le mot de passe.
Le chiffrement du transport des données se fait par TLS entre les clients et le noeuds entrants pour palier aux restrictions sur les flux non TLS par les navigateurs et les applications mobiles. Le chiffrement du transport des données se fait par TLS entre les clients et le noeuds entrants pour palier aux restrictions sur les flux non TLS par les navigateurs et les applications mobiles.
Néanmoins tous les messages chiffrent les `RequestPcd` et `RequestPrd` avec une clé de chiffrement conforme aux exigences suivantes et échangée dans le Diffie-Hellman de la transaction SP, en parallèle donc des flux `RequestPcd` et `RequestPrd`.Ces clés ne sont accessibles donc qu'avec la clé privée du destinataire ou de l'émetteur, qui ne sont jamais partagées. Néanmoins tous les messages chiffrent les `Pcd` et `Prd` avec une clé de chiffrement conforme aux exigences suivantes et échangée dans le Diffie-Hellman de la transaction SP, en parallèle donc des flux `Pcd` et `Prd`.Ces clés ne sont accessibles donc qu'avec la clé privée du destinataire ou de l'émetteur, qui ne sont jamais partagées.
## 6. <a name='ConfidentialitdesRequestPcdetRequestPrd'></a>Confidentialité des `RequestPcd` et RequestPrd ## 6. <a name='ConfidentialitdesPcdetPrd'></a>Confidentialité des `Pcd` et Prd
Le stockage chiffré de cache est un chiffrement symétrique conformément aux exigences suivantes. Le stockage chiffré de cache est un chiffrement symétrique conformément aux exigences suivantes.
Le chiffrement des `RequestPcd` est un chiffrement symétrique conformément aux exigences suivantes. Le chiffrement des clés de chiffrement dans les `RequestPrd` est un chiffrement symétrique conformément aux exigences suivantes selon : Le chiffrement des `Pcd` est un chiffrement symétrique conformément aux exigences suivantes. Le chiffrement des clés de chiffrement dans les `Prd` est un chiffrement symétrique conformément aux exigences suivantes selon :
* **Données publiques**: un chiffrement symétrique conformément aux exigences suivantes depuis la `ProcessKey`. Tout le monde peut donc déchiffrer. * **Données publiques**: un chiffrement symétrique conformément aux exigences suivantes depuis la `ProcessKey`. Tout le monde peut donc déchiffrer.
* **Données confidentielles avec les membres d'un `role` d'un `ItemProcess` dans les RequestPcd**: un chiffrement symétrique conformément aux exigences suivantes depuis une clé de chiffrement générée à la volée par champs par items d'une liste d'un RequestPcd. * **Données confidentielles avec les membres d'un `role` d'un `ItemProcess` dans les Pcd**: un chiffrement symétrique conformément aux exigences suivantes depuis une clé de chiffrement générée à la volée par champs par items d'une liste d'un Pcd.
* **Données confidentielles avec les membres d'un `role` d'un `ItemProcess` dans les RequestPrd**: un chiffrement symétrique conformément aux exigences suivantes depuis les clés de chiffrement AES-GCM-256 générée à la volée dans les `RequestPcd` et alors transmises par le RequestPrd, chiffrées par la `KeyConfiditial` d'une transaction `SP`. * **Données confidentielles avec les membres d'un `role` d'un `ItemProcess` dans les Prd**: un chiffrement symétrique conformément aux exigences suivantes depuis les clés de chiffrement AES-GCM-256 générée à la volée dans les `Pcd` et alors transmises par le Prd, chiffrées par la `KeyConfiditial` d'une transaction `SP`.
* **Données privées**: un chiffrement symétrique conformément aux exigences suivantes depuis le chiffrement par la clé de spend de login (`recover`) du signet (voir Login - Specs). * **Données privées**: un chiffrement symétrique conformément aux exigences suivantes depuis le chiffrement par la clé de spend de login (`recover`) du signet (voir Login - Specs).
## 7. <a name='Confidentialitdesmessagessurlesrelais'></a>Confidentialité des messages sur les relais ## 7. <a name='Confidentialitdesmessagessurlesrelais'></a>Confidentialité des messages sur les relais
Les `RequestPcd` et les `RequestPrd` sont envoyés aux relais dans des enveloppes appelées `Message`. Les `Pcd` et les `Prd` sont envoyés aux relais dans des enveloppes appelées `Message`.
Ces enveloppent communique les `RequestPcd` et les `RequestPrd` de façon chiffrée par la `ProcessKey`. Ainsi les messages sont rendus fongibles sur le réseau de relais. Ces enveloppent communique les `Pcd` et les `Prd` de façon chiffrée par la `ProcessKey`. Ainsi les messages sont rendus fongibles sur le réseau de relais.
Tous les `RequestPrd` sont confirmés par un et chiffrent les clés transamises par une `KeyConfiditial`. Tous les `Prd` sont confirmés par un et chiffrent les clés transamises par une `KeyConfiditial`.
Les relais peuvent déchiffrer les enveloppes avec la `ProcessKey`, le contenu étant chiffré en plus en fonction des niveaux de confidentialité. L'objectif du chiffrage des enveloppe est de donner, un temps, un coût et une complexité aux analyses systématiques des flux. Les relais peuvent déchiffrer les enveloppes avec la `ProcessKey`, le contenu étant chiffré en plus en fonction des niveaux de confidentialité. L'objectif du chiffrage des enveloppe est de donner, un temps, un coût et une complexité aux analyses systématiques des flux.

View File

@ -18,10 +18,10 @@
* **Authentification**: [Auth.md](Auth-Specs.md) * **Authentification**: [Auth.md](Auth-Specs.md)
* **Items**: [Item-Specs.md](Item-Specs.md) * **Items**: [Item-Specs.md](Item-Specs.md)
* **RequestPrd et RequestPcd**: [ RequestPrd- RequestPcd-Specs.md]( RequestPrd- RequestPcd-Specs.md) * **Prd et Pcd**: [ Prd- Pcd-Specs.md]( Prd- Pcd-Specs.md)
* **Messages des relais**: [Message-Specs.md] * **Messages des relais**: [Message-Specs.md]
* **Process et roles**: [Process-Role-Specs.md](Process-Role-Specs.md) * **Process et roles**: [Process-Role-Specs.md](Process-Role-Specs.md)
* **Transactions Silent Payment**: [Silent-Payment-Specs.md](Silent-Payment-Specs.md) * **Transactions Silent Payments**: [Silent-Payments-Specs.md](Silent-Payments-Specs.md)
## 2. <a name='Transverse'></a>Transverse ## 2. <a name='Transverse'></a>Transverse

File diff suppressed because one or more lines are too long

View File

@ -88,7 +88,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="310" y="188" width="135" height="50" as="geometry" /> <mxGeometry x="310" y="188" width="135" height="50" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPcd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="Pcd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="351.5" y="193" width="60" height="30" as="geometry" /> <mxGeometry x="351.5" y="193" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1">
@ -137,7 +137,7 @@
<mxPoint x="986" y="206" as="targetPoint" /> <mxPoint x="986" y="206" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPcdConfrm" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PcdConfrm" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1380" y="189.5" width="70" height="30" as="geometry" /> <mxGeometry x="1380" y="189.5" width="70" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -179,7 +179,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-47" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" parent="MqokN8DVP6Cu9g1BAX3J-46" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-47" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" parent="MqokN8DVP6Cu9g1BAX3J-46" vertex="1">
<mxGeometry x="45" y="100" width="10" height="340" as="geometry" /> <mxGeometry x="45" y="100" width="10" height="340" as="geometry" />
</mxCell> </mxCell>
<mxCell id="UaradclDddL_qDXI0ZBg-1" value="Waiting for RequestPrdResponses" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="UaradclDddL_qDXI0ZBg-1" value="Waiting for PrdResponses" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1360" y="238" width="60" height="30" as="geometry" /> <mxGeometry x="1360" y="238" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="UaradclDddL_qDXI0ZBg-2" value="" style="group" vertex="1" connectable="0" parent="1"> <mxCell id="UaradclDddL_qDXI0ZBg-2" value="" style="group" vertex="1" connectable="0" parent="1">

View File

@ -19,7 +19,7 @@
<mxCell id="EWl4Vt8T4nABZOOH1jeO-58" value="KeyConfidential" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-58" value="KeyConfidential" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1037" y="104.24" width="136" height="26.05" as="geometry" /> <mxGeometry x="1037" y="104.24" width="136" height="26.05" as="geometry" />
</mxCell> </mxCell>
<mxCell id="EWl4Vt8T4nABZOOH1jeO-61" value="Tx Silent Payment" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-61" value="Tx Silent Payments" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1027" y="20" width="140" height="39.07" as="geometry" /> <mxGeometry x="1027" y="20" width="140" height="39.07" as="geometry" />
</mxCell> </mxCell>
<mxCell id="EWl4Vt8T4nABZOOH1jeO-27" value="AES:&amp;nbsp;ProcessKey" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-27" value="AES:&amp;nbsp;ProcessKey" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
@ -87,10 +87,10 @@
<mxCell id="EWl4Vt8T4nABZOOH1jeO-95" value="" style="group" parent="1" vertex="1" connectable="0"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-95" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="391.46" y="65.16" width="364.54" height="186.86" as="geometry" /> <mxGeometry x="391.46" y="65.16" width="364.54" height="186.86" as="geometry" />
</mxCell> </mxCell>
<mxCell id="EWl4Vt8T4nABZOOH1jeO-38" value="*_enc_by_shared_secret&lt;span style=&quot;background-color: initial;&quot;&gt;&amp;nbsp;encrypted&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="EWl4Vt8T4nABZOOH1jeO-95" vertex="1"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-38" value="*_confidential&lt;span style=&quot;background-color: initial;&quot;&gt;&amp;nbsp;encrypted&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="EWl4Vt8T4nABZOOH1jeO-95" vertex="1">
<mxGeometry width="364.54" height="26.04641437907359" as="geometry" /> <mxGeometry width="364.54" height="26.04641437907359" as="geometry" />
</mxCell> </mxCell>
<mxCell id="EWl4Vt8T4nABZOOH1jeO-39" value="request_pcd_keys_role_confidential_list_enc_by_shared_secret" style="rounded=0;whiteSpace=wrap;html=1;" parent="EWl4Vt8T4nABZOOH1jeO-95" vertex="1"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-39" value="request_pcd_keys_role_confidential_list_confidential" style="rounded=0;whiteSpace=wrap;html=1;" parent="EWl4Vt8T4nABZOOH1jeO-95" vertex="1">
<mxGeometry y="39.069621568610366" width="364.54" height="26.04641437907359" as="geometry" /> <mxGeometry y="39.069621568610366" width="364.54" height="26.04641437907359" as="geometry" />
</mxCell> </mxCell>
<mxCell id="EWl4Vt8T4nABZOOH1jeO-43" value="public message encrypted" style="rounded=0;whiteSpace=wrap;html=1;" parent="EWl4Vt8T4nABZOOH1jeO-95" vertex="1"> <mxCell id="EWl4Vt8T4nABZOOH1jeO-43" value="public message encrypted" style="rounded=0;whiteSpace=wrap;html=1;" parent="EWl4Vt8T4nABZOOH1jeO-95" vertex="1">

View File

@ -313,7 +313,7 @@
<mxCell id="4H4CULAcT2h6mxbgRGbW-65" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-65" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="320" y="191" width="135" height="59" as="geometry" /> <mxGeometry x="320" y="191" width="135" height="59" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-66" value="RequestPrd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-66" value="Prd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="378" y="191" width="60" height="30" as="geometry" /> <mxGeometry x="378" y="191" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-67" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" edge="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-67" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" edge="1" parent="1">
@ -344,7 +344,7 @@
<mxPoint x="635" y="174" as="targetPoint" /> <mxPoint x="635" y="174" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-70" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-70" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="365" y="217" width="60" height="30" as="geometry" /> <mxGeometry x="365" y="217" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-71" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-71" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1">
@ -391,7 +391,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-76" value="RequestPrd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-76" value="Prd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1380" y="195" width="60" height="30" as="geometry" /> <mxGeometry x="1380" y="195" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-77" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-77" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1">
@ -412,10 +412,10 @@
<mxPoint x="1356" y="212" as="targetPoint" /> <mxPoint x="1356" y="212" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-79" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-79" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1394" y="383" width="60" height="30" as="geometry" /> <mxGeometry x="1394" y="383" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-80" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-80" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1393.5" y="428" width="60" height="30" as="geometry" /> <mxGeometry x="1393.5" y="428" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-81" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-81" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1">
@ -644,7 +644,7 @@
<mxPoint x="1435" y="340" as="targetPoint" /> <mxPoint x="1435" y="340" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-129" value="For all RequestPrdResponse" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;fontStyle=1" vertex="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-129" value="For all PrdResponse" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1366" y="490" width="60" height="30" as="geometry" /> <mxGeometry x="1366" y="490" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="4H4CULAcT2h6mxbgRGbW-130" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;" edge="1" parent="1"> <mxCell id="4H4CULAcT2h6mxbgRGbW-130" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;" edge="1" parent="1">

View File

@ -219,7 +219,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="310" y="180" width="135" height="160" as="geometry" /> <mxGeometry x="310" y="180" width="135" height="160" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPrdConfrm" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="PrdConfrm" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="351.5" y="225" width="60" height="30" as="geometry" /> <mxGeometry x="351.5" y="225" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1">
@ -250,7 +250,7 @@
<mxPoint x="625" y="164" as="targetPoint" /> <mxPoint x="625" y="164" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="355" y="260" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="260" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" edge="1">
@ -297,7 +297,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPrdConfrm" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PrdConfrm" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1380" y="221.5" width="60" height="30" as="geometry" /> <mxGeometry x="1380" y="221.5" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">

View File

@ -198,7 +198,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="300" y="175" width="145" height="115" as="geometry" /> <mxGeometry x="300" y="175" width="145" height="115" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPrdKeyBackup" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="PrdKeyBackup" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="345" y="181" width="60" height="30" as="geometry" /> <mxGeometry x="345" y="181" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1">
@ -247,7 +247,7 @@
<mxPoint x="986" y="185" as="targetPoint" /> <mxPoint x="986" y="185" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPrdKeyBackup" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PrdKeyBackup" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1393" y="185" width="60" height="30" as="geometry" /> <mxGeometry x="1393" y="185" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -268,10 +268,10 @@
<mxPoint x="1346" y="202" as="targetPoint" /> <mxPoint x="1346" y="202" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1384" y="373" width="60" height="30" as="geometry" /> <mxGeometry x="1384" y="373" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1383.5" y="418" width="60" height="30" as="geometry" /> <mxGeometry x="1383.5" y="418" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -695,7 +695,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Esk2EL4e5weGmOYnUlRa-10" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="Esk2EL4e5weGmOYnUlRa-10" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="355" y="207" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="207" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Esk2EL4e5weGmOYnUlRa-11" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1"> <mxCell id="Esk2EL4e5weGmOYnUlRa-11" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1">

View File

@ -189,7 +189,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="300" y="175" width="145" height="85" as="geometry" /> <mxGeometry x="300" y="175" width="145" height="85" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPrdKeyHello" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="PrdKeyHello" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="345" y="181" width="60" height="30" as="geometry" /> <mxGeometry x="345" y="181" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1">
@ -238,7 +238,7 @@
<mxPoint x="986" y="185" as="targetPoint" /> <mxPoint x="986" y="185" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPrdKeyBackup" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PrdKeyBackup" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1393" y="185" width="60" height="30" as="geometry" /> <mxGeometry x="1393" y="185" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -259,10 +259,10 @@
<mxPoint x="1346" y="202" as="targetPoint" /> <mxPoint x="1346" y="202" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1384" y="455" width="60" height="30" as="geometry" /> <mxGeometry x="1384" y="455" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1383.5" y="500" width="60" height="30" as="geometry" /> <mxGeometry x="1383.5" y="500" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -669,7 +669,7 @@
<mxPoint x="1345" y="294" as="targetPoint" /> <mxPoint x="1345" y="294" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Lm1g9-Apu-Fh49AGRl9D-10" value="RequestPcd (for all roles)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1"> <mxCell id="Lm1g9-Apu-Fh49AGRl9D-10" value="Pcd (for all roles)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1360" y="264.5" width="150" height="30" as="geometry" /> <mxGeometry x="1360" y="264.5" width="150" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Lm1g9-Apu-Fh49AGRl9D-11" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=classic;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=none;startFill=0;endFill=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="Lm1g9-Apu-Fh49AGRl9D-11" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=classic;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=none;startFill=0;endFill=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -781,10 +781,10 @@
<mxCell id="Lm1g9-Apu-Fh49AGRl9D-27" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="Lm1g9-Apu-Fh49AGRl9D-27" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1355" y="291.5" width="140" height="132.5" as="geometry" /> <mxGeometry x="1355" y="291.5" width="140" height="132.5" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Lm1g9-Apu-Fh49AGRl9D-28" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1"> <mxCell id="Lm1g9-Apu-Fh49AGRl9D-28" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1383" y="300.5" width="60" height="30" as="geometry" /> <mxGeometry x="1383" y="300.5" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Lm1g9-Apu-Fh49AGRl9D-29" value="RequestPrdMessage&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;For all&amp;nbsp; RequestPrdResponse&amp;nbsp;&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="Lm1g9-Apu-Fh49AGRl9D-29" value="PrdMessage&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;For all&amp;nbsp; PrdResponse&amp;nbsp;&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1355" y="353" width="125" height="57" as="geometry" /> <mxGeometry x="1355" y="353" width="125" height="57" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Lm1g9-Apu-Fh49AGRl9D-30" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=3;" parent="1" edge="1"> <mxCell id="Lm1g9-Apu-Fh49AGRl9D-30" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=3;" parent="1" edge="1">
@ -896,7 +896,7 @@
<mxPoint x="624" y="514.5" as="targetPoint" /> <mxPoint x="624" y="514.5" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="sQ5LQUqAMSyey4CU4jw5-1" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="sQ5LQUqAMSyey4CU4jw5-1" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="355" y="207" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="207" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="sQ5LQUqAMSyey4CU4jw5-2" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1"> <mxCell id="sQ5LQUqAMSyey4CU4jw5-2" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1">

View File

@ -364,7 +364,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="310" y="181" width="135" height="59" as="geometry" /> <mxGeometry x="310" y="181" width="135" height="59" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPrdList" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="PrdList" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="368" y="181" width="60" height="30" as="geometry" /> <mxGeometry x="368" y="181" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1">
@ -395,7 +395,7 @@
<mxPoint x="625" y="164" as="targetPoint" /> <mxPoint x="625" y="164" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="355" y="207" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="207" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" edge="1">
@ -442,7 +442,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPrdList" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PrdList" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1370" y="185" width="60" height="30" as="geometry" /> <mxGeometry x="1370" y="185" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-213" value="" style="strokeWidth=3;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-213" value="" style="strokeWidth=3;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" vertex="1">
@ -466,13 +466,13 @@
<mxPoint x="1346" y="202" as="targetPoint" /> <mxPoint x="1346" y="202" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-217" value="RequestPcd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-217" value="Pcd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1361" y="341" width="60" height="30" as="geometry" /> <mxGeometry x="1361" y="341" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1384" y="373" width="60" height="30" as="geometry" /> <mxGeometry x="1384" y="373" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1383.5" y="418" width="60" height="30" as="geometry" /> <mxGeometry x="1383.5" y="418" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -722,7 +722,7 @@
<mxPoint x="1425" y="330" as="targetPoint" /> <mxPoint x="1425" y="330" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="gRgV6U-9A3pBv8uaxwwX-1" value="For all RequestPrdResponse" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="gRgV6U-9A3pBv8uaxwwX-1" value="For all PrdResponse" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1356" y="480" width="60" height="30" as="geometry" /> <mxGeometry x="1356" y="480" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Kv8L5Ez7j4jW42ffpjnB-1" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" edge="1"> <mxCell id="Kv8L5Ez7j4jW42ffpjnB-1" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" edge="1">

View File

@ -307,7 +307,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="310" y="180" width="135" height="160" as="geometry" /> <mxGeometry x="310" y="180" width="135" height="160" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="351.5" y="225" width="60" height="30" as="geometry" /> <mxGeometry x="351.5" y="225" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" edge="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" edge="1" parent="1">
@ -338,7 +338,7 @@
<mxPoint x="625" y="164" as="targetPoint" /> <mxPoint x="625" y="164" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="355" y="260" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="260" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" edge="1" parent="1">
@ -385,7 +385,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1380" y="221.5" width="60" height="30" as="geometry" /> <mxGeometry x="1380" y="221.5" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1">
@ -406,10 +406,10 @@
<mxPoint x="1346" y="255" as="targetPoint" /> <mxPoint x="1346" y="255" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1388.5" y="416" width="60" height="30" as="geometry" /> <mxGeometry x="1388.5" y="416" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1383.5" y="461" width="60" height="30" as="geometry" /> <mxGeometry x="1383.5" y="461" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" edge="1" parent="1">
@ -552,7 +552,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-287" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-287" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="355" y="431" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="431" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-3" value=":Wasm" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" vertex="1" parent="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-3" value=":Wasm" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" vertex="1" parent="1">

View File

@ -409,10 +409,10 @@
<mxCell id="O_mGtg6zuvl_ijSUyIl5-20" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-20" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="310" y="177" width="135" height="114" as="geometry" /> <mxGeometry x="310" y="177" width="135" height="114" as="geometry" />
</mxCell> </mxCell>
<mxCell id="O_mGtg6zuvl_ijSUyIl5-22" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-22" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="355" y="179" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="179" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="O_mGtg6zuvl_ijSUyIl5-23" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-23" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="355" y="211" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="211" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="O_mGtg6zuvl_ijSUyIl5-24" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=3;" parent="1" edge="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-24" value="Message" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fontColor=#000000;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=3;" parent="1" edge="1">

View File

@ -319,7 +319,7 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-193" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="310" y="180" width="135" height="160" as="geometry" /> <mxGeometry x="310" y="180" width="135" height="160" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="RequestPrdUpdate" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-194" value="PrdUpdate" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="351.5" y="225" width="60" height="30" as="geometry" /> <mxGeometry x="351.5" y="225" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-195" value="MessageConnect" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;fontColor=#000000;" parent="1" edge="1">
@ -350,7 +350,7 @@
<mxPoint x="625" y="164" as="targetPoint" /> <mxPoint x="625" y="164" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-201" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="355" y="260" width="60" height="30" as="geometry" /> <mxGeometry x="355" y="260" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-202" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#000000;" parent="1" edge="1">
@ -397,7 +397,7 @@
<mxPoint as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="RequestPrdUpdate" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-212" value="PrdUpdate" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1380" y="221.5" width="60" height="30" as="geometry" /> <mxGeometry x="1380" y="221.5" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-215" value="Message" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -418,10 +418,10 @@
<mxPoint x="1346" y="255" as="targetPoint" /> <mxPoint x="1346" y="255" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-221" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1388.5" y="416" width="60" height="30" as="geometry" /> <mxGeometry x="1388.5" y="416" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-222" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1383.5" y="461" width="60" height="30" as="geometry" /> <mxGeometry x="1383.5" y="461" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-223" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=horizontal;curved=0;rounded=0;startArrow=classic;startFill=1;endFill=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -672,7 +672,7 @@
<mxPoint x="857" y="982" as="targetPoint" /> <mxPoint x="857" y="982" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-291" value="RequestPcd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-291" value="Pcd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="350" y="181" width="60" height="30" as="geometry" /> <mxGeometry x="350" y="181" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-292" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=classic;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=none;startFill=0;endFill=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;fontColor=#000000;" parent="1" edge="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-292" value="TxFaucet" style="html=1;verticalAlign=bottom;endArrow=classic;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startArrow=none;startFill=0;endFill=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;fontColor=#000000;" parent="1" edge="1">
@ -708,10 +708,10 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-299" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-299" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1350" y="551" width="131" height="113" as="geometry" /> <mxGeometry x="1350" y="551" width="131" height="113" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-300" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-300" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1382.5" y="559" width="60" height="30" as="geometry" /> <mxGeometry x="1382.5" y="559" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-301" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-301" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1377.5" y="604" width="60" height="30" as="geometry" /> <mxGeometry x="1377.5" y="604" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-302" value="to B" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-302" value="to B" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
@ -720,10 +720,10 @@
<mxCell id="MqokN8DVP6Cu9g1BAX3J-303" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-303" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;pointerEvents=1;rotation=-180;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1355" y="691" width="126" height="109" as="geometry" /> <mxGeometry x="1355" y="691" width="126" height="109" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-304" value="RequestPrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-304" value="PrdReponse" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1387.5" y="691" width="60" height="30" as="geometry" /> <mxGeometry x="1387.5" y="691" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-305" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-305" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="1382.5" y="736" width="60" height="30" as="geometry" /> <mxGeometry x="1382.5" y="736" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="MqokN8DVP6Cu9g1BAX3J-306" value="to Role member n" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> <mxCell id="MqokN8DVP6Cu9g1BAX3J-306" value="to Role member n" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
@ -841,7 +841,7 @@
<mxCell id="O_mGtg6zuvl_ijSUyIl5-5" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" vertex="1" parent="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-5" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1345" y="141" width="10" height="339" as="geometry" /> <mxGeometry x="1345" y="141" width="10" height="339" as="geometry" />
</mxCell> </mxCell>
<mxCell id="O_mGtg6zuvl_ijSUyIl5-8" value="RequestPrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-8" value="PrdMessage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="1383.5" y="461" width="60" height="30" as="geometry" /> <mxGeometry x="1383.5" y="461" width="60" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="O_mGtg6zuvl_ijSUyIl5-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" vertex="1" parent="1"> <mxCell id="O_mGtg6zuvl_ijSUyIl5-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontColor=#000000;" vertex="1" parent="1">

View File

@ -257,7 +257,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="8eLAWt_BJWfjOTXwqVQD-45" value="RequestPrd ?" style="rhombus;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="8eLAWt_BJWfjOTXwqVQD-45" value="Prd ?" style="rhombus;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="942.87" y="558" width="120" height="51" as="geometry" /> <mxGeometry x="942.87" y="558" width="120" height="51" as="geometry" />
</mxCell> </mxCell>
<mxCell id="8eLAWt_BJWfjOTXwqVQD-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="8eLAWt_BJWfjOTXwqVQD-46" target="8eLAWt_BJWfjOTXwqVQD-51" edge="1"> <mxCell id="8eLAWt_BJWfjOTXwqVQD-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="8eLAWt_BJWfjOTXwqVQD-46" target="8eLAWt_BJWfjOTXwqVQD-51" edge="1">

View File

@ -248,7 +248,7 @@
<mxPoint x="-780" y="525.8333333333335" as="targetPoint" /> <mxPoint x="-780" y="525.8333333333335" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="204" value="RequestPrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="204" value="PrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1217.49" y="511" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1217.49" y="511" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="228" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1"> <mxCell id="228" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -472,7 +472,7 @@
<mxCell id="U1iS4aTrDNJz4kT7s3QN-294" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="U1iS4aTrDNJz4kT7s3QN-290" target="HEAZNrv7IqFEUBU4v7G9-317" edge="1"> <mxCell id="U1iS4aTrDNJz4kT7s3QN-294" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="U1iS4aTrDNJz4kT7s3QN-290" target="HEAZNrv7IqFEUBU4v7G9-317" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-290" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="U1iS4aTrDNJz4kT7s3QN-290" value="PrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-759.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-759.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-295" value="To all roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1"> <mxCell id="U1iS4aTrDNJz4kT7s3QN-295" value="To all roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1">
@ -539,58 +539,58 @@
<mxCell id="KGCLxLdSfCaxDo2TsfCf-294" value="&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;KeyMainScan&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;private metadata&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-294" value="&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;KeyMainScan&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;private metadata&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-1524" y="505.78" width="163.42" height="30" as="geometry" /> <mxGeometry x="-1524" y="505.78" width="163.42" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-295" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-295" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-952.03" y="741" width="197.49" height="29" as="geometry" /> <mxGeometry x="-952.03" y="741" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-316" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-316" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1157.1499999999999" y="741" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1157.1499999999999" y="741" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-318" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-318" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-942.03" y="751" width="197.49" height="29" as="geometry" /> <mxGeometry x="-942.03" y="751" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-319" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-319" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1147.1499999999999" y="751" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1147.1499999999999" y="751" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-321" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-321" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-932.03" y="761" width="197.49" height="29" as="geometry" /> <mxGeometry x="-932.03" y="761" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-322" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-322" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1137.1499999999999" y="761" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1137.1499999999999" y="761" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-324" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-324" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-922.03" y="771" width="197.49" height="29" as="geometry" /> <mxGeometry x="-922.03" y="771" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-325" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-325" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1127.1499999999999" y="771" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1127.1499999999999" y="771" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-327" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-327" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-912.03" y="781" width="197.49" height="29" as="geometry" /> <mxGeometry x="-912.03" y="781" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-328" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-328" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1117.1499999999999" y="781" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1117.1499999999999" y="781" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-330" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-330" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-902.03" y="791" width="197.49" height="29" as="geometry" /> <mxGeometry x="-902.03" y="791" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-331" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-331" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1107.1499999999999" y="791" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1107.1499999999999" y="791" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-333" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-333" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-892.03" y="801" width="197.49" height="29" as="geometry" /> <mxGeometry x="-892.03" y="801" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-334" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-334" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1097.1499999999999" y="801" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1097.1499999999999" y="801" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-336" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-336" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-882.03" y="811" width="197.49" height="29" as="geometry" /> <mxGeometry x="-882.03" y="811" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-337" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-337" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1087.1499999999999" y="811" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1087.1499999999999" y="811" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-339" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-339" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-872.03" y="821" width="197.49" height="29" as="geometry" /> <mxGeometry x="-872.03" y="821" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-340" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-340" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1077.1499999999999" y="821" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1077.1499999999999" y="821" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-342" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1"> <mxCell id="KGCLxLdSfCaxDo2TsfCf-342" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1">

View File

@ -51,7 +51,7 @@
<mxPoint x="-780" y="525.8333333333335" as="targetPoint" /> <mxPoint x="-780" y="525.8333333333335" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="204" value="RequestPrdUpdate&lt;br&gt;&lt;b&gt;member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="204" value="PrdUpdate&lt;br&gt;&lt;b&gt;member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1217.4914331962004" y="511" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1217.4914331962004" y="511" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="228" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1"> <mxCell id="228" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -124,7 +124,7 @@
<mxCell id="U1iS4aTrDNJz4kT7s3QN-294" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="U1iS4aTrDNJz4kT7s3QN-290" target="HEAZNrv7IqFEUBU4v7G9-317" edge="1"> <mxCell id="U1iS4aTrDNJz4kT7s3QN-294" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="U1iS4aTrDNJz4kT7s3QN-290" target="HEAZNrv7IqFEUBU4v7G9-317" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-290" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="U1iS4aTrDNJz4kT7s3QN-290" value="PrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-998.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-998.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-315" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-315" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
@ -133,7 +133,7 @@
<mxCell id="fIN9LJIhpEY6EGzNKIPz-316" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-316" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1482.7457165981" y="500.93" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1482.7457165981" y="500.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-317" value="RequestPcd&lt;br&gt;&lt;b&gt;member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-317" value="Pcd&lt;br&gt;&lt;b&gt;member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1464.4914331962004" y="510.93" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1464.4914331962004" y="510.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-318" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="228" edge="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-318" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="228" edge="1">
@ -227,7 +227,7 @@
<mxPoint x="-780" y="734.9033333333334" as="targetPoint" /> <mxPoint x="-780" y="734.9033333333334" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-329" value="RequestPrdUpdate&lt;br&gt;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;process&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-329" value="PrdUpdate&lt;br&gt;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;process&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1217.4914331962004" y="720.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1217.4914331962004" y="720.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-330" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-330" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -300,7 +300,7 @@
<mxCell id="fIN9LJIhpEY6EGzNKIPz-348" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-339" edge="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-348" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-339" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-349" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-349" value="PrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-998.2914331962005" y="740.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-998.2914331962005" y="740.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-350" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-350" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
@ -309,7 +309,7 @@
<mxCell id="fIN9LJIhpEY6EGzNKIPz-351" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-351" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1498.7457165981" y="710" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1498.7457165981" y="710" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-352" value="RequestPcd&lt;br&gt;&lt;b&gt;process&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-352" value="Pcd&lt;br&gt;&lt;b&gt;process&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1480.4914331962004" y="720" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1480.4914331962004" y="720" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-353" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="fIN9LJIhpEY6EGzNKIPz-330" edge="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-353" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="fIN9LJIhpEY6EGzNKIPz-330" edge="1">
@ -402,7 +402,7 @@
<mxPoint x="-761.75" y="944.8333333333335" as="targetPoint" /> <mxPoint x="-761.75" y="944.8333333333335" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-364" value="RequestPrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-364" value="PrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1225.2414331962004" y="930" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1225.2414331962004" y="930" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-365" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-365" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -453,7 +453,7 @@
<mxCell id="fIN9LJIhpEY6EGzNKIPz-380" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-373" edge="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-380" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-373" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-381" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-381" value="PrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-996.0414331962005" y="950" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-996.0414331962005" y="950" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-382" value="All Roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1"> <mxCell id="fIN9LJIhpEY6EGzNKIPz-382" value="All Roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1">

View File

@ -201,7 +201,7 @@
<mxPoint x="-1170" y="418" as="sourcePoint" /> <mxPoint x="-1170" y="418" as="sourcePoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-56" value="RequestPrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="sHT8GTnQFrlxJ-m2nGzn-56" value="PrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1246.2414331962004" y="373.00000000000006" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-1246.2414331962004" y="373.00000000000006" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-57" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1"> <mxCell id="sHT8GTnQFrlxJ-m2nGzn-57" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -518,7 +518,7 @@
<mxCell id="Y_iTnzTvrgFW2w7x7B82-7" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="Y_iTnzTvrgFW2w7x7B82-7" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-813.9357165981" y="373" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-813.9357165981" y="373" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Y_iTnzTvrgFW2w7x7B82-8" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="Y_iTnzTvrgFW2w7x7B82-8" value="PrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-795.6814331962005" y="383" width="152.39494830511973" height="28.99999999999996" as="geometry" /> <mxGeometry x="-795.6814331962005" y="383" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Y_iTnzTvrgFW2w7x7B82-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" edge="1"> <mxCell id="Y_iTnzTvrgFW2w7x7B82-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" edge="1">
@ -562,91 +562,91 @@
<mxPoint x="-777.25" y="449" as="targetPoint" /> <mxPoint x="-777.25" y="449" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-1" value="&lt;b&gt;`pre_id_sp_enc_by_shared_secret`&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;(only for member managers)&lt;b&gt;&lt;br&gt;&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-1" value="&lt;b&gt;`pre_id_sp_confidential`&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;(only for member managers)&lt;b&gt;&lt;br&gt;&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1246.24" y="188.71" width="236.19" height="29" as="geometry" /> <mxGeometry x="-1246.24" y="188.71" width="236.19" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-2" value="To all roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-2" value="To all roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-1341.19" y="346" width="60" height="33" as="geometry" /> <mxGeometry x="-1341.19" y="346" width="60" height="33" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-3" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-3" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1066.07" y="540" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1066.07" y="540" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-4" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-4" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1271.1899999999998" y="540" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1271.1899999999998" y="540" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-5" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-5" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-856.2399999999999" y="540" width="197.49" height="29" as="geometry" /> <mxGeometry x="-856.2399999999999" y="540" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-6" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-6" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1056.07" y="550" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1056.07" y="550" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-7" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-7" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1261.1899999999998" y="550" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1261.1899999999998" y="550" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-8" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-8" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-846.2399999999999" y="550" width="197.49" height="29" as="geometry" /> <mxGeometry x="-846.2399999999999" y="550" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-9" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-9" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1046.07" y="560" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1046.07" y="560" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-10" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-10" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1251.1899999999998" y="560" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1251.1899999999998" y="560" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-11" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-11" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-836.2399999999999" y="560" width="197.49" height="29" as="geometry" /> <mxGeometry x="-836.2399999999999" y="560" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-12" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-12" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1036.07" y="570" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1036.07" y="570" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-13" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-13" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1241.1899999999998" y="570" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1241.1899999999998" y="570" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-14" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-14" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-826.2399999999999" y="570" width="197.49" height="29" as="geometry" /> <mxGeometry x="-826.2399999999999" y="570" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-15" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-15" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1026.07" y="580" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1026.07" y="580" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-16" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-16" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1231.1899999999998" y="580" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1231.1899999999998" y="580" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-17" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-17" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-816.2399999999999" y="580" width="197.49" height="29" as="geometry" /> <mxGeometry x="-816.2399999999999" y="580" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-18" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-18" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1016.0699999999999" y="590" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1016.0699999999999" y="590" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-19" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-19" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1221.1899999999998" y="590" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1221.1899999999998" y="590" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-20" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-20" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-806.2399999999999" y="590" width="197.49" height="29" as="geometry" /> <mxGeometry x="-806.2399999999999" y="590" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-21" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-21" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1006.0699999999999" y="600" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1006.0699999999999" y="600" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-22" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-22" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1211.1899999999998" y="600" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1211.1899999999998" y="600" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-23" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-23" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-796.2399999999999" y="600" width="197.49" height="29" as="geometry" /> <mxGeometry x="-796.2399999999999" y="600" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-24" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-24" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-996.0699999999999" y="610" width="197.49" height="29" as="geometry" /> <mxGeometry x="-996.0699999999999" y="610" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-25" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-25" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1201.1899999999998" y="610" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1201.1899999999998" y="610" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-26" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-26" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-786.2399999999999" y="610" width="197.49" height="29" as="geometry" /> <mxGeometry x="-786.2399999999999" y="610" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-27" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-27" value="PrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-986.0699999999999" y="620" width="197.49" height="29" as="geometry" /> <mxGeometry x="-986.0699999999999" y="620" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-28" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-28" value="Pcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1191.1899999999998" y="620" width="197.49" height="29" as="geometry" /> <mxGeometry x="-1191.1899999999998" y="620" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-29" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-29" value="PrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-776.2399999999999" y="620" width="197.49" height="29" as="geometry" /> <mxGeometry x="-776.2399999999999" y="620" width="197.49" height="29" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-30" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1"> <mxCell id="5Ne0HzyGfQl-3uoNr5Rs-30" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" parent="1" edge="1">

View File

@ -4,21 +4,21 @@ use super::role::TransactionMode;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ConditionPayment { pub struct ConditionPayments {
pub role_payment: String, pub role_Payments: String,
pub role_transaction: TransactionMode, pub role_transaction: TransactionMode,
} }
impl ConditionPayment { impl ConditionPayments {
pub fn new(role_payment: String, role_transaction: TransactionMode) -> Self { pub fn new(role_Payments: String, role_transaction: TransactionMode) -> Self {
ConditionPayment { ConditionPayments {
role_payment, role_Payments,
role_transaction, role_transaction,
} }
} }
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ConditionPayment:"); println!("ConditionPayments:");
println!("Role Payment: {}", self.role_payment); println!("Role Payments: {}", self.role_Payments);
println!("Role Transaction:"); println!("Role Transaction:");
self.role_transaction.display_info(); // Appelle display_info sur role_transaction self.role_transaction.display_info(); // Appelle display_info sur role_transaction
} }

View File

@ -9,7 +9,7 @@ pub struct ConditionPublish {
pub pcd_number_min: i32, pub pcd_number_min: i32,
pub pcd_number_max: i32, pub pcd_number_max: i32,
pub pcd_amount_max_total: Amount, pub pcd_amount_max_total: Amount,
pub RequestPrd_waiting_timeout: u64, pub Prd_waiting_timeout: u64,
pub pcd_waiting_timeout: u64, pub pcd_waiting_timeout: u64,
} }
@ -20,7 +20,7 @@ impl ConditionPublish {
pcd_number_min: i32, pcd_number_min: i32,
pcd_number_max: i32, pcd_number_max: i32,
pcd_amount_max_total: Amount, pcd_amount_max_total: Amount,
RequestPrd_waiting_timeout: u64, Prd_waiting_timeout: u64,
pcd_waiting_timeout: u64, pcd_waiting_timeout: u64,
) -> Self { ) -> Self {
ConditionPublish { ConditionPublish {
@ -29,7 +29,7 @@ impl ConditionPublish {
pcd_number_min, pcd_number_min,
pcd_number_max, pcd_number_max,
pcd_amount_max_total, pcd_amount_max_total,
RequestPrd_waiting_timeout, Prd_waiting_timeout,
pcd_waiting_timeout, pcd_waiting_timeout,
} }
} }
@ -41,8 +41,8 @@ impl ConditionPublish {
println!("PCD Number Max: {}", self.pcd_number_max); println!("PCD Number Max: {}", self.pcd_number_max);
self.pcd_amount_max_total.display_info(); self.pcd_amount_max_total.display_info();
println!( println!(
" RequestPrd Waiting Timeout: {}", " Prd Waiting Timeout: {}",
self.RequestPrd_waiting_timeout self.Prd_waiting_timeout
); );
println!("PCD Waiting Timeout: {}", self.pcd_waiting_timeout); println!("PCD Waiting Timeout: {}", self.pcd_waiting_timeout);
} }

View File

@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};
use super::{ use super::{
item_artefact::ItemArtefact, item_commitment::ItemCommitment, item_deposit::ItemDeposit, item_artefact::ItemArtefact, item_commitment::ItemCommitment, item_deposit::ItemDeposit,
item_member::ItemMember, item_payment::ItemPayment, item_peer::ItemPeer, item_member::ItemMember, item_Payments::ItemPayments, item_peer::ItemPeer,
item_process::ItemProcess, item_process::ItemProcess,
}; };
@ -11,7 +11,7 @@ pub enum ItemEnum {
Process(ItemProcess), Process(ItemProcess),
Peer(ItemPeer), Peer(ItemPeer),
Member(ItemMember), Member(ItemMember),
Payment(ItemPayment), Payments(ItemPayments),
Deposit(ItemDeposit), Deposit(ItemDeposit),
Artefact(ItemArtefact), Artefact(ItemArtefact),
Commitment(ItemCommitment), Commitment(ItemCommitment),

View File

@ -16,7 +16,7 @@ pub struct ItemMemberPublicAttributeGroup {
pub sp_address_revoke_public_sig: String, pub sp_address_revoke_public_sig: String,
pub third_sp_address_list_public: Vec<String>, pub third_sp_address_list_public: Vec<String>,
pub data_size_max: i64, pub data_size_max: i64,
pub payment_method_list_public: Vec<String>, pub Payments_method_list_public: Vec<String>,
pub succession_process_hash: String, pub succession_process_hash: String,
} }
@ -28,7 +28,7 @@ impl ItemMemberPublicAttributeGroup {
sp_address_revoke_public_sig: String, sp_address_revoke_public_sig: String,
third_sp_address_list_public: Vec<String>, third_sp_address_list_public: Vec<String>,
data_size_max: i64, data_size_max: i64,
payment_method_list_public: Vec<String>, Payments_method_list_public: Vec<String>,
succession_process_hash: String, succession_process_hash: String,
) -> Self { ) -> Self {
ItemMemberPublicAttributeGroup { ItemMemberPublicAttributeGroup {
@ -38,7 +38,7 @@ impl ItemMemberPublicAttributeGroup {
sp_address_revoke_public_sig, sp_address_revoke_public_sig,
third_sp_address_list_public, third_sp_address_list_public,
data_size_max, data_size_max,
payment_method_list_public, Payments_method_list_public,
succession_process_hash, succession_process_hash,
} }
} }
@ -84,11 +84,11 @@ impl ItemMemberPublicAttributeGroup {
); );
enc_attribute_list.push(data_size_max_enc); enc_attribute_list.push(data_size_max_enc);
let payment_method_list_public_enc = PcdItemEncAttributePublic::new( let Payments_method_list_public_enc = PcdItemEncAttributePublic::new(
"payment_method_list_public".to_owned(), "Payments_method_list_public".to_owned(),
process_public_enc_key.enc_vec_string(self.payment_method_list_public.clone()), process_public_enc_key.enc_vec_string(self.Payments_method_list_public.clone()),
); );
enc_attribute_list.push(payment_method_list_public_enc); enc_attribute_list.push(Payments_method_list_public_enc);
let succession_process_hash_enc = PcdItemEncAttributePublic::new( let succession_process_hash_enc = PcdItemEncAttributePublic::new(
"succession_process_hash".to_owned(), "succession_process_hash".to_owned(),
@ -119,8 +119,8 @@ impl ItemMemberPublicAttributeGroup {
); );
println!("Data Size Max: {}", self.data_size_max); println!("Data Size Max: {}", self.data_size_max);
println!( println!(
"Payment Method List Public: {:?}", "Payments Method List Public: {:?}",
self.payment_method_list_public self.Payments_method_list_public
); );
println!("Succession Process Hash: {}", self.succession_process_hash); println!("Succession Process Hash: {}", self.succession_process_hash);
} }
@ -129,14 +129,14 @@ impl ItemMemberPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemMemberRoleConfidentialAttributeGroup { pub struct ItemMemberRoleConfidentialAttributeGroup {
pub payment_method_list_confidential: Vec<String>, pub Payments_method_list_confidential: Vec<String>,
pub id_shard_info: String, pub id_shard_info: String,
} }
impl ItemMemberRoleConfidentialAttributeGroup { impl ItemMemberRoleConfidentialAttributeGroup {
pub fn new(payment_method_list_confidential: Vec<String>, id_shard_info: String) -> Self { pub fn new(Payments_method_list_confidential: Vec<String>, id_shard_info: String) -> Self {
ItemMemberRoleConfidentialAttributeGroup { ItemMemberRoleConfidentialAttributeGroup {
payment_method_list_confidential, Payments_method_list_confidential,
id_shard_info, id_shard_info,
} }
} }
@ -144,19 +144,19 @@ impl ItemMemberRoleConfidentialAttributeGroup {
pub fn enc_group(&self) -> Vec<PcdItemEncAttributeRoleConfidential> { pub fn enc_group(&self) -> Vec<PcdItemEncAttributeRoleConfidential> {
let mut enc_attribute_list: Vec<PcdItemEncAttributeRoleConfidential> = Vec::new(); let mut enc_attribute_list: Vec<PcdItemEncAttributeRoleConfidential> = Vec::new();
let mut enc_payment_method_list_confidential_key = KeyEncryption::new( let mut enc_Payments_method_list_confidential_key = KeyEncryption::new(
Some("payment_method_list_confidential".to_owned()), Some("Payments_method_list_confidential".to_owned()),
None, None,
None, None,
); );
if let Ok(_new) = enc_payment_method_list_confidential_key.key_new_random() { if let Ok(_new) = enc_Payments_method_list_confidential_key.key_new_random() {
let payment_method_list_confidential_enc = PcdItemEncAttributeRoleConfidential::new( let Payments_method_list_confidential_enc = PcdItemEncAttributeRoleConfidential::new(
"payment_method_list_confidential".to_owned(), "Payments_method_list_confidential".to_owned(),
enc_payment_method_list_confidential_key enc_Payments_method_list_confidential_key
.enc_vec_string(self.payment_method_list_confidential.clone()), .enc_vec_string(self.Payments_method_list_confidential.clone()),
enc_payment_method_list_confidential_key, enc_Payments_method_list_confidential_key,
); );
enc_attribute_list.push(payment_method_list_confidential_enc); enc_attribute_list.push(Payments_method_list_confidential_enc);
} }
let mut enc_id_shard_info_key = let mut enc_id_shard_info_key =
@ -176,8 +176,8 @@ impl ItemMemberRoleConfidentialAttributeGroup {
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ItemMemberRoleConfidentialAttributeGroup:"); println!("ItemMemberRoleConfidentialAttributeGroup:");
println!( println!(
"Confidential Payment Method List: {:?}", "Confidential Payments Method List: {:?}",
self.payment_method_list_confidential self.Payments_method_list_confidential
); );
println!("ID Shard Info: {}", self.id_shard_info); println!("ID Shard Info: {}", self.id_shard_info);
} }
@ -186,7 +186,7 @@ impl ItemMemberRoleConfidentialAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemMemberPrivateAttributeGroup { pub struct ItemMemberPrivateAttributeGroup {
pub payment_method_list_private: Vec<String>, pub Payments_method_list_private: Vec<String>,
pub pcd_list: Vec<String>, // Assuming this is a list of strings pub pcd_list: Vec<String>, // Assuming this is a list of strings
pub prd_list_list: Vec<String>, pub prd_list_list: Vec<String>,
pub prd_update_list: Vec<String>, pub prd_update_list: Vec<String>,
@ -200,7 +200,7 @@ pub struct ItemMemberPrivateAttributeGroup {
impl ItemMemberPrivateAttributeGroup { impl ItemMemberPrivateAttributeGroup {
pub fn new( pub fn new(
payment_method_list_private: Vec<String>, Payments_method_list_private: Vec<String>,
pcd_list: Vec<String>, pcd_list: Vec<String>,
prd_list_list: Vec<String>, prd_list_list: Vec<String>,
prd_update_list: Vec<String>, prd_update_list: Vec<String>,
@ -212,7 +212,7 @@ impl ItemMemberPrivateAttributeGroup {
tx_sp_list: Vec<String>, tx_sp_list: Vec<String>,
) -> Self { ) -> Self {
ItemMemberPrivateAttributeGroup { ItemMemberPrivateAttributeGroup {
payment_method_list_private, Payments_method_list_private,
pcd_list, pcd_list,
prd_list_list, prd_list_list,
prd_update_list, prd_update_list,
@ -228,11 +228,11 @@ impl ItemMemberPrivateAttributeGroup {
pub fn enc_group(&self, member_enc_key: KeyEncryption) -> Vec<PcdItemEncAttributePrivate> { pub fn enc_group(&self, member_enc_key: KeyEncryption) -> Vec<PcdItemEncAttributePrivate> {
let mut enc_attribute_list: Vec<PcdItemEncAttributePrivate> = Vec::new(); let mut enc_attribute_list: Vec<PcdItemEncAttributePrivate> = Vec::new();
let payment_method_list_private_enc = PcdItemEncAttributePrivate::new( let Payments_method_list_private_enc = PcdItemEncAttributePrivate::new(
"payment_method_list_private".to_owned(), "Payments_method_list_private".to_owned(),
member_enc_key.enc_vec_string(self.payment_method_list_private.clone()), member_enc_key.enc_vec_string(self.Payments_method_list_private.clone()),
); );
enc_attribute_list.push(payment_method_list_private_enc); enc_attribute_list.push(Payments_method_list_private_enc);
let pcd_list_enc = PcdItemEncAttributePrivate::new( let pcd_list_enc = PcdItemEncAttributePrivate::new(
"pcd_list".to_owned(), "pcd_list".to_owned(),
@ -293,8 +293,8 @@ impl ItemMemberPrivateAttributeGroup {
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ItemMemberPrivateAttributeGroup:"); println!("ItemMemberPrivateAttributeGroup:");
println!( println!(
"Private Payment Method List: {:?}", "Private Payments Method List: {:?}",
self.payment_method_list_private self.Payments_method_list_private
); );
println!("PCD List: {:?}", self.pcd_list); println!("PCD List: {:?}", self.pcd_list);
println!("PRD List List: {:?}", self.prd_list_list); println!("PRD List List: {:?}", self.prd_list_list);

View File

@ -9,7 +9,7 @@ use super::{
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPaymentPublicAttributeGroup { pub struct ItemPaymentsPublicAttributeGroup {
pub for_sp_address_list: Vec<String>, pub for_sp_address_list: Vec<String>,
pub goal_list: Vec<String>, pub goal_list: Vec<String>,
pub provider_type: String, pub provider_type: String,
@ -23,7 +23,7 @@ pub struct ItemPaymentPublicAttributeGroup {
pub audit_code_list_public: Vec<String>, pub audit_code_list_public: Vec<String>,
} }
impl ItemPaymentPublicAttributeGroup { impl ItemPaymentsPublicAttributeGroup {
pub fn new( pub fn new(
for_sp_address_list: Vec<String>, for_sp_address_list: Vec<String>,
goal_list: Vec<String>, goal_list: Vec<String>,
@ -37,7 +37,7 @@ impl ItemPaymentPublicAttributeGroup {
payload_list_public: Vec<String>, payload_list_public: Vec<String>,
audit_code_list_public: Vec<String>, audit_code_list_public: Vec<String>,
) -> Self { ) -> Self {
ItemPaymentPublicAttributeGroup { ItemPaymentsPublicAttributeGroup {
for_sp_address_list, for_sp_address_list,
goal_list, goal_list,
provider_type, provider_type,
@ -126,7 +126,7 @@ impl ItemPaymentPublicAttributeGroup {
enc_attribute_list enc_attribute_list
} }
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ItemPaymentPublicAttributeGroup:"); println!("ItemPaymentsPublicAttributeGroup:");
println!("For SP Address List: {:?}", self.for_sp_address_list); println!("For SP Address List: {:?}", self.for_sp_address_list);
println!("Goal List: {:?}", self.goal_list); println!("Goal List: {:?}", self.goal_list);
println!("Provider Type: {}", self.provider_type); println!("Provider Type: {}", self.provider_type);
@ -146,23 +146,23 @@ impl ItemPaymentPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPaymentRoleConfidentialAttributeGroup { pub struct ItemPaymentsRoleConfidentialAttributeGroup {
pub payload_list_confidential: Vec<String>, pub payload_list_confidential: Vec<String>,
pub audit_code_list_confidential: Vec<String>, pub audit_code_list_confidential: Vec<String>,
} }
impl ItemPaymentRoleConfidentialAttributeGroup { impl ItemPaymentsRoleConfidentialAttributeGroup {
pub fn new( pub fn new(
payload_list_confidential: Vec<String>, payload_list_confidential: Vec<String>,
audit_code_list_confidential: Vec<String>, audit_code_list_confidential: Vec<String>,
) -> Self { ) -> Self {
ItemPaymentRoleConfidentialAttributeGroup { ItemPaymentsRoleConfidentialAttributeGroup {
payload_list_confidential, payload_list_confidential,
audit_code_list_confidential, audit_code_list_confidential,
} }
} }
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ItemPaymentRoleConfidentialAttributeGroup:"); println!("ItemPaymentsRoleConfidentialAttributeGroup:");
println!( println!(
"Confidential Payload List: {:?}", "Confidential Payload List: {:?}",
self.payload_list_confidential self.payload_list_confidential
@ -209,20 +209,20 @@ impl ItemPaymentRoleConfidentialAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPaymentPrivateAttributeGroup { pub struct ItemPaymentsPrivateAttributeGroup {
pub payload_list_private: Vec<String>, pub payload_list_private: Vec<String>,
pub audit_code_private: String, pub audit_code_private: String,
} }
impl ItemPaymentPrivateAttributeGroup { impl ItemPaymentsPrivateAttributeGroup {
pub fn new(payload_list_private: Vec<String>, audit_code_private: String) -> Self { pub fn new(payload_list_private: Vec<String>, audit_code_private: String) -> Self {
ItemPaymentPrivateAttributeGroup { ItemPaymentsPrivateAttributeGroup {
payload_list_private, payload_list_private,
audit_code_private, audit_code_private,
} }
} }
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ItemPaymentRoleConfidentialAttributeGroup:"); println!("ItemPaymentsRoleConfidentialAttributeGroup:");
println!("Confidential Payload List: {:?}", self.payload_list_private); println!("Confidential Payload List: {:?}", self.payload_list_private);
println!( println!(
"Confidential Audit Code List: {:?}", "Confidential Audit Code List: {:?}",
@ -251,23 +251,23 @@ impl ItemPaymentPrivateAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPayment { pub struct ItemPayments {
pub item: Item, pub item: Item,
pub public_attribute_group: ItemPaymentPublicAttributeGroup, pub public_attribute_group: ItemPaymentsPublicAttributeGroup,
pub role_confidential_attribute_group: ItemPaymentRoleConfidentialAttributeGroup, pub role_confidential_attribute_group: ItemPaymentsRoleConfidentialAttributeGroup,
pub private_attribute_group: ItemPaymentPrivateAttributeGroup, pub private_attribute_group: ItemPaymentsPrivateAttributeGroup,
} }
impl ItemPayment { impl ItemPayments {
pub const ITEM_NAME: &'static str = "payment"; pub const ITEM_NAME: &'static str = "Payments";
pub fn new( pub fn new(
mut item: Item, mut item: Item,
public_attribute_group: ItemPaymentPublicAttributeGroup, public_attribute_group: ItemPaymentsPublicAttributeGroup,
role_confidential_attribute_group: ItemPaymentRoleConfidentialAttributeGroup, role_confidential_attribute_group: ItemPaymentsRoleConfidentialAttributeGroup,
private_attribute_group: ItemPaymentPrivateAttributeGroup, private_attribute_group: ItemPaymentsPrivateAttributeGroup,
) -> Self { ) -> Self {
item.name = Self::ITEM_NAME.to_string(); item.name = Self::ITEM_NAME.to_string();
ItemPayment { ItemPayments {
item, item,
public_attribute_group, public_attribute_group,
role_confidential_attribute_group, role_confidential_attribute_group,
@ -299,7 +299,7 @@ impl ItemPayment {
) )
} }
pub fn display_info(&self) { pub fn display_info(&self) {
println!("ItemPayment:"); println!("ItemPayments:");
println!("Item:"); println!("Item:");
self.item.display_info(); // Affiche les informations de l'objet `item` self.item.display_info(); // Affiche les informations de l'objet `item`

View File

@ -7,14 +7,14 @@ use core::result::Result as CoreResult;
use super::metadata::Amount; use super::metadata::Amount;
use super::metadata::Number; use super::metadata::Number;
use super::request_pcd::RequestPcd; use super::request_pcd::Pcd;
use super::request_prd_confirm::RequestPrdConfirm; use super::request_prd_confirm::PrdConfirm;
use super::request_prd_key_backup::RequestPrdKeyBackup; use super::request_prd_key_backup::PrdKeyBackup;
use super::request_prd_key_hello::RequestPrdKeyHello; use super::request_prd_key_hello::PrdKeyHello;
use super::request_prd_list::RequestPrdList; use super::request_prd_list::PrdList;
use super::request_prd_message::RequestPrdMessage; use super::request_prd_message::PrdMessage;
use super::request_prd_response::RequestPrdResponse; use super::request_prd_response::PrdResponse;
use super::request_prd_update::RequestPrdUpdate; use super::request_prd_update::PrdUpdate;
use super::roles_group::RolesGroup; use super::roles_group::RolesGroup;
use aes::cipher::consts::U32; use aes::cipher::consts::U32;
@ -209,35 +209,35 @@ impl KeyEncryption {
pub fn enc_vec_bool(&self, list: Vec<bool>) -> String { pub fn enc_vec_bool(&self, list: Vec<bool>) -> String {
self.enc(Value::Array(list.into_iter().map(Value::Bool).collect())) self.enc(Value::Array(list.into_iter().map(Value::Bool).collect()))
} }
pub fn enc_pcd(&self, pcd: RequestPcd) -> String { pub fn enc_pcd(&self, pcd: Pcd) -> String {
let pcd_value = serde_json::to_value(pcd).unwrap_or_else(|_| json!({})); let pcd_value = serde_json::to_value(pcd).unwrap_or_else(|_| json!({}));
self.enc(pcd_value) self.enc(pcd_value)
} }
pub fn enc_prd_update(&self, prd: RequestPrdUpdate) -> String { pub fn enc_prd_update(&self, prd: PrdUpdate) -> String {
let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }
pub fn enc_prd_list(&self, pcd: RequestPrdList) -> String { pub fn enc_prd_list(&self, pcd: PrdList) -> String {
let prd_value = serde_json::to_value(pcd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(pcd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }
pub fn enc_prd_response(&self, prd: RequestPrdResponse) -> String { pub fn enc_prd_response(&self, prd: PrdResponse) -> String {
let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }
pub fn enc_prd_confirm(&self, prd: RequestPrdConfirm) -> String { pub fn enc_prd_confirm(&self, prd: PrdConfirm) -> String {
let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }
pub fn enc_prd_message(&self, prd: RequestPrdMessage) -> String { pub fn enc_prd_message(&self, prd: PrdMessage) -> String {
let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }
pub fn enc_prd_key_backup(&self, prd: RequestPrdKeyBackup) -> String { pub fn enc_prd_key_backup(&self, prd: PrdKeyBackup) -> String {
let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }
pub fn enc_prd_key_hello(&self, prd: RequestPrdKeyHello) -> String { pub fn enc_prd_key_hello(&self, prd: PrdKeyHello) -> String {
let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({})); let prd_value = serde_json::to_value(prd).unwrap_or_else(|_| json!({}));
self.enc(prd_value) self.enc(prd_value)
} }

View File

@ -3,7 +3,7 @@ pub mod condition_cap;
pub mod condition_commitment; pub mod condition_commitment;
pub mod condition_deposit; pub mod condition_deposit;
pub mod condition_orchestration; pub mod condition_orchestration;
pub mod condition_payment; pub mod condition_Payments;
pub mod condition_prd_address_set; pub mod condition_prd_address_set;
pub mod condition_publish; pub mod condition_publish;
pub mod deposit_method; pub mod deposit_method;
@ -13,7 +13,7 @@ pub mod item_commitment;
pub mod item_deposit; pub mod item_deposit;
pub mod item_enum; pub mod item_enum;
pub mod item_member; pub mod item_member;
pub mod item_payment; pub mod item_Payments;
pub mod item_peer; pub mod item_peer;
pub mod item_process; pub mod item_process;
pub mod key_encryption; pub mod key_encryption;
@ -25,7 +25,7 @@ pub mod metadata_contract_public;
pub mod metadata_private; pub mod metadata_private;
pub mod metadata_role_confidential; pub mod metadata_role_confidential;
pub mod pagination; pub mod pagination;
pub mod payment_method; pub mod Payments_method;
pub mod pcd_item_enc; pub mod pcd_item_enc;
pub mod pcd_item_enc_attribute_private; pub mod pcd_item_enc_attribute_private;
pub mod pcd_item_enc_attribute_public; pub mod pcd_item_enc_attribute_public;
@ -46,7 +46,7 @@ pub mod role_artefact;
pub mod role_commitment; pub mod role_commitment;
pub mod role_deposit; pub mod role_deposit;
pub mod role_member; pub mod role_member;
pub mod role_payment; pub mod role_Payments;
pub mod role_peer; pub mod role_peer;
pub mod role_process; pub mod role_process;
pub mod roles_group; pub mod roles_group;

View File

@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct PaymentMethod { pub struct PaymentsMethod {
pub method: String, pub method: String,
} }
impl PaymentMethod {} impl PaymentsMethod {}

View File

@ -13,13 +13,13 @@ use super::{
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPcd { pub struct Pcd {
pub request: Request, // Assuming Request is a predefined struct pub request: Request, // Assuming Request is a predefined struct
pub item_list: Vec<PcdItemGenericEnc>, pub item_list: Vec<PcdItemGenericEnc>,
pub pagination: Pagination, // Assuming Pagination is a predefined struct pub pagination: Pagination, // Assuming Pagination is a predefined struct
} }
impl RequestPcd { impl Pcd {
pub const TYPE: &'static str = "pcd"; pub const TYPE: &'static str = "pcd";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -73,8 +73,8 @@ impl RequestPcd {
); );
item_enc_list.push(item_enc); item_enc_list.push(item_enc);
} }
ItemEnum::Payment(item_payment) => { ItemEnum::Payments(item_Payments) => {
let item_enc = item_payment.enc( let item_enc = item_Payments.enc(
process_public_enc_key.clone(), process_public_enc_key.clone(),
member_private_enc_key.clone(), member_private_enc_key.clone(),
); );
@ -96,14 +96,14 @@ impl RequestPcd {
} }
}); });
RequestPcd { Pcd {
request, request,
item_list: item_enc_list, item_list: item_enc_list,
pagination, pagination,
} }
} }
pub fn display_info(&self) { pub fn display_info(&self) {
println!("RequestPcd:"); println!("Pcd:");
println!("Request:"); println!("Request:");
self.request.display_info(); self.request.display_info();

View File

@ -32,9 +32,9 @@ impl KeyRoleConfidential {
} }
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrd { pub struct Prd {
pub request: Request, // Assuming Request is a predefined struct pub request: Request, // Assuming Request is a predefined struct
pub pcd_keys_role_confidential_list_enc_by_shared_secret: String, pub pcd_keys_role_confidential_list_confidential: String,
pub message_public: Option<String>, pub message_public: Option<String>,
pub message_confidential: Option<String>, pub message_confidential: Option<String>,
pub message_private: Option<String>, pub message_private: Option<String>,
@ -46,7 +46,7 @@ pub struct RequestPrd {
pub role_name_to: String, pub role_name_to: String,
} }
impl RequestPrd { impl Prd {
pub const TYPE: &'static str = "prd"; pub const TYPE: &'static str = "prd";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -55,7 +55,7 @@ impl RequestPrd {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -74,9 +74,9 @@ impl RequestPrd {
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
); );
RequestPrd { Prd {
request, request,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -94,7 +94,7 @@ impl RequestPrd {
format!( format!(
"Request: {:?}, PCD Keys Role Confidential: {:?}, Message Public: {}, Message Confidential: {}, Message Private: {}, SP Address From: {}, SP Address Reply: {}, Timestamp Declared: {}, Role Name From: {}, Role Name To: {}", "Request: {:?}, PCD Keys Role Confidential: {:?}, Message Public: {}, Message Confidential: {}, Message Private: {}, SP Address From: {}, SP Address Reply: {}, Timestamp Declared: {}, Role Name From: {}, Role Name To: {}",
self.request, self.request,
self.pcd_keys_role_confidential_list_enc_by_shared_secret, self.pcd_keys_role_confidential_list_confidential,
self.message_public.as_ref().unwrap(), self.message_public.as_ref().unwrap(),
self.message_confidential.as_ref().unwrap(), self.message_confidential.as_ref().unwrap(),
self.message_private.as_ref().unwrap(), self.message_private.as_ref().unwrap(),

View File

@ -6,17 +6,17 @@ use std::{
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{ use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::RequestPrd, key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdConfirm { pub struct PrdConfirm {
pub prd: RequestPrd, pub prd: Prd,
pub code_confirm_enc_by_shared_secret: String, pub code_confirm_confidential: String,
} }
impl RequestPrdConfirm { impl PrdConfirm {
pub const TYPE: &'static str = "prd_confirm"; pub const TYPE: &'static str = "prd_confirm";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -24,7 +24,7 @@ impl RequestPrdConfirm {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -34,17 +34,17 @@ impl RequestPrdConfirm {
timestamp_declared: u64, timestamp_declared: u64,
role_name_from: String, role_name_from: String,
role_name_to: String, role_name_to: String,
code_confirm_enc_by_shared_secret: String, code_confirm_confidential: String,
) -> Self { ) -> Self {
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -55,9 +55,9 @@ impl RequestPrdConfirm {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdConfirm { PrdConfirm {
prd, prd,
code_confirm_enc_by_shared_secret, code_confirm_confidential,
} }
} }
@ -89,12 +89,12 @@ impl RequestPrdConfirm {
} }
// display_info method // display_info method
pub fn display_info(&self) { pub fn display_info(&self) {
println!("RequestPrdConfirm:"); println!("PrdConfirm:");
println!("PRD:"); println!("PRD:");
self.prd.display_info(); // Display information of RequestPrd self.prd.display_info(); // Display information of Prd
println!( println!(
"Code Confirm (Encrypted by Shared Secret): {}", "Code Confirm (Encrypted by Shared Secret): {}",
self.code_confirm_enc_by_shared_secret self.code_confirm_confidential
); );
} }
} }

View File

@ -6,19 +6,19 @@ use std::{
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{ use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::RequestPrd, key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdKeyBackup { pub struct PrdKeyBackup {
pub prd: RequestPrd, pub prd: Prd,
pub device_footprint_enc_by_sp_shared_secret: String, pub device_footprint_enc_by_sp_shared_secret: String,
pub part_1_enc_hash_enc_by_sp_shared_secret: String, pub part_1_enc_hash_enc_by_sp_shared_secret: String,
pub shard_enc_by_sp_shared_secret: String, pub shard_enc_by_sp_shared_secret: String,
} }
impl RequestPrdKeyBackup { impl PrdKeyBackup {
pub const TYPE: &'static str = "prd_key_backup"; pub const TYPE: &'static str = "prd_key_backup";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -26,7 +26,7 @@ impl RequestPrdKeyBackup {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -42,14 +42,14 @@ impl RequestPrdKeyBackup {
shard_enc_by_sp_shared_secret: String, shard_enc_by_sp_shared_secret: String,
) -> Self { ) -> Self {
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -60,7 +60,7 @@ impl RequestPrdKeyBackup {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdKeyBackup { PrdKeyBackup {
prd, prd,
device_footprint_enc_by_sp_shared_secret, device_footprint_enc_by_sp_shared_secret,
part_1_enc_hash_enc_by_sp_shared_secret, part_1_enc_hash_enc_by_sp_shared_secret,

View File

@ -6,17 +6,17 @@ use std::{
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{ use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::RequestPrd, key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdKeyHello { pub struct PrdKeyHello {
pub prd: RequestPrd, pub prd: Prd,
pub part_1_enc_hash_enc_by_sp_shared_secret: String, pub part_1_enc_hash_enc_by_sp_shared_secret: String,
} }
impl RequestPrdKeyHello { impl PrdKeyHello {
pub const TYPE: &'static str = "prd_key_hello"; pub const TYPE: &'static str = "prd_key_hello";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -24,7 +24,7 @@ impl RequestPrdKeyHello {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -37,14 +37,14 @@ impl RequestPrdKeyHello {
part_1_enc_hash_enc_by_sp_shared_secret: String, part_1_enc_hash_enc_by_sp_shared_secret: String,
) -> Self { ) -> Self {
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -55,7 +55,7 @@ impl RequestPrdKeyHello {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdKeyHello { PrdKeyHello {
prd, prd,
part_1_enc_hash_enc_by_sp_shared_secret, part_1_enc_hash_enc_by_sp_shared_secret,
} }

View File

@ -6,16 +6,16 @@ use std::{
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{ use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::RequestPrd, key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdList { pub struct PrdList {
pub prd: RequestPrd, pub prd: Prd,
} }
impl RequestPrdList { impl PrdList {
pub const TYPE: &'static str = "prd_list"; pub const TYPE: &'static str = "prd_list";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -23,7 +23,7 @@ impl RequestPrdList {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -35,14 +35,14 @@ impl RequestPrdList {
role_name_to: String, role_name_to: String,
) -> Self { ) -> Self {
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -53,7 +53,7 @@ impl RequestPrdList {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdList { prd } PrdList { prd }
} }
pub fn to_message( pub fn to_message(

View File

@ -6,16 +6,16 @@ use std::{
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{ use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::RequestPrd, key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdMessage { pub struct PrdMessage {
pub prd: RequestPrd, pub prd: Prd,
} }
impl RequestPrdMessage { impl PrdMessage {
pub const TYPE: &'static str = "prd_message"; pub const TYPE: &'static str = "prd_message";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -23,7 +23,7 @@ impl RequestPrdMessage {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -35,14 +35,14 @@ impl RequestPrdMessage {
role_name_to: String, role_name_to: String,
) -> Self { ) -> Self {
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -53,7 +53,7 @@ impl RequestPrdMessage {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdMessage { prd } PrdMessage { prd }
} }
pub fn to_message( pub fn to_message(

View File

@ -7,23 +7,23 @@ use crate::workflows::workflow_pcd_create_and_send_all::PcdItemEncAttributeRoleC
use super::{ use super::{
commitment_method::CommitmentMethod, deposit_method::DepositMethod, commitment_method::CommitmentMethod, deposit_method::DepositMethod,
key_encryption::KeyEncryption, message_client::MessageClient, payment_method::PaymentMethod, key_encryption::KeyEncryption, message_client::MessageClient, Payments_method::PaymentsMethod,
request_prd::RequestPrd, shared_peer::SharedPeer, shared_process::SharedProcess, request_prd::Prd, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdResponse { pub struct PrdResponse {
pub prd: RequestPrd, pub prd: Prd,
pub sig_value: String, pub sig_value: String,
pub pcd_origin_hash: Option<String>, pub pcd_origin_hash: Option<String>,
pub payment_method_enc_by_shared_secret: Option<String>, pub Payments_method_confidential: Option<String>,
pub deposit_method_enc_by_shared_secret: Option<String>, pub deposit_method_confidential: Option<String>,
pub commitment_method_enc_by_shared_secret: Option<String>, pub commitment_method_confidential: Option<String>,
pub certif_key_enc_by_shared_secret: Option<String>, pub certif_key_confidential: Option<String>,
pub shared_secret_key: Option<KeyEncryption>, pub shared_secret_key: Option<KeyEncryption>,
} }
impl RequestPrdResponse { impl PrdResponse {
pub const TYPE: &'static str = "prd_response"; pub const TYPE: &'static str = "prd_response";
pub fn new( pub fn new(
process_public_enc_key: KeyEncryption, process_public_enc_key: KeyEncryption,
@ -50,7 +50,7 @@ impl RequestPrdResponse {
sig_value: String, sig_value: String,
pcd_origin_hash: Option<String>, pcd_origin_hash: Option<String>,
payment_method: Option<PaymentMethod>, Payments_method: Option<PaymentsMethod>,
deposit_method: Option<DepositMethod>, deposit_method: Option<DepositMethod>,
commitment_method: Option<CommitmentMethod>, commitment_method: Option<CommitmentMethod>,
certif_key: Option<String>, certif_key: Option<String>,
@ -59,28 +59,28 @@ impl RequestPrdResponse {
KeyEncryption::new(Some("secret_shared".to_owned()), None, None); KeyEncryption::new(Some("secret_shared".to_owned()), None, None);
if let Ok(_new) = shared_secret_key.key_new_random() { if let Ok(_new) = shared_secret_key.key_new_random() {
let payment_method_enc_by_shared_secret = match payment_method { let Payments_method_confidential = match Payments_method {
Some(ref _msg) => { Some(ref _msg) => {
Some(shared_secret_key.enc(serde_json::to_value(payment_method).unwrap())) Some(shared_secret_key.enc(serde_json::to_value(Payments_method).unwrap()))
} }
None => None, None => None,
}; };
let deposit_method_enc_by_shared_secret = match deposit_method { let deposit_method_confidential = match deposit_method {
Some(ref _msg) => { Some(ref _msg) => {
Some(shared_secret_key.enc(serde_json::to_value(deposit_method).unwrap())) Some(shared_secret_key.enc(serde_json::to_value(deposit_method).unwrap()))
} }
None => None, None => None,
}; };
let commitment_method_enc_by_shared_secret = match commitment_method { let commitment_method_confidential = match commitment_method {
Some(ref _msg) => { Some(ref _msg) => {
Some(shared_secret_key.enc(serde_json::to_value(commitment_method).unwrap())) Some(shared_secret_key.enc(serde_json::to_value(commitment_method).unwrap()))
} }
None => None, None => None,
}; };
let certif_key_enc_by_shared_secret = match certif_key { let certif_key_confidential = match certif_key {
Some(ref _msg) => { Some(ref _msg) => {
Some(shared_secret_key.enc(serde_json::to_value(certif_key).unwrap())) Some(shared_secret_key.enc(serde_json::to_value(certif_key).unwrap()))
} }
@ -97,19 +97,19 @@ impl RequestPrdResponse {
.as_ref() .as_ref()
.map(|msg| member_private_enc_key.enc_string(msg.clone())); .map(|msg| member_private_enc_key.enc_string(msg.clone()));
let pcd_keys_role_confidential_list_enc_by_shared_secret = shared_secret_key.enc( let pcd_keys_role_confidential_list_confidential = shared_secret_key.enc(
serde_json::to_value(pcd_keys_role_confidential_list).unwrap_or_else(|_| json!({})), serde_json::to_value(pcd_keys_role_confidential_list).unwrap_or_else(|_| json!({})),
); );
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -120,14 +120,14 @@ impl RequestPrdResponse {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdResponse { PrdResponse {
prd, prd,
sig_value, sig_value,
pcd_origin_hash, pcd_origin_hash,
payment_method_enc_by_shared_secret, Payments_method_confidential,
deposit_method_enc_by_shared_secret, deposit_method_confidential,
commitment_method_enc_by_shared_secret, commitment_method_confidential,
certif_key_enc_by_shared_secret, certif_key_confidential,
shared_secret_key: Some(shared_secret_key), shared_secret_key: Some(shared_secret_key),
} }
} else { } else {
@ -165,14 +165,14 @@ impl RequestPrdResponse {
// Fonction pour afficher ou retourner les informations // Fonction pour afficher ou retourner les informations
pub fn display_info(&self) -> String { pub fn display_info(&self) -> String {
format!( format!(
"PRD: {:?}, Sig Value: {}, PCD Origin Hash: {}, Payment Method Encrypted: {}, Deposit Method Encrypted: {}, Commitment Method Encrypted: {}, Certification Key Encrypted: {}", "PRD: {:?}, Sig Value: {}, PCD Origin Hash: {}, Payments Method Encrypted: {}, Deposit Method Encrypted: {}, Commitment Method Encrypted: {}, Certification Key Encrypted: {}",
self.prd, self.prd,
self.sig_value, self.sig_value,
self.pcd_origin_hash.as_ref().unwrap(), self.pcd_origin_hash.as_ref().unwrap(),
self.payment_method_enc_by_shared_secret.as_ref().unwrap(), self.Payments_method_confidential.as_ref().unwrap(),
self.deposit_method_enc_by_shared_secret.as_ref().unwrap(), self.deposit_method_confidential.as_ref().unwrap(),
self.commitment_method_enc_by_shared_secret.as_ref().unwrap(), self.commitment_method_confidential.as_ref().unwrap(),
self.certif_key_enc_by_shared_secret.as_ref().unwrap() self.certif_key_confidential.as_ref().unwrap()
) )
} }
} }

View File

@ -4,25 +4,25 @@ use std::{
}; };
use super::{ use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::RequestPrd, key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RequestPrdUpdate { pub struct PrdUpdate {
pub prd: RequestPrd, pub prd: Prd,
pub pcd_new_version_hash: String, pub pcd_new_version_hash: String,
pub payment_pcd_hash_list: Vec<String>, pub Payments_pcd_hash_list: Vec<String>,
pub cap_pcd_hash_list: Vec<String>, pub cap_pcd_hash_list: Vec<String>,
pub deposit_pcd_hash_list: Vec<String>, pub deposit_pcd_hash_list: Vec<String>,
pub commitment_pcd_hash_list: Vec<String>, pub commitment_pcd_hash_list: Vec<String>,
pub ask_payment_method: String, pub ask_Payments_method: String,
pub ask_deposit_method: String, pub ask_deposit_method: String,
pub ask_commitment_method: String, pub ask_commitment_method: String,
} }
impl RequestPrdUpdate { impl PrdUpdate {
pub const TYPE: &'static str = "prd_update"; pub const TYPE: &'static str = "prd_update";
pub fn new( pub fn new(
request_item_name: Option<String>, request_item_name: Option<String>,
@ -30,7 +30,7 @@ impl RequestPrdUpdate {
request_process_hash: String, request_process_hash: String,
request_pcd_reference_hash: Option<String>, request_pcd_reference_hash: Option<String>,
request_item_reference_hash: Option<String>, request_item_reference_hash: Option<String>,
pcd_keys_role_confidential_list_enc_by_shared_secret: String, pcd_keys_role_confidential_list_confidential: String,
message_public: Option<String>, message_public: Option<String>,
message_confidential: Option<String>, message_confidential: Option<String>,
message_private: Option<String>, message_private: Option<String>,
@ -42,23 +42,23 @@ impl RequestPrdUpdate {
role_name_to: String, role_name_to: String,
pcd_new_version_hash: String, pcd_new_version_hash: String,
payment_pcd_hash_list: Vec<String>, Payments_pcd_hash_list: Vec<String>,
cap_pcd_hash_list: Vec<String>, cap_pcd_hash_list: Vec<String>,
deposit_pcd_hash_list: Vec<String>, deposit_pcd_hash_list: Vec<String>,
commitment_pcd_hash_list: Vec<String>, commitment_pcd_hash_list: Vec<String>,
ask_payment_method: String, ask_Payments_method: String,
ask_deposit_method: String, ask_deposit_method: String,
ask_commitment_method: String, ask_commitment_method: String,
) -> Self { ) -> Self {
let request_type = Self::TYPE.to_string(); let request_type = Self::TYPE.to_string();
let prd = RequestPrd::new( let prd = Prd::new(
request_item_name, request_item_name,
request_type, request_type,
request_version, request_version,
request_process_hash, request_process_hash,
request_pcd_reference_hash, request_pcd_reference_hash,
request_item_reference_hash, request_item_reference_hash,
pcd_keys_role_confidential_list_enc_by_shared_secret, pcd_keys_role_confidential_list_confidential,
message_public, message_public,
message_confidential, message_confidential,
message_private, message_private,
@ -69,14 +69,14 @@ impl RequestPrdUpdate {
role_name_from, role_name_from,
role_name_to, role_name_to,
); );
RequestPrdUpdate { PrdUpdate {
prd, prd,
pcd_new_version_hash, pcd_new_version_hash,
payment_pcd_hash_list, Payments_pcd_hash_list,
cap_pcd_hash_list, cap_pcd_hash_list,
deposit_pcd_hash_list, deposit_pcd_hash_list,
commitment_pcd_hash_list, commitment_pcd_hash_list,
ask_payment_method, ask_Payments_method,
ask_deposit_method, ask_deposit_method,
ask_commitment_method, ask_commitment_method,
} }
@ -112,14 +112,14 @@ impl RequestPrdUpdate {
// Fonction pour afficher ou retourner les informations // Fonction pour afficher ou retourner les informations
pub fn display_info(&self) -> String { pub fn display_info(&self) -> String {
format!( format!(
"PRD: {:?}, PCD New Version Hash: {}, Payment PCD Hash List: {:?}, Cap PCD Hash List: {:?}, Deposit PCD Hash List: {:?}, Commitment PCD Hash List: {:?}, Ask Payment Method: {}, Ask Deposit Method: {}, Ask Commitment Method: {}", "PRD: {:?}, PCD New Version Hash: {}, Payments PCD Hash List: {:?}, Cap PCD Hash List: {:?}, Deposit PCD Hash List: {:?}, Commitment PCD Hash List: {:?}, Ask Payments Method: {}, Ask Deposit Method: {}, Ask Commitment Method: {}",
self.prd, self.prd,
self.pcd_new_version_hash, self.pcd_new_version_hash,
self.payment_pcd_hash_list, self.Payments_pcd_hash_list,
self.cap_pcd_hash_list, self.cap_pcd_hash_list,
self.deposit_pcd_hash_list, self.deposit_pcd_hash_list,
self.commitment_pcd_hash_list, self.commitment_pcd_hash_list,
self.ask_payment_method, self.ask_Payments_method,
self.ask_deposit_method, self.ask_deposit_method,
self.ask_commitment_method, self.ask_commitment_method,
) )

View File

@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};
use super::{ use super::{
condition_cap::ConditionCap, condition_commitment::ConditionCommitment, condition_cap::ConditionCap, condition_commitment::ConditionCommitment,
condition_orchestration::ConditionOrchestration, condition_payment::ConditionPayment, condition_orchestration::ConditionOrchestration, condition_Payments::ConditionPayments,
condition_prd_address_set::ConditionPrdAddressSet, condition_publish::ConditionPublish, condition_prd_address_set::ConditionPrdAddressSet, condition_publish::ConditionPublish,
item::Item, metadata::Amount, item::Item, metadata::Amount,
}; };
@ -114,7 +114,7 @@ pub struct Role {
pub condition_prd_address_set_list: Vec<ConditionPrdAddressSet>, // Assuming ConditionPrdAddressSet is a predefined struct pub condition_prd_address_set_list: Vec<ConditionPrdAddressSet>, // Assuming ConditionPrdAddressSet is a predefined struct
pub condition_publish: ConditionPublish, // Assuming ConditionPublish is a predefined struct pub condition_publish: ConditionPublish, // Assuming ConditionPublish is a predefined struct
pub condition_cap_list: Vec<ConditionCap>, // Assuming ConditionCap is a predefined struct pub condition_cap_list: Vec<ConditionCap>, // Assuming ConditionCap is a predefined struct
pub condition_payment_list: Vec<ConditionPayment>, // Assuming ConditionPayment is a predefined struct pub condition_Payments_list: Vec<ConditionPayments>, // Assuming ConditionPayments is a predefined struct
pub condition_commitment_list: Vec<ConditionCommitment>, // Assuming ConditionCommitment is a predefined struct pub condition_commitment_list: Vec<ConditionCommitment>, // Assuming ConditionCommitment is a predefined struct
pub condition_attribute_encryption_list: Vec<String>, pub condition_attribute_encryption_list: Vec<String>,
pub condition_orchestration: ConditionOrchestration, // Assuming ConditionOrchestration is a predefined struct pub condition_orchestration: ConditionOrchestration, // Assuming ConditionOrchestration is a predefined struct
@ -131,7 +131,7 @@ impl Role {
condition_prd_address_set_list: Vec<ConditionPrdAddressSet>, condition_prd_address_set_list: Vec<ConditionPrdAddressSet>,
condition_publish: ConditionPublish, condition_publish: ConditionPublish,
condition_cap_list: Vec<ConditionCap>, condition_cap_list: Vec<ConditionCap>,
condition_payment_list: Vec<ConditionPayment>, condition_Payments_list: Vec<ConditionPayments>,
condition_commitment_list: Vec<ConditionCommitment>, condition_commitment_list: Vec<ConditionCommitment>,
condition_attribute_encryption_list: Vec<String>, condition_attribute_encryption_list: Vec<String>,
condition_orchestration: ConditionOrchestration, condition_orchestration: ConditionOrchestration,
@ -146,7 +146,7 @@ impl Role {
condition_prd_address_set_list, condition_prd_address_set_list,
condition_publish, condition_publish,
condition_cap_list, condition_cap_list,
condition_payment_list, condition_Payments_list,
condition_commitment_list, condition_commitment_list,
condition_attribute_encryption_list, condition_attribute_encryption_list,
condition_orchestration, condition_orchestration,
@ -174,9 +174,9 @@ impl Role {
condition.display_info(); // Assuming `ConditionCap` has a display_info method condition.display_info(); // Assuming `ConditionCap` has a display_info method
} }
println!("ConditionPayment List:"); println!("ConditionPayments List:");
for condition in &self.condition_payment_list { for condition in &self.condition_Payments_list {
condition.display_info(); // Assuming `ConditionPayment` has a display_info method condition.display_info(); // Assuming `ConditionPayments` has a display_info method
} }
println!("ConditionCommitment List:"); println!("ConditionCommitment List:");

View File

@ -3,14 +3,14 @@ use serde::{Deserialize, Serialize};
use super::role::Role; use super::role::Role;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RolePayment { pub struct RolePayments {
pub item_name: String, pub item_name: String,
pub role: Role, pub role: Role,
} }
impl RolePayment { impl RolePayments {
pub fn new(item_name: String, role: Role) -> Self { pub fn new(item_name: String, role: Role) -> Self {
RolePayment { item_name, role } RolePayments { item_name, role }
} }
// Fonction pour afficher ou retourner les informations // Fonction pour afficher ou retourner les informations

View File

@ -4,8 +4,8 @@ use crate::workflows::workflow_pcd_create_and_send_all::PcdItemEncAttributeRoleC
use super::{ use super::{
commitment_method::CommitmentMethod, deposit_method::DepositMethod, commitment_method::CommitmentMethod, deposit_method::DepositMethod,
key_encryption::KeyEncryption, payment_method::PaymentMethod, key_encryption::KeyEncryption, Payments_method::PaymentsMethod,
request_prd_response::RequestPrdResponse, role_artefact::RoleArtefact, role_member::RoleMember, request_prd_response::PrdResponse, role_artefact::RoleArtefact, role_member::RoleMember,
role_peer::RolePeer, role_process::RoleProcess, role_peer::RolePeer, role_process::RoleProcess,
}; };
@ -63,12 +63,12 @@ impl RolesGroup {
sig_value: String, sig_value: String,
pcd_origin_hash: Option<String>, pcd_origin_hash: Option<String>,
payment_method: Option<PaymentMethod>, Payments_method: Option<PaymentsMethod>,
deposit_method: Option<DepositMethod>, deposit_method: Option<DepositMethod>,
commitment_method: Option<CommitmentMethod>, commitment_method: Option<CommitmentMethod>,
certif_key: Option<String>, certif_key: Option<String>,
) -> Vec<RequestPrdResponse> { ) -> Vec<PrdResponse> {
let mut request_prd_response_list: Vec<RequestPrdResponse> = Vec::new(); let mut request_prd_response_list: Vec<PrdResponse> = Vec::new();
for cond in &self.role_peer.role.condition_prd_address_set_list { for cond in &self.role_peer.role.condition_prd_address_set_list {
let mut pcd_keys_role_confidential_list_tmp = pcd_keys_role_confidential_list.clone(); let mut pcd_keys_role_confidential_list_tmp = pcd_keys_role_confidential_list.clone();
@ -79,7 +79,7 @@ impl RolesGroup {
); );
for address in &cond.prd_sp_address_list { for address in &cond.prd_sp_address_list {
let prd_response = RequestPrdResponse::new( let prd_response = PrdResponse::new(
process_public_enc_key.clone(), process_public_enc_key.clone(),
member_private_enc_key.clone(), member_private_enc_key.clone(),
request_item_name.clone(), request_item_name.clone(),
@ -99,7 +99,7 @@ impl RolesGroup {
role_name_to.clone(), role_name_to.clone(),
sig_value.clone(), sig_value.clone(),
pcd_origin_hash.clone(), pcd_origin_hash.clone(),
payment_method.clone(), Payments_method.clone(),
deposit_method.clone(), deposit_method.clone(),
commitment_method.clone(), commitment_method.clone(),
certif_key.clone(), certif_key.clone(),

View File

@ -1,5 +1,5 @@
// use rand::{rngs::ThreadRng, thread_rng}; // use rand::{rngs::ThreadRng, thread_rng};
// use silentpayments::secp256k1::{self, Secp256k1, SecretKey}; // use silentPayments::secp256k1::{self, Secp256k1, SecretKey};
// use sp_backend::SpClient; // use sp_backend::SpClient;
/* /*

View File

@ -1,13 +1,13 @@
use crate::models::{ use crate::models::{
commitment_method::CommitmentMethod, deposit_method::DepositMethod, item_enum::ItemEnum, commitment_method::CommitmentMethod, deposit_method::DepositMethod, item_enum::ItemEnum,
message_client::MessageClient, payment_method::PaymentMethod, roles_group::RolesGroup, message_client::MessageClient, Payments_method::PaymentsMethod, roles_group::RolesGroup,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::hash::Hash; use std::hash::Hash;
use crate::models::{ use crate::models::{
key_encryption::KeyEncryption, pagination::Pagination, request_pcd::RequestPcd, key_encryption::KeyEncryption, pagination::Pagination, request_pcd::Pcd,
shared_peer::SharedPeer, shared_process::SharedProcess, shared_peer::SharedPeer, shared_process::SharedProcess,
}; };
@ -66,7 +66,7 @@ pub struct WorkflowPcdCreateAndSendAll {
pub sig_value: String, pub sig_value: String,
pub pcd_origin_hash: Option<String>, pub pcd_origin_hash: Option<String>,
pub payment_method: Option<PaymentMethod>, pub Payments_method: Option<PaymentsMethod>,
pub deposit_method: Option<DepositMethod>, pub deposit_method: Option<DepositMethod>,
pub commitment_method: Option<CommitmentMethod>, pub commitment_method: Option<CommitmentMethod>,
pub certif_key: Option<String>, pub certif_key: Option<String>,
@ -100,7 +100,7 @@ impl WorkflowPcdCreateAndSendAll {
sig_value: String, sig_value: String,
pcd_origin_hash: Option<String>, pcd_origin_hash: Option<String>,
payment_method: Option<PaymentMethod>, Payments_method: Option<PaymentsMethod>,
deposit_method: Option<DepositMethod>, deposit_method: Option<DepositMethod>,
commitment_method: Option<CommitmentMethod>, commitment_method: Option<CommitmentMethod>,
certif_key: Option<String>, certif_key: Option<String>,
@ -132,7 +132,7 @@ impl WorkflowPcdCreateAndSendAll {
role_name_to, role_name_to,
sig_value, sig_value,
pcd_origin_hash, pcd_origin_hash,
payment_method, Payments_method,
deposit_method, deposit_method,
commitment_method, commitment_method,
certif_key, certif_key,
@ -142,7 +142,7 @@ impl WorkflowPcdCreateAndSendAll {
// walk item list and encrypt attributes // walk item list and encrypt attributes
// create pcd // create pcd
let pcd: RequestPcd = RequestPcd::new( let pcd: Pcd = Pcd::new(
Some(self.item_name.clone()), Some(self.item_name.clone()),
self.pcd_version, self.pcd_version,
self.process_hash.clone(), self.process_hash.clone(),
@ -200,7 +200,7 @@ impl WorkflowPcdCreateAndSendAll {
self.role_name_to.clone(), self.role_name_to.clone(),
self.sig_value.clone(), self.sig_value.clone(),
Some(pcd_message.request_hash), Some(pcd_message.request_hash),
self.payment_method.clone(), self.Payments_method.clone(),
self.deposit_method.clone(), self.deposit_method.clone(),
self.commitment_method.clone(), self.commitment_method.clone(),
self.certif_key.clone(), self.certif_key.clone(),