- L : BH_BL_BS
- BH : RF/RV
- BL : RC/RL/RL…
- RC : MOD>CHR
- RL : REQ>NID>NID>NID…
- BS : RS/RS…
- RS : NID>SIG
- EID : hash.algo.size
- SIG : sign.algo.size
BH_BL_BS
RF/RV_RC/RL/RL_RS/RS
APP:TYP/VER:SUB_MOD>CHR/REQ>NID>NID>NID/REQ>NID>NID>NID_EID>SIG/EID>SIG
nebule:link/2:0_0>020210308124933/l>hash.sha2.256>hash.sha2.256>hash.sha2.256_hash.sha2.256>sign.algo.size/hash.sha2.256>sign.algo.size
Structure
Fichiers
Pour chaque nœud va être associé un certain nombre de liens. Ces liens sont stockés, par nœuds, sous forme de fichiers dans le dossier des liens /l
. Dans chaque fichiers, les liens sont séparés par un espace ou un retour chariot. Le retour chariot est à privilégier.
Liens
Chaque liens d’un fichier est composé de :
- BH (blockhead) : Bloc d’entête.
- BL (blocklinks) : Bloc de liens.
- BS (blocksigns) : Bloc de signatures.
Chaque type de bloc est obligatoire et ne doit être présent qu’une seule fois. Lles blocs doivent être ordonnés BH, BL puis BS. Le séparateur inter-blocs est _
. Un lien a donc la forme :
BH_BL_BS
Blocs
Dans chaque bloc on va trouver des registres :
- RF (regform) : Registre de forme. Bloc BH. Unique. Début.
- RV (regversion) : Registre de version. Bloc BH. Unique.
- RC (regchrono) : Registre de chronologie. Bloc BL. Unique. Début.
- RL (reglink) : Registre du lien. Bloc BL. Multiple.
- RS (regsign) : Registre de signature. Bloc BS. Multiple.
Les registres sont dédiés à des blocs particuliers. Tous les registres dédiés à un bloc doivent être présents dans le bloc. Certains registres doivent être unique dans leur bloc, d’autres peuvent être multiples. Certains registres sont forcément présent en début de bloc.
La structure des blocs est fixe même si certains registres peuvent être multiples :
- BH : RF/RV
- BL : RC/RL/RL/RL…
- BS : RS/RS/RS…
Le séparateur inter-registres est /
.
Registres
Certains registres vont contenir des éléments dans un ordre définit :
- APP : application. Registre RF. Unique. Début.
- TYP : type de contenu. Registre RF. Unique.
- VER : version majeur. Registre RV. Unique. Début.
- SUB : sous-version. Registre RV. Unique.
- MOD : mode d’utilisation de la marque chronologique. Registre RC. Unique. Début.
- CHR : valeur de la marque chronologique. Unique. Registre RC.
- REQ : requête d’action sur le lien. Registre RL. Unique. Début.
- NID (Node ID) : identifiant de nÅ“ud (ou de l’objet). Registre RL. Multiple dans RL.
- EID (Entity ID) : identifiant de l’entité signataire. Registre RS. Unique dans RS. Début dans RS.
- SIG (sign) : valeur de la signature. Unique. Registre RS.
La structure des registre est fixe même si certains éléments peuvent être multiples :
- RF : APP:TYP
- RV : VER:SUB
- RC : MOD>CHR
- RL : REQ>NID>NID>NID…
- RS : EID>SIG
Le séparateur inter-éléments est >
ou :
en fonction du registre concerné.
Éléments
Les blocs et registres sont structurants de l’information. Les éléments sont contenants de l’information.
- APP = « nebule ».
- TYP = « link ».
- VER = « 2 ».
- SUB = « 0 ».
- NID : l’identifiant de nÅ“ud ou d’objet = hash.algo.size
- hash = valeur de l’empreinte.
- algo = famille d’algorithme utilisé pour le calcul de l’empreinte.
- size = taille de l’empreinte
- EID : l’identifiant de l’entité signataire = hash.algo.size
- hash = valeur de l’empreinte.
- algo = famille d’algorithme utilisé pour le calcul de l’empreinte.
- size = taille de l’empreinte
- SIG : signature
- sign = valeur de la signature
- algo = famille d’algorithme utilisé pour le calcul de l’empreinte avant signature.
- size = taille de l’empreinte
Vérifications
La vérification d’un lien se fait en trois étapes. La première étape va vérifier que le type et la version sont supportés. La seconde étape va permettre de vérifier la structure complète. La dernière va prendre les blocs BH et BL avec leur séparateur et vérifier la/les signature/s.
L’application qui exploite les liens va garder chaque registre de lien décomposé avec les entités signataires. Les signatures non reconnues seront ignorées.
Limites
Il y a un certains nombre de limites dans les quantités acceptables des registres et éléments que peuvent contenir un lien ainsi que de la taille des contenus. Ces limites ne sont pas définies dans le lien et ne sont pas dépendantes de la version du lien mais dépendent du paramétrage de l’application qui lit le lien.