index fixed (doc)
This commit is contained in:
parent
f68a59d9e4
commit
7eb9f608ba
@ -12,33 +12,34 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 3. [Objectif](#Objectif)
|
||||
* 4. [Portée](#Porte)
|
||||
* 5. [Documents de référence](#Documentsderfrence)
|
||||
* 6. [Schématisation des processus](#Schmatisationdesprocessus)
|
||||
* 6.1. [Création d'un `User`](#CrationdunUser)
|
||||
* 6.2. [Onboarding](#Onboarding)
|
||||
* 6.3. [Connexion avec un `User` créée (`recover`)](#ConnexionavecunUsercrerecover)
|
||||
* 6.4. [Extension de l'entropie du mot de passe (PBKDF2)](#ExtensiondelentropiedumotdepassePBKDF2)
|
||||
* 6.5. [Chiffrement AES quantique résistant (AES-GCM-256)](#ChiffrementAESquantiquersistantAES-GCM-256)
|
||||
* 6.6. [Génération des clés privées](#Gnrationdesclsprives)
|
||||
* 7. [Authentification des `User`](#AuthentificationdesUser)
|
||||
* 8. [Connexion via des tiers](#Connexionviadestiers)
|
||||
* 9. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
|
||||
* 10. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
|
||||
* 11. [Principe de fonctionnement](#Principedefonctionnement)
|
||||
* 12. [Wallet](#Wallet)
|
||||
* 12.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
|
||||
* 13. [Gestion des clés du `User`](#GestiondesclsduUser)
|
||||
* 13.1. [Génération des clés privées](#Gnrationdesclsprives-1)
|
||||
* 13.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
|
||||
* 13.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
|
||||
* 13.1.3. [Onboarding](#Onboarding-1)
|
||||
* 13.2. [Member complété des champs du process sélectionné et mise à jour de la liste des Members du process](#MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess)
|
||||
* 13.3. [Process complété de l'address SP de l'`User` et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelUseretmisejourdelalistedesversionduprocess)
|
||||
* 13.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
|
||||
* 14. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
|
||||
* 15. [Clés de third parties](#Clsdethirdparties)
|
||||
* 16. [Connexions avec un `User` (`recover`)](#ConnexionsavecunUserrecover)
|
||||
* 17. [Exemples de Code](#ExemplesdeCode)
|
||||
* 18. [Todo](#Todo)
|
||||
* 6. [Indication génériques](#Indicationgnriques)
|
||||
* 7. [Schématisation des processus](#Schmatisationdesprocessus)
|
||||
* 7.1. [Création d'un `User`](#CrationdunUser)
|
||||
* 7.2. [Onboarding](#Onboarding)
|
||||
* 7.3. [Connexion avec un `User` créée (`recover`)](#ConnexionavecunUsercrerecover)
|
||||
* 7.4. [Extension de l'entropie du mot de passe (PBKDF2)](#ExtensiondelentropiedumotdepassePBKDF2)
|
||||
* 7.5. [Chiffrement AES quantique résistant (AES-GCM-256)](#ChiffrementAESquantiquersistantAES-GCM-256)
|
||||
* 7.6. [Génération des clés privées](#Gnrationdesclsprives)
|
||||
* 8. [Authentification des `User`](#AuthentificationdesUser)
|
||||
* 9. [Connexion via des tiers](#Connexionviadestiers)
|
||||
* 10. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
|
||||
* 11. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
|
||||
* 12. [Principe de fonctionnement](#Principedefonctionnement)
|
||||
* 13. [Wallet](#Wallet)
|
||||
* 13.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
|
||||
* 14. [Gestion des clés du `User`](#GestiondesclsduUser)
|
||||
* 14.1. [Génération des clés privées](#Gnrationdesclsprives-1)
|
||||
* 14.1.1. [Gestion de la clé `spend_recover`](#Gestiondelaclspend_recover)
|
||||
* 14.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
|
||||
* 14.1.3. [Onboarding](#Onboarding-1)
|
||||
* 14.2. [Member complété des champs du process](#Membercompltdeschampsduprocess)
|
||||
* 14.3. [Process complété de l'address SP de l'`User` et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelUseretmisejourdelalistedesversionduprocess)
|
||||
* 14.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjours)
|
||||
* 15. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
|
||||
* 16. [Clés de third parties](#Clsdethirdparties)
|
||||
* 17. [Connexions avec un `User` (`recover`)](#ConnexionsavecunUserrecover)
|
||||
* 18. [Exemples de Code](#ExemplesdeCode)
|
||||
* 19. [Todo](#Todo)
|
||||
|
||||
<!-- vscode-markdown-toc-config
|
||||
numbering=true
|
||||
@ -62,7 +63,7 @@ Wireframes :
|
||||
|
||||
Voir [_Doc_references.md](_Doc_references.md).
|
||||
|
||||
## Indication génériques
|
||||
## 6. <a name='Indicationgnriques'></a>Indication génériques
|
||||
|
||||
Toutes les mentions de chiffrement et de déchiffrement implique l'algorithme AES-GCM 256 bits (soit des clés de 256 bits, ou 32 bytes).
|
||||
|
||||
@ -71,15 +72,15 @@ Sauf mention contraire, tous les `Hash` désignent l'algorithme `sha256`.
|
||||
Le tableau des notifications dans PCD/PRD indique quels flux font l'objet d'une notification.
|
||||
Les notification ne sont pas dépendantes des usages mais des types PCD/PRD (pour plus de facilité d’implémentation et éviter les spécifiques).
|
||||
|
||||
## 6. <a name='Schmatisationdesprocessus'></a>Schématisation des processus
|
||||
## 7. <a name='Schmatisationdesprocessus'></a>Schématisation des processus
|
||||
|
||||
### 6.1. <a name='CrationdunUser'></a>Création d'un `User`
|
||||
### 7.1. <a name='CrationdunUser'></a>Création d'un `User`
|
||||
|
||||

|
||||
|
||||
**Note**: Comme la liste des `Process`, c’est une liste en cache fusioné avec les nouvelles liste reçues dans les enveloppes puis repartagé fusionné dans les enveloppes envoyées
|
||||
|
||||
### 6.2. <a name='Onboarding'></a>Onboarding
|
||||
### 7.2. <a name='Onboarding'></a>Onboarding
|
||||
|
||||

|
||||
|
||||
@ -89,12 +90,12 @@ Les notification ne sont pas dépendantes des usages mais des types PCD/PRD (pou
|
||||
|
||||
=> Un PCD est toujours une liste d’objets, ici la listes des membres du process.
|
||||
|
||||
|
||||
### 6.3. <a name='ConnexionavecunUsercrerecover'></a>Connexion avec un `User` créée (`recover`)
|
||||
### 7.3. <a name='ConnexionavecunUsercrerecover'></a>Connexion avec un `User` créée (`recover`)
|
||||
|
||||

|
||||
|
||||
L'image `ImageRecover` contient :
|
||||
|
||||
* `KeyRecoverScan`: clé privée de scan des `transaction SP` de recover
|
||||
* `Part1Enc`: clé privée de dépense de l'`User` chiffrée par le mot de passe
|
||||
* `SeedRand1`: seed utilisée pour générer `Part1Enc`
|
||||
@ -102,19 +103,19 @@ L'image `ImageRecover` contient :
|
||||
* `PreId`: identifiant de l'`User` généré par le hash de `Part1Enc` et du mot de passe de l'`User`
|
||||
* `SpAddressRecover`: adresse SP de l'`User`
|
||||
|
||||
### 6.4. <a name='ExtensiondelentropiedumotdepassePBKDF2'></a>Extension de l'entropie du mot de passe (PBKDF2)
|
||||
### 7.4. <a name='ExtensiondelentropiedumotdepassePBKDF2'></a>Extension de l'entropie du mot de passe (PBKDF2)
|
||||
|
||||

|
||||
|
||||
### 6.5. <a name='ChiffrementAESquantiquersistantAES-GCM-256'></a>Chiffrement AES quantique résistant (AES-GCM-256)
|
||||
### 7.5. <a name='ChiffrementAESquantiquersistantAES-GCM-256'></a>Chiffrement AES quantique résistant (AES-GCM-256)
|
||||
|
||||

|
||||
|
||||
### 6.6. <a name='Gnrationdesclsprives'></a>Génération des clés privées
|
||||
### 7.6. <a name='Gnrationdesclsprives'></a>Génération des clés privées
|
||||
|
||||

|
||||
|
||||
## 7. <a name='AuthentificationdesUser'></a>Authentification des `User`
|
||||
## 8. <a name='AuthentificationdesUser'></a>Authentification des `User`
|
||||
|
||||
Les `User` doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite `recover` mise en cache dans IndexedDB (données chiffrées par le mot de passe cf. [Chiffrement AES quantique résistant (AES-GCM-256)](#ChiffrementAESquantiquersistantAES-GCM-256)) pour les navigateurs et les applications mobiles, sinon chiffré de la même manière mais en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de Members choisi par les gestionnaires des Members des `Process` .
|
||||
|
||||
@ -124,23 +125,23 @@ Les `User` sont reconnus par une`adresse SP` dans un ou plusieurs rôles dans un
|
||||
|
||||
Chaque relais permet d'accéder à la liste des `Process`, de créer, recomposer (`recover`) et révoquer (`revoke`) un `User`, et de la compléter par `Process` dans lequel l'`User` a un rôle (`onboarding`).
|
||||
|
||||
## 8. <a name='Connexionviadestiers'></a>Connexion via des tiers
|
||||
## 9. <a name='Connexionviadestiers'></a>Connexion via des tiers
|
||||
|
||||
Le système offrira la possibilité de se connecter via des services tiers (tels que OAuth2, avec Google, GitHub, etc.), permettant une intégration fluide avec les écosystèmes existants sans dégrader l'expérience `User`.
|
||||
|
||||
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `Member`. En parrallèle des flux existant, les hash des requêtes API et de leurs réponses sont signés des clés des parties prenantes pour une vérification de la conformité des données par rapport aux `Process` 4NK.
|
||||
|
||||
## 9. <a name='Fonctionnalitdercuprationdemotdepasse'></a>Fonctionnalité de récupération de mot de passe
|
||||
## 10. <a name='Fonctionnalitdercuprationdemotdepasse'></a>Fonctionnalité de récupération de mot de passe
|
||||
|
||||
En cas d'oubli de mot de passe, les `User` pourront récupérer leur accès depuis un nouveau `User` (`recover`) après avoir révoqué l'ancien `User`, via un processus sécurisé, impliquant une vérification d'un `User` et l'échange de secrets chiffrés conformément aux protocoles établis depuis une adresse de révocation `revoke`.
|
||||
|
||||
Une image de révocation est générée à la création d'un `User` pour pouvoir dépenser un UTXO dit alors de révocation pour signaler aux autres Members de `Process` de ne plus prendre en compte les transactions venant de l'adresse silent payment actuelle du `User`.
|
||||
|
||||
## 10. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache
|
||||
## 11. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache
|
||||
|
||||
Le système ne maintiendra pas de session traditionnelle sur le serveur. La navigation de l'`User` persiste grâce à un cache local dans IndexedDB ou en mémoire, avec une politique de sécurité stricte forçant la resaisie du mot de passe après un rafraîchissement de la page ou une inactivité prolongée, déterminée par une durée maximale sans login.
|
||||
|
||||
## 11. <a name='Principedefonctionnement'></a>Principe de fonctionnement
|
||||
## 12. <a name='Principedefonctionnement'></a>Principe de fonctionnement
|
||||
|
||||
A la création d'un `User`, le SDK génère une clé privée Bitcoin pour les transactions SP (Silent Payments) et une clé privée pour la révocation de ce `User`. Ces clés sont stockées dans les données exif d'une image de login et d'une image de révocation, respectivement.
|
||||
|
||||
@ -164,7 +165,7 @@ Si l'`User` a aussi envoyé un `PRDUpdate` de la liste des `Process`, les `PRDRe
|
||||
Note : Les `User` sont communs à tous les `Process` et décrits par `Process` avec leurs champs spéciifiques dans des `Member` de type `Member` gérés par les `Member` qui sont listés dans le `Role` `Member` du `Process` via leur `adresse SP`.
|
||||
Lors de la création d'un `User`, on utilise le plus souvent un `Process` existant. On pourrait aussi s’arrêter à la création du `User` mais ce serait un peut étrange dans l’expérience car personne n’a besoin de créer un `User` sans aller sur `Process`.
|
||||
|
||||
## 12. <a name='Wallet'></a>Wallet
|
||||
## 13. <a name='Wallet'></a>Wallet
|
||||
|
||||
Les `transactions SP` ont besoin de 2 clés privées Bitcoin, l'une critique sur la dépense des jetons, l'autre qui lève la confidentialité (partageable dans certains cas) :
|
||||
|
||||
@ -202,7 +203,7 @@ La seed `2` permet de dériver :
|
||||
1. Clé privée de dépense de révocation `revoke_spend` (`m/352h/1h/0h/0h/0`).
|
||||
2. Clé privée de scan de révocation `revoke_scan` (`m/352h/1h/0h/1h/0`).
|
||||
|
||||
### 12.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
|
||||
### 13.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
|
||||
|
||||
Le relais retournent des jetons à la connexion et à l'envoi d'une `Envelope` afin de créer les `UTXO` nécessaires pour les transactions SP.
|
||||
|
||||
@ -210,11 +211,11 @@ Pour revoir ces jetons l'`User` doit posséder une adresse silent payment.
|
||||
|
||||
A chaque nouveau message le relai génère de nouvelles addresses pour la clé fournie par l'utilisateur dans le champ `faucet_sp_address` des messages envoyés aux relais.
|
||||
|
||||
## 13. <a name='GestiondesclsduUser'></a>Gestion des clés du `User`
|
||||
## 14. <a name='GestiondesclsduUser'></a>Gestion des clés du `User`
|
||||
|
||||
### 13.1. <a name='Gnrationdesclsprives-1'></a>Génération des clés privées
|
||||
### 14.1. <a name='Gnrationdesclsprives-1'></a>Génération des clés privées
|
||||
|
||||
#### 13.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé `spend_recover`
|
||||
#### 14.1.1. <a name='Gestiondelaclspend_recover'></a>Gestion de la clé `spend_recover`
|
||||
|
||||
La clé privée `spend_recover` est la clé principale qui définit un `User` sur le réseau 4nk.
|
||||
|
||||
@ -255,7 +256,7 @@ pre_id=sha256(part1_spend_recover_enc, MDP, random_seed)
|
||||
|
||||
2. Création d'un `PrdList` par `Member` (1 shard par Member) par `Prd` cf [PRD-PCD](PRD-PCD-Specs.md PRD-PCD) :
|
||||
|
||||
#### 13.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
|
||||
#### 14.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
|
||||
|
||||
Les relais initialisent le SDK (Wasm) par défaut avec une liste `ProcessList` contenant `Process` choisi.
|
||||
|
||||
@ -263,9 +264,9 @@ Les managers des `Member` du `Process` seront responsables d'associer un `shard`
|
||||
|
||||
Les managers des `Member` du `Process` seront responsables d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `PrdResponse` en réponse au `PrdUserRecover` envoyé.
|
||||
|
||||
#### 13.1.3. <a name='Onboarding-1'></a>Onboarding
|
||||
#### 14.1.3. <a name='Onboarding-1'></a>Onboarding
|
||||
|
||||
### 13.2. <a name='MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess'></a>Member complété des champs du process
|
||||
### 14.2. <a name='Membercompltdeschampsduprocess'></a>Member complété des champs du process
|
||||
|
||||
Le role `Member` de `Process` sélectionné contient un `Item` avec des `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` contenant chacun une `render_template_list` dont le premier élément du tableau est le formulaire de création du `User` pour champs concernés (publiques ou confidentiels ou privés).
|
||||
|
||||
@ -273,27 +274,28 @@ Ces formulaires permettront de créé les champs attendus par `condition_attribu
|
||||
|
||||
Une fois `Member` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `Process` sélectionné via un `PrdUpdate`.
|
||||
|
||||
### 13.3. <a name='ProcesscompltdeladdressSPdelUseretmisejourdelalistedesversionduprocess'></a>Process complété de l'address SP de l'`User` et mise à jour de la liste des version du process
|
||||
### 14.3. <a name='ProcesscompltdeladdressSPdelUseretmisejourdelalistedesversionduprocess'></a>Process complété de l'address SP de l'`User` et mise à jour de la liste des version du process
|
||||
|
||||
Pour le ou les roles sélectionnés, l'attribut `request_prd_sp_address_list` de `condition_prd_address_set_list` est complété par l'adresse SP de l'`User`.
|
||||
|
||||
Une fois `Process` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `Process` sélectionné via un `PrdUpdate`.
|
||||
|
||||
### 13.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des Pcd et PrdResponse en tenant compte des mises à jours
|
||||
### 14.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjours'></a>Réception des Pcd et PrdResponse en tenant compte des mises à jours
|
||||
|
||||
Envoi d'un `PrdList` pour chaque `Member` de chaque rôle du process sélectionné.
|
||||
|
||||
## 14. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
|
||||
## 15. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
|
||||
|
||||
Les clés de l'image de révocation sont chiffrées par le mot de passe et stockées directement dans les données exifs de l'image de révocation.
|
||||
|
||||
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `PrdList` mais la transaction SP est envoyée depuis l'adresse de révocation (la clé aura dû être chargée au préalable depuis l'interface).
|
||||
|
||||
L'image `ImageRevoke` contient :
|
||||
|
||||
* `KeyRevokeSpend`: clé privée de dépense du mainnet
|
||||
* `KeyRevokeScan`: clé privée de scan du mainnet
|
||||
|
||||
## 15. <a name='Clsdethirdparties'></a>Clés de third parties
|
||||
## 16. <a name='Clsdethirdparties'></a>Clés de third parties
|
||||
|
||||
Au moment de l'update de `Member` il est possible de charger des addresses SP de third parties pour lesquelles l'`User` a un rôle dans un `Process`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `Member`.
|
||||
|
||||
@ -301,7 +303,7 @@ Les clés privées associées sont générées lors de l'update d'un `Member`,
|
||||
|
||||
Lorsqu'une transaction est reçue sur l'application de 2FA, celle-ci demande de confirmer ou non. Si il y a une confirmation dans l'interface alors une transaction SP est envoyée au dispositif initial, en dépensant l'UTXO reçue et avec les mêmes Hash dans les outputs que la transaction reçue afin que le dispositif initial puisse collecter les `Prd` concernés.
|
||||
|
||||
## 16. <a name='ConnexionsavecunUserrecover'></a>Connexions avec un `User` (`recover`)
|
||||
## 17. <a name='ConnexionsavecunUserrecover'></a>Connexions avec un `User` (`recover`)
|
||||
|
||||
Pour recrééer sa clé privée et envoyer un `PrdUserRecover` à chaque `Member` du rôle `Member` du `Process`, il faut réaliser les opérations suivantes :
|
||||
|
||||
@ -317,8 +319,8 @@ Pour recrééer sa clé privée et envoyer un `PrdUserRecover` à chaque `Member
|
||||
6. Création de `PrdList` à destination de tous les `Member` du `Process`.
|
||||
7. Réception des flux PCD et PRDResponse des gestionnaires de chaque `Role`
|
||||
|
||||
## 17. <a name='ExemplesdeCode'></a>Exemples de Code
|
||||
## 18. <a name='ExemplesdeCode'></a>Exemples de Code
|
||||
|
||||
## 18. <a name='Todo'></a>Todo
|
||||
## 19. <a name='Todo'></a>Todo
|
||||
|
||||
* [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.
|
||||
|
@ -13,12 +13,12 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 3. [Objectif](#Objectif)
|
||||
* 4. [Portée](#Porte)
|
||||
* 5. [Documents de référence](#Documentsderfrence)
|
||||
* 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)
|
||||
* 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. [Process](#Process)
|
||||
* 7. [Exemples de Code](#ExemplesdeCode)
|
||||
* 8. [Todo](#Todo)
|
||||
|
@ -14,27 +14,27 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 5. [Documents de référence](#Documentsderfrence)
|
||||
* 6. [Définitions](#Dfinitions)
|
||||
* 7. [Principes de messagerie](#Principesdemessagerie)
|
||||
* 7.1. [Envoyer les clés de déchiffrement des PCD dans les PRD](#EnvoyerlesclsdedchiffrementdesPCDdanslesPRD)
|
||||
* 7.2. [Valider un PCD](#ValiderunPCD)
|
||||
* 8. [Encryption](#Encryption)
|
||||
* 8.1. [Utilisation des hash des PCD et PRD "d'origine"](#UtilisationdeshashdesPCDetPRDdorigine)
|
||||
* 8.2. [Utilisation des hash des PCD, PRD et items "de référence"](#UtilisationdeshashdesPCDPRDetitemsderfrence)
|
||||
* 9. [Fonction des Pcd](#FonctiondesPcd)
|
||||
* 9.1. [Schéma des flux](#Schmadesflux)
|
||||
* 9.2. [Création et envoi](#Crationetenvoi)
|
||||
* 9.3. [Réception](#Rception)
|
||||
* 9.1. [Création et envoi](#Crationetenvoi)
|
||||
* 9.2. [Réception](#Rception)
|
||||
* 10. [Fonction des`Prd`](#FonctiondesPrd)
|
||||
* 10.1. [Schéma des flux](#Schmadesflux-1)
|
||||
* 10.1. [Schéma des flux](#Schmadesflux)
|
||||
* 10.2. [Création d'un `Prd`](#CrationdunPrd)
|
||||
* 10.3. [Réception](#Rception-1)
|
||||
* 11. [PrdList - Demande de Listes](#PrdList-DemandedeListes)
|
||||
* 11.1. [Schéma des flux](#Schmadesflux-1)
|
||||
* 12. [PrdMessage - Envoi d'un message](#PrdMessage-Envoidunmessage)
|
||||
* 12.1. [Schéma des flux](#Schmadesflux-1)
|
||||
* 13. [PrdUpdate - Mises à Jour de Pcd](#PrdUpdate-MisesJourdePcd)
|
||||
* 13.1. [Schéma des flux](#Schmadesflux-1)
|
||||
* 14. [PrdConfirm - Confirmation de Réception](#PrdConfirm-ConfirmationdeRception)
|
||||
* 14.1. [Schéma des flux](#Schmadesflux-1)
|
||||
* 15. [PrdResponse - Répondre à une Demande](#PrdResponse-RpondreuneDemande)
|
||||
* 15.1. [Schéma des flux](#Schmadesflux-1)
|
||||
* 16. [Exemples de Code](#ExemplesdeCode)
|
||||
* 17. [Todo](#Todo)
|
||||
* 16. [PrdUserCreate - Demande de sauvegarde des shards d'un User](#PrdUserCreate-DemandedesauvegardedesshardsdunUser)
|
||||
* 17. [PrdUserRecover - Demande de récupération des shards d'un User](#PrdUserRecover-DemandedercuprationdesshardsdunUser)
|
||||
* 18. [Exemples de Code](#ExemplesdeCode)
|
||||
* 19. [Todo](#Todo)
|
||||
|
||||
<!-- vscode-markdown-toc-config
|
||||
numbering=true
|
||||
@ -67,7 +67,6 @@ Voir [_Doc_references.md](_Doc_references.md).
|
||||
* `PrdUserCreate`: Message dédié à la réation d'un `User`.
|
||||
* `PrdUserRecover`: Message dédié à à la récupération d'un `User`.
|
||||
|
||||
|
||||
* **Envelope**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de `Process` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
|
||||
|
||||
* **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payments correspondant à un `Prd`.
|
||||
@ -150,7 +149,7 @@ Ce qui est résumé Pour la réception :
|
||||
| `PrdUserCreate`|Yes | Yes | No | Yes |No |Yes |
|
||||
| `PrdUserRecover`|No | No | No | Yes |No |Yes |
|
||||
|
||||
### Envoyer les clés de déchiffrement des PCD dans les PRD
|
||||
### 7.1. <a name='EnvoyerlesclsdedchiffrementdesPCDdanslesPRD'></a>Envoyer les clés de déchiffrement des PCD dans les PRD
|
||||
|
||||
2 cas :
|
||||
|
||||
@ -159,7 +158,7 @@ Ce qui est résumé Pour la réception :
|
||||
|
||||
De même pour les champs confidentiels des `PRD` dont les clés sont envoyés dans l'attribut `shared_secret_key_enc_by_sp_shared_secret` de leur objet `PRD`.
|
||||
|
||||
### Valider un PCD
|
||||
### 7.2. <a name='ValiderunPCD'></a>Valider un PCD
|
||||
|
||||
2 cas :
|
||||
|
||||
@ -194,14 +193,14 @@ Principaux champs des `Request` contenus dans les `Pcd` et `Prd` chiffrés :
|
||||
* **`request_prd_origin_hash`** : Hash du `Prd` à l'origine du `Prd`.
|
||||
* **`item_reference_hash`** : Hash de `Item` auquel le `Pcd` fait référence.
|
||||
|
||||
### Utilisation des hash des PCD et PRD "d'origine"
|
||||
### 8.1. <a name='UtilisationdeshashdesPCDetPRDdorigine'></a>Utilisation des hash des PCD et PRD "d'origine"
|
||||
|
||||
Il y a 2 cas d’utilisation des hash des PCD et PRD "d'origine" :
|
||||
|
||||
* Pour les mises à jour dont on mentionne l'origine c'est à dire la version précendente depuis laquelle la mise à jour a été faite.
|
||||
* Pour un message répond un autre, l’autre est dans mentionné avec son hash dans l'attribut.
|
||||
|
||||
### Utilisation des hash des PCD, PRD et items "de référence"
|
||||
### 8.2. <a name='UtilisationdeshashdesPCDPRDetitemsderfrence'></a>Utilisation des hash des PCD, PRD et items "de référence"
|
||||
|
||||
Quant l’utilisateur aura besoin des références pour vérifier la data on utilisera les référérences ce qui dépend des cas d’usages.
|
||||
|
||||
@ -258,7 +257,7 @@ Schéma des flux :
|
||||
|
||||

|
||||
|
||||
### 9.2. <a name='Crationetenvoi'></a>Création et envoi
|
||||
### 9.1. <a name='Crationetenvoi'></a>Création et envoi
|
||||
|
||||
La création d'un `Pcd` suit plusieurs étapes :
|
||||
|
||||
@ -271,7 +270,7 @@ Schéma de finalisation de la création d'un `Pcd` :
|
||||
|
||||
[PCD finalize](diagrams/PCDFinalize.png "PCD finalize")
|
||||
|
||||
### 9.3. <a name='Rception'></a>Réception
|
||||
### 9.2. <a name='Rception'></a>Réception
|
||||
|
||||
La réception d'un `Pcd` suit plusieurs étapes :
|
||||
|
||||
@ -318,7 +317,7 @@ Principaux champs des `Prd` :
|
||||
* **`certif_key_confidential`** : Clé de certification chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`device_footprint_enc_by_sp_shared_secret`** : Empreinte du dispositif de l'émetteur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
|
||||
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
### 10.1. <a name='Schmadesflux'></a>Schéma des flux
|
||||
|
||||
Pour simplifier, les `PrdConfirm` n'ont pas été inclus dans le schéma.
|
||||
|
||||
@ -489,7 +488,7 @@ Pour simplifier, les `PrdConfirm` n'ont pas été représentés dans le schéma.
|
||||
|
||||

|
||||
|
||||
## PrdUserCreate - Demande de sauvegarde des shards d'un User
|
||||
## 16. <a name='PrdUserCreate-DemandedesauvegardedesshardsdunUser'></a>PrdUserCreate - Demande de sauvegarde des shards d'un User
|
||||
|
||||
Le `PrdUserCreate` est utilisé pour demander la sauvegarde des shards d'un `User` dans le réseau.
|
||||
|
||||
@ -508,7 +507,7 @@ Pour simplifier, les `PrdConfirm` n'ont pas été représentés dans le schéma.
|
||||
|
||||

|
||||
|
||||
## PrdUserRecover - Demande de récupération des shards d'un User
|
||||
## 17. <a name='PrdUserRecover-DemandedercuprationdesshardsdunUser'></a>PrdUserRecover - Demande de récupération des shards d'un User
|
||||
|
||||
Le `PrdUserRecover` est utilisé pour demander la récupération des shards d'un `User` dans le réseau.
|
||||
|
||||
@ -526,6 +525,6 @@ Pour simplifier, les `PrdConfirm` n'ont pas été représentés dans le schéma.
|
||||
|
||||

|
||||
|
||||
## 16. <a name='ExemplesdeCode'></a>Exemples de Code
|
||||
## 18. <a name='ExemplesdeCode'></a>Exemples de Code
|
||||
|
||||
## 17. <a name='Todo'></a>Todo
|
||||
## 19. <a name='Todo'></a>Todo
|
||||
|
@ -12,10 +12,10 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 3. [Objectif](#Objectif)
|
||||
* 4. [Portée](#Porte)
|
||||
* 5. [Documents de référence](#Documentsderfrence)
|
||||
* 6. [ Fonction](#Fonction)
|
||||
* 7. [ Structure des outputs](#Structuredesoutputs)
|
||||
* 6. [Fonction](#Fonction)
|
||||
* 7. [Structure des outputs](#Structuredesoutputs)
|
||||
* 8. [Envoi de la transaction SP](#EnvoidelatransactionSP)
|
||||
* 9. [ En réception les transactions silent Payments SP sont relayées par les relais en temps réel](#EnrceptionlestransactionssilentPaymentsSPsontrelayesparlesrelaisentempsrel)
|
||||
* 9. [En réception les transactions silent Payments SP sont relayées par les relais en temps réel](#EnrceptionlestransactionssilentPaymentsSPsontrelayesparlesrelaisentempsrel)
|
||||
|
||||
<!-- vscode-markdown-toc-config
|
||||
numbering=true
|
||||
|
@ -11,18 +11,18 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 2. [Table des matières](#Tabledesmatires)
|
||||
* 3. [Documents de référence](#Documentsderfrence)
|
||||
* 4. [Choix des formats de données](#Choixdesformatsdedonnes)
|
||||
* 4.1. [ Strings](#Strings)
|
||||
* 4.2. [ Hexadécimales](#Hexadcimales)
|
||||
* 4.3. [ Tableaux de bytes](#Tableauxdebytes)
|
||||
* 4.1. [Strings](#Strings)
|
||||
* 4.2. [Hexadécimales](#Hexadcimales)
|
||||
* 4.3. [Tableaux de bytes](#Tableauxdebytes)
|
||||
* 4.3.1. [8 Bytes (64 bits)](#Bytes64bits)
|
||||
* 4.3.2. [16 Bytes (128 bits)](#Bytes128bits)
|
||||
* 4.3.3. [ 32 Bytes (256 bits)](#32Bytes256bits)
|
||||
* 4.3.4. [ 64 Bytes (512 bits)](#64Bytes512bits)
|
||||
* 4.3.5. [ Précautions générales pour la manipulation des tableaux de bytes](#Prcautionsgnralespourlamanipulationdestableauxdebytes)
|
||||
* 4.4. [ Format Base64](#FormatBase64)
|
||||
* 4.5. [ Différence entre Bytes et Bits](#DiffrenceentreBytesetBits)
|
||||
* 4.3.3. [32 Bytes (256 bits)](#32Bytes256bits)
|
||||
* 4.3.4. [64 Bytes (512 bits)](#64Bytes512bits)
|
||||
* 4.3.5. [Précautions générales pour la manipulation des tableaux de bytes](#Prcautionsgnralespourlamanipulationdestableauxdebytes)
|
||||
* 4.4. [Format Base64](#FormatBase64)
|
||||
* 4.5. [Différence entre Bytes et Bits](#DiffrenceentreBytesetBits)
|
||||
* 4.6. [Little Endian et Big Endian](#LittleEndianetBigEndian)
|
||||
* 4.7. [ Conversions de données](#Conversionsdedonnes)
|
||||
* 4.7. [Conversions de données](#Conversionsdedonnes)
|
||||
* 4.7.1. [Conversion entre Strings et Hexadécimales](#ConversionentreStringsetHexadcimales)
|
||||
* 4.7.2. [Conversion entre Tableaux de Bytes et Format Base64](#ConversionentreTableauxdeBytesetFormatBase64)
|
||||
* 4.7.3. [Conversion entre Bytes et Bits](#ConversionentreBytesetBits)
|
||||
@ -31,7 +31,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 5. [Recommandations entre l'usage de HashMap ou d'un Vec (en Rust)](#RecommandationsentrelusagedeHashMapoudunVecenRust)
|
||||
* 5.1. [Utilisez un Vec si](#UtilisezunVecsi)
|
||||
* 5.2. [Utilisez un HashMap si](#UtilisezunHashMapsi)
|
||||
* 5.3. [ Recommandations Générales](#RecommandationsGnrales)
|
||||
* 5.3. [Recommandations Générales](#RecommandationsGnrales)
|
||||
* 6. [Gestion des erreurs](#Gestiondeserreurs)
|
||||
* 7. [Journalisation et monitoring](#Journalisationetmonitoring)
|
||||
* 8. [Tests](#Tests)
|
||||
|
@ -74,7 +74,8 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
* 13.3. [PrdResponse](#PrdResponse)
|
||||
* 13.4. [PrdConfirm](#PrdConfirm)
|
||||
* 13.5. [PrdMessage](#PrdMessage)
|
||||
* 13.6. [PrdResponse](#PrdResponse-1)
|
||||
* 13.6. [PrdUserCreate](#PrdUserCreate)
|
||||
* 13.7. [PrdUserRecover](#PrdUserRecover)
|
||||
* 14. [Roles](#Roles)
|
||||
* 14.1. [Role](#Role)
|
||||
* 14.2. [Conditions](#Conditions)
|
||||
@ -1372,8 +1373,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
### 13.6. <a name='PrdResponse-1'></a>PrdUserCreate
|
||||
|
||||
### 13.6. <a name='PrdUserCreate'></a>PrdUserCreate
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | ---------------- | ------ |
|
||||
@ -1391,15 +1391,13 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### 13.6. <a name='PrdResponse-1'></a>PrdUserRecover
|
||||
### 13.7. <a name='PrdUserRecover'></a>PrdUserRecover
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | ---------------- | ------ |
|
||||
| `request_prd` | ```Prd``` | |
|
||||
| `pre_id_confidential` | ```String``` | |
|
||||
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
```json
|
||||
|
2250
doc/diagrams/.$methanisationModule.bkp
Normal file
2250
doc/diagrams/.$methanisationModule.bkp
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/diagrams/.$methanisationModule.png.bkp
Normal file
BIN
doc/diagrams/.$methanisationModule.png.bkp
Normal file
Binary file not shown.
After Width: | Height: | Size: 383 KiB |
2250
doc/diagrams/methanisationModule
Normal file
2250
doc/diagrams/methanisationModule
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 593 KiB After Width: | Height: | Size: 383 KiB |
Loading…
x
Reference in New Issue
Block a user