PRD & PCD fields & ItemMember shared by PRDList for Id create (doc)

This commit is contained in:
NicolasCantu 2024-03-20 12:37:58 +01:00
parent 83f8c51648
commit c00390822f
2 changed files with 267 additions and 235 deletions

View File

@ -143,7 +143,6 @@ Ce qui est résumé Pour la réception :
| `RequestPrdResponse` | Info | Yes | No | No | No | No | | `RequestPrdResponse` | Info | Yes | No | No | No | No |
| `RequestPrdConfirm` | Info | No | No | No | No | No | | `RequestPrdConfirm` | Info | No | No | No | No | No |
## 6. <a name='Encryption'></a>Encryption ## 6. <a name='Encryption'></a>Encryption
Schema : Schema :
@ -162,14 +161,15 @@ Les `Metadata` des `Item` des `RequestPcd` et les attributs des `RequestPcd` et
Principaux champs des `Request` contenus dans les `RequestPcd` et `RequestPrd` chiffrés : Principaux champs des `Request` contenus dans les `RequestPcd` et `RequestPrd` chiffrés :
* **`request_type`** : * **`request_type`** : Type de requête : `RequestPcd`, `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, `RequestPrdConfirm`, `RequestPrdResponse`.
* **`version`** : * **`item_name`** : Noms des items : `peer`, `member`, `process`, `payment`, `deposit`, `commitment`, et les `artefact` personnalisés.
* **`process_hash`** : * **`version`** : Version de la requête.
* **`request_pcd_reference_hash`** : * **`process_hash`** : Hash de l'`ItemProcess` concerné.
* **`request_pcd_origin_hash`** : * **`request_pcd_reference_hash`** : Hash du `RequestPcd` auquel le `RequestPrd` fait référence.
* **`request_prd_reference_hash`** : * **`request_pcd_origin_hash`** : Hash du `RequestPcd` à l'origine du `RequestPrd`.
* **`request_prd_origin_hash`** : * **`request_prd_reference_hash`** : Hash du `RequestPrd` auquel le `RequestPrd` fait référence.
* **`item_reference_hash`** : * **`request_prd_origin_hash`** : Hash du `RequestPrd` à l'origine du `RequestPrd`.
* **`item_reference_hash`** : Hash de l'`Item` auquel le `RequestPcd` fait référence.
### 6.1. <a name='Crationetenvoi'></a>Création et envoi ### 6.1. <a name='Crationetenvoi'></a>Création et envoi
@ -207,40 +207,46 @@ Les `Item` échangés via les `RequestPcd` sont soumis à une vérification par
Principaux champs des `RequestPcd` : Principaux champs des `RequestPcd` :
* **`request`** : * **`request`** : cf la descripton de la structure `Request`.
* **`item_enc_list`** : * **`item_enc_list`** : Les `Item` chiffrés par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
* **`pagination`** : * **`pagination`** : La pagination de la liste des `Item`.
Principaux champs de la structure `Pagination` : Principaux champs de la structure `Pagination` :
* **`start`** : * **`start`** : Index du premier `Item` de la liste.
* **`number`** : * **`number`** : Nombre d'`Item` à afficher.
* **`page_index`** : * **`page_index`** : Index de la page.
* **`page_total`** : * **`page_total`** : Nombre total de pages.
Principaux champs de la structure `RequestPcdItemGenericEnc` : Principaux champs de la structure `RequestPcdItemGenericEnc` :
* **`version`** : * **`version`** : Version de l'`Item`.
* **`item_type`** : * **`item_type`** : Type de l'`Item`.
* **`name`** : * **`name`** : Nom de l'`Item`.
* **`request_pcd_item_enc_attribute_public_list`** : * **`request_pcd_item_enc_attribute_public_list`** : Liste d'objets `RequestPcdItemEncAttributePublic` des attributs publics de l'`Item` chiffré.
* **`request_pcd_item_enc_attribute_role_confidential_list`** : * **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `RequestPcdItemEncAttributeRoleConfidential` des attributs confidentiels de l'`Item` chiffré.
* **`request_pcd_item_enc_attribute_private_list`** : * **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `RequestPcdItemEncAttributePrivate` des attributs privés de l'`Item` chiffré.
Principaux champs de la structure `RequestPcdItemEncAttributePublic` : Principaux champs de la structure `RequestPcdItemEncAttributePublic` :
* **`attribute_name`** : * **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : * **`data_enc`** : Données chiffrées par la clé `ProcessKey` de l'`ItemProcess` concerné.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
Principaux champs de la structure `RequestPcdItemEncAttributeRoleConfidential` : Principaux champs de la structure `RequestPcdItemEncAttributeRoleConfidential` :
* **`attribute_name`** : * **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : * **`data_enc`** : Données chiffrées par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
Principaux champs de la structure `RequestPcdItemEncAttributePrivate` : Principaux champs de la structure `RequestPcdItemEncAttributePrivate` :
* **`attribute_name`** : * **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : * **`data_enc`** : Données chiffrées par la clé privée `KeyRecover`.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
### 7.1. <a name='Schmadesflux'></a>Schéma des flux ### 7.1. <a name='Schmadesflux'></a>Schéma des flux
@ -277,31 +283,31 @@ Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `R
Principaux champs des `RequestPcd` : Principaux champs des `RequestPcd` :
* **`request`** : * **`request`** : cf la descripton de la structure `Request`.
* **`sig_value`** : * **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`).
* **`request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret`** : * **`request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
* **`request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret`** : * **`request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` du `RequestPCD` de référence, chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
* **`message_public`** : * **`message_public`** : Message public, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
* **`message_confidential`** : * **`message_confidential`** : Message confidentiel, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
* **`message_private`** : * **`message_private`** : Message privé, chiffré par la clé privée `KeyRecover`.
* **`sp_address_to`** : * **`sp_address_to`** : Adresse du destinataire.
* **`sp_address_from`** : * **`sp_address_from`** : Adresse de l'émetteur.
* **`sp_address_reply`** : * **`sp_address_reply`** : Adresse de réponse à l'émetteur.
* **`timestamp_declared`** : * **`timestamp_declared`** : Horodatage déclaré.
* **`role_name_from`** : * **`role_name_from`** : Nom du rôle de l'émetteur.
* **`role_name_to`** : * **`role_name_to`** : Nom du rôle du destinataire.
* **`payment_method_enc_by_shared_secret`** : * **`payment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `paiement` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`deposit_method_enc_by_shared_secret`** : * **`cap_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP` servant à la validation des paiements temporaires en attente du passage d'un cap.
* **`commitment_method_enc_by_shared_secret`** : * **`deposit_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`payment_request_pcd_hash_list_enc_by_shared_secret`** : * **`commitment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `commitment` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`cap_request_pcd_hash_list_enc_by_shared_secret`** : * **`ask_payment_method_enc_by_shared_secret`** : Demande de méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`deposit_request_pcd_hash_list_enc_by_shared_secret`** : * **`ask_deposit_method_enc_by_shared_secret`** : Demande de méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`commitment_request_pcd_hash_list_enc_by_shared_secret`** : * **`ask_commitment_method_enc_by_shared_secret`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_payment_method_enc_by_shared_secret`** : * **`payment_method_enc_by_shared_secret`** : Méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`ask_deposit_method_enc_by_shared_secret`** : * **`deposit_method_enc_by_shared_secret`** : Méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`ask_commitment_method_enc_by_shared_secret`** : * **`commitment_method_enc_by_shared_secret`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`certif_key_enc_by_shared_secret`** : * **`certif_key_enc_by_shared_secret`** : Clé de certification chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`device_footprint_enc_by_sp_shared_secret`** : * **`device_footprint_enc_by_sp_shared_secret`** : Empreinte du dispositif de l'émetteur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux
@ -377,9 +383,36 @@ Workflow:
Principaux champs des `RequestPrdList` : Principaux champs des `RequestPrdList` :
* **`request_prd`** : * **`request_prd`** : cf la descripton de la structure `RequestPrd`.
* **`item_member_enc_by_sp_shared_secret`** :
* **`pre_id_sp_enc_by_shared_secret`** : Dans le cas d'une création de compte :
* **`item_member_enc_by_sp_shared_secret`** : Nouvel `ItemMember` temporaire,chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
L'`ItemMember` temporaire contient les métadonnées de type `Metadata` suivantes :
* **`MetadataProcessPublic` de type `ItemMemberPublicAttributeGroup`** :
* **`sp_address_public`** : Adresse publique de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`sp_address_public_sig`** : Signature de l'adresse publique de l'utilisateur par la clé `recover`, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`sp_address_revoke_public`** : Adresse publique de révocation de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`sp_address_revoke_public_sig`** : Signature de l'adresse publique de révocation de l'utilisateur par la clé de spend de `revoke`, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`third_sp_address_list_public`** : Liste des adresses publiques de devices tiers, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`data_size_max`** : Taille maximale des données acceptée par l'utilisateur (par flux), chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`payment_method_list_public`** : Liste des méthodes de paiement acceptées par l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`succession_process_hash`** : Hash du processus de succession de l'utilisateur (transmission de l'identité numérique et donc de tous les flux associés), chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`device_footprint`** : Empreinte du dispositif de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`MetadataRoleConfidential` de type `ItemMemberRoleConfidentialAttributeGroup`** :
* **`shard_confidential`** : Shard de l'utilisateur, chiffré par la clé `KeyConfidential` d'une `transaction SP`.
* **`pre_id_confidential`** : Pré empreinte de l'identité numérique de l'utilisateur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`MetadataPrivate` de type `ItemMemberRolePrivateAttributeGroup`** :
* **`priv_key_mainnet_spend`** : Clé de dépense de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
* **`priv_key_mainnet_scan`** : Clé de scan de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
* **`priv_key_signet_scan`** : Clé de scan du signet de `recover`de l'utilisateur, chiffrée `KeyRecover`.
### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux
@ -418,8 +451,8 @@ Workflow :
Principaux champs des `RequestPrdMessage` : Principaux champs des `RequestPrdMessage` :
* **`request_prd`** : * **`request_prd`** : cf la descripton de la structure `RequestPrd`.
* **`raw_transaction_list`** : * **`raw_transaction_list`** : Liste des `transaction SP` au format `raw` pour la publication de la transaction dans la side chain.
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
@ -454,7 +487,7 @@ Workflow:
Principaux champs des `RequestPrdUpdate` : Principaux champs des `RequestPrdUpdate` :
* **`request_prd`** : * **`request_prd`** : cf la descripton de la structure `RequestPrd`.
### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux
@ -488,8 +521,8 @@ Voir les diagrammes `PRDUpdateFlows`, `PRDUpdateFlows` et `PRDMessageFlows`.
Principaux champs des `RequestPrdConfirm` : Principaux champs des `RequestPrdConfirm` :
* **`request_prd`** : * **`request_prd`** : cf la descripton de la structure `RequestPrd`.
* **`code_confirm_enc_by_shared_secret`** : * **`code_confirm_enc_by_shared_secret`** : Code de confirmation chiffré par la clé `KeyConfidential` d'une `transaction SP` dans le cas d'un 2FA.
### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux
@ -519,10 +552,9 @@ Voir les diagrammes `PRDUpdateFlows` et `PRDUpdateFlows`.
Principaux champs des `RequestPrdResponse` : Principaux champs des `RequestPrdResponse` :
* **`request_prd`** : * **`request_prd`** : cf la descripton de la structure `RequestPrd`.
* **`sig_value`** : * **`shared_secret_key_enc_by_sp_shared_secret`** : Clé de chiffrement partagée chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`shared_secret_key_enc_by_sp_shared_secret`** : * **`shard_enc_by_sp_shared_secret`** : Shard chiffré par la clé `KeyConfidential` d'une `transaction SP`.
* **`shard_enc_by_sp_shared_secret`** :
### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux ### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux
@ -548,11 +580,11 @@ Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le s
## 15. <a name='Todo'></a>Todo ## 15. <a name='Todo'></a>Todo
[ ] Description détaillée de tous les éléments (attributs) qui composent le request-type: [ ] Description détaillée de tous les éléments (attributs) qui composent le request-type:
[ ] Quy a-t-il dans le request-type? [x] Quy a-t-il dans le request-type?
[ ] A quoi sert lattribut X du request-type? [x] A quoi sert lattribut X du request-type?
[ ] Description un par un des contextes où le request-type est utilisé. [x] Description un par un des contextes où le request-type est utilisé.
[ ] Description pas à pas de lenvoi du request-type. [x] Description pas à pas de lenvoi du request-type.
[ ] Que se passe-t-il dans le système lorsque le request-type est envoyé? [ ] Que se passe-t-il dans le système lorsque le request-type est envoyé?
[ ] Description pas à pas de la réception du request-type. [x] Description pas à pas de la réception du request-type.
[ ] Que se passe-t-il dans le système lorsque le request-type est reçu? [x] Que se passe-t-il dans le système lorsque le request-type est reçu?
[ ] Exemple dutilisation. [x] Exemple dutilisation.

File diff suppressed because it is too large Load Diff