pcd simplification wip (doc)

This commit is contained in:
NicolasCantu 2024-03-08 11:55:30 +01:00
parent a593ea24ee
commit 48691b7abe
2 changed files with 248 additions and 128 deletions

View File

@ -34,8 +34,6 @@ Voir [_Doc_references.md](_Doc_references.md).
### 4.1. <a name='Cls'></a>Clés
Base "key_recover_spend_list"
pseudo-code:
```json
@ -56,8 +54,6 @@ pseudo-code:
### 4.2. <a name='Peers'></a>Peers
shared_peer_list_merged
pseudo-code:
```json
@ -121,6 +117,7 @@ pseudo-code:
### 4.3. <a name='Process'></a>Process
pseudo-code:
```json
[
@ -626,20 +623,145 @@ pseudo-code:
pseudo-code:
```json
[{
"me_sender": false,
"process_hash": "",
"item_name": "",
"request_type": "",
"timestamp": 0,
"message_hash":"pending|",
"pcd_hash": "pending|",
"prd_hash": "pending|",
"request_pcd_reference_hash": "pending|",
"request_pcd_origin_hash": "pending|",
"request_prd_reference_hash": "pending|",
"request_prd_origin_hash": "pending|",
"item_reference_hash": "pending|",
"prd_sig_value": "",
"prd_sp_address_from": "",
"prd_role_from": "",
"prd_sp_address_to": "",
"prd_role_to": "",
"prd_tx_sp": "pending|",
"peer_list": [{
"domain": "",
"ip": "",
"port": "",
"timestamp": 0,
"sender": false
}],
}]
```
### 4.6. <a name='RequestPcd'></a>RequestPcd
pseudo-code:
```json
[
{
"request": {
"item_name": "",
"request_type": "",
"version": 0,
"process_hash": "",
"request_pcd_reference_hash": "",
"request_pcd_origin_hash": "",
"request_prd_reference_hash": "",
"request_prd_origin_hash": "",
"item_reference_hash": ""
},
"item_list": [{
"version": "",
"item_type": "",
"name": "",
"request_pcd_item_enc_attribute_public_list": [{
"attribute_name": "",
"data_enc": ""
}],
"request_pcd_item_enc_attribute_role_confidential_list": [{
"attribute_name": "",
"data_enc": "",
}],
"request_pcd_item_enc_attribute_private_list": [{
"attribute_name": "",
"data_enc": ""
}],
}],
"pagination": {
"start": 0,
"number": 0,
"page_index": 0,
"page_total": 0
},
"validation_status": "pending|ok|ko"
}
]
```
### 4.5. <a name='RequestPrd'></a>RequestPrd
### 4.6. <a name='RequestPcd'></a>RequestPcd
pseudo-code:
```json
[
{
"request": {
"item_name": "",
"request_type": "",
"version": 0,
"process_hash": "",
"request_pcd_reference_hash": "",
"request_pcd_origin_hash": "",
"request_prd_reference_hash": "",
"request_prd_origin_hash": "",
"item_reference_hash": ""
},
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
"": "",
]
```
## 5. <a name='Dataprive'></a>Data privée
### 5.1. <a name='Cls-1'></a>Clés
Base "key_recover_spend_list"
pseudo-code:
```json
@ -664,6 +786,8 @@ pseudo-code:
### 5.2. <a name='Peers-1'></a>Peers
pseudo-code:
```json
[
{
@ -712,6 +836,8 @@ pseudo-code:
### 5.3. <a name='Process-1'></a>Process
pseudo-code:
```json
[
{
@ -817,8 +943,15 @@ pseudo-code:
]
```
### 5.4. <a name='Messages-1'></a>Messages
### 5.6. <a name='RequestPcd-1'></a>RequestPcd
pseudo-code:
```json
[{
"pcd_hash": "",
"pcd_aes_key_decrypted_list": [""]
}]
```
### 5.5. <a name='RequestPrd-1'></a>RequestPrd
### 5.6. <a name='RequestPcd-1'></a>RequestPcd

View File

@ -1,97 +1,96 @@
<!-- vscode-markdown-toc -->
* 1. [Documents de référence](#Documentsderfrence)
* 2. [Methods](#Methods)
* 2.1. [DepositMethod](#DepositMethod)
* 2.2. [CommitmentMethod](#CommitmentMethod)
* 2.3. [PaymentMethod](#PaymentMethod)
* 2.1. [DepositMethod](#DepositMethod)
* 2.2. [CommitmentMethod](#CommitmentMethod)
* 2.3. [PaymentMethod](#PaymentMethod)
* 3. [Items](#Items)
* 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)
* 3.4. [ItemCommitment](#ItemCommitment)
* 3.4.1. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup)
* 3.4.2. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup)
* 3.5. [ItemDeposit](#ItemDeposit)
* 3.5.1. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup)
* 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 3.6. [ItemEnum](#ItemEnum)
* 3.7. [ItemPayment](#ItemPayment)
* 3.7.1. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup)
* 3.7.2. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup)
* 3.7.3. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup)
* 3.8. [ItemPeer](#ItemPeer)
* 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
* 3.9. [ItemProcess](#ItemProcess)
* 3.9.1. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup)
* 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)
* 3.4. [ItemCommitment](#ItemCommitment)
* 3.4.1. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup)
* 3.4.2. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup)
* 3.5. [ItemDeposit](#ItemDeposit)
* 3.5.1. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup)
* 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 3.6. [ItemEnum](#ItemEnum)
* 3.7. [ItemPayment](#ItemPayment)
* 3.7.1. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup)
* 3.7.2. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup)
* 3.7.3. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup)
* 3.8. [ItemPeer](#ItemPeer)
* 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
* 3.9. [ItemProcess](#ItemProcess)
* 3.9.1. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup)
* 4. [Encryption](#Encryption)
* 4.1. [KeyEncryption](#KeyEncryption)
* 4.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit)
* 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)
* 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)
* 7. [L1Node](#L1Node)
* 7.1. [L1NodeMining](#L1NodeMining)
* 7.2. [L2Node](#L2Node)
* 7.3. [L2NodeMining](#L2NodeMining)
* 7.4. [L2Certif](#L2Certif)
* 7.5. [BlockCertif](#BlockCertif)
* 7.1. [L1NodeMining](#L1NodeMining)
* 7.2. [L2Node](#L2Node)
* 7.3. [L2NodeMining](#L2NodeMining)
* 7.4. [L2Certif](#L2Certif)
* 7.5. [BlockCertif](#BlockCertif)
* 8. [Metadata](#Metadata)
* 8.1. [MetadataContractPublic](#MetadataContractPublic)
* 8.2. [MetadataPrivate](#MetadataPrivate)
* 8.3. [MetadataRoleConfidential](#MetadataRoleConfidential)
* 8.4. [Amount](#Amount)
* 8.5. [Number](#Number)
* 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)
* 10.1. [Pagination](#Pagination)
* 10.2. [RequestPcdItemGenericEnc](#RequestPcdItemGenericEnc)
* 10.2.1. [RequestPcdItemEncAttributePublic](#RequestPcdItemEncAttributePublic)
* 10.2.2. [RequestPcdItemEncAttributeRoleConfidential](#RequestPcdItemEncAttributeRoleConfidential)
* 10.2.3. [RequestPcdItemEncAttributePrivate](#RequestPcdItemEncAttributePrivate)
* 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)
* 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. [ConditionRequestPrdAddressSet](#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)
* 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. [ConditionRequestPrdAddressSet](#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)
* 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
@ -661,11 +660,11 @@ Defines a general request structure within the system, encapsulating details abo
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.
| Attribute Name | Type | Option | Description |
|----------------|--------------------------------------|--------|-------------------------------------------------------------------|
| `request` | ```Request``` | | The request, assuming `Request` is a predefined struct. |
| `item_list` | ```Vec< RequestPcdItemGenericEnc>``` | | List of generic encrypted items. |
| `pagination` | ```Pagination``` | Yes | Pagination details, assuming `Pagination` is a predefined struct. |
| Attribute Name | Type | Option | Description |
|-----------------|--------------------------------------|--------|-------------------------------------------------------------------|
| `request` | ```Request``` | | The request, assuming `Request` is a predefined struct. |
| `item_enc_list` | ```Vec< RequestPcdItemGenericEnc>``` | | List of generic encrypted items. |
| `pagination` | ```Pagination``` | Yes | Pagination details, assuming `Pagination` is a predefined struct. |
### 10.1. <a name='Pagination'></a>Pagination
@ -676,8 +675,22 @@ The `Pagination` struct is essential for managing large datasets, detailing the
| `start` | ```usize``` | | L'indice de départ pour la pagination. |
| `number` | ```usize``` | | Le nombre d'éléments par page. |
| `page_index` | ```usize``` | | L'indice de la page actuelle pour la pagination. |
| `page_total` | ```usize``` | | |
### 10.2. <a name='RequestPcdItemEncAttributePublic'></a> RequestPcdItemEncAttributePublic
### 10.2. <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.
| Attribute Name | Type | Option | Description |
|---------------------------------------------------------|--------------------------------------------------------|--------|----------------------------------------------------------|
| `version` | ```i64``` | | The version of the item. |
| `item_type` | ```String``` | | The type of the item. |
| `name` | ```String``` | | The name of the item. |
| `request_pcd_item_enc_attribute_public_list` | ```Vec< RequestPcdItemEncAttributePublic>``` | Yes | Optional list of public encrypted attributes. |
| `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. |
#### 10.2.1. <a name='RequestPcdItemEncAttributePublic'></a> RequestPcdItemEncAttributePublic
This struct outlines public encrypted attributes for RequestPcd items, ensuring the secure transmission of public attribute data.
@ -686,17 +699,16 @@ 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. |
### 10.3. <a name='RequestPcdItemEncAttributeRoleConfidential'></a> RequestPcdItemEncAttributeRoleConfidential
#### 10.2.2. <a name='RequestPcdItemEncAttributeRoleConfidential'></a> RequestPcdItemEncAttributeRoleConfidential
`request_pcdItemEncAttributeRoleConfidential` deals with role-specific confidential encrypted attributes, securing sensitive data while allowing role-based access.
| Attribute Name | Type | Option | Description |
|------------------|---------------------|--------|---------------------------------------------------|
| `attribute_name` | ```String``` | | The name of the attribute. |
| `data_enc` | ```String``` | Yes | The encrypted data associated with the attribute. |
| `key` | ```KeyEncryption``` | Yes | The key used for encrypting the data. |
| Attribute Name | Type | Option | Description |
|------------------|--------------|--------|---------------------------------------------------|
| `attribute_name` | ```String``` | | The name of the attribute. |
| `data_enc` | ```String``` | Yes | The encrypted data associated with the attribute. |
### 10.4. <a name='RequestPcdItemEncAttributePrivate'></a> RequestPcdItemEncAttributePrivate
#### 10.2.3. <a name='RequestPcdItemEncAttributePrivate'></a> RequestPcdItemEncAttributePrivate
It specifies private encrypted attributes for `request_pcd` items, protecting the most sensitive information with encryption.
@ -705,31 +717,6 @@ 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. |
### 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.
| Attribute Name | Type | Option | Description |
|---------------------------------------------------------|--------------------------------------------------------|--------|----------------------------------------------------------|
| `item_enc` | ```RequestPcdItemEnc``` | | The encrypted item. |
| `request_pcd_item_enc_attribute_public_list` | ```Vec< RequestPcdItemEncAttributePublic>``` | Yes | Optional list of public encrypted attributes. |
| `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. |
### 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.
| Attribute Name | Type | Option | Description |
|---------------------------------------------------------|--------------------------------------------------------|--------|-------------------------------------------------|
| `version` | ```i64``` | | The version of the item. |
| `item_type` | ```String``` | | The type of the item. |
| `name` | ```String``` | | The name of the item. |
| `pagination_number_per_request_pcd` | ```u32``` | | The pagination number per RequestPcd. |
| `request_pcd_item_enc_attribute_public_list` | ```Vec< RequestPcdItemEncAttributePublic>``` | | List of public encrypted attributes. |
| `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. |
## 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.