RequestPrdKeyHello and RequestPrdKeyBackup remplaced by RequestPrdList (extended)

This commit is contained in:
NicolasCantu 2024-02-21 23:35:58 +01:00
parent 3874a989a2
commit fd34ee2cfc
15 changed files with 1849 additions and 604 deletions

View File

@ -3,8 +3,8 @@
* 2. [Portée](#Porte)
* 3. [Documents de référence](#Documentsderfrence)
* 4. [Schématisation des processus](#Schmatisationdesprocessus)
* 4.1. [4.1. Création d'une identité](#Crationduneidentit)
* 4.2. [4.2. Connexion avec une identité créée (`recover`)](#Connexionavecuneidentitcrerecover)
* 4.1. [Création d'une identité](#Crationduneidentit)
* 4.2. [Connexion avec une identité créée (`recover`)](#Connexionavecuneidentitcrerecover)
* 5. [Authentification des utilisateurs](#Authentificationdesutilisateurs)
* 6. [Connexion via des tiers](#Connexionviadestiers)
* 7. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
@ -43,11 +43,15 @@ Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='Schmatisationdesprocessus'></a>Schématisation des processus
### 4.1. <a name='Crationduneidentit'></a>4.1. Création d'une identité
### 4.1. <a name='Crationduneidentit'></a>Création d'une identité
![WalletCreate](diagrams/WalletCreate.png "WalletCreate")
### 4.2. <a name='Connexionavecuneidentitcrerecover'></a>4.2. Connexion avec une identité créée (`recover`)
### Onboarding
![WalletOnboard](diagrams/WalletOnboard.png "WalletOnboard")
### 4.2. <a name='Connexionavecuneidentitcrerecover'></a>Connexion avec une identité créée (`recover`)
![WalletRecover](diagrams/WalletRecover.png "WalletRecover")
@ -166,15 +170,11 @@ Hash speudo code :
pre_id=sha256(part1_spend_recover_enc, MDP)
```
3. Création d'un `RequestPrdKeyBackup` par membre (1 shard par membre), par `RequestPrd` :
3. Création d'un `RequestPrdList` par membre (1 shard par membre), par `RequestPrd` :
3.1. Génération d'une clé de chiffrement dite `sp_shared_secret` qui sera transmise dans le Diffie-Hellman de la transaction SP.
3.2. Définition de l'attribut `device_footprint_enc_by_sp_shared_secret` et chiffrement avec `sp_shared_secret`.
3.3. Définition de l'attribut `pre_id_enc_by_sp_shared_secret` et chiffrement avec `sp_shared_secret`.
3.4. Définition de l'attribut `shard_enc_by_sp_shared_secret` et chiffrement avec `sp_shared_secret`.
3.2. Création d'un `ItemMember` à envoyer avec le `RequestPrdList`.
4. Création des messages de type `Message` correspondant aux RequestPrd, envoi des messages aux relais connectés.
@ -189,17 +189,17 @@ Dans l'ordre on réalise donc les opérations suivantes donc :
#### 10.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant les membres du rôle `member` du `ItemProcess` choisi.
Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant l'`ItemProcess` choisi.
Chacun de ses membres sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `RequestPrdResponse` en réponse à un `RequestPrdKeyBackup`.
Chacun de 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é.
Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
1. Création de `RequestPrdKeyBackup` à destination du membre
2. Création de `Message` du `RequestPrdKeyBackup` à destination du membre.
3. Envoi de la transaction SP du `Message` du `RequestPrdKeyBackup` à destination du membre.
4. Envoi du `Message` du `RequestPrdKeyBackup` à destination du membre.
5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdKeyBackup` (confirmations).
1. Création de `RequestPrdList` à destination du membre
2. Création de `Message` du `RequestPrdList` à 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.
5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdList` (confirmations).
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
@ -210,7 +210,7 @@ Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
Les clés de l'image de révocation sont chiffrées par le mot de passe (ou pas, en option) et stockées directement dans les données exifs de l'image de révocation. Les adresses SP correspondantes sont aussi inscrites dans les données exif.
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `RequestPrdKeyBackup` mais la transaction SP est envoyée depuis l'adresse de révocation (la clé aura dû être chargée au préalable depuis l'interface).
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `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).
## 12. <a name='Clsdethirdparties'></a>Clés de third parties
@ -222,17 +222,17 @@ Lorsqu'une transaction est reçue sur l'application de 2FA, celle-ci demande de
## 13. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
Pour recrééer sa clé privée et envoyer un `RequestPrdKeyHello` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
Pour recrééer sa clé privée et envoyer un `RequestPrdList` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
1. Récupération de Part1Enc en cache
2. Création de la `pre_id` avec le mot de passe
Puis depuis la liste des membres du process, pour chacun des membres :
1. Création de `RequestPrdKeyHello` à destination du membre 1.
2. Création de `Message` du `RequestPrdKeyHello` à destination du membre.
3. Envoi de la transaction SP du `Message` du `RequestPrdKeyHello` à destination du membre.
4. Envoi du `Message` du `RequestPrdKeyHello` à destination du membre.
1. Création de `RequestPrdList` à destination du membre 1.
2. Création de `Message` du `RequestPrdList` à destination du membre.
3. Envoi de la transaction SP du `Message` du `RequestPrdList` à destination du membre avec la `pre_id`.
4. Envoi du `Message` du `RequestPrdList` à destination du membre.
5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.

66
doc/Data-Specs.md Normal file
View File

@ -0,0 +1,66 @@
<!-- vscode-markdown-toc -->
* 1. [Objectif](#Objectif)
* 2. [Portée](#Porte)
* 3. [3. Documents de référence](#Documentsderfrence)
* 4. [Data publique](#Datapublique)
* 4.1. [Clés](#Cls)
* 4.2. [Peers](#Peers)
* 4.3. [Process](#Process)
* 4.4. [Messages](#Messages)
* 4.5. [RequestPrd](#RequestPrd)
* 4.6. [RequestPcd](#RequestPcd)
* 5. [Data privée](#Dataprive)
* 5.1. [Clés](#Cls-1)
* 5.2. [Peers](#Peers-1)
* 5.3. [Process](#Process-1)
* 5.4. [Messages](#Messages-1)
* 5.5. [RequestPrd](#RequestPrd-1)
* 5.6. [RequestPcd](#RequestPcd-1)
<!-- vscode-markdown-toc-config
numbering=true
autoSave=true
/vscode-markdown-toc-config -->
<!-- /vscode-markdown-toc -->
## 1. <a name='Objectif'></a>Objectif
## 2. <a name='Porte'></a>Portée
## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='Datapublique'></a>Data publique
### 4.1. <a name='Cls'></a>Clés
1. ImageRecover
1.1 KeyRecoverSpend
1.2 KeyRecoverScan
2. ImageRevoke
2.1 KeyRevokeSpend
2.2 KeyRevokeScan
### 4.2. <a name='Peers'></a>Peers
### 4.3. <a name='Process'></a>Process
### 4.4. <a name='Messages'></a>Messages
### 4.5. <a name='RequestPrd'></a>RequestPrd
### 4.6. <a name='RequestPcd'></a>RequestPcd
## 5. <a name='Dataprive'></a>Data privée
### 5.1. <a name='Cls-1'></a>Clés
### 5.2. <a name='Peers-1'></a>Peers
### 5.3. <a name='Process-1'></a>Process
### 5.4. <a name='Messages-1'></a>Messages
### 5.5. <a name='RequestPrd-1'></a>RequestPrd
### 5.6. <a name='RequestPcd-1'></a>RequestPcd

View File

@ -195,14 +195,9 @@ Pour les `RequestPrd` de type `RequestPrdConfirm` :
* `code_confirm_enc_by_shared_secret`
Pour les `RequestPrd` de type `RequestPrdKeyBackup` :
* `device_footprint_enc_by_sp_shared_secret`
* `pre_id_enc_by_sp_shared_secret`
* `shard_enc_by_sp_shared_secret`
Pour les `RequestPrd` de type `RequestPrdKeyHello` :
Pour les `RequestPrd` de type `RequestPrdList` :
* `item_member_enc_by_sp_shared_secret`
* `pre_id_enc_by_sp_shared_secret`
Puis le `RequestPrd` est chiffré par la `ProcessKey` du `ItemProcess`. Cette partie chiffrée est la valeur de l'attribut `request_enc` du `Message`.

View File

@ -34,16 +34,8 @@
* 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. [RequestPrdKeyBakcup](#RequestPrdKeyBakcup)
* 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. [RequestPrdKeyHello - Échange de Clés et d'Identités](#RequestPrdKeyHello-changedeClsetdIdentits)
* 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)
* 15. [Todo](#Todo)
* 12. [Exemples de Code](#ExemplesdeCode)
* 13. [Todo](#Todo)
<!-- vscode-markdown-toc-config
numbering=true
@ -51,21 +43,21 @@
/vscode-markdown-toc-config -->
<!-- /vscode-markdown-toc --># `RequestPrd` et `RequestPcd` - 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.
## 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.
## 3. <a name='Documentsderfrence'></a>3. Documents de référence
## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='CommunauxRequestPcdetRequestPrd'></a>Commun aux `RequestPcd` et RequestPrd
## 4. <a name='CommunauxRequestPcdetRequestPrd'></a>Commun aux `RequestPcd` et RequestPrd
### 4.1. <a name='Crationetenvoi'></a>Création et envoi
### 4.1. <a name='Crationetenvoi'></a>Création et envoi
Les `RequestPcd` et les `RequestPrd` sont envoyés sous forme de `message` (JSON) depuis les websockets des relais.
@ -73,7 +65,7 @@ Les messages contiennent des `RequestPrd` ou des `RequestPcd` encapsulés dans l
**Création du message et envoi**: voir [Message-SP-Specs.md](Message-SP-Specs.md).
### 4.2. <a name='Rception'></a>Réception
### 4.2. <a name='Rception'></a>Réception
Les `RequestPcd` et les `RequestPrd` sont reçus sous forme de `message` (JSON) depuis les websockets des relais.
@ -91,17 +83,17 @@ En cas de `RequestPcd` ou `RequestPrd` en relation via `RequestPcd_reference_has
Pour les `RequestPcd` et les `RequestPrd` il faut vérifier que le hash du document n'est pas déjà en cas, si c'est le cas, le message est ignoré.
## 5. <a name='FonctiondesRequestPcd'></a>Fonction des RequestPcd
## 5. <a name='FonctiondesRequestPcd'></a>Fonction des RequestPcd
Les Portable Contract Documents ( RequestPcd) sont des documents JSON qui encapsulent les listes versionnées d'`Item` dont les attributs sont chiffrés soit en public, soit en confidentiel par rôles soit en privé (cf. [Specs-Security.md](Specs-Security.md)).
Les `Item` ainsi échangés via les `RequestPcd` sont vérifiés par les `RequestPrdResponse` afin de vérifier les validations de ces données et leurs conformités avec les `ItemProcess` et les `members` concernés.
### 5.1. <a name='Schmadesflux'></a>Schéma des flux
### 5.1. <a name='Schmadesflux'></a>Schéma des flux
![RequestPcd](diagrams/PCD.png "RequestPcd")
### 5.2. <a name='Crationetenvoi-1'></a>Création et envoi
### 5.2. <a name='Crationetenvoi-1'></a>Création et envoi
La création d'un `RequestPcd` suit plusieurs étapes :
@ -111,17 +103,7 @@ La création d'un `RequestPcd` suit plusieurs étapes :
4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
5. Traitements communs aux `RequestPcd` et RequestPrd
| `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting |
|-----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------|
| `RequestPrdList` | 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 |
| `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` |
| `RequestPrdResponse` | 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 |
| `RequestPrdKeyBackup` | No | No | No | all the members of the `SharedProcess` | No | Yes | No |
| `RequestPrdKeyHello` | No | No | No | all the members of all `Role` into to `ItemProcess` | Yes | Yes | Yes |
### 5.3. <a name='Rception-1'></a>Réception
### 5.3. <a name='Rception-1'></a>Réception
La réception d'un `RequestPcd` suit plusieurs étapes :
@ -132,17 +114,7 @@ La réception d'un `RequestPcd` suit plusieurs étapes :
5. Déchiffrage des attributs privés des `Item` des `RequestPcd` avec la clé privée `KeyRecover`
6. Mise à jour du cache pour les traitement des RequestPrd.
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) |
|-----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
| `RequestPrdUpdate` | Info | 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 |
| `RequestPrdResponse` | Info | Yes | No | No | No | No |
| `RequestPrdConfirm` | Info | No | No | No | No | No |
| `RequestPrdKeyBackup` | Info | No | No | reply | No | No |
| `RequestPrdKeyHello` | No | Yes | Yes | reply | No | Yes |
## 6. <a name='FonctiondesRequestPrd'></a>Fonction des RequestPrd
## 6. <a name='FonctiondesRequestPrd'></a>Fonction des RequestPrd
Les Portable Request Documents ( RequestPrd) sont des documents JSON qui encapsulent les valeurs de signatures et les clés de déchiffrement nécessaires à l'interprétation des `RequestPcd` via l'attribut `RequestPcd_keys_role_confidential_list_enc_by_shared_secret`. Ils sont utilisés pour demander des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
@ -150,13 +122,13 @@ Les clés de chiffrement des attributs confidentiels par rôles des `Item` des `
Les `RequestPrd` sont de plusieurs types tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc.: Variations de `RequestPrd` pour différentes actions, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
### 6.1. <a name='Schmadesflux-1'></a>Schéma des flux
### 6.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.
![RequestPrd](diagrams/PRD.png "RequestPrd")
### 6.2. <a name='Fonctionnalitsoptionnelles'></a>Fonctionnalités optionnelles
### 6.2. <a name='Fonctionnalitsoptionnelles'></a>Fonctionnalités optionnelles
L'attribut `sig_value` permet de donner une valeur aux signatures. Les valeurs des signatures sont définies par rôles dans les `ItemProcess` avec des valeurs valant pour `OK` ou `KO` pour `none` pour les validations des `RequestPrd`.
@ -181,7 +153,7 @@ Les adresses et les roles sont précisés en cas d'utilisateurs ayant plusieurs
Tous les échanges sont complétés de l'empreinte du device de l'emetteur envoyée de façon confidentielle via `device_footprint_enc_by_shared_secret`.
### 6.3. <a name='Crationetenvoi-1'></a>Création et envoi
### 6.3. <a name='Crationetenvoi-1'></a>Création et envoi
La création d'un `RequestPrd` suit plusieurs étapes :
@ -198,7 +170,16 @@ La création d'un `RequestPrd` suit plusieurs étapes :
Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md).
### 6.4. <a name='Rception-1'></a>Réception
| `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting |
|----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------|
| `RequestPrdList` | 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 |
| `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` |
| `RequestPrdResponse` | 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 |
### 6.4. <a name='Rception-1'></a>Réception
La réception d'un `RequestPcd` suit plusieurs étapes :
@ -214,29 +195,40 @@ La réception d'un `RequestPcd` suit plusieurs étapes :
10. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
11. Traitements spécifiques au type de RequestPrd.
## 7. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd)
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) |
|----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
| `RequestPrdUpdate` | Info | 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 |
| `RequestPrdResponse` | Info | Yes | No | No | No | No |
| `RequestPrdConfirm` | Info | No | No | No | No | No |
## 7. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd)
Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de contrats, de membres, ou d'autres items dans le résweau. Chaque `RequestPcd` liste des `Item` d'un même type, par exemple les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc.
### 7.1. <a name='Schmadesflux-1'></a>Schéma des flux
### 7.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.
![RequestPrdList](diagrams/PRDList.png "RequestPrdList")
### 7.2. <a name='Cration:Datasspcifiques'></a>Création : Datas spécifiques
### 7.2. <a name='Cration:Datasspcifiques'></a>Création : Datas spécifiques
1. Traitements des `RequestPrd`, avec le `type_request`
2. Pas de data spécifiques.
2. `item_member_enc_by_sp_shared_secret` en cas de création d'un nouveau ItemMember (création d'un identité numérique), uniquement vers les gestionnaires des membres
3. `pre_id_sp_enc_by_shared_secret` en cas de connexion avec une identité numérique existante, uniquement ver les gestionnaires des membres
### 7.3. <a name='Rception:Datasspcifiques'></a>Réception : Datas spécifiques
### 7.3. <a name='Rception:Datasspcifiques'></a>Réception : Datas spécifiques
La réception d'un `RequestPrdList` suit plusieurs étapes :
1. Traitements des `RequestPrd`
2. Recherche en cache de la dernière version de la liste du type d'`Item` concerné (voir `RequestPcd` Création et envoi vers l'émetteur du `RequestPrdList`)
3. Si `item_member_enc_by_sp_shared_secret` en cas de création d'un nouveau ItemMember (création d'un identité numérique), uniquement vers les gestionnaires des membres et ajout en cache sans modifier la liste des membres et associé au `pre_id` contenu dans l'`ItemMember` créé.
4. Si `pre_id_sp_enc_by_shared_secret` en cas de connexion avec une identité numérique existante, uniquement ver les gestionnaires des membres pour renvoi du shard correspondant dans le `RequestPrdResponse`
## 8. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
## 8. <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.
@ -247,23 +239,23 @@ Permet la communication :
Les `RequestPrdMessage` répondent aux `RequestPrdMessage` sauf en cas d'envoi de `raw_transaction_list` (cas d'utilisation du afin de transaférer la `transaction SP` d'un autre `RequestPrd`).
### 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é représentés dans le schéma.
Cas d'un RequestPrdMesage avec `raw_transaction_list` vide (et son RequestPrdMessage avec `raw_transaction_list` non vide).
![RequestPrdMessage](diagrams/PRDMessage.png "RequestPrdMessage")
### 8.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
### 8.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage`
2. Cas de la transmission d'une `Transaction SP` d'un autre vRequestPrd` au format `raw` dans l'attribut `raw_transaction_list` pour la publication de la transaction dans la side chain.
### 8.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
### 8.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
1. Traitements des `RequestPrd`
## 9. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd
## 9. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd
`RequestPrdUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `RequestPcd`.
@ -275,25 +267,25 @@ Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux ut
Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_version_hash` les nouvelles version des RequestPcd.
### 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é représentés dans le schéma.
![RequestPrdUpdate](diagrams/PRDUpdate.png "RequestPrdUpdate")
### 9.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
### 9.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdUpdate`
2. Pas de data spécifiques.
### 9.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
### 9.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
La réception d'un `RequestPrdUpdate` suit plusieurs étapes :
1. Traitements des `RequestPrd`
2. Comparaison de la dernirère version du `RequestPcd` en cache et de nouvelle version du `RequestPcd` associé via `RequestPcd_new_version_hash` et attente si nécessaire.
## 10. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
## 10. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
Le `RequestPrdConfirm` est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau.
@ -301,95 +293,51 @@ Les `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdMessage`, `RequestPrdRespon
`code_confirm_enc_by_shared_secret`: Un code de confirmation chiffré qui valide l'authenticité et l'intégrité de la réponse, assurant que la confirmation est sécurisée et provient de la source attendue. Dans ce cas un output spécifique chiffré par la clé `KeyConfidential` précise ce code, à confirmer dans le RequestPrdConfirm.
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
![RequestPrdConfirm](diagrams/PRDConfirm.png "RequestPrdConfirm")
### 10.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
### 10.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm`
2. Communication éventuelle d'un `code_confirm_enc_by_shared_secret` à confirmer dans le `RequestPrdConfirm`.
### 10.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
### 10.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
1. Traitements des `RequestPrd`, pas de traitement suppplémentaire.
2. Vérification du `code_confirm_enc_by_shared_secret` dans le `RequestPrdConfirm` reçu.
## 11. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
## 11. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
Le `RequestPrdResponse` permet de répondre spécifiquement à des `RequestPrd` reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
Les `RequestPrdResponse` répondent aux `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdKeyBackup` et `RequestPrdKeyHello`.
Les `RequestPrdResponse` répondent aux `RequestPrdList`, `RequestPrdUpdate`.
Utilisé pour fournir des feedbacks, des confirmations, ou des instructions supplémentaires en réponse à des demandes initiales, supportant une communication bidirectionnelle sécurisée et vérifiable.
Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, puis de partager le payload de ces actions.
### 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.
![RequestPrdResponse](diagrams/PRDResponse.png "RequestPrdResponse")
### 11.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
### 11.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse`
2. Attente de la valeur de la signature de l'utilisateur `sig_value` (si non automatique)
3. En cas de réponse à `RequestPrdKeyBackup` :`pre_id_enc_by_sp_shared_secret` avec les shards correspondants à la `pre-id` demandée.
3. En cas de réponse à `RequestPrdKeyList` :`pre_id_enc_by_sp_shared_secret` avec les shards correspondants à la `pre-id` demandée.
4. (option) `shared_secret_key` paratage d'une clé de chiffrement ad'hoc
### 11.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
### 11.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
1. Traitements des `RequestPrd`
2. Vérification des conditions de validation des RequestPcd associés.
3. En cas de réponse reçue à `RequestPrdKeyBackup` : Récupération des shards correspondants à la `pre-id` demandée et génération de la clé `KeyRecover`
3. En cas de réponse reçue à `RequestPrdList` : Récupération des shards correspondants à la `pre-id` demandée et génération de la clé `KeyRecover`
## 12. <a name='RequestPrdKeyBakcup'></a>RequestPrdKeyBakcup
## 12. <a name='ExemplesdeCode'></a>Exemples de Code
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux
![RequestPrdKeyBakcup](diagrams/PRDKeyBakcup.png "RequestPrdKeyBakcup")
### 12.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdKeyBakcup`
2. Voir [Auth-Specs.md](Auth-Specs.md) pour la création des shards et de la pre_id
2.1. Mise à jour de `pre_id_enc_by_sp_shared_secret`
2.2. Mise à jour de `shard_enc_by_sp_shared_secret`
### 12.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
1. Traitements des `RequestPrd`
2. Voir [Auth-Specs.md](Auth-Specs.md)
2.1. Si `pre_id_enc_by_sp_shared_secret` n'existe pas encore : enregistrement en cache du shard et de la `pre_id`.
2.2. Si `pre_id_enc_by_sp_shared_secret` existe déjà : vérification de la transaction SP qui doit venir de l'adresse SP de recovery du membre, et donc mise jour du shard et de la `pre_id`.
## 13. <a name='RequestPrdKeyHello-changedeClsetdIdentits'></a>RequestPrdKeyHello - Échange de Clés et d'Identités
RequestPrdKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau.
Important pour les processus d'onboarding de nouveaux membres, de réinitialisation des accès, ou de renouvellement des clés, facilitant une intégration sécurisée et la mise à jour des identités dans le réseau.
### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux
![RequestPrdKeyHello](diagrams/PRDKeyHello.png "RequestPrdKeyHello")
### 13.2. <a name='Cration:Datasspcifiques-1'></a>Création : Datas spécifiques
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdKeyHello`
2. Voir [Auth-Specs.md](Auth-Specs.md) pour ma mise à jour de `pre_id_enc_by_sp_shared_secret`
### 13.3. <a name='Rception:Datasspcifiques-1'></a>Réception : Datas spécifiques
1. Traitements des `RequestPrd`
2. Voir [Auth-Specs.md](Auth-Specs.md)
1. Renvoi des shards dans le champs le `shard_enc_by_sp_shared_secret` du `RequestPrdResponse` à envoyer
2. Envoi des `RequestPcd` relatif au `Role` de l'utilisateur dans le `ItemProcess` et des `RequestPcd` avec l`item_name` égal à "process" en cache
## 14. <a name='ExemplesdeCode'></a>Exemples de Code
## 15. <a name='Todo'></a>Todo
## 13. <a name='Todo'></a>Todo
* [ ] Diagrammes de séquences

View File

@ -25,7 +25,7 @@ Voir [_Doc_references.md](_Doc_references.md).
La transaction SP à plusieurs objectifs :
1. Permettre l'horodatage de l'empreinte des `RequestPrd` sur la side chain (hors `RequestPrdKeyBackup` et les `RequestPrdKeyMessage` sans message confidentiel).
1. Permettre l'horodatage de l'empreinte des `RequestPrd` sur la side chain (`RequestPrdKeyMessage` 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`.
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.

View File

@ -5,92 +5,93 @@
* 2.2. [CommitmentMethod](#CommitmentMethod)
* 2.3. [PaymentMethod](#PaymentMethod)
* 3. [Items](#Items)
* 3.1. [ItemArtefact](#ItemArtefact)
* 3.2. [ItemCommitmentPublicAttributeGroup](#ItemCommitmentPublicAttributeGroup)
* 3.3. [ItemMemberPublicAttributeGroup](#ItemMemberPublicAttributeGroup)
* 3.4. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup)
* 3.5. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup)
* 3.6. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup)
* 3.7. [ItemCommitment](#ItemCommitment)
* 3.8. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 3.9. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 3.10. [ItemDeposit](#ItemDeposit)
* 3.11. [ItemEnum](#ItemEnum)
* 3.12. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup)
* 3.13. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup)
* 3.14. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup)
* 3.15. [ItemPayment](#ItemPayment)
* 3.16. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 3.17. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
* 3.18. [ItemPeer](#ItemPeer)
* 3.19. [ItemProcess](#ItemProcess)
* 3.20. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup)
* 3.21. [Item](#Item)
* 4. [Encryption](#Encryption)
* 4.1. [KeyEncryption](#KeyEncryption)
* 4.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit)
* 5. [Messages](#Messages)
* 5.1. [Message](#Message)
* 5.2. [MessageConnect](#MessageConnect)
* 5.3. [MessageGeneric](#MessageGeneric)
* 5.4. [Pow](#Pow)
* 5.5. [SharedProcess](#SharedProcess)
* 5.6. [SharedPeer](#SharedPeer)
* 6. [Relay](#Relay)
* 6.1. [L1Node](#L1Node)
* 6.2. [L1Miner](#L1Miner)
* 6.3. [L2Node](#L2Node)
* 6.4. [L2Certif](#L2Certif)
* 7. [Metadata](#Metadata)
* 7.1. [MetadataContractPublic](#MetadataContractPublic)
* 7.2. [MetadataPrivate](#MetadataPrivate)
* 7.3. [MetadataRoleConfidential](#MetadataRoleConfidential)
* 7.4. [Amount](#Amount)
* 7.5. [Number](#Number)
* 8. [Request](#Request)
* 9. [RequestPcd](#RequestPcd)
* 9.1. [Pagination](#Pagination)
* 9.2. [RequestPcdItemEncAttributePublic](#RequestPcdItemEncAttributePublic)
* 9.3. [RequestPcdItemEncAttributeRoleConfidential](#RequestPcdItemEncAttributeRoleConfidential)
* 9.4. [RequestPcdItemEncAttributePrivate](#RequestPcdItemEncAttributePrivate)
* 9.5. [RequestPcdItemGenericEnc](#RequestPcdItemGenericEnc)
* 9.6. [RequestPcdItemEnc](#RequestPcdItemEnc)
* 10. [RequestPrd](#RequestPrd)
* 10.1. [RequestPrdResponse](#RequestPrdResponse)
* 10.2. [RequestPrdConfirm](#RequestPrdConfirm)
* 10.3. [RequestPrdKeyBackup](#RequestPrdKeyBackup)
* 10.4. [RequestPrdKeyHello](#RequestPrdKeyHello)
* 10.5. [RequestPrdList](#RequestPrdList)
* 10.6. [RequestPrdMessage](#RequestPrdMessage)
* 10.7. [RequestPrdResponse](#RequestPrdResponse-1)
* 10.8. [RequestPrdUpdate](#RequestPrdUpdate)
* 11. [Roles](#Roles)
* 11.1. [Role](#Role)
* 11.2. [Conditions](#Conditions)
* 11.2.1. [TransactionMode](#TransactionMode)
* 11.2.2. [ConditionPayment](#ConditionPayment)
* 11.2.3. [ConditionCommitment](#ConditionCommitment)
* 11.2.4. [ConditionDeposit](#ConditionDeposit)
* 11.2.5. [ConditionOrchestration](#ConditionOrchestration)
* 11.2.6. [ConditionCap](#ConditionCap)
* 11.2.7. [Condition RequestPrdAddressSet](#ConditionRequestPrdAddressSet)
* 11.2.8. [ConditionPublish](#ConditionPublish)
* 11.3. [RolesGroup](#RolesGroup)
* 11.3.1. [RoleArtefact](#RoleArtefact)
* 11.3.2. [RoleDeposit](#RoleDeposit)
* 11.3.3. [RoleCommitment](#RoleCommitment)
* 11.3.4. [RoleMember](#RoleMember)
* 11.4. [RolePeer](#RolePeer)
* 11.4.1. [RolePayment](#RolePayment)
* 11.4.2. [RoleProcess](#RoleProcess)
* 12. [12. Rust considerations](#Rustconsiderations)
* 12.1. [General Implications for Project Objects](#GeneralImplicationsforProjectObjects)
* 12.2. [Debug](#Debug)
* 12.3. [Default](#Default)
* 12.4. [PartialEq, Eq](#PartialEqEq)
* 12.5. [Hash](#Hash)
* 12.6. [PartialOrd, Ord](#PartialOrdOrd)
* 13. [Todo](#Todo)
* 3.1. [Item](#Item)
* 3.2. [ItemArtefact](#ItemArtefact)
* 3.3. [ItemMember](#ItemMember)
* 3.3.1. [ItemMemberPublicAttributeGroup](#ItemMemberPublicAttributeGroup)
* 3.3.2. [ItemMemberRoleConfidentialAttributeGroup](#ItemMemberRoleConfidentialAttributeGroup)
* 3.3.3. [ItemMemberRolePrivateAttributeGroup](#ItemMemberRolePrivateAttributeGroup)
* 4. [ItemCommitment](#ItemCommitment)
* 4.1. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup)
* 4.2. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup)
* 4.2.1. [ItemCommitmentPublicAttributeGroup](#ItemCommitmentPublicAttributeGroup)
* 4.3. [ItemDeposit](#ItemDeposit)
* 4.3.1. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup)
* 4.3.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 4.3.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 4.4. [ItemEnum](#ItemEnum)
* 4.5. [ItemPayment](#ItemPayment)
* 4.5.1. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup)
* 4.5.2. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup)
* 4.5.3. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup)
* 4.6. [ItemPeer](#ItemPeer)
* 4.6.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 4.6.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
* 4.7. [ItemProcess](#ItemProcess)
* 4.7.1. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup)
* 5. [Encryption](#Encryption)
* 5.1. [KeyEncryption](#KeyEncryption)
* 5.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit)
* 6. [Messages](#Messages)
* 6.1. [Message](#Message)
* 6.2. [MessageConnect](#MessageConnect)
* 6.3. [MessageGeneric](#MessageGeneric)
* 6.4. [Pow](#Pow)
* 6.5. [SharedProcess](#SharedProcess)
* 6.6. [SharedPeer](#SharedPeer)
* 7. [Relay](#Relay)
* 7.1. [L1Node](#L1Node)
* 7.2. [L1Miner](#L1Miner)
* 7.3. [L2Node](#L2Node)
* 7.4. [L2Certif](#L2Certif)
* 8. [Metadata](#Metadata)
* 8.1. [MetadataContractPublic](#MetadataContractPublic)
* 8.2. [MetadataPrivate](#MetadataPrivate)
* 8.3. [MetadataRoleConfidential](#MetadataRoleConfidential)
* 8.4. [Amount](#Amount)
* 8.5. [Number](#Number)
* 9. [Request](#Request)
* 10. [RequestPcd](#RequestPcd)
* 10.1. [Pagination](#Pagination)
* 10.2. [RequestPcdItemEncAttributePublic](#RequestPcdItemEncAttributePublic)
* 10.3. [RequestPcdItemEncAttributeRoleConfidential](#RequestPcdItemEncAttributeRoleConfidential)
* 10.4. [RequestPcdItemEncAttributePrivate](#RequestPcdItemEncAttributePrivate)
* 10.5. [RequestPcdItemGenericEnc](#RequestPcdItemGenericEnc)
* 10.6. [RequestPcdItemEnc](#RequestPcdItemEnc)
* 11. [RequestPrd](#RequestPrd)
* 11.1. [RequestPrdResponse](#RequestPrdResponse)
* 11.2. [RequestPrdConfirm](#RequestPrdConfirm)
* 11.3. [RequestPrdList](#RequestPrdList)
* 11.4. [RequestPrdMessage](#RequestPrdMessage)
* 11.5. [RequestPrdResponse](#RequestPrdResponse-1)
* 11.6. [RequestPrdUpdate](#RequestPrdUpdate)
* 12. [Roles](#Roles)
* 12.1. [Role](#Role)
* 12.2. [Conditions](#Conditions)
* 12.2.1. [TransactionMode](#TransactionMode)
* 12.2.2. [ConditionPayment](#ConditionPayment)
* 12.2.3. [ConditionCommitment](#ConditionCommitment)
* 12.2.4. [ConditionDeposit](#ConditionDeposit)
* 12.2.5. [ConditionOrchestration](#ConditionOrchestration)
* 12.2.6. [ConditionCap](#ConditionCap)
* 12.2.7. [Condition RequestPrdAddressSet](#ConditionRequestPrdAddressSet)
* 12.2.8. [ConditionPublish](#ConditionPublish)
* 12.3. [RolesGroup](#RolesGroup)
* 12.3.1. [RoleArtefact](#RoleArtefact)
* 12.3.2. [RoleDeposit](#RoleDeposit)
* 12.3.3. [RoleCommitment](#RoleCommitment)
* 12.3.4. [RoleMember](#RoleMember)
* 12.4. [RolePeer](#RolePeer)
* 12.4.1. [RolePayment](#RolePayment)
* 12.4.2. [RoleProcess](#RoleProcess)
* 13. [12. Rust considerations](#Rustconsiderations)
* 13.1. [General Implications for Project Objects](#GeneralImplicationsforProjectObjects)
* 13.2. [Debug](#Debug)
* 13.3. [Default](#Default)
* 13.4. [PartialEq, Eq](#PartialEqEq)
* 13.5. [Hash](#Hash)
* 13.6. [PartialOrd, Ord](#PartialOrdOrd)
* 14. [Todo](#Todo)
<!-- vscode-markdown-toc-config
numbering=true
@ -130,7 +131,22 @@ The `DepositMethod` struct identifies a specific deposit method, encapsulating t
## 3. <a name='Items'></a>Items
### 3.1. <a name='ItemArtefact'></a>ItemArtefact
### 3.1. <a name='Item'></a>Item
The `Item` struct serves as a foundational element, detailing the basic structure of an item with attributes like UUID, version, and type, central to item management in the system.
| Attribute Name | Type | Option | Description |
|-------------------------------------|--------------------------------|--------|---------------------------------------------------------------------------|
| `uuid` | ```String``` | | A unique identifier for the item. |
| `version` | ```i64``` | | The version of the item. |
| `item_type` | ```String``` | | The type of the item. `type` is a reserved keyword in Rust, renamed here. |
| `name` | ```String``` | | The name of the item. |
| `pagination_number_per_request_pcd` | ```u32``` | | The pagination number per Portable Contract Document ( RequestPcd). |
| `metadata_contract_public` | ```MetadataContractPublic``` | | Public metadata contract associated with the item. |
| `metadata_role_confidential` | ```MetadataRoleConfidential``` | | Role-specific confidential metadata associated with the item. |
| `metadata_private` | ```MetadataPrivate``` | | Private metadata associated with the item. |
### 3.2. <a name='ItemArtefact'></a>ItemArtefact
`ItemArtefact` associates an item with artefact-specific attributes, including public, confidential, and private attribute groups, to represent artefacts within the system.
@ -141,21 +157,16 @@ The `DepositMethod` struct identifies a specific deposit method, encapsulating t
| `role_confidential_attribute_group` | ```Vec<String>``` | | A list of role-specific confidential attributes for the artefact. |
| `private_attribute_group` | ```Vec<String>``` | | A list of private attributes associated with the artefact. |
### 3.2. <a name='ItemCommitmentPublicAttributeGroup'></a>ItemCommitmentPublicAttributeGroup
### 3.3. <a name='ItemMember'></a>ItemMember
This struct groups public attributes related to commitments, such as goals and provider types, to publicly share commitment details.
| Attribute Name | Type | Option | Description |
|-------------------------------------|------------------------------------------------|--------|-----------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this member. |
| `public_attribute_group` | ```ItemMemberPublicAttributeGroup``` | | A list of public attributes associated with the member. |
| `role_confidential_attribute_group` | ```ItemMemberRoleConfidentialAttributeGroup``` | | A list of role-specific confidential attributes for the member. |
| `private_attribute_group` | ```ItemMemberPrivateAttributeGroup``` | | A list of private attributes associated with the member. |
| Attribute Name | Type | Option | Description |
|------------------------------------|-------------------|--------|---------------------------------------------------------------------------------|
| `for_sp_address_list` | ```Vec<String>``` | | A list of service provider addresses related to this commitment. |
| `goal_list` | ```Vec<String>``` | | A list of goals associated with this commitment. |
| `provider_type` | ```String``` | | The type of provider making the commitment. |
| `commitment_request_pcd_hash_list` | ```Vec<String>``` | | A list of hashes for the commitment's RequestPcd documents. |
| `ref_item_hash_list` | ```Vec<String>``` | | A list of reference hashes for items related to this commitment. |
| `ref_request_pcd_hash_list` | ```Vec<String>``` | | A list of reference hashes for RequestPcd documents related to this commitment. |
| `payload_public_list` | ```Vec<String>``` | | A list of public payloads associated with this commitment. |
### 3.3. <a name='ItemMemberPublicAttributeGroup'></a>ItemMemberPublicAttributeGroup
#### 3.3.1. <a name='ItemMemberPublicAttributeGroup'></a>ItemMemberPublicAttributeGroup
`ItemMemberPublicAttributeGroup` outlines public attributes for members, including service provider addresses and payment methods, for transparency in member-related information.
@ -170,7 +181,80 @@ This struct groups public attributes related to commitments, such as goals and p
| `payment_method_list_public` | ```Vec<String>``` | | A list of public payment methods available. |
| `succession_process_hash` | ```String``` | | The hash of the succession process associated with this item. |
### 3.4. <a name='ItemDepositPublicAttributeGroup'></a>ItemDepositPublicAttributeGroup
#### 3.3.2. <a name='ItemMemberRoleConfidentialAttributeGroup'></a>ItemMemberRoleConfidentialAttributeGroup
`ItemMemberRoleConfidentialAttributeGroup`
| Attribute Name | Type | Option | Description |
|--------------------------------------------|--------------|--------|----------------------------------------------------|
| `shard_confidential` | ```String``` | yes | Shard of this member from the cache if it exist |
| `pre_id_confidential` | ```String``` | yes | `pre_id` of this member from the cache if it exist |
| `device_footprint_enc_by_sp_shared_secret` | ```String``` | yes | `pre_id` of this member from the cache if it exist |
#### 3.3.3. <a name='ItemMemberRolePrivateAttributeGroup'></a>ItemMemberRolePrivateAttributeGroup
`ItemMemberRolePrivateAttributeGroup`
| Attribute Name | Type | Option | Description |
|--------------------------|--------------|--------|-------------|
| `priv_key_mainnet_spend` | ```String``` | yes | |
| `priv_key_mainnet_scan` | ```String``` | yes | |
| `priv_key_signet_scan` | ```String``` | yes | |
| `randSeedPart2` | ```String``` | yes | |
## 4. <a name='ItemCommitment'></a>ItemCommitment
`ItemCommitment` links an item with commitment-specific attributes across public, confidential, and private spheres, fully representing a commitment.
| Attribute Name | Type | Option | Description |
|-------------------------------------|----------------------------------------------------|--------|---------------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this commitment. |
| `public_attribute_group` | ```ItemCommitmentPublicAttributeGroup``` | | The public attribute group associated with this commitment. |
| `role_confidential_attribute_group` | ```ItemCommitmentRoleConfidentialAttributeGroup``` | | The role-specific confidential attribute group for this commitment. |
| `private_attribute_group` | ```ItemCommitmentPrivateAttributeGroup``` | | The private attribute group associated with this commitment. |
### 4.1. <a name='ItemCommitmentRoleConfidentialAttributeGroup'></a>ItemCommitmentRoleConfidentialAttributeGroup
This struct encompasses role-specific confidential attributes for commitments, securing sensitive commitment information.
| Attribute Name | Type | Option | Description |
|-----------------------------|-------------------|--------|------------------------------------------------------------------|
| `payload_list_confidential` | ```Vec<String>``` | | A list of confidential payloads associated with this commitment. |
### 4.2. <a name='ItemCommitmentPrivateAttributeGroup'></a>ItemCommitmentPrivateAttributeGroup
`ItemCommitmentPrivateAttributeGroup` contains private attributes for commitments, ensuring privacy for the most sensitive commitment details.
| Attribute Name | Type | Option | Description |
|------------------------|-------------------|--------|-------------------------------------------------------------|
| `payload_list_private` | ```Vec<String>``` | | A list of private payloads associated with this commitment. |
#### 4.2.1. <a name='ItemCommitmentPublicAttributeGroup'></a>ItemCommitmentPublicAttributeGroup
This struct groups public attributes related to commitments, such as goals and provider types, to publicly share commitment details.
| Attribute Name | Type | Option | Description |
|------------------------------------|-------------------|--------|---------------------------------------------------------------------------------|
| `for_sp_address_list` | ```Vec<String>``` | | A list of service provider addresses related to this commitment. |
| `goal_list` | ```Vec<String>``` | | A list of goals associated with this commitment. |
| `provider_type` | ```String``` | | The type of provider making the commitment. |
| `commitment_request_pcd_hash_list` | ```Vec<String>``` | | A list of hashes for the commitment's RequestPcd documents. |
| `ref_item_hash_list` | ```Vec<String>``` | | A list of reference hashes for items related to this commitment. |
| `ref_request_pcd_hash_list` | ```Vec<String>``` | | A list of reference hashes for RequestPcd documents related to this commitment. |
| `payload_public_list` | ```Vec<String>``` | | A list of public payloads associated with this commitment. |
### 4.3. <a name='ItemDeposit'></a>ItemDeposit
It combines an item with deposit-specific attributes, including public, confidential, and private groups, to comprehensively represent a deposit.
| Attribute Name | Type | Option | Description |
|-------------------------------------|-------------------------------------------------|--------|------------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this deposit. |
| `public_attribute_group` | ```ItemDepositPublicAttributeGroup``` | | The public attribute group associated with this deposit. |
| `role_confidential_attribute_group` | ```ItemDepositRoleConfidentialAttributeGroup``` | | The role-specific confidential attribute group for this deposit. |
| `private_attribute_group` | ```ItemDepositPrivateAttributeGroup``` | | The private attribute group associated with this deposit. |
#### 4.3.1. <a name='ItemDepositPublicAttributeGroup'></a>ItemDepositPublicAttributeGroup
It details public attributes for deposits, including target addresses and goals, facilitating the understanding of deposit objectives.
@ -185,34 +269,7 @@ It details public attributes for deposits, including target addresses and goals,
| `payload_list_public` | ```Vec<String>``` | | A list of public payloads associated with this deposit. |
| `audit_code_list_public` | ```Vec<String>``` | | A list of public audit codes associated with this deposit. |
### 3.5. <a name='ItemCommitmentRoleConfidentialAttributeGroup'></a>ItemCommitmentRoleConfidentialAttributeGroup
This struct encompasses role-specific confidential attributes for commitments, securing sensitive commitment information.
| Attribute Name | Type | Option | Description |
|-----------------------------|-------------------|--------|------------------------------------------------------------------|
| `payload_list_confidential` | ```Vec<String>``` | | A list of confidential payloads associated with this commitment. |
### 3.6. <a name='ItemCommitmentPrivateAttributeGroup'></a>ItemCommitmentPrivateAttributeGroup
`ItemCommitmentPrivateAttributeGroup` contains private attributes for commitments, ensuring privacy for the most sensitive commitment details.
| Attribute Name | Type | Option | Description |
|------------------------|-------------------|--------|-------------------------------------------------------------|
| `payload_list_private` | ```Vec<String>``` | | A list of private payloads associated with this commitment. |
### 3.7. <a name='ItemCommitment'></a>ItemCommitment
`ItemCommitment` links an item with commitment-specific attributes across public, confidential, and private spheres, fully representing a commitment.
| Attribute Name | Type | Option | Description |
|-------------------------------------|----------------------------------------------------|--------|---------------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this commitment. |
| `public_attribute_group` | ```ItemCommitmentPublicAttributeGroup``` | | The public attribute group associated with this commitment. |
| `role_confidential_attribute_group` | ```ItemCommitmentRoleConfidentialAttributeGroup``` | | The role-specific confidential attribute group for this commitment. |
| `private_attribute_group` | ```ItemCommitmentPrivateAttributeGroup``` | | The private attribute group associated with this commitment. |
### 3.8. <a name='ItemDepositRoleConfidentialAttributeGroup'></a>ItemDepositRoleConfidentialAttributeGroup
#### 4.3.2. <a name='ItemDepositRoleConfidentialAttributeGroup'></a>ItemDepositRoleConfidentialAttributeGroup
Similar to its commitment counterpart, this struct holds confidential attributes specific to deposits, protecting sensitive deposit information.
@ -221,7 +278,7 @@ Similar to its commitment counterpart, this struct holds confidential attributes
| `payload_list_confidential` | ```Vec<String>``` | | A list of confidential payloads associated with this deposit. |
| `audit_code_list_confidential` | ```Vec<String>``` | | A list of confidential audit codes associated with this deposit. |
### 3.9. <a name='ItemDepositPrivateAttributeGroup'></a>ItemDepositPrivateAttributeGroup
#### 4.3.3. <a name='ItemDepositPrivateAttributeGroup'></a>ItemDepositPrivateAttributeGroup
`ItemDepositPrivateAttributeGroup` secures private deposit attributes, safeguarding the most sensitive aspects of deposits.
@ -230,18 +287,7 @@ Similar to its commitment counterpart, this struct holds confidential attributes
| `payload_list_private` | ```Vec<String>``` | | A list of private payloads associated with this deposit. |
| `audit_code_private` | ```String``` | | A private audit code associated with this deposit. |
### 3.10. <a name='ItemDeposit'></a>ItemDeposit
It combines an item with deposit-specific attributes, including public, confidential, and private groups, to comprehensively represent a deposit.
| Attribute Name | Type | Option | Description |
|-------------------------------------|-------------------------------------------------|--------|------------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this deposit. |
| `public_attribute_group` | ```ItemDepositPublicAttributeGroup``` | | The public attribute group associated with this deposit. |
| `role_confidential_attribute_group` | ```ItemDepositRoleConfidentialAttributeGroup``` | | The role-specific confidential attribute group for this deposit. |
| `private_attribute_group` | ```ItemDepositPrivateAttributeGroup``` | | The private attribute group associated with this deposit. |
### 3.11. <a name='ItemEnum'></a>ItemEnum
### 4.4. <a name='ItemEnum'></a>ItemEnum
This enumeration represents different types of items within a system, where each variant encapsulates a specific struct for a type of item:
@ -253,7 +299,18 @@ This enumeration represents different types of items within a system, where each
* **```Artefact(ItemArtefact)```**: Contains an item of type ItemArtefact, representing an artefact.
* **```Commitment(ItemCommitment)```**: Contains an item of type ItemCommitment, representing a commitment.
### 3.12. <a name='ItemPaymentPublicAttributeGroup'></a>ItemPaymentPublicAttributeGroup
### 4.5. <a name='ItemPayment'></a>ItemPayment
`ItemPayment` links an item with payment-specific attributes across public, confidential, and private groups, offering a full view of a payment.
| Attribute Name | Type | Option | Description |
|-------------------------------------|-------------------------------------------------|--------|------------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this payment. |
| `public_attribute_group` | ```ItemPaymentPublicAttributeGroup``` | | The public attribute group associated with this payment. |
| `role_confidential_attribute_group` | ```ItemPaymentRoleConfidentialAttributeGroup``` | | The role-specific confidential attribute group for this payment. |
| `private_attribute_group` | ```ItemPaymentPrivateAttributeGroup``` | | The private attribute group associated with this payment. |
#### 4.5.1. <a name='ItemPaymentPublicAttributeGroup'></a>ItemPaymentPublicAttributeGroup
This struct organizes public payment attributes, detailing aspects like service provider addresses and payment goals, for public knowledge.
@ -271,7 +328,7 @@ This struct organizes public payment attributes, detailing aspects like service
| `payload_list_public` | ```Vec<String>``` | | A list of public payloads associated with this payment. |
| `audit_code_list_public` | ```Vec<String>``` | | A list of public audit codes associated with this payment. |
### 3.13. <a name='ItemPaymentRoleConfidentialAttributeGroup'></a>ItemPaymentRoleConfidentialAttributeGroup
#### 4.5.2. <a name='ItemPaymentRoleConfidentialAttributeGroup'></a>ItemPaymentRoleConfidentialAttributeGroup
It holds confidential payment attributes, maintaining the confidentiality of critical payment information.
@ -280,7 +337,7 @@ It holds confidential payment attributes, maintaining the confidentiality of cri
| `payload_list_confidential` | ```Vec<String>``` | | A list of confidential payloads associated with this payment. |
| `audit_code_list_confidential` | ```Vec<String>``` | | A list of confidential audit codes associated with this payment. |
### 3.14. <a name='ItemPaymentPrivateAttributeGroup'></a>ItemPaymentPrivateAttributeGroup
#### 4.5.3. <a name='ItemPaymentPrivateAttributeGroup'></a>ItemPaymentPrivateAttributeGroup
ItemPaymentPrivateAttributeGroup protects private payment attributes, ensuring the highest level of privacy for payment details.
@ -289,18 +346,18 @@ ItemPaymentPrivateAttributeGroup protects private payment attributes, ensuring t
| `payload_list_private` | ```Vec<String>``` | | A list of private payloads associated with this payment. |
| `audit_code_private` | ```String``` | | A private audit code associated with this payment. |
### 3.15. <a name='ItemPayment'></a>ItemPayment
### 4.6. <a name='ItemPeer'></a>ItemPeer
`ItemPayment` links an item with payment-specific attributes across public, confidential, and private groups, offering a full view of a payment.
`ItemPeer` combines basic item information with layers, public, and private attributes, fully detailing a peer within the system.
| Attribute Name | Type | Option | Description |
|-------------------------------------|-------------------------------------------------|--------|------------------------------------------------------------------|
| `item` | ```Item``` | | Represents the item associated with this payment. |
| `public_attribute_group` | ```ItemPaymentPublicAttributeGroup``` | | The public attribute group associated with this payment. |
| `role_confidential_attribute_group` | ```ItemPaymentRoleConfidentialAttributeGroup``` | | The role-specific confidential attribute group for this payment. |
| `private_attribute_group` | ```ItemPaymentPrivateAttributeGroup``` | | The private attribute group associated with this payment. |
| Attribute Name | Type | Option | Description |
|---------------------------|-------------------------------------|--------|---------------------------------------------------------------|
| `item` | ```Item``` | | Représente les informations de base de l'item. |
| `layer_list` | ```Vec<String>``` | | Une liste des couches (layers) auxquelles ce pair appartient. |
| `public_attribute_group` | ```ItemPeerPublicAttributeGroup``` | | Groupe d'attributs publics associés à ce pair. |
| `private_attribute_group` | ```ItemPeerPrivateAttributeGroup``` | | Groupe d'attributs privés associés à ce pair. |
### 3.16. <a name='ItemPeerPublicAttributeGroup'></a>ItemPeerPublicAttributeGroup
#### 4.6.1. <a name='ItemPeerPublicAttributeGroup'></a>ItemPeerPublicAttributeGroup
It outlines public peer attributes, such as service provider addresses and PoW details, for transparency in peer-related information.
@ -318,7 +375,7 @@ It outlines public peer attributes, such as service provider addresses and PoW d
| `daily_sp_tx_mine_list` | ```Vec<String>``` | | A daily list of service provider transactions mined by this peer. |
| `daily_sp_tx_mine_reward_list` | ```Vec<String>``` | | A daily list of rewards for service provider transactions mined by this peer. |
### 3.17. <a name='ItemPeerPrivateAttributeGroup'></a>ItemPeerPrivateAttributeGroup
#### 4.6.2. <a name='ItemPeerPrivateAttributeGroup'></a>ItemPeerPrivateAttributeGroup
`ItemPeerPrivateAttributeGroup` contains a private configuration ```String``` for a peer, keeping certain peer configurations confidential.
@ -326,18 +383,7 @@ It outlines public peer attributes, such as service provider addresses and PoW d
|----------------|--------------|--------|-----------------------------------------------------------------|
| `config` | ```String``` | | A private configuration ```String``` associated with this peer. |
### 3.18. <a name='ItemPeer'></a>ItemPeer
`ItemPeer` combines basic item information with layers, public, and private attributes, fully detailing a peer within the system.
| Attribute Name | Type | Option | Description |
|---------------------------|-------------------------------------|--------|---------------------------------------------------------------|
| `item` | ```Item``` | | Représente les informations de base de l'item. |
| `layer_list` | ```Vec<String>``` | | Une liste des couches (layers) auxquelles ce pair appartient. |
| `public_attribute_group` | ```ItemPeerPublicAttributeGroup``` | | Groupe d'attributs publics associés à ce pair. |
| `private_attribute_group` | ```ItemPeerPrivateAttributeGroup``` | | Groupe d'attributs privés associés à ce pair. |
### 3.19. <a name='ItemProcess'></a>ItemProcess
### 4.7. <a name='ItemProcess'></a>ItemProcess
`ItemProcess` associates an item with a process, including public attribute groups, to represent processes within the system comprehensively.
@ -346,7 +392,7 @@ It outlines public peer attributes, such as service provider addresses and PoW d
| `item` | ```Item``` | | Represents the item associated with this process. |
| `item_process_public_attribute_group` | ```ItemProcessPublicAttributeGroup``` | | The public attribute group associated with this process. |
### 3.20. <a name='ItemProcessPublicAttributeGroup'></a>ItemProcessPublicAttributeGroup
#### 4.7.1. <a name='ItemProcessPublicAttributeGroup'></a>ItemProcessPublicAttributeGroup
This struct details public attributes related to processes, like roles groups, to facilitate understanding of process organization.
@ -354,24 +400,9 @@ This struct details public attributes related to processes, like roles groups, t
|----------------|------------|--------|-----------------------------------------------------------|
| `roles_group` | RolesGroup | | Represents a group of roles associated with this process. |
### 3.21. <a name='Item'></a>Item
## 5. <a name='Encryption'></a>Encryption
The `Item` struct serves as a foundational element, detailing the basic structure of an item with attributes like UUID, version, and type, central to item management in the system.
| Attribute Name | Type | Option | Description |
|-------------------------------------|--------------------------------|--------|---------------------------------------------------------------------------|
| `uuid` | ```String``` | | A unique identifier for the item. |
| `version` | ```i64``` | | The version of the item. |
| `item_type` | ```String``` | | The type of the item. `type` is a reserved keyword in Rust, renamed here. |
| `name` | ```String``` | | The name of the item. |
| `pagination_number_per_request_pcd` | ```u32``` | | The pagination number per Portable Contract Document ( RequestPcd). |
| `metadata_contract_public` | ```MetadataContractPublic``` | | Public metadata contract associated with the item. |
| `metadata_role_confidential` | ```MetadataRoleConfidential``` | | Role-specific confidential metadata associated with the item. |
| `metadata_private` | ```MetadataPrivate``` | | Private metadata associated with the item. |
## 4. <a name='Encryption'></a>Encryption
### 4.1. <a name='KeyEncryption'></a>KeyEncryption
### 5.1. <a name='KeyEncryption'></a>KeyEncryption
The `KeyEncryption` struct provides details about encryption keys, including the attribute it's for, the key itself, and the algorithm used, crucial for securing data within the system.
@ -381,7 +412,7 @@ The `KeyEncryption` struct provides details about encryption keys, including the
| `key` | ```String``` | Yes | An optional encryption key. |
| `algorithm` | ```String``` | Yes | An optional encryption algorithm used with this key. |
### 4.2. <a name='Aes256GcmIv96Bit'></a>Aes256GcmIv96Bit
### 5.2. <a name='Aes256GcmIv96Bit'></a>Aes256GcmIv96Bit
This struct represents an encryption scheme using `AES-256-GCM` with a 96-bit initialization vector (IV), specifying the key details for robust data encryption.
@ -389,9 +420,9 @@ This struct represents an encryption scheme using `AES-256-GCM` with a 96-bit in
|----------------|-----------------------------|--------|------------------------------------------------------------------------------|
| `key` | ```GenericArray<u8, u32>``` | | Represents an encryption key for the AES-256-GCM algorithm with a 96-bit IV. |
## 5. <a name='Messages'></a>Messages
## 6. <a name='Messages'></a>Messages
### 5.1. <a name='Message'></a>Message
### 6.1. <a name='Message'></a>Message
`Message` encapsulates a client message, including an encrypted request and its hash, essential for secure and verifiable client-server communication.
@ -400,7 +431,7 @@ This struct represents an encryption scheme using `AES-256-GCM` with a 96-bit in
| `message` | ```Message``` | | Represents a message, assuming `Message` is a predefined struct. |
| `request_enc` | ```String``` | | The encrypted request content. |
### 5.2. <a name='MessageConnect'></a>MessageConnect
### 6.2. <a name='MessageConnect'></a>MessageConnect
The `MessageConnect` struct is designed to handle connection-related messages, facilitating the establishment of connections within the system.
@ -408,7 +439,7 @@ The `MessageConnect` struct is designed to handle connection-related messages, f
|----------------|---------------|--------|------------------------------------------------------------------|
| message | ```Message``` | | Represents a message, assuming `Message` is a predefined struct. |
### 5.3. <a name='MessageGeneric'></a>MessageGeneric
### 6.3. <a name='MessageGeneric'></a>MessageGeneric
`Message` provides a general structure for messages, including shared peers and processes, and details like PoW challenges, supporting diverse communication needs
@ -420,7 +451,7 @@ The `MessageConnect` struct is designed to handle connection-related messages, f
| `pow` | ```Pow``` | | Represents a Proof of Work (PoW) challenge, assuming `Pow` is a predefined struct. |
| `raw_transaction_list` | ```Vec<String>``` | Yes | Transaction to broadcast |
### 5.4. <a name='Pow'></a>Pow
### 6.4. <a name='Pow'></a>Pow
The `Pow` struct outlines a Proof of Work challenge, including data hash, timestamp, and nonce, to ensure computational effort for security purposes.
@ -432,17 +463,15 @@ The `Pow` struct outlines a Proof of Work challenge, including data hash, timest
| `pattern` | ```String``` | | The pattern that the PoW solution must match. |
| `difficulty` | ```usize``` | | The difficulty level of the PoW challenge. |
### 5.5. <a name='SharedProcess'></a>SharedProcess
### 6.5. <a name='SharedProcess'></a>SharedProcess
`SharedProcess` identifies a shared process within the system, aiding in the management and coordination of collaborative processes.
| Attribute Name | Type | Option | Description |
|--------------------------------|-----------------|--------|---------------------------------------------|
| `hash` | `String` | | The unique hash identifier for the process. |
| `key` | `KeyEncryption` | | The encryption key used for the process. |
| `role_process_sp_address_list` | `Vec<String>` | | A list of SP addresses related to the role. |
| Attribute Name | Type | Option | Description |
|----------------|--------------------|--------|---------------------------------------------|
| `processes` | `Vec<ItemProcess>` | | A list of SP addresses related to the role. |
### 5.6. <a name='SharedPeer'></a>SharedPeer
### 6.6. <a name='SharedPeer'></a>SharedPeer
`SharedPeer` specifies a peer within the network, playing a key role in distributed information sharing and communication.
@ -456,7 +485,7 @@ The `Pow` struct outlines a Proof of Work challenge, including data hash, timest
| `l2_node` | ```L2Node``` | | Represents a level 2 (L2) node in the network. |
| `l2_certif` | ```L2Certif``` | | Represents a level 2 (L2) certification authority or function in the network. |
## 6. <a name='Relay'></a>Relay
## 7. <a name='Relay'></a>Relay
Represents a `Relay` in the network, specifying its address and port, data handling capacity, and Proof of Work (PoW) requirements.
@ -470,7 +499,7 @@ Represents a `Relay` in the network, specifying its address and port, data handl
| `pow_timeout` | ```u32``` | | Timeout for pow |
| `faucet_sp_address` | ```u32``` | | Faucet address |
### 6.1. <a name='L1Node'></a>L1Node
### 7.1. <a name='L1Node'></a>L1Node
The `L1Node` struct details a Level 1 blockchain node, including its network, IP address, and status, integral to blockchain operations and interactions.
@ -483,7 +512,7 @@ The `L1Node` struct details a Level 1 blockchain node, including its network, IP
| `status` | ```String``` | | Current status of the L1 node (e.g., active, inactive). |
| `last_checked` | ```DateTime<Utc>``` | | Timestamp of the last health check performed on the L1 node. |
### 6.2. <a name='L1Miner'></a>L1Miner
### 7.2. <a name='L1Miner'></a>L1Miner
`L1Miner` describes a miner on a Level 1 blockchain, detailing its network, mining power, and status, crucial for understanding blockchain mining dynamics.
@ -496,7 +525,7 @@ The `L1Node` struct details a Level 1 blockchain node, including its network, IP
| `status` | ```String``` | | Current status of the L1 miner (e.g., active, inactive). |
| `mining_power` | ```u16``` | | The mining power of the L1 miner in hashes per second. |
### 6.3. <a name='L2Node'></a>L2Node
### 7.3. <a name='L2Node'></a>L2Node
This struct represents a Level 2 (Layer 2) blockchain node, focusing on scalability solutions and includes details such as its network and operation layer.
@ -509,7 +538,7 @@ This struct represents a Level 2 (Layer 2) blockchain node, focusing on scalabil
| `status` | ```String``` | | Current status of the L2 node (e.g., active, inactive). |
| `layer` | ```String``` | | Indicates the layer (L2) the node operates at. |
### 6.4. <a name='L2Certif'></a>L2Certif
### 7.4. <a name='L2Certif'></a>L2Certif
`L2Certif` specifies a Layer 2 certification authority, including its network and certification type, vital for managing certifications on Layer 2 solutions.
@ -522,7 +551,7 @@ This struct represents a Level 2 (Layer 2) blockchain node, focusing on scalabil
| `status` | ```String``` | | Current status of the L2 certification authority (e.g., active, inactive). |
| `certif_type` | ```String``` | | Type of certification or service provided by the L2 certif. |
## 7. <a name='Metadata'></a>Metadata
## 8. <a name='Metadata'></a>Metadata
`MetaData` aggregates various metadata types, including tags, zones, and key lists, offering a comprehensive view of metadata for diverse applications.
@ -539,7 +568,7 @@ This struct represents a Level 2 (Layer 2) blockchain node, focusing on scalabil
| `legal_text_list` | ```Vec<String>``` | | A list of legal texts associated with the metadata. |
| `key_list` | ```Vec<KeyEncryption>``` | | A list of key encryption methods associated with the metadata. |
### 7.1. <a name='MetadataContractPublic'></a>MetadataContractPublic
### 8.1. <a name='MetadataContractPublic'></a>MetadataContractPublic
The `MetadataContractPublic` struct encapsulates public metadata for contracts, providing transparency and accessibility of contract-related information.
@ -547,7 +576,7 @@ The `MetadataContractPublic` struct encapsulates public metadata for contracts,
|----------------|----------------|--------|------------------------------------------------------------|
| `meta_data` | ```MetaData``` | | Represents the public metadata associated with a contract. |
### 7.2. <a name='MetadataPrivate'></a>MetadataPrivate
### 8.2. <a name='MetadataPrivate'></a>MetadataPrivate
`MetadataPrivate` holds private metadata, ensuring the confidentiality of sensitive information associated with entities or contracts.
@ -555,7 +584,7 @@ The `MetadataContractPublic` struct encapsulates public metadata for contracts,
|----------------|----------------|--------|------------------------------------------------------------|
| `meta_data` | ```MetaData``` | | Represents the private metadata associated with an entity. |
### 7.3. <a name='MetadataRoleConfidential'></a>MetadataRoleConfidential
### 8.3. <a name='MetadataRoleConfidential'></a>MetadataRoleConfidential
This struct contains role-specific confidential metadata, balancing the need for privacy with role-based access and transparency.
@ -563,7 +592,7 @@ This struct contains role-specific confidential metadata, balancing the need for
|----------------|----------------|--------|-------------------------------------------------------------------------------|
| `meta_data` | ```MetaData``` | | Represents the role-specific confidential metadata associated with an entity. |
### 7.4. <a name='Amount'></a>Amount
### 8.4. <a name='Amount'></a>Amount
The `Amount` struct details financial amounts, including its timestamp, unit, and changes, facilitating precise financial transactions and records.
@ -575,7 +604,7 @@ The `Amount` struct details financial amounts, including its timestamp, unit, an
| `amount_unit` | ```String``` | | The unit of the amount, such as "USD", "EUR", etc. |
| `amount_unit_ref` | ```String``` | | A reference to an external unit system, providing context for the `amount_unit`. |
### 7.5. <a name='Number'></a>Number
### 8.5. <a name='Number'></a>Number
`Number` provides a numeric value and its unit, supporting a wide range of quantitative representations in system operations.
@ -585,7 +614,7 @@ The `Amount` struct details financial amounts, including its timestamp, unit, an
| `number` | ```i32``` | | The numeric value. |
| `number_unit` | ```String``` | | The unit of measurement for the number, if applicable. |
## 8. <a name='Request'></a>Request
## 9. <a name='Request'></a>Request
Defines a general request structure within the system, encapsulating details about the requested item, its type, version, and associated process and document references.
@ -601,7 +630,7 @@ Defines a general request structure within the system, encapsulating details abo
| `request_prd_origin_hash` | ```String``` | Yes | Optional hash of the originating RequestPrd. |
| `item_reference_hash` | ```String``` | Yes | Optionally specifies the hash of the item related to the request. |
## 9. <a name='RequestPcd'></a> RequestPcd
## 10. <a name='RequestPcd'></a> RequestPcd
The `request_pcd` struct integrates a request with a list of generic encrypted items and pagination details, facilitating the handling of encrypted RequestPcd requests within the system.
@ -611,7 +640,7 @@ The `request_pcd` struct integrates a request with a list of generic encrypted i
| `item_list` | ```Vec< RequestPcdItemGenericEnc>``` | | List of generic encrypted items. |
| `pagination` | ```Pagination``` | Yes | Pagination details, assuming `Pagination` is a predefined struct. |
### 9.1. <a name='Pagination'></a>Pagination
### 10.1. <a name='Pagination'></a>Pagination
The `Pagination` struct is essential for managing large datasets, detailing the pagination strategy with start index, number of items, and page index.
@ -621,7 +650,7 @@ The `Pagination` struct is essential for managing large datasets, detailing the
| `number` | ```usize``` | | Le nombre d'éléments par page. |
| `page_index` | ```usize``` | | L'indice de la page actuelle pour la pagination. |
### 9.2. <a name='RequestPcdItemEncAttributePublic'></a> RequestPcdItemEncAttributePublic
### 10.2. <a name='RequestPcdItemEncAttributePublic'></a> RequestPcdItemEncAttributePublic
This struct outlines public encrypted attributes for RequestPcd items, ensuring the secure transmission of public attribute data.
@ -630,7 +659,7 @@ This struct outlines public encrypted attributes for RequestPcd items, ensuring
| `attribute_name` | ```String``` | | The name of the attribute. |
| `data_enc` | ```String``` | | The encrypted data associated with the attribute. |
### 9.3. <a name='RequestPcdItemEncAttributeRoleConfidential'></a> RequestPcdItemEncAttributeRoleConfidential
### 10.3. <a name='RequestPcdItemEncAttributeRoleConfidential'></a> RequestPcdItemEncAttributeRoleConfidential
`request_pcdItemEncAttributeRoleConfidential` deals with role-specific confidential encrypted attributes, securing sensitive data while allowing role-based access.
@ -640,7 +669,7 @@ This struct outlines public encrypted attributes for RequestPcd items, ensuring
| `data_enc` | ```String``` | Yes | The encrypted data associated with the attribute. |
| `key` | ```KeyEncryption``` | Yes | The key used for encrypting the data. |
### 9.4. <a name='RequestPcdItemEncAttributePrivate'></a> RequestPcdItemEncAttributePrivate
### 10.4. <a name='RequestPcdItemEncAttributePrivate'></a> RequestPcdItemEncAttributePrivate
It specifies private encrypted attributes for `request_pcd` items, protecting the most sensitive information with encryption.
@ -649,7 +678,7 @@ It specifies private encrypted attributes for `request_pcd` items, protecting th
| `attribute_name` | ```String``` | | The name of the attribute. |
| `data_enc` | ```String``` | Yes | The encrypted data associated with this attribute name. |
### 9.5. <a name='RequestPcdItemGenericEnc'></a> RequestPcdItemGenericEnc
### 10.5. <a name='RequestPcdItemGenericEnc'></a> RequestPcdItemGenericEnc
`request_pcdItemGenericEnc` encompasses encrypted items with optional lists of public, role-confidential, and private encrypted attributes, offering a flexible encryption model for diverse data types.
@ -660,7 +689,7 @@ It specifies private encrypted attributes for `request_pcd` items, protecting th
| `request_pcd_item_enc_attribute_role_confidential_list` | ```Vec< RequestPcdItemEncAttributeRoleConfidential>``` | Yes | Optional list of role-confidential encrypted attributes. |
| `request_pcd_item_enc_attribute_private_list` | ```Vec< RequestPcdItemEncAttributePrivate>``` | Yes | Optional list of private encrypted attributes. |
### 9.6. <a name='RequestPcdItemEnc'></a> RequestPcdItemEnc
### 10.6. <a name='RequestPcdItemEnc'></a> RequestPcdItemEnc
The `request_pcdItemEnc` struct encapsulates encrypted RequestPcd items, detailing the version, type, and name of the item, alongside encrypted attributes segregated into public, role-confidential, and private categories, ensuring comprehensive encryption coverage.
@ -674,7 +703,7 @@ The `request_pcdItemEnc` struct encapsulates encrypted RequestPcd items, detaili
| `request_pcd_item_enc_attribute_role_confidential_list` | ```Vec< RequestPcdItemEncAttributeRoleConfidential>``` | | List of role-confidential encrypted attributes. |
| `request_pcd_item_enc_attribute_private_list` | ```Vec< RequestPcdItemEncAttributePrivate>``` | | List of private encrypted attributes. |
## 10. <a name='RequestPrd'></a>RequestPrd
## 11. <a name='RequestPrd'></a>RequestPrd
Encapsulates a detailed request within the system, focusing on the interaction with Portable Request Documents ( RequestPrd) and specifying various levels of message confidentiality and intended service provider (SP) communication details.
@ -705,9 +734,9 @@ Encapsulates a detailed request within the system, focusing on the interaction w
| `certif_key_enc_by_shared_secret` | ```String``` | Yes | Encrypted certification key, encrypted with a shared secret. |
| `device_footprint_enc_by_sp_shared_secret` | ```String``` | | The device footprint encrypted by a service provider's shared secret. |
### 10.1. <a name='RequestPrdResponse'></a>RequestPrdResponse
### 11.1. <a name='RequestPrdResponse'></a>RequestPrdResponse
`request_prd` and its variations (Confirm, KeyBackup, KeyHello, List, Message, Response, Update) represent different aspects and actions related to Portable Request Documents ( RequestPrd), covering everything from confirmation to updates, key management, and messaging, essential for managing and processing RequestPrds securely and efficiently.
`request_prd` and its variations represent different aspects and actions related to Portable Request Documents ( RequestPrd), covering everything from confirmation to updates, key management, and messaging, essential for managing and processing RequestPrds securely and efficiently.
| Attribute Name | Type | Option | Description |
|---------------------------------|--------------------|--------|------------------------------------------------------------|
@ -716,7 +745,7 @@ Encapsulates a detailed request within the system, focusing on the interaction w
| `shared_secret_key` | ```eyEncryption``` | Yes | Optional encryption key used for shared secrets. |
| `shard_enc_by_sp_shared_secret` | ```String``` | Yes | The shard encrypted by a service provider's shared secret. |
### 10.2. <a name='RequestPrdConfirm'></a>RequestPrdConfirm
### 11.2. <a name='RequestPrdConfirm'></a>RequestPrdConfirm
The `request_prdConfirm` struct is designed for confirming actions or requests within the system, utilizing a Portable Request Document ( RequestPrd) alongside an encrypted confirmation code, ensuring secure acknowledgment of operations.
@ -725,34 +754,17 @@ The `request_prdConfirm` struct is designed for confirming actions or requests w
| `request_prd` | ```request_prd``` | | The RequestPrd (Portable Request Document) request. |
| `code_confirm_enc_by_shared_secret` | ```String``` | Yes | The confirmation code encrypted by a shared secret. |
### 10.3. <a name='RequestPrdKeyBackup'></a>RequestPrdKeyBackup
`request_prdKeyBackup` focuses on backup functionalities for RequestPrd keys, incorporating device footprint and shard information, encrypted for security, facilitating the safe backup and recovery of crucial cryptographic keys.
| Attribute Name | Type | Option | Description |
|----------------------------------|-------------------|--------|-----------------------------------------------------------------------------|
| `request_prd` | ```request_prd``` | | The RequestPrd (Portable Request Document) request. |
| `pre_id_enc_by_sp_shared_secret` | ```String``` | | The first part of the hash encrypted by a service provider's shared secret. |
| `shard_enc_by_sp_shared_secret` | ```String``` | | The shard encrypted by a service provider's shared secret. |
### 10.4. <a name='RequestPrdKeyHello'></a>RequestPrdKeyHello
The `request_prdKeyHello` struct is employed for initiating cryptographic communications, specifically for sharing initial key information or for cryptographic introductions between entities, enhancing secure connections.
| Attribute Name | Type | Option | Description |
|----------------------------------|-------------------|--------|----------------------------------------------------------------------------------|
| `request_prd` | ```request_prd``` | | Represents a Portable Request Document ( RequestPrd). |
| `pre_id_enc_by_sp_shared_secret` | ```String``` | | The encrypted hash of part 1, encrypted by the service provider's shared secret. |
### 10.5. <a name='RequestPrdList'></a>RequestPrdList
### 11.3. <a name='RequestPrdList'></a>RequestPrdList
`request_prdList` struct is utilized for listing or querying RequestPrds, aiding in the retrieval or enumeration of Portable Request Documents within the system, streamlining the management and access of RequestPrds.
| Attribute Name | Type | Option | Description |
|----------------|-------------------|--------|-----------------------------------------|
| `request_prd` | ```request_prd``` | | Represents a Portable Request Document. |
| Attribute Name | Type | Option | Description |
|---------------------------------------|-------------------|--------|-------------------------------------------------------------------------------------------|
| `request_prd` | ```request_prd``` | | Represents a Portable Request Document. |
| `item_member_enc_by_sp_shared_secret` | ```String``` | Yes | (only for members manager) ItemMember to add if the `pre_id` not exist to the member list |
| `pre_id_sp_enc_by_shared_secret` | ```string``` | Yes | (only for members manager) An existing member `pre_id`. |
### 10.6. <a name='RequestPrdMessage'></a>RequestPrdMessage
### 11.4. <a name='RequestPrdMessage'></a>RequestPrdMessage
The `request_prdMessage` struct serves the purpose of encapsulating messages within RequestPrds, allowing for secure and structured communication of information wrapped in a Portable Request Document.
@ -761,7 +773,7 @@ The `request_prdMessage` struct serves the purpose of encapsulating messages wit
| `request_prd` | ```request_prd``` | | Represents a Portable Request Document. |
| `raw_transaction_list` | ```Vec<String>``` | Yes | Represents a Portable Request Document. |
### 10.7. <a name='RequestPrdResponse-1'></a>RequestPrdResponse
### 11.5. <a name='RequestPrdResponse-1'></a>RequestPrdResponse
`request_prdResponse` is designed for responding to RequestPrd requests, including the original RequestPrd, signature for verification, and optional encrypted methods, ensuring a secure and verifiable response mechanism.
@ -770,7 +782,7 @@ The `request_prdMessage` struct serves the purpose of encapsulating messages wit
| `request_prd` | ```request_prd``` | | Represents a Portable Request Document. |
| `sig_value` | ```String``` | | The signature value for the response. |
### 10.8. <a name='RequestPrdUpdate'></a>RequestPrdUpdate
### 11.6. <a name='RequestPrdUpdate'></a>RequestPrdUpdate
`request_prdUpdate` struct facilitates the updating of RequestPrds, incorporating new version hashes and lists of related RequestPcd hashes, alongside requested methods for payments, deposits, and commitments, ensuring RequestPrds remain current and relevant.
@ -778,11 +790,11 @@ The `request_prdMessage` struct serves the purpose of encapsulating messages wit
|----------------|-------------------|--------|-----------------------------------------|
| `request_prd` | ```request_prd``` | | Represents a Portable Request Document. |
## 11. <a name='Roles'></a>Roles
## 12. <a name='Roles'></a>Roles
The `Roles` enum defines the various roles within the system, specifying responsibilities, required security measures such as two-factor authentication, validation timeouts, and conditions for action validation, crucial for role-based access control and process flow.
### 11.1. <a name='Role'></a>Role
### 12.1. <a name='Role'></a>Role
The `Role` struct broadly defines a role within the system, encapsulating the general responsibilities, required security measures like two-factor authentication, validation timeouts, and conditions for action validation. This serves as a foundation for more specific role definitions, ensuring a flexible yet secure role-based access and action framework.
@ -803,9 +815,9 @@ The `Role` struct broadly defines a role within the system, encapsulating the ge
| `role_resolve` | ```String``` | Yes | Optional role for resolving conflicts. |
| `role_renew` | ```String``` | Yes | Optional role for renewing conditions or capabilities. |
### 11.2. <a name='Conditions'></a>Conditions
### 12.2. <a name='Conditions'></a>Conditions
#### 11.2.1. <a name='TransactionMode'></a>TransactionMode
#### 12.2.1. <a name='TransactionMode'></a>TransactionMode
`TransactionMode` and its specific types (Distribution, Direct) describe how transactions are handled within the system, whether through direct communication or distributed across multiple entities, influencing the flow and security of transactions.
@ -822,7 +834,7 @@ The `Role` struct broadly defines a role within the system, encapsulating the ge
| `to_type` | ```String``` | | Soit "addresses" soit "roles" |
| `to_method` | ```String``` | | Méthode de distribution de la somme des versements : "Amount divided" ou "Same Amount" |
#### 11.2.2. <a name='ConditionPayment'></a>ConditionPayment
#### 12.2.2. <a name='ConditionPayment'></a>ConditionPayment
This struct outlines the conditions for payments, including the amount, payment method, and transaction mode, setting the parameters for financial transactions.
@ -832,7 +844,7 @@ This struct outlines the conditions for payments, including the amount, payment
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.3. <a name='ConditionCommitment'></a>ConditionCommitment
#### 12.2.3. <a name='ConditionCommitment'></a>ConditionCommitment
The `ConditionCommitment` struct specifies a condition involving an artefact role and transaction mode, defining how commitments are handled and verified.
@ -842,7 +854,7 @@ The `ConditionCommitment` struct specifies a condition involving an artefact rol
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.4. <a name='ConditionDeposit'></a>ConditionDeposit
#### 12.2.4. <a name='ConditionDeposit'></a>ConditionDeposit
`ConditionDeposit` is similar to ConditionCap but specifically focuses on deposit-related transactions, establishing the criteria for deposit actions.
@ -852,7 +864,7 @@ The `ConditionCommitment` struct specifies a condition involving an artefact rol
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.5. <a name='ConditionOrchestration'></a>ConditionOrchestration
#### 12.2.5. <a name='ConditionOrchestration'></a>ConditionOrchestration
`ConditionOrchestration` defines success and failure roles for orchestration conditions, guiding the flow of processes based on outcomes.
@ -863,7 +875,7 @@ The `ConditionCommitment` struct specifies a condition involving an artefact rol
| `role_ko` | ```String``` | | Represents the failed outcome role in the condition. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.6. <a name='ConditionCap'></a>ConditionCap
#### 12.2.6. <a name='ConditionCap'></a>ConditionCap
The `ConditionCap` struct represents a condition related to a deposit role and its associated transaction mode, indicating the requirements for transactions within this context.
@ -873,7 +885,7 @@ The `ConditionCap` struct represents a condition related to a deposit role and i
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.7. <a name='ConditionRequestPrdAddressSet'></a>Condition RequestPrdAddressSet
#### 12.2.7. <a name='ConditionRequestPrdAddressSet'></a>Condition RequestPrdAddressSet
Condition `request_prdAddressSet` involves complex conditions based on RequestPrd addresses, including quotas, values, and scores, to determine condition fulfillment.
@ -903,7 +915,7 @@ Condition `request_prdAddressSet` involves complex conditions based on RequestPr
| `request_prd_sp_address_score_min_min_ok` | ```boolean``` | Yes | Indicates if the minimum score is considered OK. |
| `request_prd_sp_address_score_min_min_per` | ```i64``` | Yes | The minimum percentage for the minimum score. |
#### 11.2.8. <a name='ConditionPublish'></a>ConditionPublish
#### 12.2.8. <a name='ConditionPublish'></a>ConditionPublish
`ConditionPublish` sets the criteria for publishing actions, including data size limits, publication counts, and timeouts, to regulate content distribution.
@ -918,7 +930,7 @@ Condition `request_prdAddressSet` involves complex conditions based on RequestPr
| `request_prd_waiting_timeout` | ```u64``` | | The waiting timeout for a publication to be considered valid. |
| `request_pcd_waiting_timeout` | ```u64``` | | The waiting timeout for the condition to be considered met. |
### 11.3. <a name='RolesGroup'></a>RolesGroup
### 12.3. <a name='RolesGroup'></a>RolesGroup
RolesGroup outlines a collection of roles.
@ -929,7 +941,7 @@ RolesGroup outlines a collection of roles.
| `role_process` | ```String``` | | Represents the entities charged with defining and managing processes within the system. |
| `role_artefact_list` | ```Vec<String>``` | | A list of artefact roles, allowing customization and extension of functionalities and interactions beyond standard roles. |
#### 11.3.1. <a name='RoleArtefact'></a>RoleArtefact
#### 12.3.1. <a name='RoleArtefact'></a>RoleArtefact
The `RoleArtefact` struct is utilized to define the role associated with artefacts within the system. It specifies the responsibilities and permissions tied to the handling, management, or interaction with artefacts, ensuring clarity in role-based actions and access controls related to artefact-related operations.
@ -938,7 +950,7 @@ The `RoleArtefact` struct is utilized to define the role associated with artefac
| `item_name` | ```String``` | | The name of the item associated with the deposit. |
| `role` | ```Role``` | | The role associated with this deposit. |
#### 11.3.2. <a name='RoleDeposit'></a>RoleDeposit
#### 12.3.2. <a name='RoleDeposit'></a>RoleDeposit
`RoleDeposit` outlines the role and responsibilities concerning deposits in the system. It identifies the specific obligations and permissions granted to entities managing or engaging with deposit transactions, providing a structured approach to deposit management and execution.
@ -947,7 +959,7 @@ The `RoleArtefact` struct is utilized to define the role associated with artefac
| `item_name` | ```String``` | | The name of the item associated with the artefact. |
| `role` | ```Role``` | | The role associated with this artefact. |
#### 11.3.3. <a name='RoleCommitment'></a>RoleCommitment
#### 12.3.3. <a name='RoleCommitment'></a>RoleCommitment
The `RoleCommitment` struct details the role associated with commitments, delineating the duties and authorities of entities tasked with creating, managing, or fulfilling commitments. This struct ensures that commitment-related activities are clearly defined and regulated within the system.
@ -956,7 +968,7 @@ The `RoleCommitment` struct details the role associated with commitments, deline
| `item_name` | ```String``` | | The name of the item associated with the commitment. |
| `role` | ```Role``` | | The role associated with this commitment. |
#### 11.3.4. <a name='RoleMember'></a>RoleMember
#### 12.3.4. <a name='RoleMember'></a>RoleMember
`RoleMember` defines the role of members within the system, specifying the rights and responsibilities of membership. This includes access to resources, participation in processes, and contributions to decision-making, highlighting the importance of members in the system's ecosystem.
@ -965,7 +977,7 @@ The `RoleCommitment` struct details the role associated with commitments, deline
| `item_name` | ```String``` | | The name of the item associated with the member. |
| `role` | ```Role``` | | The role associated with this member. |
### 11.4. <a name='RolePeer'></a>RolePeer
### 12.4. <a name='RolePeer'></a>RolePeer
The `RolePeer` struct identifies peers associated with specific roles, detailing their identifiers, associated peers, and metadata, essential for defining peer responsibilities and permissions within the networked environment.
@ -974,7 +986,7 @@ The `RolePeer` struct identifies peers associated with specific roles, detailing
| `item_name` | ```String``` | | The name of the item associated with the peer. |
| `role` | ```Role``` | | The role associated with this peer. |
#### 11.4.1. <a name='RolePayment'></a>RolePayment
#### 12.4.1. <a name='RolePayment'></a>RolePayment
The `RolePayment` struct is dedicated to defining the role related to payments, outlining the specific tasks, permissions, and responsibilities assigned to entities handling or involved in payment transactions, ensuring secure and orderly payment processes.
@ -983,7 +995,7 @@ The `RolePayment` struct is dedicated to defining the role related to payments,
| `item_name` | ```String``` | | The name of the item associated with the payment. |
| `role` | ```Role``` | | The role associated with this payment. |
#### 11.4.2. <a name='RoleProcess'></a>RoleProcess
#### 12.4.2. <a name='RoleProcess'></a>RoleProcess
`RoleProcess` describes the role associated with processes within the system. It specifies the expectations, duties, and permissions of entities that initiate, manage, or participate in various system processes, facilitating smooth and regulated process flow.
@ -992,9 +1004,9 @@ The `RolePayment` struct is dedicated to defining the role related to payments,
| `item_name` | ```String``` | | The name of the item associated with the process. |
| `role` | ```Role``` | | The role associated with this process. |
## 12. <a name='Rustconsiderations'></a>12. Rust considerations
## 13. <a name='Rustconsiderations'></a>12. Rust considerations
### 12.1. <a name='GeneralImplicationsforProjectObjects'></a> General Implications for Project Objects
### 13.1. <a name='GeneralImplicationsforProjectObjects'></a> General Implications for Project Objects
Incorporating these traits into a struct's definition enhances its utility across various aspects of a project. For instance:
@ -1003,31 +1015,31 @@ Incorporating these traits into a struct's definition enhances its utility acros
* **Comparison and ordering traits (PartialEq, Eq, PartialOrd, Ord)**: are crucial for logic checks, sorting, and storing objects in data structures that require ordering or uniqueness.
* **The Hash trait**: expands the struct's utility in hash-based collections, enabling efficient data retrieval and storage.
### 12.2. <a name='Debug'></a> Debug
### 13.2. <a name='Debug'></a> Debug
The Debug trait allows instances of the struct to be formatted using the {:?} formatter. This is essential for debugging purposes, as it provides a way to output the contents of the struct to the console or logs, aiding in the development and troubleshooting process.
Serialize, Deserialize (serde crate)
Serialize and Deserialize traits from the serde crate enable the struct to be easily converted to and from data formats such as JSON, YAML, or TOML. This is particularly useful for web applications or services that need to send or receive data in a structured format over the network.
### 12.3. <a name='Default'></a> Default
### 13.3. <a name='Default'></a> Default
Implementing the Default trait allows for the creation of a struct with default values. This is useful for initializing structs with a set of predetermined values or when a struct needs to be created without specifying every field explicitly.
Clone
The Clone trait allows for the creation of an exact copy of a struct instance. This is crucial for cases where a mutable copy of a struct is needed, while keeping the original instance unchanged.
### 12.4. <a name='PartialEqEq'></a> PartialEq, Eq
### 13.4. <a name='PartialEqEq'></a> PartialEq, Eq
PartialEq and Eq traits enable comparison operations for instances of the struct. While PartialEq allows for partial equality checks (where some of the comparisons might be indeterminate), Eq denotes that every comparison will either be true or false, ensuring a stricter equality condition that is necessary for certain collections or logic checks.
### 12.5. <a name='Hash'></a> Hash
### 13.5. <a name='Hash'></a> Hash
The Hash trait is used to compute a hash value for instances of the struct. This is essential for structs that need to be stored in collections such as HashMap or HashSet, where a unique identifier is required to efficiently retrieve or store items.
### 12.6. <a name='PartialOrdOrd'></a> PartialOrd, Ord
### 13.6. <a name='PartialOrdOrd'></a> PartialOrd, Ord
PartialOrd and Ord traits allow for ordering comparisons between instances of the struct. PartialOrd provides functionality for partial ordering, where some comparisons might not produce a clear order, whereas Ord requires a total ordering, ensuring that any two instances can be reliably ordered. This is critical for sorting operations or when structs are stored in ordered collections.
FromForm (rocket crate)
## 13. <a name='Todo'></a>Todo
## 14. <a name='Todo'></a>Todo

View File

@ -7,26 +7,26 @@
* 6. [Confidentialité des `RequestPcd` et RequestPrd](#ConfidentialitdesRequestPcdetRequestPrd)
* 7. [Confidentialité des messages sur les relais](#Confidentialitdesmessagessurlesrelais)
* 8. [Clé de chiffrement robuste](#Cldechiffrementrobuste)
* 8.1. [Résistance aux attaques cryptanalytiques](#Rsistanceauxattaquescryptanalytiques)
* 8.2. [Diffusion et confusion](#Diffusionetconfusion)
* 8.3. [Non-linéarité](#Non-linarit)
* 8.1. [Résistance aux attaques cryptanalytiques](#Rsistanceauxattaquescryptanalytiques)
* 8.2. [Diffusion et confusion](#Diffusionetconfusion)
* 8.3. [Non-linéarité](#Non-linarit)
* 9. [Fonctions de hashage](#Fonctionsdehashage)
* 10. [Exigences génériques](#Exigencesgnriques)
* 10.1. [Pas de secret de la conception](#Pasdesecretdelaconception)
* 10.2. [Validé par la communauté scientifique](#Validparlacommunautscientifique)
* 10.3. [Implémentation correcte](#Implmentationcorrecte)
* 10.4. [Détermination](#Dtermination)
* 10.5. [Rapidité de calcul](#Rapiditdecalcul)
* 10.6. [Diffusion (ou effet avalanche)](#Diffusionoueffetavalanche)
* 10.7. [Résistance aux collisions](#Rsistanceauxcollisions)
* 10.7.1. [Résistance aux collisions faibles](#Rsistanceauxcollisionsfaibles)
* 10.7.2. [Résistance aux collisions fortes](#Rsistanceauxcollisionsfortes)
* 10.8. [Résistance à la pre_id](#Rsistancelapre_id)
* 10.8.1. [Résistance à la pre_id](#Rsistancelapre_id-1)
* 10.8.2. [Résistance à la seconde pre_id](#Rsistancelasecondepre_id)
* 10.9. [Compression](#Compression)
* 10.10. [Non réversibilité](#Nonrversibilit)
* 10.11. [Absence de toute structure prévisible](#Absencedetoutestructureprvisible)
* 10.1. [Pas de secret de la conception](#Pasdesecretdelaconception)
* 10.2. [Validé par la communauté scientifique](#Validparlacommunautscientifique)
* 10.3. [Implémentation correcte](#Implmentationcorrecte)
* 10.4. [Détermination](#Dtermination)
* 10.5. [Rapidité de calcul](#Rapiditdecalcul)
* 10.6. [Diffusion (ou effet avalanche)](#Diffusionoueffetavalanche)
* 10.7. [Résistance aux collisions](#Rsistanceauxcollisions)
* 10.7.1. [Résistance aux collisions faibles](#Rsistanceauxcollisionsfaibles)
* 10.7.2. [Résistance aux collisions fortes](#Rsistanceauxcollisionsfortes)
* 10.8. [Résistance à la pre_id](#Rsistancelapre_id)
* 10.8.1. [Résistance à la pre_id](#Rsistancelapre_id-1)
* 10.8.2. [Résistance à la seconde pre_id](#Rsistancelasecondepre_id)
* 10.9. [Compression](#Compression)
* 10.10. [Non réversibilité](#Nonrversibilit)
* 10.11. [Absence de toute structure prévisible](#Absencedetoutestructureprvisible)
* 11. [Gestion sécurisée des clés](#Gestionscurisedescls)
* 12. [Performance](#Performance)
* 13. [Disponibilité](#Disponibilit)
@ -40,11 +40,12 @@
/vscode-markdown-toc-config -->
<!-- /vscode-markdown-toc --># Exigences de sécurité et de confidentialité
## 1. <a name='Documentsderfrence'></a>Documents de référence
## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Dtailsdeconception'></a>Détails de conception
## 2. <a name='Dtailsdeconception'></a>Détails de conception
Tous les chiffrements symétriques sont opérés avec l'algorithme AES-GCM 256 bits.
@ -52,23 +53,23 @@ Tous les hash sont opérés avec l'algorithme SHA256.
La librairie Rust `Nakamoto`, permet de scanner les blocs (et bientôt la mempool) côté client et de détecter des transactions Bitcoin correspondant aux clés publiques des clés cryptographiques privées du HD Wallet Bitcoin contenant les clés Bitcoin de mainnet et de signet.
## 3. <a name='Motdepasse'></a>Mot de passe
## 3. <a name='Motdepasse'></a>Mot de passe
Utilisation du mot de passe strictement en mémoire.
Mot de passe fort (18 caractères minimum avec minuscules, majuscules, lettre, nombres, et caractères spéciaux) ou mnémonique de 12 mots à noter ou certificat (ou équivalent) stocké de façon sécurisée.
## 4. <a name='Cache'></a>Cache
## 4. <a name='Cache'></a>Cache
Stockage sécurisé du cache par un chiffrement par le mot de passe.
## 5. <a name='Chiffrementdescommunications'></a>Chiffrement des communications
## 5. <a name='Chiffrementdescommunications'></a>Chiffrement des communications
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.
## 6. <a name='ConfidentialitdesRequestPcdetRequestPrd'></a>Confidentialité des `RequestPcd` et RequestPrd
## 6. <a name='ConfidentialitdesRequestPcdetRequestPrd'></a>Confidentialité des `RequestPcd` et RequestPrd
Le stockage chiffré de cache est un chiffrement symétrique conformément aux exigences suivantes.
@ -82,7 +83,7 @@ Le chiffrement des `RequestPcd` est un chiffrement symétrique conformément aux
* **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`.
@ -92,89 +93,89 @@ Tous les `RequestPrd` sont confirmés par un et chiffrent les clés transamises
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.
## 8. <a name='Cldechiffrementrobuste'></a>Clé de chiffrement robuste
## 8. <a name='Cldechiffrementrobuste'></a>Clé de chiffrement robuste
La force d'un algorithme de chiffrement symétrique repose largement sur la complexité de sa clé. Une clé plus longue offre généralement une meilleure sécurité. Les tailles de clé typiques pour un chiffrement fort sont de 128 bits, 192 bits, ou 256 bits. Pour l'AES-GCM, les clés de 256 bits sont à ce stade réputées "quantum-resistant" et sont donc à privilégier, elles satisfont aussi les contraintes suivantes.
### 8.1. <a name='Rsistanceauxattaquescryptanalytiques'></a>Résistance aux attaques cryptanalytiques
### 8.1. <a name='Rsistanceauxattaquescryptanalytiques'></a>Résistance aux attaques cryptanalytiques
Un algorithme fort doit résister à diverses attaques, y compris les attaques par force brute (où un attaquant essaie toutes les clés possibles), les attaques par texte clair connu, les attaques par texte clair choisi, les attaques par texte chiffré choisi, et plus encore. L'AES-GCM les clés de 256 bits n'est pas par design robuste à ces attaques, mais avec une clé suffisamment longue (de longueur quantique) le temps nécessaire est estimé comme équivalent à une résistance.
### 8.2. <a name='Diffusionetconfusion'></a>Diffusion et confusion
### 8.2. <a name='Diffusionetconfusion'></a>Diffusion et confusion
Ces deux principes, introduits par Claude Shannon, sont essentiels à la sécurité d'un algorithme. La diffusion vise à disperser l'influence d'un seul caractère du texte clair sur de nombreux caractères du texte chiffré, tandis que la confusion vise à complexifier la relation entre la clé de chiffrement et le texte chiffré.
### 8.3. <a name='Non-linarit'></a>Non-linéarité
### 8.3. <a name='Non-linarit'></a>Non-linéarité
L'algorithme doit incorporer des éléments non linéaires pour contrer les attaques linéaires et différentielles. Cela rend la prédiction du comportement de l'algorithme plus difficile pour un attaquant.
## 9. <a name='Fonctionsdehashage'></a>Fonctions de hashage
## 9. <a name='Fonctionsdehashage'></a>Fonctions de hashage
Les fonctions de hachage jouent un rôle crucial dans de nombreux domaines de la cryptographie et de la sécurité informatique, notamment dans la vérification de l'intégrité des données, l'authentification, la signature numérique, et la génération de jetons sécurisés. Pour être efficaces et sécurisées, ces fonctions doivent répondre à plusieurs exigences essentielles :
## 10. <a name='Exigencesgnriques'></a>Exigences génériques
## 10. <a name='Exigencesgnriques'></a>Exigences génériques
### 10.1. <a name='Pasdesecretdelaconception'></a>Pas de secret de la conception
### 10.1. <a name='Pasdesecretdelaconception'></a>Pas de secret de la conception
La sécurité d'un bon système cryptographique ne doit pas reposer sur le secret de son algorithme (principe de Kerckhoffs) et doit être basée sur des principes cryptographiques éprouvés.
### 10.2. <a name='Validparlacommunautscientifique'></a>Validé par la communauté scientifique
### 10.2. <a name='Validparlacommunautscientifique'></a>Validé par la communauté scientifique
Un algorithme est considéré comme plus fort s'il a été soumis à l'examen et à l'analyse de la communauté cryptographique internationale, qui cherche des vulnérabilités potentielles.
### 10.3. <a name='Implmentationcorrecte'></a>Implémentation correcte
### 10.3. <a name='Implmentationcorrecte'></a>Implémentation correcte
Une implémentation fautive d'un algorithme de chiffrement fort peut introduire des vulnérabilités. Il est crucial que l'implémentation soit vérifiée pour être sécurisée. La librairie utilisée doit avoir été l'objet d'un audit ([librairie aes-gcm de rust a été auditée](https://research.nccgroup.com/2020/02/26/public-report-rustcrypto-aes-gcm-and-chacha20poly1305-implementation-review/)).
### 10.4. <a name='Dtermination'></a>Détermination
### 10.4. <a name='Dtermination'></a>Détermination
Pour toute entrée donnée, la fonction de hachage doit toujours produire la même sortie.
### 10.5. <a name='Rapiditdecalcul'></a>Rapidité de calcul
### 10.5. <a name='Rapiditdecalcul'></a>Rapidité de calcul
La fonction doit être capable de générer le hachage rapidement, même pour de grandes quantités de données.
### 10.6. <a name='Diffusionoueffetavalanche'></a>Diffusion (ou effet avalanche)
### 10.6. <a name='Diffusionoueffetavalanche'></a>Diffusion (ou effet avalanche)
Un changement minime dans l'entrée (même un seul bit) doit entraîner un changement significatif et imprévisible dans la sortie. Cela garantit qu'il est difficile de prédire comment la sortie changera en fonction des modifications apportées à l'entrée.
### 10.7. <a name='Rsistanceauxcollisions'></a>Résistance aux collisions
### 10.7. <a name='Rsistanceauxcollisions'></a>Résistance aux collisions
Il doit être pratiquement impossible de trouver deux entrées distinctes qui produisent la même sortie. Cela se décline en deux sous-catégories :
#### 10.7.1. <a name='Rsistanceauxcollisionsfaibles'></a>Résistance aux collisions faibles
#### 10.7.1. <a name='Rsistanceauxcollisionsfaibles'></a>Résistance aux collisions faibles
Il est difficile de trouver une seconde entrée qui a le même hachage qu'une entrée spécifiée.
#### 10.7.2. <a name='Rsistanceauxcollisionsfortes'></a>Résistance aux collisions fortes
#### 10.7.2. <a name='Rsistanceauxcollisionsfortes'></a>Résistance aux collisions fortes
Il est difficile de trouver deux entrées distinctes qui produisent le même hachage.
### 10.8. <a name='Rsistancelapre_id'></a>Résistance à la pre_id
### 10.8. <a name='Rsistancelapre_id'></a>Résistance à la pre_id
Pour une sortie de hachage donnée, il doit être difficile de trouver une entrée qui correspond à cette sortie. Cela se décline également en deux sous-catégories :
#### 10.8.1. <a name='Rsistancelapre_id-1'></a>Résistance à la pre_id
#### 10.8.1. <a name='Rsistancelapre_id-1'></a>Résistance à la pre_id
Il est difficile de trouver une entrée qui hache vers une sortie de hachage spécifiée.
#### 10.8.2. <a name='Rsistancelasecondepre_id'></a>Résistance à la seconde pre_id
#### 10.8.2. <a name='Rsistancelasecondepre_id'></a>Résistance à la seconde pre_id
Étant donné une entrée, il est difficile de trouver une autre entrée qui produit le même hachage.
### 10.9. <a name='Compression'></a>Compression
### 10.9. <a name='Compression'></a>Compression
La fonction de hachage doit pouvoir prendre une entrée de taille arbitraire et produire une sortie de taille fixe.
### 10.10. <a name='Nonrversibilit'></a>Non réversibilité
### 10.10. <a name='Nonrversibilit'></a>Non réversibilité
Il doit être infaisable de retrouver l'entrée à partir de la sortie du hachage. Cela signifie que la fonction est à sens unique.
### 10.11. <a name='Absencedetoutestructureprvisible'></a>Absence de toute structure prévisible
### 10.11. <a name='Absencedetoutestructureprvisible'></a>Absence de toute structure prévisible
La fonction de hachage ne doit pas produire des sorties qui montrent des patterns ou des structures prévisibles, quelles que soient les entrées.
## 11. <a name='Gestionscurisedescls'></a>Gestion sécurisée des clés
## 11. <a name='Gestionscurisedescls'></a>Gestion sécurisée des clés
La manière dont les clés sont générées, stockées, distribuées, révoquées, et détruites est tout aussi importante que l'algorithme de chiffrement lui-même.
@ -184,24 +185,24 @@ Les parties sont pour la moitié stockées dans le contexte utilisateur (chiffr
L'utilisateur seul peut détruire une clé de révocation (`revoke`) ou supprimer l'image de login qui contient la première partie de la clé de login, indispensable pour recomposer sa clé.
## 12. <a name='Performance'></a>Performance
## 12. <a name='Performance'></a>Performance
Le temps de réponse doit être rapide pour les opérations de login. Ce temps sera estimé de façon empirique au fur et à mesure des implémentations.
## 13. <a name='Disponibilit'></a>Disponibilité
## 13. <a name='Disponibilit'></a>Disponibilité
La haute disponibilité et la reprise après sinistre sont permises par la redondance des `relais` sans système central ou critique et robustes à la défaillance d'une partie des participants. C'est idem pour la redondance au sein des `membres` des gestionnaires des membres dans les `processus`, qui ont tous des actions égales et robustes à la défaillance d'une partie des participants.
En cas de perte, vol, corruption, ou expiration des clés, l'utilisateur peut de son initiative et en toute autonomie révoquer une identité et en générer une nouvelle.
## 14. <a name='volutivit'></a>Évolutivité
## 14. <a name='volutivit'></a>Évolutivité
La capacité à gérer une augmentation du nombre d'`utilisateurs` est un équilibre arbitré par les parties prenantes, en fonction du besoin de `relais` et de `membres`. Les parties prenantes ont les moyens d'enrôler par eux-mêmes les relais et les membres par `rôles` et par `ItemProcess` .
## 15. <a name='AutresMesuresdescurit'></a>Autres Mesures de sécurité
## 15. <a name='AutresMesuresdescurit'></a>Autres Mesures de sécurité
Les mécanismes de défense contre les vulnérabilités courantes doivent être implémentés (CSRF, XSS).
À noter, que les seules bases de données sont dans l'IndexedDB des navigateurs et applications mobiles, côté utilisateur et écrasées des données confirmées reçues du réseau et toutes vérifiables. Tous les autres composants et utilisateurs ont un stockage en mémoire, non persisté (mais restauré à leur propre récupération de leur identité).
## 16. <a name='Todo'></a>Todo
## 16. <a name='Todo'></a>Todo

View File

@ -0,0 +1,494 @@
<mxfile host="Electron" modified="2024-02-21T22:04:09.748Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="eTHhYCDLtV5u6DPPvSQA" version="23.1.5" type="device">
<diagram id="bWoO5ACGZIaXrIiKNTKd" name="Page-1">
<mxGraphModel dx="3915" dy="841" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="202" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1254" y="491" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="203" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1235.7457165981" y="501" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="233" 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="204" target="228" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1199" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="234" 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="204" target="230" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1158" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="235" 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="204" target="231" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1119" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="236" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="204" target="232" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1080" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-287" 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;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="204" target="U1iS4aTrDNJz4kT7s3QN-288" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-780" y="525.8333333333335" as="targetPoint" />
</mxGeometry>
</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">
<mxGeometry x="-1217.4914331962004" y="511" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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">
<mxGeometry x="-1213.97" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="230" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-1172.9" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="231" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-1133.97" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="232" value="4" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-1094.03" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="DLJctxT3D2mWswRGw-9P-316" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="245" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="700" as="targetPoint" />
<Array as="points">
<mxPoint x="-1143" y="679" />
<mxPoint x="-950" y="679" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="245" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-1172.9" y="628.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-314" value="5" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-762" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-315" value="6" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-720.9300000000001" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-316" value="7" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-682" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-317" value="8" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-642.06" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-318" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-720.9300000000001" y="628.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="DLJctxT3D2mWswRGw-9P-317" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="U1iS4aTrDNJz4kT7s3QN-286" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="700" as="targetPoint" />
<Array as="points">
<mxPoint x="-692" y="680" />
<mxPoint x="-949" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-286" value="Message" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-722.0000000000001" y="643" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-288" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-795.8000000000001" y="511" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-289" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-777.5457165981001" y="521" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-291" 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-314" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-292" 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-315" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-293" 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-316" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<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" />
</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">
<mxGeometry x="-759.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-315" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1460" y="490.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-316" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1441.7457165981" y="500.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1423.4914331962004" y="510.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" edge="1" parent="1" target="228">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1200" y="560" />
<mxPoint x="-1200" y="598" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1400" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-319" 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;" edge="1" parent="1" target="230">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1158" y="560" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1358" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-320" 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;" edge="1" parent="1" target="231">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1119" y="560" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1320" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-321" 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;" edge="1" parent="1" target="232">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1080" y="560" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1280" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-322" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1254" y="700.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-323" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1235.7457165981" y="710.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-324" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-330">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1199" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-325" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-331">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1158" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-326" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-332">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1119" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-327" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-333">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1080" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-328" 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;fillColor=#f5f5f5;strokeColor=#666666;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-343">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-780" y="734.9033333333334" as="targetPoint" />
</mxGeometry>
</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;" vertex="1" parent="1">
<mxGeometry x="-1217.4914331962004" y="720.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1213.97" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-331" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1172.9" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-332" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1133.97" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-333" value="4" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1094.03" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-334" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-335">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="909.0699999999999" as="targetPoint" />
<Array as="points">
<mxPoint x="-1143" y="888.0699999999999" />
<mxPoint x="-950" y="888.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-335" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-1172.9" y="837.78" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-336" value="5" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-762" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-337" value="6" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-720.9300000000001" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-338" value="7" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-682" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-339" value="8" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-642.06" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-340" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-720.9300000000001" y="837.78" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-341" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-342">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="909.0699999999999" as="targetPoint" />
<Array as="points">
<mxPoint x="-692" y="889.0699999999999" />
<mxPoint x="-949" y="889.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-342" value="Message" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-722.0000000000001" y="852.0699999999999" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-343" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-795.8000000000001" y="720.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-344" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-777.5457165981001" y="730.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-345" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-336">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-346" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-337">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-347" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-338">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-339">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-349" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-759.2914331962005" y="740.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-350" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1460" y="700" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-351" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1441.7457165981" y="710" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1423.4914331962004" y="720" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-353" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-330">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1200" y="769.0699999999999" />
<mxPoint x="-1200" y="807.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1400" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-354" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-331">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1158" y="769.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1358" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-355" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-332">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1119" y="769.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1320" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-356" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-333">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1080" y="769.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1280" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-357" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1235.75" y="910" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-358" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1217.4957165981" y="920" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-359" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-365">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1180.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-360" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-366">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1139.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-361" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-367">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1100.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-362" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-368">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1061.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-363" 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;fillColor=#f5f5f5;strokeColor=#666666;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-375">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-761.75" y="944.8333333333335" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-364" value="RequestPrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1199.2414331962004" y="930" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1195.72" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-366" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1154.65" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-367" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1115.72" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-368" value="4" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1075.78" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-369" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-1154.65" y="1047.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-370" value="5" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-743.75" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-371" value="6" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-702.6800000000001" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-372" value="7" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-663.75" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-373" value="8" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-623.81" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-374" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-702.6800000000001" y="1047.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-375" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-777.5500000000001" y="930" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-376" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-759.2957165981001" y="940" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-377" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-370">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-378" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-371">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-379" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-372">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-373">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-381" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-741.0414331962005" y="950" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-382" value="All Roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="-1314" y="929" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-384" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-383">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1384" y="490" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-383" value="&lt;b&gt;ItemMember&lt;/b&gt;&lt;br&gt;(this user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-1468.8" y="410" width="170" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-385" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-386">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1375.2" y="700.0699999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-386" value="&lt;b&gt;ItemProcess&lt;/b&gt;&lt;br&gt;(with this new sp_address for the selected role)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-1510" y="620.07" width="270" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-388" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-387" target="fIN9LJIhpEY6EGzNKIPz-386">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-387" value="selected role" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1710" y="519.93" width="100" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-390" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-389" target="fIN9LJIhpEY6EGzNKIPz-386">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-389" value="last ItemProcess version" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1590" y="519.93" width="100" height="29" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

View File

@ -1,11 +1,11 @@
<mxfile host="Electron" modified="2024-02-21T12:46:59.866Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="SMHQJo1Ic7yDHmybzBKf" version="23.1.5" type="device">
<mxfile host="Electron" modified="2024-02-21T22:18:12.886Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="DbjK9scuMHsYfqSLYt17" version="23.1.5" type="device">
<diagram id="bWoO5ACGZIaXrIiKNTKd" name="Page-1">
<mxGraphModel dx="3915" dy="2010" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="4168" dy="2158" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="NZOLWawKIEO-KyV3UFa8-299" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-2180" width="782.04" height="234" as="geometry" />
<mxCell id="NZOLWawKIEO-KyV3UFa8-299" value="e" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-2199" y="-197.96" width="782.04" height="234" as="geometry" />
</mxCell>
<mxCell id="274" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="2" target="4" edge="1">
<mxGeometry relative="1" as="geometry" />
@ -163,14 +163,24 @@
<mxCell id="200" 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="196" target="197" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-286" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="196" target="202">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-80" y="186" />
<mxPoint x="-80" y="680" />
<mxPoint x="-1274" y="680" />
<mxPoint x="-1274" y="513" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="196" value="SharedProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="-269.55999999999995" y="260.71000000000004" width="170" height="30.71" as="geometry" />
<mxGeometry x="-269.55999999999995" y="171.00000000000006" width="170" height="30.71" as="geometry" />
</mxCell>
<mxCell id="197" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-230.55953219633375" y="323" width="88.8134519572954" height="30.709999999999994" as="geometry" />
<mxGeometry x="-230.55953219633375" y="233.29000000000002" width="88.8134519572954" height="30.709999999999994" as="geometry" />
</mxCell>
<mxCell id="198" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-220.55953219633375" y="333" width="88.8134519572954" height="30.709999999999994" as="geometry" />
<mxGeometry x="-220.55953219633375" y="243.29000000000002" width="88.8134519572954" height="30.709999999999994" as="geometry" />
</mxCell>
<mxCell id="205" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="199" target="202" edge="1">
<mxGeometry relative="1" as="geometry">
@ -180,16 +190,17 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-288" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="199" target="193" edge="1">
<mxCell id="HEAZNrv7IqFEUBU4v7G9-288" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="199" target="282" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-211" y="362" />
<mxPoint x="-360" y="362" />
<mxPoint x="-211" y="280" />
<mxPoint x="-360" y="280" />
<mxPoint x="-360" y="279" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="199" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-210.55953219633375" y="343" width="88.8134519572954" height="30.709999999999994" as="geometry" />
<mxGeometry x="-210.55953219633375" y="253.29000000000002" width="88.8134519572954" height="30.709999999999994" as="geometry" />
</mxCell>
<mxCell id="202" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1254" y="491" width="152.39494830511973" height="28.99999999999996" as="geometry" />
@ -238,8 +249,8 @@
<mxPoint x="-780" y="525.8333333333335" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="204" value="RequestPrdKeyBackup" 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" />
<mxCell id="204" value="RequestPrdList" 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" />
</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">
<mxGeometry x="-1213.97" y="597.78" width="28.93" height="28.93" as="geometry" />
@ -358,23 +369,23 @@
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-334" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="HEAZNrv7IqFEUBU4v7G9-333" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-184.55999999999995" y="217.28999999999996" as="targetPoint" />
<mxPoint x="-184.55999999999995" y="127.57999999999997" as="targetPoint" />
<Array as="points">
<mxPoint x="-185" y="194" />
<mxPoint x="-185" y="202" />
<mxPoint x="-185" y="104.29" />
<mxPoint x="-185" y="112.29" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-333" value="SDK" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="-241.16" y="166" width="114.62" height="29" as="geometry" />
<mxGeometry x="-241.16" y="76.29" width="114.62" height="29" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-337" 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="196" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-184.83999999999992" y="248" as="sourcePoint" />
<mxPoint x="-184.83999999999992" y="158.29000000000002" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-336" value="SharedProcessList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-277.55999999999995" y="217.28999999999996" width="180" height="30.71" as="geometry" />
<mxGeometry x="-277.55999999999995" y="127.57999999999997" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-341" 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="HEAZNrv7IqFEUBU4v7G9-338" target="HEAZNrv7IqFEUBU4v7G9-340" edge="1">
<mxGeometry relative="1" as="geometry">
@ -419,15 +430,6 @@
<mxCell id="HEAZNrv7IqFEUBU4v7G9-340" value="SharedPeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1005.8499999999999" y="460.29" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-380" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-770" y="269" as="targetPoint" />
<Array as="points">
<mxPoint x="-810" y="269" />
</Array>
<mxPoint x="-810" y="272.8600000000001" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-371" 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="XqTc7s29-gL46L3V4mSs-309" target="77" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
@ -447,95 +449,74 @@
<mxPoint x="-828.2399999999998" y="139.5" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-379" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-772" y="269" as="targetPoint" />
<Array as="points">
<mxPoint x="-790" y="317" />
<mxPoint x="-790" y="269" />
<mxPoint x="-772" y="269" />
</Array>
<mxPoint x="-810" y="316.5" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-378" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.003;entryY=0.571;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="181" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-790" y="354" />
<mxPoint x="-790" y="269" />
<mxPoint x="-772" y="269" />
</Array>
<mxPoint x="-810" y="354.21000000000004" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-291" 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="NZOLWawKIEO-KyV3UFa8-284" target="NZOLWawKIEO-KyV3UFa8-285" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-284" value="SeedRandomInital&lt;br&gt;512 bits" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="-2156.55" y="174" width="161.76" height="40" as="geometry" />
<mxGeometry x="-2175.55" y="-23.960000000000008" width="161.76" height="40" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-292" 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="NZOLWawKIEO-KyV3UFa8-285" target="NZOLWawKIEO-KyV3UFa8-290" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-285" value="&lt;b&gt;privKey&lt;/b&gt;&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="-1921.5300000000002" y="174" width="124.36" height="39" as="geometry" />
<mxGeometry x="-1940.5300000000002" y="-23.960000000000008" width="124.36" height="39" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-293" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="NZOLWawKIEO-KyV3UFa8-287" target="NZOLWawKIEO-KyV3UFa8-290" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1687.17" y="214" as="targetPoint" />
<mxPoint x="-1706.17" y="16.039999999999992" as="targetPoint" />
<Array as="points">
<mxPoint x="-1757.17" y="74" />
<mxPoint x="-1757.17" y="134" />
<mxPoint x="-1776.17" y="-123.96000000000001" />
<mxPoint x="-1776.17" y="-63.96000000000001" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-287" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;PwdHash&lt;/b&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-1916.88" y="54" width="125" height="40" as="geometry" />
<mxGeometry x="-1935.88" y="-143.96" width="125" height="40" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-296" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="NZOLWawKIEO-KyV3UFa8-290" target="NZOLWawKIEO-KyV3UFa8-294" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-290" value="AES-GCM-256" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-1717.17" y="114" width="137.39" height="40" as="geometry" />
<mxGeometry x="-1736.17" y="-83.96000000000001" width="137.39" height="40" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-294" value="&lt;b&gt;privKey_enc&lt;/b&gt;&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="-1538.92" y="115" width="124.36" height="39" as="geometry" />
<mxGeometry x="-1557.92" y="-82.96000000000001" width="124.36" height="39" as="geometry" />
</mxCell>
<mxCell id="NZOLWawKIEO-KyV3UFa8-300" value="&lt;b&gt;KeyEncryption&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-2169.3199999999997" y="10" width="110" height="30" as="geometry" />
<mxGeometry x="-2188.3199999999997" y="-187.96" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-284" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-2180" y="244" width="780.36" height="233" as="geometry" />
<mxGeometry x="-2199" y="46.03999999999999" width="780.36" height="233" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-288" 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="XqTc7s29-gL46L3V4mSs-289" target="XqTc7s29-gL46L3V4mSs-295" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-289" value="&lt;b&gt;part&lt;br&gt;&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1921.5300000000004" y="423" width="124.36" height="39" as="geometry" />
<mxGeometry x="-1940.5300000000004" y="225.04" width="124.36" height="39" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-292" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="XqTc7s29-gL46L3V4mSs-293" target="XqTc7s29-gL46L3V4mSs-295" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1687.17" y="463" as="targetPoint" />
<mxPoint x="-1706.17" y="265.03999999999996" as="targetPoint" />
<Array as="points">
<mxPoint x="-1757.17" y="323" />
<mxPoint x="-1757.17" y="383" />
<mxPoint x="-1776.17" y="125.03999999999999" />
<mxPoint x="-1776.17" y="185.04" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-293" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;PwdHash&lt;/b&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-1922.1699999999998" y="300" width="125" height="40" as="geometry" />
<mxGeometry x="-1941.1699999999998" y="102.03999999999999" width="125" height="40" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-294" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="XqTc7s29-gL46L3V4mSs-295" target="XqTc7s29-gL46L3V4mSs-296" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-295" value="AES-GCM-256" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-1717.17" y="363" width="137.39" height="40" as="geometry" />
<mxGeometry x="-1736.17" y="165.04" width="137.39" height="40" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-296" value="&lt;b&gt;part_enc&lt;/b&gt;&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="-1538.92" y="364" width="124.36" height="39" as="geometry" />
<mxGeometry x="-1557.92" y="166.04" width="124.36" height="39" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-300" value="&lt;b&gt;PartEncryption&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-2169.3199999999997" y="254" width="110" height="30" as="geometry" />
<mxGeometry x="-2188.3199999999997" y="56.03999999999999" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-304" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;PartEncryption&lt;/b&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-542" y="165" width="137.39" height="30" as="geometry" />
@ -546,15 +527,6 @@
<mxCell id="XqTc7s29-gL46L3V4mSs-310" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;KeyRevokeScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;KeyEncryption&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-971.0000000000001" y="82" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-314" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyRecoverScan&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;KeyEncryption&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-964.1" y="262" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-315" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;KeyMainSpend&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;KeyEncryption&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-964.0000000000001" y="303" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="XqTc7s29-gL46L3V4mSs-316" value="&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;KeyMainScan&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: normal; background-color: initial;&quot;&gt;KeyEncryption&lt;/span&gt;&lt;/div&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-964.0000000000001" y="341.71" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-286" value="Message" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-722.0000000000001" y="643" width="60" height="30" as="geometry" />
</mxCell>
@ -579,58 +551,212 @@
<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">
<mxGeometry x="-759.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-295" value="From Members role" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-945.8499999999999" y="610" width="60" height="33" as="geometry" />
<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">
<mxGeometry x="-1320" y="517" width="60" height="33" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-296" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-2180" y="-209" width="780.36" height="200" as="geometry" />
<mxGeometry x="-2199" y="-406.96000000000004" width="780.36" height="200" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-297" 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="U1iS4aTrDNJz4kT7s3QN-302" target="U1iS4aTrDNJz4kT7s3QN-301" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1916.0700000000002" y="1" as="targetPoint" />
<mxPoint x="-1935.0700000000002" y="-196.96" as="targetPoint" />
<Array as="points">
<mxPoint x="-1950.87" y="-53" />
<mxPoint x="-1950.87" y="-89" />
<mxPoint x="-1969.87" y="-250.96" />
<mxPoint x="-1969.87" y="-286.96000000000004" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-298" 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="U1iS4aTrDNJz4kT7s3QN-299" target="U1iS4aTrDNJz4kT7s3QN-301" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1950.87" y="-129" />
<mxPoint x="-1950.87" y="-89" />
<mxPoint x="-1969.87" y="-326.96000000000004" />
<mxPoint x="-1969.87" y="-286.96000000000004" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-299" value="Password&lt;br&gt;18 characters" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-2160.67" y="-149" width="164.6" height="40" as="geometry" />
<mxGeometry x="-2179.67" y="-346.96000000000004" width="164.6" height="40" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-300" 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="U1iS4aTrDNJz4kT7s3QN-301" target="U1iS4aTrDNJz4kT7s3QN-304" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-301" value="SCRYPT" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-1920.58" y="-109" width="125" height="40" as="geometry" />
<mxGeometry x="-1939.58" y="-306.96000000000004" width="125" height="40" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-302" value="SeedRandom&lt;br&gt;256 bits" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="-2160.67" y="-73" width="161.76" height="44" as="geometry" />
<mxGeometry x="-2179.67" y="-270.96000000000004" width="161.76" height="44" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-303" value="&lt;b&gt;PwdHash&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-2174" y="-199" width="110" height="30" as="geometry" />
<mxGeometry x="-2193" y="-396.96000000000004" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-304" value="hash" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-1755.62" y="-109" width="123.1" height="40" as="geometry" />
<mxGeometry x="-1774.62" y="-306.96000000000004" width="123.1" height="40" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-305" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-2180" y="511" width="28.93" height="28.93" as="geometry" />
<mxGeometry x="-2199" y="313.03999999999996" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-307" value="Relais - side chain node not required" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-2144.32" y="509.93" width="214.32" height="30" as="geometry" />
<mxGeometry x="-2163.32" y="311.97" width="214.32" height="30" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-310" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-2181" y="546" width="28.93" height="28.93" as="geometry" />
<mxGeometry x="-2200" y="348.0400000000001" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-311" value="Relais - side chain node required" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-2145.32" y="544.9300000000001" width="214.32" height="30" as="geometry" />
<mxGeometry x="-2164.32" y="346.97000000000014" width="214.32" height="30" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-284" value="&lt;b&gt;`item_member_enc_by_sp_shared_secret`&lt;/b&gt;&lt;br&gt;(only for member managers)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-1320" y="423" width="260" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-285" value="Members" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="-300" y="243.29000000000002" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-288" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="KGCLxLdSfCaxDo2TsfCf-284" target="KGCLxLdSfCaxDo2TsfCf-284">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-289" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1320" y="440" as="targetPoint" />
<Array as="points">
<mxPoint x="-1360" y="440" />
<mxPoint x="-1320" y="440" />
</Array>
<mxPoint x="-1360" y="441.8600000000001" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-290" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.591;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="KGCLxLdSfCaxDo2TsfCf-284">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1322" y="438" as="targetPoint" />
<Array as="points">
<mxPoint x="-1340" y="486" />
<mxPoint x="-1340" y="440" />
<mxPoint x="-1322" y="440" />
</Array>
<mxPoint x="-1360" y="485.5" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-291" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.001;entryY=0.587;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="KGCLxLdSfCaxDo2TsfCf-284">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="523" />
<mxPoint x="-1340" y="440" />
</Array>
<mxPoint x="-1360" y="523.21" as="sourcePoint" />
<mxPoint x="-1322" y="438" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-292" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyRecoverScan&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privEncrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-1524.1" y="426.07" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-293" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;KeyMainSpend&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privEncrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-1524" y="467.07" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-294" value="&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;KeyMainScan&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privEncrypt&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-1524" y="505.78" width="163.42" height="30" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-295" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1044.27" y="741" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-316" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1249.3899999999999" y="741" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-317" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-834.4399999999999" y="741" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-318" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1034.27" y="751" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-319" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1239.3899999999999" y="751" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-320" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-824.4399999999999" y="751" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-321" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1024.27" y="761" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-322" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1229.3899999999999" y="761" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-323" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-814.4399999999999" y="761" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-324" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1014.27" y="771" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-325" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1219.3899999999999" y="771" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-326" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-804.4399999999999" y="771" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-327" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1004.27" y="781" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-328" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1209.3899999999999" y="781" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-329" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-794.4399999999999" y="781" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-330" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-994.27" y="791" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-331" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1199.3899999999999" y="791" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-332" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-784.4399999999999" y="791" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-333" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-984.27" y="801" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-334" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1189.3899999999999" y="801" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-335" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-774.4399999999999" y="801" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-336" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-974.27" y="811" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-337" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1179.3899999999999" y="811" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-338" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-764.4399999999999" y="811" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-339" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-964.27" y="821" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-340" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1169.3899999999999" y="821" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-341" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-754.4399999999999" y="821" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-342" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-930" y="690" as="sourcePoint" />
<mxPoint x="-930" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-344" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;" edge="1" parent="1" source="XqTc7s29-gL46L3V4mSs-304">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1320" y="440" as="targetPoint" />
<Array as="points">
<mxPoint x="-405" y="180" />
<mxPoint x="-380" y="180" />
<mxPoint x="-380" y="50" />
<mxPoint x="-60" y="50" />
<mxPoint x="-60" y="870" />
<mxPoint x="-1340" y="870" />
<mxPoint x="-1340" y="440" />
<mxPoint x="-1320" y="440" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="KGCLxLdSfCaxDo2TsfCf-345" value="SeedRand2&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privEncrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-450" y="112" width="137.39" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 KiB

After

Width:  |  Height:  |  Size: 404 KiB

View File

@ -0,0 +1,494 @@
<mxfile host="Electron" modified="2024-02-21T22:04:09.992Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="MLwr1I9-D8bmfqagTaYT" version="23.1.5" type="device">
<diagram id="bWoO5ACGZIaXrIiKNTKd" name="Page-1">
<mxGraphModel dx="3915" dy="841" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="202" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1254" y="491" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="203" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1235.7457165981" y="501" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="233" 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="204" target="228" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1199" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="234" 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="204" target="230" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1158" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="235" 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="204" target="231" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1119" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="236" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="204" target="232" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="540" />
<mxPoint x="-1140" y="560" />
<mxPoint x="-1080" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-287" 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;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="204" target="U1iS4aTrDNJz4kT7s3QN-288" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-780" y="525.8333333333335" as="targetPoint" />
</mxGeometry>
</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">
<mxGeometry x="-1217.4914331962004" y="511" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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">
<mxGeometry x="-1213.97" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="230" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-1172.9" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="231" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-1133.97" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="232" value="4" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-1094.03" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="DLJctxT3D2mWswRGw-9P-316" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="245" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="700" as="targetPoint" />
<Array as="points">
<mxPoint x="-1143" y="679" />
<mxPoint x="-950" y="679" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="245" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-1172.9" y="628.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-314" value="5" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-762" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-315" value="6" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-720.9300000000001" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-316" value="7" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-682" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-317" value="8" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="-642.06" y="597.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-318" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-720.9300000000001" y="628.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="DLJctxT3D2mWswRGw-9P-317" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="U1iS4aTrDNJz4kT7s3QN-286" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="700" as="targetPoint" />
<Array as="points">
<mxPoint x="-692" y="680" />
<mxPoint x="-949" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-286" value="Message" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-722.0000000000001" y="643" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-288" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-795.8000000000001" y="511" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-289" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-777.5457165981001" y="521" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-291" 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-314" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-292" 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-315" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="U1iS4aTrDNJz4kT7s3QN-293" 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-316" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<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" />
</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">
<mxGeometry x="-759.2914331962005" y="531" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-315" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1460" y="490.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-316" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1441.7457165981" y="500.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1423.4914331962004" y="510.93" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" edge="1" parent="1" target="228">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1200" y="560" />
<mxPoint x="-1200" y="598" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1400" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-319" 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;" edge="1" parent="1" target="230">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1158" y="560" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1358" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-320" 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;" edge="1" parent="1" target="231">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1119" y="560" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1320" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-321" 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;" edge="1" parent="1" target="232">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="540" />
<mxPoint x="-1340" y="560" />
<mxPoint x="-1080" y="560" />
</Array>
<mxPoint x="-1341" y="539.78" as="sourcePoint" />
<mxPoint x="-1280" y="597.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-322" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1254" y="700.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-323" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1235.7457165981" y="710.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-324" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-330">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1199" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-325" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-331">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1158" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-326" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-332">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1119" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-327" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-333">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1140" y="749.0699999999999" />
<mxPoint x="-1140" y="769.0699999999999" />
<mxPoint x="-1080" y="769.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-328" 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;fillColor=#f5f5f5;strokeColor=#666666;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-329" target="fIN9LJIhpEY6EGzNKIPz-343">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-780" y="734.9033333333334" as="targetPoint" />
</mxGeometry>
</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;" vertex="1" parent="1">
<mxGeometry x="-1217.4914331962004" y="720.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1213.97" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-331" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1172.9" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-332" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1133.97" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-333" value="4" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1094.03" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-334" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-335">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="909.0699999999999" as="targetPoint" />
<Array as="points">
<mxPoint x="-1143" y="888.0699999999999" />
<mxPoint x="-950" y="888.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-335" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-1172.9" y="837.78" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-336" value="5" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-762" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-337" value="6" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-720.9300000000001" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-338" value="7" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-682" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-339" value="8" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-642.06" y="806.8499999999999" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-340" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-720.9300000000001" y="837.78" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-341" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-342">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-950" y="909.0699999999999" as="targetPoint" />
<Array as="points">
<mxPoint x="-692" y="889.0699999999999" />
<mxPoint x="-949" y="889.0699999999999" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-342" value="Message" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-722.0000000000001" y="852.0699999999999" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-343" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-795.8000000000001" y="720.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-344" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-777.5457165981001" y="730.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-345" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-336">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-346" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-337">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-347" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-338">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-349" target="fIN9LJIhpEY6EGzNKIPz-339">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-349" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-759.2914331962005" y="740.0699999999999" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-350" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1460" y="700" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-351" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1441.7457165981" y="710" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1423.4914331962004" y="720" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-353" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-330">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1200" y="769.0699999999999" />
<mxPoint x="-1200" y="807.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1400" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-354" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-331">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1158" y="769.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1358" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-355" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-332">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1119" y="769.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1320" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-356" 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;" edge="1" parent="1" target="fIN9LJIhpEY6EGzNKIPz-333">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1340" y="749.0699999999999" />
<mxPoint x="-1340" y="769.0699999999999" />
<mxPoint x="-1080" y="769.0699999999999" />
</Array>
<mxPoint x="-1341" y="748.8499999999999" as="sourcePoint" />
<mxPoint x="-1280" y="806.8499999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-357" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1235.75" y="910" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-358" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1217.4957165981" y="920" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-359" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-365">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1180.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-360" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-366">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1139.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-361" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-367">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1100.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-362" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-368">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1121.75" y="959" />
<mxPoint x="-1121.75" y="979" />
<mxPoint x="-1061.75" y="979" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-363" 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;fillColor=#f5f5f5;strokeColor=#666666;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-364" target="fIN9LJIhpEY6EGzNKIPz-375">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-761.75" y="944.8333333333335" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-364" value="RequestPrdList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1199.2414331962004" y="930" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1195.72" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-366" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1154.65" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-367" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1115.72" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-368" value="4" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="-1075.78" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-369" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-1154.65" y="1047.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-370" value="5" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-743.75" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-371" value="6" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-702.6800000000001" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-372" value="7" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-663.75" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-373" value="8" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="-623.81" y="1016.78" width="28.93" height="28.93" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-374" value="Relais WS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-702.6800000000001" y="1047.71" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-375" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-777.5500000000001" y="930" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-376" value="PRDKeyBackip" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-759.2957165981001" y="940" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-377" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-370">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-378" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-371">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-379" 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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-372">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<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;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-381" target="fIN9LJIhpEY6EGzNKIPz-373">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-381" value="RequestPrdMessage&lt;br&gt;(+ TxSp)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-741.0414331962005" y="950" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-382" value="All Roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="-1314" y="929" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-384" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-383">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1384" y="490" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-383" value="&lt;b&gt;ItemMember&lt;/b&gt;&lt;br&gt;(this user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-1468.8" y="410" width="170" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-385" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-386">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-1375.2" y="700.0699999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-386" value="&lt;b&gt;ItemProcess&lt;/b&gt;&lt;br&gt;(with this new sp_address for the selected role)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry x="-1510" y="620.07" width="270" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-388" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-387" target="fIN9LJIhpEY6EGzNKIPz-386">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-387" value="selected role" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1710" y="519.93" width="100" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-390" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="fIN9LJIhpEY6EGzNKIPz-389" target="fIN9LJIhpEY6EGzNKIPz-386">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-389" value="last ItemProcess version" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1590" y="519.93" width="100" height="29" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

View File

@ -1,6 +1,6 @@
<mxfile host="Electron" modified="2024-02-21T12:48:03.314Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="eDYNoyMRQ-gUdEop67cT" version="23.1.5" type="device">
<mxfile host="Electron" modified="2024-02-21T21:54:43.616Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="hfoDEFSnQQYuE2xzIEVM" version="23.1.5" type="device">
<diagram name="Page-1" id="nezTab6434Mr3TNqJTht">
<mxGraphModel dx="3915" dy="2010" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="3300" dy="1650" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
@ -153,8 +153,7 @@
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-41" target="sHT8GTnQFrlxJ-m2nGzn-50" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-1280" y="239" />
<mxPoint x="-1280" y="330" />
<mxPoint x="-1306" y="330" />
<mxPoint x="-1201" y="330" />
</Array>
<mxPoint x="-1279.612463584234" y="322.04781" as="sourcePoint" />
@ -202,7 +201,7 @@
<mxPoint x="-1170.0439590436406" y="418" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-56" value="RequestPrdKeyHello" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-56" value="RequestPrdList" 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" />
</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">
@ -283,12 +282,12 @@
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-314" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-284" target="sHT8GTnQFrlxJ-m2nGzn-313" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-949.56" y="533" as="sourcePoint" />
<mxPoint x="-949.56" y="714" as="sourcePoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-284" value="Controls" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1031.7914331962004" y="500" width="152.39494830511973" height="28.99999999999996" as="geometry" />
<mxGeometry x="-1031.7914331962004" y="681" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-337" 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="sHT8GTnQFrlxJ-m2nGzn-297" edge="1">
<mxGeometry relative="1" as="geometry">
@ -313,18 +312,16 @@
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-298" value="SeedRand1&lt;br&gt;256 bits" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="-915.71" y="-111.78999999999999" width="88.8134519572954" height="28.999999999999993" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-351" 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="sHT8GTnQFrlxJ-m2nGzn-299" target="sHT8GTnQFrlxJ-m2nGzn-341" edge="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-351" 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="sHT8GTnQFrlxJ-m2nGzn-341" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-717.0899999999997" y="-30" as="targetPoint" />
<Array as="points">
<mxPoint x="-717" y="40" />
<mxPoint x="-641" y="40" />
</Array>
<mxPoint x="-717.2532740213524" y="-82.78999999999974" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-299" value="SeedRand2&lt;br&gt;256 bits" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="-761.6599999999999" y="-111.78999999999999" width="88.8134519572954" height="28.999999999999993" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-308" 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="sHT8GTnQFrlxJ-m2nGzn-300" target="sHT8GTnQFrlxJ-m2nGzn-297" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
@ -342,35 +339,37 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-310" 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="sHT8GTnQFrlxJ-m2nGzn-300" target="sHT8GTnQFrlxJ-m2nGzn-299" edge="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-359" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-325" edge="1" target="5Ne0HzyGfQl-3uoNr5Rs-33">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-305.4199999999996" y="171.13999999999987" as="targetPoint" />
<mxPoint x="-340" y="171.6300000000001" as="sourcePoint" />
<Array as="points">
<mxPoint x="-1030" y="-130" />
<mxPoint x="-717" y="-130" />
<mxPoint x="-717" y="-112" />
<mxPoint x="-423" y="150" />
<mxPoint x="-330" y="150" />
<mxPoint x="-330" y="57" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-359" 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="sHT8GTnQFrlxJ-m2nGzn-300" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-936.3599999999997" y="-161.86000000000013" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-360" 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="sHT8GTnQFrlxJ-m2nGzn-300" edge="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-360" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-325" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-956" y="-161" />
<mxPoint x="-956" y="-200" />
<mxPoint x="-423" y="150" />
<mxPoint x="-330" y="150" />
<mxPoint x="-330" y="133" />
</Array>
<mxPoint x="-936.3599999999997" y="-199.56999999999994" as="targetPoint" />
<mxPoint x="-305.4199999999996" y="133.43000000000006" as="targetPoint" />
<mxPoint x="-340" y="171.6300000000001" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="Q8MjV8EZblA_sCvqo5JG-4" 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="sHT8GTnQFrlxJ-m2nGzn-300" target="Q8MjV8EZblA_sCvqo5JG-3" edge="1">
<mxCell id="Q8MjV8EZblA_sCvqo5JG-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-325" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-960" y="-161" />
<mxPoint x="-960" y="-242" />
<mxPoint x="-423" y="150" />
<mxPoint x="-330" y="150" />
<mxPoint x="-330" y="91" />
</Array>
<mxPoint x="-420" y="170" as="sourcePoint" />
<mxPoint x="-306" y="91" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-300" value="ImageRecover" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
@ -386,12 +385,12 @@
<mxGeometry relative="1" as="geometry">
<mxPoint x="-218.0564848910808" y="1001.5" as="sourcePoint" />
<Array as="points">
<mxPoint x="-423" y="515" />
<mxPoint x="-423" y="696" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-313" value="Rendering" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1031.7914331962004" y="552" width="152.39494830511973" height="28.99999999999996" as="geometry" />
<mxGeometry x="-1031.7914331962004" y="733" width="152.39494830511973" height="28.99999999999996" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-321" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-316" target="sHT8GTnQFrlxJ-m2nGzn-50" edge="1">
<mxGeometry relative="1" as="geometry">
@ -444,7 +443,7 @@
<mxGeometry x="-541.0600000000001" y="13.070000000000007" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-331" value="" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_2;whiteSpace=wrap;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="-965.5899999999999" y="594" width="20" height="20" as="geometry" />
<mxGeometry x="-965.5899999999999" y="775" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-332" 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;entryPerimeter=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-313" target="sHT8GTnQFrlxJ-m2nGzn-331" edge="1">
<mxGeometry relative="1" as="geometry" />
@ -579,15 +578,6 @@
<mxCell id="HDdD4gt86U7q7j0RBcuD-15" value="&lt;b&gt;part&lt;br&gt;&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1670.37" y="-43.5" width="124.36" height="39" as="geometry" />
</mxCell>
<mxCell id="Q8MjV8EZblA_sCvqo5JG-1" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyMainSpend&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;KeyDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-936.94" y="-213.81" width="149.75" height="30" as="geometry" />
</mxCell>
<mxCell id="Q8MjV8EZblA_sCvqo5JG-2" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyMainScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;KeyDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-936.0899999999999" y="-175.61" width="148.9" height="30" as="geometry" />
</mxCell>
<mxCell id="Q8MjV8EZblA_sCvqo5JG-3" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyRecoverScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;KeyDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-936.9399999999999" y="-257" width="149.75" height="30" as="geometry" />
</mxCell>
<mxCell id="Y_iTnzTvrgFW2w7x7B82-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" target="Y_iTnzTvrgFW2w7x7B82-6" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-681.17" y="388.98333333333346" as="targetPoint" />
@ -694,6 +684,124 @@
<mxCell id="Y_iTnzTvrgFW2w7x7B82-31" value="Relais - side chain node required" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-2031.3200000000002" y="379.00000000000006" width="214.32" height="30" as="geometry" />
</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;" vertex="1" parent="1">
<mxGeometry x="-1246.24" y="188.71" width="236.19" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-2" value="To all roles" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="-1341.19" y="346" width="60" height="33" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-3" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1066.07" y="540" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-4" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1271.1899999999998" y="540" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-5" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-856.2399999999999" y="540" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-6" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1056.07" y="550" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-7" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1261.1899999999998" y="550" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-8" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-846.2399999999999" y="550" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-9" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1046.07" y="560" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-10" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1251.1899999999998" y="560" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-11" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-836.2399999999999" y="560" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-12" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1036.07" y="570" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-13" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1241.1899999999998" y="570" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-14" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-826.2399999999999" y="570" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-15" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1026.07" y="580" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-16" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1231.1899999999998" y="580" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-17" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-816.2399999999999" y="580" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-18" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1016.0699999999999" y="590" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-19" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1221.1899999999998" y="590" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-20" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-806.2399999999999" y="590" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-21" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1006.0699999999999" y="600" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-22" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1211.1899999999998" y="600" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-23" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-796.2399999999999" y="600" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-24" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-996.0699999999999" y="610" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-25" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1201.1899999999998" y="610" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-26" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-786.2399999999999" y="610" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-27" value="RequestPrdResponse" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-986.0699999999999" y="620" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-28" value="RequestPcd" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-1191.1899999999998" y="620" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-29" value="RequestPrdMessage" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="-776.2399999999999" y="620" width="197.49" height="29" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-30" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-930" y="485" as="sourcePoint" />
<mxPoint x="-930" y="525" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-31" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyMainSpend&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-306" y="85.19" width="149.75" height="30" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-32" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyMainScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-305.14999999999986" y="123.38999999999999" width="148.9" height="30" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-33" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyRecoverScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-305.9999999999999" y="42" width="149.75" height="30" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="5Ne0HzyGfQl-3uoNr5Rs-35">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-717.2532740213524" y="-111.78999999999974" as="targetPoint" />
<Array as="points">
<mxPoint x="-140" y="173" />
<mxPoint x="-140" y="-132" />
<mxPoint x="-717" y="-132" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-35" value="PCD item_name=member&lt;br&gt;-&amp;gt; ItemMember (sp addess of the user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="-550" y="158" width="250" height="30.71" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-37" value="SeedRand2&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;privDecrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" vertex="1" parent="1">
<mxGeometry x="-790.9999999999999" y="-112.79" width="149.75" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 KiB

After

Width:  |  Height:  |  Size: 376 KiB