diff --git a/doc/Auth-Specs.md b/doc/Auth-Specs.md index a3d7726..213e767 100644 --- a/doc/Auth-Specs.md +++ b/doc/Auth-Specs.md @@ -1,27 +1,18 @@  * 1. [Objectif](#Objectif) * 2. [Portée](#Porte) -* 3. [Définitions et Abréviations](#DfinitionsetAbrviations) -* 4. [Exigences de sécurité et de confidentialité](#Exigencesdescuritetdeconfidentialit) -* 5. [Architecture générale](#Architecturegnrale) -* 6. [Spécification des items](#Spcificationdesitems) -* 7. [Spécification des roles](#Spcificationdesroles) -* 8. [Spécifiation des PCD et PRD](#SpcifiationdesPCDetPRD) -* 9. [Authentification des utilisateurs](#Authentificationdesutilisateurs) -* 10. [Connexion via des tiers](#Connexionviadestiers) -* 11. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse) -* 12. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache) -* 13. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP) - * 13.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques) - * 13.1.1. [HD Wallet (BIP32 + BIP44)](#HDWalletBIP32BIP44) - * 13.1.2. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover) - * 13.1.3. [Workflow des PRD et PCD](#WorkflowdesPRDetPCD) - * 13.1.4. [Workflow des Messages, transactions SP et connexion aux web sockets](#WorkflowdesMessagestransactionsSPetconnexionauxwebsockets) -* 14. [Spécifications du code](#Spcificationsducode) - * 14.1. [Maintenance, environnement de déploiement](#Maintenanceenvironnementdedploiement) -* 15. [Annexe](#Annexe) - * 15.1. [Exemples de code](#Exemplesdecode) - * 15.2. [Références](#Rfrences) +* 3. [3. Documents de référence](#Documentsderfrence) + * 3.1. [Worfklows](#Worfklows) + * 3.2. [Transverse](#Transverse) +* 4. [Authentification des utilisateurs](#Authentificationdesutilisateurs) +* 5. [Connexion via des tiers](#Connexionviadestiers) +* 6. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse) +* 7. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache) +* 8. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP) + * 8.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques) + * 8.1.1. [HD Wallet (BIP32 + BIP44)](#HDWalletBIP32BIP44) + * 8.1.2. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover) +* 9. [Exemples de Code](#ExemplesdeCode) * 1. [Objectif](#Objectif) * 2. [Portée](#Porte) -* 3. [Définitions et Abréviations](#DfinitionsetAbrviations) -* 4. [Exigences de sécurité et de confidentialité](#Exigencesdescuritetdeconfidentialit) -* 5. [Architecture générale](#Architecturegnrale) - * 5.1. [Types d'Items](#TypesdItems) - * 5.2. [Composition et Fonction](#CompositionetFonction) - * 5.2.1. [Cas d'utilisation](#Casdutilisation) - * 5.3. [MetaData - Gestion des Attributs d'Items](#MetaData-GestiondesAttributsdItems) - * 5.3.1. [Composition et Fonction](#CompositionetFonction-1) - * 5.3.2. [Cas d'utilisation](#Casdutilisation-1) -* 6. [ItemProcess](#ItemProcess) -* 7. [Spécifications du code](#Spcificationsducode) - * 7.1. [Maintenance, environnement de déploiement](#Maintenanceenvironnementdedploiement) -* 8. [Annexe](#Annexe) - * 8.1. [Exemples de Code](#ExemplesdeCode) - * 8.2. [Références](#Rfrences) +* 3. [3. Documents de référence](#Documentsderfrence) + * 3.1. [Worfklows](#Worfklows) + * 3.2. [Transverse](#Transverse) + * 3.3. [Types d'Items](#TypesdItems) + * 3.4. [Composition et Fonction](#CompositionetFonction) + * 3.4.1. [Cas d'utilisation](#Casdutilisation) + * 3.5. [MetaData - Gestion des Attributs d'Items](#MetaData-GestiondesAttributsdItems) + * 3.5.1. [Composition et Fonction](#CompositionetFonction-1) + * 3.5.2. [Cas d'utilisation](#Casdutilisation-1) +* 4. [ItemProcess](#ItemProcess) +* 5. [Exemples de Code](#ExemplesdeCode) * 1. [Objectif](#Objectif) * 2. [Portée](#Porte) -* 3. [Définitions et Abréviations](#DfinitionsetAbrviations) -* 4. [Exigences de sécurité et de confidentialité](#Exigencesdescuritetdeconfidentialit) -* 5. [Architecture générale](#Architecturegnrale) -* 6. [Spécification des items](#Spcificationdesitems) -* 7. [Spécification des process et roles](#Spcificationdesprocessetroles) - * 7.1. [Structure des PCD et PRD et de leur attribut générique Request](#StructuredesPCDetPRDetdeleurattributgnriqueRequest) - * 7.2. [Structure et Fonction des PCD](#StructureetFonctiondesPCD) - * 7.2.1. [Structure de Base d'un PCD](#StructuredeBasedunPCD) - * 7.2.2. [L'attribut des listes PcdItemGenericEnc `item_list`](#LattributdeslistesPcdItemGenericEncitem_list) - * 7.3. [Types de PRD et Leur Fonction](#TypesdePRDetLeurFonction) - * 7.3.1. [Structure de RequestPrd](#StructuredeRequestPrd) -* 8. [Gestion et Échange des Documents](#GestionetchangedesDocuments) - * 8.1. [Création et Distribution](#CrationetDistribution) - * 8.2. [Validation et Mise à Jour](#ValidationetMiseJour) -* 9. [Spécifications du code](#Spcificationsducode) - * 9.1. [Maintenance, environnement de déploiement](#Maintenanceenvironnementdedploiement) -* 10. [Annexe](#Annexe) - * 10.1. [Exemples de Code](#ExemplesdeCode) - * 10.2. [Références](#Rfrences) +* 3. [3. Documents de référence](#Documentsderfrence) + * 3.1. [Worfklows](#Worfklows) + * 3.2. [Transverse](#Transverse) + * 3.3. [Structure des PCD et PRD et de leur attribut générique Request](#StructuredesPCDetPRDetdeleurattributgnriqueRequest) + * 3.4. [Structure et Fonction des PCD](#StructureetFonctiondesPCD) + * 3.4.1. [Structure de Base d'un PCD](#StructuredeBasedunPCD) + * 3.4.2. [L'attribut des listes PcdItemGenericEnc `item_list`](#LattributdeslistesPcdItemGenericEncitem_list) + * 3.5. [Types de PRD et Leur Fonction](#TypesdePRDetLeurFonction) + * 3.5.1. [Structure de RequestPrd](#StructuredeRequestPrd) +* 4. [Gestion et Échange des Documents](#GestionetchangedesDocuments) + * 4.1. [Création et Distribution](#CrationetDistribution) + * 4.2. [Validation et Mise à Jour](#ValidationetMiseJour) +* 5. [Exemples de Code](#ExemplesdeCode) * 1. [Objectif](#Objectif) * 2. [Portée](#Porte) -* 3. [Définitions et Abréviations](#DfinitionsetAbrviations) -* 4. [Exigences de sécurité et de confidentialité](#Exigencesdescuritetdeconfidentialit) -* 5. [Architecture générale](#Architecturegnrale) -* 6. [Rôles et Sous-Rôles](#RlesetSous-Rles) -* 7. [Précisions sur les rôles](#Prcisionssurlesrles) - * 7.1. [RolesGroup - Gestion des Rôles](#RolesGroup-GestiondesRles) - * 7.1.1. [Composition et Fonction](#CompositionetFonction) - * 7.1.2. [Cas d'utilisation](#Casdutilisation) - * 7.2. [TransactionModeDistribution et TransactionModeDirect](#TransactionModeDistributionetTransactionModeDirect) - * 7.3. [TransactionModeDistribution](#TransactionModeDistribution) - * 7.3.1. [TransactionModeDirect](#TransactionModeDirect) - * 7.4. [Cas d'utilisation](#Casdutilisation-1) - * 7.4.1. [Composition et Fonction](#CompositionetFonction-1) - * 7.4.2. [Cas d'utilisation](#Casdutilisation-1) - * 7.5. [Role - Définition et Gestion des Rôles Spécifiques](#Role-DfinitionetGestiondesRlesSpcifiques) - * 7.5.1. [Composition et Fonction](#CompositionetFonction-1) - * 7.5.2. [Cas d'utilisation](#Casdutilisation-1) -* 8. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions) - * 8.1. [RoleCommitment](#RoleCommitment) - * 8.2. [RoleDeposit et RolePayment](#RoleDepositetRolePayment) -* 9. [Sécurisation des Communications](#ScurisationdesCommunications) - * 9.1. [Composition et Utilisation](#CompositionetUtilisation) -* 10. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus) -* 11. [Spécifications du code](#Spcificationsducode) - * 11.1. [Maintenance, environnement de déploiement](#Maintenanceenvironnementdedploiement) -* 12. [Annexe](#Annexe) - * 12.1. [Exemples de Code](#ExemplesdeCode) - * 12.2. [Références](#Rfrences) +* 3. [3. Documents de référence](#Documentsderfrence) + * 3.1. [Worfklows](#Worfklows) + * 3.2. [Transverse](#Transverse) +* 4. [Rôles et Sous-Rôles](#RlesetSous-Rles) +* 5. [Précisions sur les rôles](#Prcisionssurlesrles) + * 5.1. [RolesGroup - Gestion des Rôles](#RolesGroup-GestiondesRles) + * 5.1.1. [Composition et Fonction](#CompositionetFonction) + * 5.1.2. [Cas d'utilisation](#Casdutilisation) + * 5.2. [TransactionModeDistribution et TransactionModeDirect](#TransactionModeDistributionetTransactionModeDirect) + * 5.3. [TransactionModeDistribution](#TransactionModeDistribution) + * 5.3.1. [TransactionModeDirect](#TransactionModeDirect) + * 5.4. [Cas d'utilisation](#Casdutilisation-1) + * 5.4.1. [Composition et Fonction](#CompositionetFonction-1) + * 5.4.2. [Cas d'utilisation](#Casdutilisation-1) + * 5.5. [Role - Définition et Gestion des Rôles Spécifiques](#Role-DfinitionetGestiondesRlesSpcifiques) + * 5.5.1. [Composition et Fonction](#CompositionetFonction-1) + * 5.5.2. [Cas d'utilisation](#Casdutilisation-1) +* 6. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions) + * 6.1. [RoleCommitment](#RoleCommitment) + * 6.2. [RoleDeposit et RolePayment](#RoleDepositetRolePayment) +* 7. [Sécurisation des Communications](#ScurisationdesCommunications) + * 7.1. [Composition et Utilisation](#CompositionetUtilisation) +* 8. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus) +* 9. [Exemples de Code](#ExemplesdeCode) # Process et roles - - -## 1. Objectif +## 1. Objectif Cette section vise à présenter en détail les Documents de Contrat Portable (PCD) et les Documents de Demande Portable (PRD), qui constituent les piliers du système 4NK. Essentiels pour sécuriser les transactions de données et gérer les identités numériques, les PCD et PRD assurent l'intégrité et la confidentialité au cœur d'un réseau décentralisé. -## 2. Portée +## 2. Portée -## 3. Définitions et Abréviations +## 3. 3. Documents de référence -Voir Specs - Définitions et abréviations. +### 3.1. Worfklows -## 4. Exigences de sécurité et de confidentialité +* **Authentification**: Auth-Specs.md +* **Items**: Item-Specs.md +* **Messages et transactions SP**: Message-SP-Specs.md +* **PRD et PCD**: PRD-PCD-Specs.md -Voir Specs - Exigences de sécurité +### 3.2. Transverse -## 5. Architecture générale +* **Définitions et abréviations.**: Specs-Definition.md +* **Exigences de sécurité**: Specs-Security.md +* **Code**: Specs-Code.md +* **Maintenance, environnement de déploiement**: Specs-Deployment.md +* **References**: Specs-References.md -Diagramme d'architecture montrant les composants principaux du système de login. +* **Diagramme d'architecture montrant les composants principaux du système de login.** [SheatSheet 4NK](https://cryptpad.fr/diagram/#/2/diagram/view/3UG+7ccutUvJlwJ1-bR40RhgOA+rb5eEmw42wtkN19A) -## 6. Rôles et Sous-Rôles +## 4. Rôles et Sous-Rôles Les rôles déterminent les permissions et les responsabilités des participants dans le système 4NK. Ils sont essentiels pour contrôler l'accès aux données et les autorisations au sein des `process`. Les `rôles` principaux incluent : -- **RolePeer**: Conditions des listes de relais participants qui facilitent les communications et les transactions et des versions de ces listes. -- **RoleMember**: Conditions des listes des utilisateurs ou entités ayant une participation directe dans un processus spécifique et des versions de ces listes. -- **RoleProcess**: Conditions des listes des processus et des versions des listes. -- **RoleArtefact**: Définit les permissions et les interactions pour les artefacts au sein du réseau et des version de ces listes, par types d'artefacts. +* **RolePeer**: Conditions des listes de relais participants qui facilitent les communications et les transactions et des versions de ces listes. +* **RoleMember**: Conditions des listes des utilisateurs ou entités ayant une participation directe dans un processus spécifique et des versions de ces listes. +* **RoleProcess**: Conditions des listes des processus et des versions des listes. +* **RoleArtefact**: Définit les permissions et les interactions pour les artefacts au sein du réseau et des version de ces listes, par types d'artefacts. Chaque rôle peut comporter des sous-rôles spécifiques, tels que `RolePayment`, `RoleDeposit`, et `RoleCommitment`, chacun avec des responsabilités et des interactions uniques dans le cadre des processus qu'ils soutiennent. -## 7. Précisions sur les rôles +## 5. Précisions sur les rôles -### 7.1. RolesGroup - Gestion des Rôles +### 5.1. RolesGroup - Gestion des Rôles La structure RolesGroup est essentielle pour définir et gérer les groupes de rôles au sein du système 4NK, permettant une organisation claire des permissions et des responsabilités. -#### 7.1.1. Composition et Fonction +#### 5.1.1. Composition et Fonction -- **role_peer**: Définit le rôle des pairs dans le réseau, responsables de la facilitation des communications et des transactions. -- **role_member**: Spécifie le rôle des membres, ou utilisateurs, qui participent activement dans les processus et les interactions. -- **role_process**: Représente les entités chargées de définir et de gérer les processus au sein du système. -- **role_artefact_list**: Une liste de rôles d'artefacts, permettant la personnalisation et l'extension des fonctionnalités et des interactions au-delà des rôles standards. +* **role_peer**: Définit le rôle des pairs dans le réseau, responsables de la facilitation des communications et des transactions. +* **role_member**: Spécifie le rôle des membres, ou utilisateurs, qui participent activement dans les processus et les interactions. +* **role_process**: Représente les entités chargées de définir et de gérer les processus au sein du système. +* **role_artefact_list**: Une liste de rôles d'artefacts, permettant la personnalisation et l'extension des fonctionnalités et des interactions au-delà des rôles standards. -#### 7.1.2. Cas d'utilisation +#### 5.1.2. Cas d'utilisation Cette structure permet une gestion flexible des rôles au sein du système, facilitant l'assignation de permissions spécifiques et la délimitation des responsabilités pour une sécurité et une efficacité accrues. -### 7.2. TransactionModeDistribution et TransactionModeDirect +### 5.2. TransactionModeDistribution et TransactionModeDirect Les modes de transaction, tels que TransactionModeDistribution et TransactionModeDirect, déterminent comment les demandes et les réponses sont distribuées et traitées au sein du réseau 4NK, influençant l'efficacité et la sécurité des interactions. -### 7.3. TransactionModeDistribution +### 5.3. TransactionModeDistribution Permet la distribution des demandes ou des informations à plusieurs rôles ou entités, facilitant une communication large et la collaboration au sein du système. -#### 7.3.1. TransactionModeDirect +#### 5.3.1. TransactionModeDirect Concentre l'échange d'informations ou de demandes directement entre un émetteur et un destinataire spécifique, garantissant une interaction ciblée et sécurisée. -### 7.4. Cas d'utilisation +### 5.4. Cas d'utilisation Ces modes supportent divers scénarios de communication, de la diffusion large d'informations ou de mises à jour, à des échanges directs pour des opérations spécifiques, offrant ainsi une flexibilité dans la gestion des flux d'informations. @@ -105,73 +106,58 @@ Ces modes supportent divers scénarios de communication, de la diffusion large d La structure Role est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation. -#### 7.4.1. Composition et Fonction +#### 5.4.1. Composition et Fonction -- **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions. -- **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques. -- **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus. -- **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte. +* **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions. +* **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques. +* **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus. +* **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte. -#### 7.4.2. Cas d'utilisation +#### 5.4.2. Cas d'utilisation Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global. -### 7.5. Role - Définition et Gestion des Rôles Spécifiques +### 5.5. Role - Définition et Gestion des Rôles Spécifiques La structure Role est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation. -#### 7.5.1. Composition et Fonction +#### 5.5.1. Composition et Fonction -- **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions. -- **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques. -- **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus. -- **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte. +* **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions. +* **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques. +* **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus. +* **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte. -#### 7.5.2. Cas d'utilisation +#### 5.5.2. Cas d'utilisation Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global. -## 8. Gestion des Engagements et Transactions +## 6. Gestion des Engagements et Transactions Les engagements dans le système 4NK, tels que représentés par les structures RoleCommitment, RoleDeposit, et RolePayment, jouent un rôle crucial dans la formalisation des transactions et des obligations entre les parties. -### 8.1. RoleCommitment +### 6.1. RoleCommitment -- **item_name**: Identifie l'engagement spécifique ou l'obligation prise par une partie. -- **role**: Définit les permissions, les conditions et les critères associés à cet engagement, assurant une exécution et une validation conformes aux attentes. +* **item_name**: Identifie l'engagement spécifique ou l'obligation prise par une partie. +* **role**: Définit les permissions, les conditions et les critères associés à cet engagement, assurant une exécution et une validation conformes aux attentes. -### 8.2. RoleDeposit et RolePayment +### 6.2. RoleDeposit et RolePayment Ces structures gèrent respectivement les dépôts de garantie et les paiements, en spécifiant les conditions sous lesquelles les fonds sont déposés, retenus ou transférés, contribuant ainsi à la confiance et à la fluidité des transactions au sein du réseau. -## 9. Sécurisation des Communications +## 7. Sécurisation des Communications La structure MetaData et ses sous-structures comme MetadataContractPublic, MetadataRoleConfidential, et MetadataPrivate fournissent un cadre pour sécuriser les communications et les données au sein du système 4NK, permettant une distinction claire entre les informations accessibles publiquement, celles réservées à certains rôles, et celles strictement privées. -### 9.1. Composition et Utilisation +### 7.1. Composition et Utilisation -- **meta_data**: Chaque instance de MetaData encapsule des informations détaillées, des attributs et des clés de chiffrement liés à un item, facilitant la gestion sécurisée et la distribution ciblée des données. -- **key_list**: Un élément crucial pour le chiffrement et la sécurisation des données, assurant que seules les parties autorisées peuvent accéder aux informations confidentielles. +* **meta_data**: Chaque instance de MetaData encapsule des informations détaillées, des attributs et des clés de chiffrement liés à un item, facilitant la gestion sécurisée et la distribution ciblée des données. +* **key_list**: Un élément crucial pour le chiffrement et la sécurisation des données, assurant que seules les parties autorisées peuvent accéder aux informations confidentielles. -## 10. Intégration et Orchestration des Processus +## 8. Intégration et Orchestration des Processus L'ItemProcess et ItemProcessPublicAttributeGroup offrent un cadre pour l'intégration et l'orchestration des processus dans le système 4NK, permettant la définition, la gestion et l'exécution de workflows complexes de manière sécurisée et efficace. - -## 11. Spécifications du code - -Voir Specs - Code - -### 11.1. Maintenance, environnement de déploiement - -Voir Specs - Maintenance, environnement de déploiement - -## 12. Annexe - -### 12.1. Exemples de Code +## 9. Exemples de Code Extraits de code illustrant l'utilisation des PCD et PRD dans des scénarios réels. - -### 12.2. Références - -Voir Specs - References diff --git a/doc/Specs-Datas.md b/doc/Specs-Datas.md index 781ce0b..6467a05 100644 --- a/doc/Specs-Datas.md +++ b/doc/Specs-Datas.md @@ -51,11 +51,9 @@ * 6. [Metadata](#Metadata) * 6.1. [MetadataContractPublic](#MetadataContractPublic) * 6.2. [MetadataPrivate](#MetadataPrivate) - * 6.3. [MetadataPrivate](#MetadataPrivate-1) - * 6.4. [MetadataRoleConfidential](#MetadataRoleConfidential) - * 6.5. [MetaDataa](#MetaDataa) - * 6.6. [Amount](#Amount) - * 6.7. [Number](#Number) + * 6.3. [MetadataRoleConfidential](#MetadataRoleConfidential) + * 6.4. [Amount](#Amount) + * 6.5. [Number](#Number) * 7. [Request](#Request) * 8. [PCD](#PCD) * 8.1. [Pagination](#Pagination) @@ -64,32 +62,36 @@ * 8.4. [PcdItemEncAttributePrivate](#PcdItemEncAttributePrivate) * 8.5. [PcdItemGenericEnc](#PcdItemGenericEnc) * 8.6. [PcdItemEnc](#PcdItemEnc) - * 8.7. [RequestPcd](#RequestPcd) * 9. [PRD](#PRD) - * 9.1. [RequestPrd](#RequestPrd) - * 9.2. [RequestPrdConfirm](#RequestPrdConfirm) - * 9.3. [RequestPrdKeyBackup](#RequestPrdKeyBackup) - * 9.4. [RequestPrdKeyHello](#RequestPrdKeyHello) - * 9.5. [RequestPrdList](#RequestPrdList) - * 9.6. [RequestPrdMessage](#RequestPrdMessage) - * 9.7. [RequestPrdList](#RequestPrdList-1) - * 9.8. [RequestPrdResponse](#RequestPrdResponse) - * 9.9. [RequestPrdUpdate](#RequestPrdUpdate) - * 9.10. [RequestPrdKeyHello](#RequestPrdKeyHello-1) + * 9.1. [RequestPrdConfirm](#RequestPrdConfirm) + * 9.2. [RequestPrdKeyBackup](#RequestPrdKeyBackup) + * 9.3. [RequestPrdKeyHello](#RequestPrdKeyHello) + * 9.4. [RequestPrdList](#RequestPrdList) + * 9.5. [RequestPrdMessage](#RequestPrdMessage) + * 9.6. [RequestPrdResponse](#RequestPrdResponse) + * 9.7. [RequestPrdUpdate](#RequestPrdUpdate) + * 9.8. [RequestPrdKeyHello](#RequestPrdKeyHello-1) * 10. [Roles](#Roles) - * 10.1. [RoleArtefact](#RoleArtefact) - * 10.2. [RoleDeposit](#RoleDeposit) - * 10.3. [RoleCommitment](#RoleCommitment) - * 10.4. [RoleMember](#RoleMember) - * 10.5. [RolePayment](#RolePayment) - * 10.6. [RoleProcess](#RoleProcess) - * 10.7. [Role](#Role) - * 10.8. [TransactionModeDistribution](#TransactionModeDistribution) - * 10.9. [TransactionModeDirect](#TransactionModeDirect) - * 10.10. [TransactionMode](#TransactionMode) - * 10.11. [RolesGroup](#RolesGroup) + * 10.1. [RolesGroup](#RolesGroup) + * 10.2. [RoleArtefact](#RoleArtefact) + * 10.3. [RoleDeposit](#RoleDeposit) + * 10.4. [RoleCommitment](#RoleCommitment) + * 10.5. [RoleMember](#RoleMember) + * 10.6. [RolePayment](#RolePayment) + * 10.7. [RoleProcess](#RoleProcess) + * 10.8. [Role](#Role) + * 10.9. [TransactionMode](#TransactionMode) + * 10.10. [TransactionModeDistribution](#TransactionModeDistribution) + * 10.11. [TransactionModeDirect](#TransactionModeDirect) * 10.12. [RolePeer](#RolePeer) * 11. [Relay](#Relay) +* 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)