{"id":3218,"date":"2019-08-21T23:37:07","date_gmt":"2019-08-21T21:37:07","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=3218"},"modified":"2019-08-21T23:37:07","modified_gmt":"2019-08-21T21:37:07","slug":"documentation-technique-de-nebule-020190821","status":"publish","type":"post","link":"https:\/\/blog.nebule.org\/?p=3218","title":{"rendered":"Documentation technique de nebule &#8211; 020190821"},"content":{"rendered":"<p>Documentation technique de nebule<br \/>\nVersion 1.3 &#8211; 020190821 Developpement<br \/>\n(c) GNU GPL 2010-2019 Projet nebule &#8211; www.nebule.org<\/p>\n<p>&#8212; Copie en attendant la mise en ligne &#8212;<\/p>\n<p><!--more--><\/p>\n<h1>Table des mati\u00e8res<\/h1>\n<ul>\n<li><a href=\"#f\">F \/ Fondations<\/a><\/li>\n<li><a href=\"#o\">O \/ Objet<\/a>\n<ul>\n<li><a href=\"#oo\">OO \/ Objet<\/a>\n<ul>\n<li><a href=\"#oon\">OON \/ Nommage<\/a><\/li>\n<li><a href=\"#oop\">OOP \/ Protection<\/a><\/li>\n<li><a href=\"#ood\">OOD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#ool\">OOL \/ Liens<\/a><\/li>\n<li><a href=\"#ooc\">OOC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#oos\">OOS \/ Stockage<\/a>\n<ul>\n<li><a href=\"#oosa\">OOSA \/ Arborescence<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oot\">OOT \/ Transfert<\/a><\/li>\n<li><a href=\"#oor\">OOR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#ooio\">OOIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#ooia\">OOIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<li><a href=\"#oov\">OOV \/ V\u00e9rification<\/a><\/li>\n<li><a href=\"#ooo\">OOO \/ Oubli<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oe\">OE \/ Entit\u00e9<\/a>\n<ul>\n<li><a href=\"#oen\">OEM \/ Entit\u00e9s Ma\u00eetresses<\/a><\/li>\n<li><a href=\"#oen\">OEN \/ Nommage<\/a><\/li>\n<li><a href=\"#oep\">OEP \/ Protection<\/a><\/li>\n<li><a href=\"#oed\">OED \/ Dissimulation<\/a><\/li>\n<li><a href=\"#oel\">OEL \/ Liens<\/a><\/li>\n<li><a href=\"#oec\">OEC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#oes\">OES \/ Stockage<\/a><\/li>\n<li><a href=\"#oet\">OET \/ Transfert<\/a><\/li>\n<li><a href=\"#oer\">OER \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#oeio\">OEIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#oeia\">OEIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<li><a href=\"#oeo\">OEO \/ Oubli<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#or\">OR \/ R\u00e9f\u00e9rence<\/a>\n<ul>\n<li><a href=\"#orn\">ORN \/ Nommage<\/a><\/li>\n<li><a href=\"#orp\">ORP \/ Protection<\/a><\/li>\n<li><a href=\"#ord\">ORD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#orl\">ORL \/ Liens<\/a><\/li>\n<li><a href=\"#orc\">ORC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#ors\">ORS \/ Stockage<\/a><\/li>\n<li><a href=\"#ort\">ORT \/ Transfert<\/a><\/li>\n<li><a href=\"#orr\">ORR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#orio\">ORIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#oria\">ORIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<li><a href=\"#oro\">ORO \/ Oubli<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#og\">OG \/ Groupe<\/a>\n<ul>\n<li><a href=\"#ogo\">OGO \/ Objet<\/a><\/li>\n<li><a href=\"#ogn\">OGN \/ Nommage<\/a><\/li>\n<li><a href=\"#ogp\">OGP \/ Protection<\/a><\/li>\n<li><a href=\"#ogd\">OGD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#ogf\">OGF \/ Fermeture<\/a><\/li>\n<li><a href=\"#ogpm\">OGPM \/ Protection des membres<\/a><\/li>\n<li><a href=\"#ogdm\">OGDM \/ Dissimulation des membres<\/a><\/li>\n<li><a href=\"#ogl\">OGL \/ Liens<\/a><\/li>\n<li><a href=\"#ogc\">OGC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#ogs\">OGS \/ Stockage<\/a><\/li>\n<li><a href=\"#ogt\">OGT \/ Transfert<\/a><\/li>\n<li><a href=\"#ogr\">OGR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#ogio\">OGIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#ogia\">OGIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oc\">OC \/ Conversation<\/a>\n<ul>\n<li><a href=\"#oco\">OCO \/ Objet<\/a><\/li>\n<li><a href=\"#ocn\">OCN \/ Nommage<\/a><\/li>\n<li><a href=\"#ocp\">OCP \/ Protection<\/a><\/li>\n<li><a href=\"#ocd\">OCD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#ocf\">OCF \/ Fermeture<\/a><\/li>\n<li><a href=\"#ocpm\">OCPM \/ Protection des membres<\/a><\/li>\n<li><a href=\"#ocdm\">OCDM \/ Dissimulation des membres<\/a><\/li>\n<li><a href=\"#ocl\">OCL \/ Liens<\/a><\/li>\n<li><a href=\"#occ\">OCC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#ocs\">OCS \/ Stockage<\/a><\/li>\n<li><a href=\"#oct\">OCT \/ Transfert<\/a><\/li>\n<li><a href=\"#ocr\">OCR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#ocio\">OCIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#ocia\">OCIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#ol\">OL \/ Localisation<\/a>\n<ul>\n<li><a href=\"#oln\">OLN \/ Nommage<\/a><\/li>\n<li><a href=\"#olp\">OLP \/ Protection<\/a><\/li>\n<li><a href=\"#old\">OLD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#oll\">OLL \/ Liens<\/a><\/li>\n<li><a href=\"#olc\">OLC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#ols\">OLS \/ Stockage<\/a><\/li>\n<li><a href=\"#olt\">OLT \/ Transfert<\/a><\/li>\n<li><a href=\"#olr\">OLR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#olio\">OLIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#olia\">OLIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oi\">OA \/ Application<\/a>\n<ul>\n<li><a href=\"#oaf\">OAF \/ Fonctionnement<\/a><\/li>\n<li><a href=\"#oan\">OAN \/ Nommage<\/a><\/li>\n<li><a href=\"#oap\">OAP \/ Protection<\/a><\/li>\n<li><a href=\"#oad\">OAD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#oal\">OAL \/ Liens<\/a><\/li>\n<li><a href=\"#oac\">OAC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#oas\">OAS \/ Stockage<\/a><\/li>\n<li><a href=\"#oat\">OAT \/ Transfert<\/a><\/li>\n<li><a href=\"#oar\">OAR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#oai\">OAI \/ Interface<\/a>\n<ul>\n<li><a href=\"#oain\">OAIN \/ Nommage<\/a><\/li>\n<li><a href=\"#oaip\">OAIP \/ Protection<\/a><\/li>\n<li><a href=\"#oaid\">OAID \/ Dissimulation<\/a><\/li>\n<li><a href=\"#oail\">OAIL \/ Liens<\/a><\/li>\n<li><a href=\"#oaic\">OAIC \/ Cr\u00e9ation<\/a>\n<ul>\n<li><a href=\"#oaicr\">OAICR \/ R\u00e9f\u00e9rence<\/a><\/li>\n<li><a href=\"#oaicc\">OAICC \/ Code<\/a><\/li>\n<li><a href=\"#oaice\">OAICE \/ Enregistrement<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oaiu\">OAIU \/ Mise \u00e0 Jour<\/a><\/li>\n<li><a href=\"#oais\">OAIS \/ Stockage<\/a><\/li>\n<li><a href=\"#oait\">OAIT \/ Transfert<\/a><\/li>\n<li><a href=\"#oair\">OAIR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#oaig\">OAIG \/ Applications d&rsquo;Interfa\u00e7age G\u00e9n\u00e9riques<\/a>\n<ul>\n<li><a href=\"#oaigb\">OAIGB \/ Nb &#8211; bootstrap<\/a><\/li>\n<li><a href=\"#oaigs\">OAIGS \/ Sy &#8211; sylabe<\/a><\/li>\n<li><a href=\"#oaigk\">OAIGK \/ Kl &#8211; klicty<\/a><\/li>\n<li><a href=\"#oaigm\">OAIGM \/ Me &#8211; messae<\/a><\/li>\n<li><a href=\"#oaigo\">OAIGO \/ No &#8211; option<\/a><\/li>\n<li><a href=\"#oaigu\">OAIGU \/ Nu &#8211; upload<\/a><\/li>\n<li><a href=\"#oaigd\">OAIGD \/ Nd &#8211; defolt<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oam\">OAM \/ Module<\/a>\n<ul>\n<li><a href=\"#oamn\">OAMN \/ Nommage<\/a><\/li>\n<li><a href=\"#oamp\">OAMP \/ Protection<\/a><\/li>\n<li><a href=\"#oamd\">OAMD \/ Dissimulation<\/a><\/li>\n<li><a href=\"#oaml\">OAML \/ Liens<\/a><\/li>\n<li><a href=\"#oamc\">OAMC \/ Cr\u00e9ation<\/a><\/li>\n<li><a href=\"#oamu\">OAMU \/ Mise \u00e0 Jour<\/a><\/li>\n<li><a href=\"#oams\">OAMS \/ Stockage<\/a><\/li>\n<li><a href=\"#oamt\">OAMT \/ Transfert<\/a><\/li>\n<li><a href=\"#oamr\">OAMR \/ R\u00e9servation<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#oaio\">OAIO \/ Impl\u00e9mentation des Options<\/a><\/li>\n<li><a href=\"#oaia\">OAIA \/ Impl\u00e9mentation des Actions<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#l\">L \/ Lien<\/a>\n<ul>\n<li><a href=\"#lelpo\">LELPO \/ Liens \u00e0 Propos d&rsquo;un Objet<\/a><\/li>\n<li><a href=\"#lelco\">LELCO \/ Liens Contenu dans un Objet<\/a><\/li>\n<li><a href=\"#le\">LE \/ Ent\u00eate<\/a><\/li>\n<li><a href=\"#lr\">LR \/ Registre<\/a>\n<ul>\n<li><a href=\"#lrsi\">LRSI \/ Le champ <code>Signature<\/code><\/a><\/li>\n<li><a href=\"#lrusi\">LRHSI \/ Le champ <code>HashSignataire<\/code><\/a><\/li>\n<li><a href=\"#lrt\">LRT \/ Le champ <code>TimeStamp<\/code><\/a><\/li>\n<li><a href=\"#lra\">LRA \/ Le champ <code>Action<\/code><\/a>\n<ul>\n<li><a href=\"#lral\">LRAL \/ Action <code>l<\/code> Lien entre objets<\/a><\/li>\n<li><a href=\"#lraf\">LRAF \/ Action <code>f<\/code> D\u00e9riv\u00e9 d&rsquo;objet<\/a><\/li>\n<li><a href=\"#lrau\">LRAU \/ Action <code>u<\/code> Mise \u00e0 jour d&rsquo;objet<\/a><\/li>\n<li><a href=\"#lrad\">LRAD \/ Action <code>d<\/code> Suppression d&rsquo;objet<\/a><\/li>\n<li><a href=\"#lrae\">LRAE \/ Action <code>e<\/code> \u00c9quivalence d&rsquo;objets<\/a><\/li>\n<li><a href=\"#lrac\">LRAC \/ Action <code>c<\/code> Chiffrement de lien<\/a><\/li>\n<li><a href=\"#lrak\">LRAK \/ Action <code>k<\/code> Chiffrement d&rsquo;objet<\/a><\/li>\n<li><a href=\"#lras\">LRAS \/ Action <code>s<\/code> Subdivision d&rsquo;objet<\/a><\/li>\n<li><a href=\"#lrax\">LRAX \/ Action <code>x<\/code> Suppression de lien<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#lrhs\">LRHS \/ Le champ <code>HashSource<\/code><\/a><\/li>\n<li><a href=\"#lrhc\">LRHC \/ Le champ <code>HashCible<\/code><\/a><\/li>\n<li><a href=\"#lrhm\">LRHM \/ Le champ <code>HashMeta<\/code><\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#l1\">L1 \/ Lien simple<\/a><\/li>\n<li><a href=\"#l2\">L2 \/ Lien double<\/a><\/li>\n<li><a href=\"#l3\">L3 \/ Lien triple<\/a><\/li>\n<li><a href=\"#ls\">LS \/ Stockage<\/a>\n<ul>\n<li><a href=\"#lsa\">LSA \/ Arborescence<\/a><\/li>\n<li><a href=\"#lsd\">LSD \/ Dissimulation<\/a>\n<ul>\n<li><a href=\"#lsda\">LSDA \/ Attaque sur la dissimulation<\/a><\/li>\n<li><a href=\"#lsds\">LSDS \/ Stockage et transcodage<\/a>\n<ul>\n<li><a href=\"#lsdst\">LSDST \/ Translation de lien<\/a><\/li>\n<li><a href=\"#lsdsp\">LSDSP \/ Protection de translation<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#lsdt\">LSDT \/ Transfert et partage<\/a><\/li>\n<li><a href=\"#lsdc\">LSDC \/ Compromission<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#lt\">LT \/ Transfert<\/a><\/li>\n<li><a href=\"#lv\">LV \/ V\u00e9rification<\/a><\/li>\n<li><a href=\"#lo\">LO \/ Oubli<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#c\">C \/ Confiance<\/a>\n<ul>\n<li><a href=\"#cfo\">CFO \/ Fable des Origines<\/a><\/li>\n<li><a href=\"#co\">CO \/ Confiance dans l&rsquo;Objet<\/a><\/li>\n<li><a href=\"#cl\">CL \/ Confiance dans le Lien<\/a><\/li>\n<li><a href=\"#coe\">COE \/ Confiance dans l&rsquo;Objet Entit\u00e9<\/a><\/li>\n<li><a href=\"#ca\">CA \/ Autorit\u00e9s<\/a>\n<ul>\n<li><a href=\"#cam\">CAM \/ Autorit\u00e9 Ma\u00eetresse<\/a><\/li>\n<li><a href=\"#cams\">CAMS \/ Autorit\u00e9 Ma\u00eetresse de la S\u00e9curit\u00e9<\/a><\/li>\n<li><a href=\"#camc\">CAMC \/ Autorit\u00e9 Ma\u00eetresse du Code<\/a><\/li>\n<li><a href=\"#cama\">CAMA \/ Autorit\u00e9 Ma\u00eetresse de l&rsquo;Annuaire<\/a><\/li>\n<li><a href=\"#camt\">CAMT \/ Autorit\u00e9 Ma\u00eetresse du Temps<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#cc\">CC \/ Configuration<\/a>\n<ul>\n<li><a href=\"#cco\">CCO \/ Options<\/a>\n<ul>\n<li><a href=\"#ccor\">CCOR \/ R\u00e9servation<\/a><\/li>\n<li><a href=\"#ccof\">CCOF \/ Options via Fichier<\/a><\/li>\n<li><a href=\"#ccol\">CCOL \/ Options via Liens<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#ce\">CE \/ Confiance dans les \u00c9changes<\/a>\n<ul>\n<li><a href=\"#cems\">CEMS \/ Moyens et Supports<\/a><\/li>\n<li><a href=\"#cecto\">CECTO \/ Comportement au T\u00e9l\u00e9chargement d&rsquo;Objets<\/a><\/li>\n<li><a href=\"#cectl\">CECTL \/ Comportement au T\u00e9l\u00e9chargement de Liens<\/a><\/li>\n<li><a href=\"#cecte\">CECTE \/ Comportement au T\u00e9l\u00e9chargement d&rsquo;Entit\u00e9s<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#ck\">CK \/ Cryptographie<\/a>\n<ul>\n<li><a href=\"#ckl\">CKL \/ Cryptographie du Lien<\/a><\/li>\n<li><a href=\"#cko\">CKO \/ Cryptographie de l&rsquo;Objet<\/a>\n<ul>\n<li><a href=\"#ckode\">CKODE \/ Cryptographie de l&rsquo;Objet &#8211; Deux \u00c9tapes<\/a><\/li>\n<li><a href=\"#ckoecs\">CKOECS \/ Cryptographie de l&rsquo;Objet &#8211; \u00c9tape Chiffrement Sym\u00e9trique<\/a><\/li>\n<li><a href=\"#ckoeca\">CKOECA \/ Cryptographie de l&rsquo;Objet &#8211; \u00c9tape Chiffrement Asym\u00e9trique<\/a><\/li>\n<li><a href=\"#ckoep\">CKOEP \/ Cryptographie de l&rsquo;Objet &#8211; Ensemble du Processus<\/a><\/li>\n<li><a href=\"#ckovi\">CKOVI \/ Cryptographie de l&rsquo;Objet &#8211; Vecteur Initial<\/a><\/li>\n<li><a href=\"#ckoc\">CKOC \/ Cryptographie de l&rsquo;Objet &#8211; Compression<\/a><\/li>\n<li><a href=\"#ckotm\">CKOTM \/ Cryptographie de l&rsquo;Objet &#8211; Type Mime<\/a><\/li>\n<li><a href=\"#ckorc\">CKORC \/ Cryptographie de l&rsquo;Objet &#8211; R\u00e9solution de Conflits<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#cka\">CKA \/ Al\u00e9as cryptographiques<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#cs\">CS \/ Sociabilit\u00e9<\/a><\/li>\n<li><a href=\"#cn\">CN \/ Nettoyage, suppression et oubli<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h1 id=\"f\">F \/ Fondations<\/h1>\n<p>Le but du projet nebule, c&rsquo;est le moteur de gestion des objets. La couche basse qui s&rsquo;occupe du stockage des objets et liens, et de leur diffusion.<\/p>\n<p>L&rsquo;interface utilisateur est un programme utilis\u00e9 pour manipuler ces objets et traduire les liens \u00e0 l&rsquo;utilisateur ou les actions de l&rsquo;utilisateur en liens.<\/p>\n<p>Le projet nebule se concr\u00e9tise num\u00e9riquement par trois piliers de base :<\/p>\n<ol>\n<li>l&rsquo;objet<\/li>\n<li>le lien<\/li>\n<li>la confiance<\/li>\n<\/ol>\n<h1 id=\"o\">O \/ Objet<\/h1>\n<p>L&rsquo;objet est le contenant de toutes les informations.<\/p>\n<h2 id=\"oo\">OO \/ Objet<\/h2>\n<p>L&rsquo;objet est un agglom\u00e9rat de donn\u00e9es num\u00e9riques.<\/p>\n<p>Un objet num\u00e9rique est identifi\u00e9 par une empreinte ou condensat (hash) num\u00e9rique de type cryptographique. Cette empreinte est \u00e0 m\u00eame d&#8217;emp\u00eacher la modification du contenu d&rsquo;un objet, intentionnellement ou non (cf <a href=\"#co\">CO<\/a>).<\/p>\n<h3 id=\"oon\">OON \/ Nommage<\/h3>\n<p>Le nommage \u00e0 l&rsquo;affichage du nom des objets repose sur plusieurs propri\u00e9t\u00e9s :<\/p>\n<ol>\n<li>nom<\/li>\n<li>pr\u00e9nom<\/li>\n<li>surnom<\/li>\n<li>pr\u00e9fixe<\/li>\n<li>suffixe<\/li>\n<\/ol>\n<p>Ces propri\u00e9t\u00e9s sont mat\u00e9rialis\u00e9es par des liens de type <code>l<\/code> avec comme objets m\u00e9ta, respectivement :<\/p>\n<ol>\n<li><code>nebule\/objet\/nom<\/code><\/li>\n<li><code>nebule\/objet\/prenom<\/code><\/li>\n<li><code>nebule\/objet\/surnom<\/code><\/li>\n<li><code>nebule\/objet\/prefix<\/code><\/li>\n<li><code>nebule\/objet\/suffix<\/code><\/li>\n<\/ol>\n<p>Par convention, voici le nommage des objets pour l&rsquo;affichage :<\/p>\n<p class=\"pcenter\"><code>pr\u00e9nom pr\u00e9fixe\/nom.suffixe surnom<\/code><\/p>\n<h3 id=\"oop\">OOP \/ Protection<\/h3>\n<p>La protection d&rsquo;un objet va permettre de cacher le contenu de l&rsquo;objet.<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ood\">OOD \/ Dissimulation<\/h3>\n<p>La dissimulation des liens d&rsquo;un objet va permettre de cacher la pr\u00e9sence ou l&rsquo;usage d&rsquo;un objet.<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ool\">OOL \/ Liens<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ooc\">OOC \/ Cr\u00e9ation<\/h3>\n<p>L&rsquo;objet est identifi\u00e9 par un ID \u00e9gal \u00e0 la valeur de son empreinte.<\/p>\n<p>L&rsquo;indication de la fonction de prise d&#8217;empreinte (hashage) est imp\u00e9ratif. Elle est d\u00e9fini par le lien :<\/p>\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;objet<\/li>\n<li>cible : hash du nom de l&rsquo;algorithme de prise d&#8217;empreinte<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/hash&rsquo;)<\/li>\n<\/ul>\n<p>Le lien de d\u00e9finition du type est optionnel. Le type est g\u00e9n\u00e9ralement le type mime reconnu de l&rsquo;objet.<\/p>\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;objet<\/li>\n<li>cible : hash(type de l&rsquo;objet)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oos\">OOS \/ Stockage<\/h3>\n<p>Tous les contenus des objets sont stock\u00e9s dans un m\u00eame emplacement ou sont visible comme \u00e9tant dans un m\u00eame emplacement. Cet emplacement ne contient pas les liens (cf <a href=\"#ls\">LS<\/a>).<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oosa\">OOSA \/ Arborescence<\/h3>\n<p>Sur un syst\u00e8me de fichiers, tous les contenus des objets sont stock\u00e9s dans des fichiers contenus dans le dossier <code>pub\/o\/<\/code> (<code>o<\/code> comme objet).<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oot\">OOT \/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oor\">OOR \/ R\u00e9servation<\/h3>\n<p>Les diff\u00e9rentes objets r\u00e9serv\u00e9s pour les besoins de la biblioth\u00e8que nebule :<\/p>\n<ul>\n<li><code>nebule\/objet<\/code><\/li>\n<li><code>nebule\/objet\/hash<\/code><\/li>\n<li><code>nebule\/objet\/homomorphe<\/code><\/li>\n<li><code>nebule\/objet\/type<\/code><\/li>\n<li><code>nebule\/objet\/localisation<\/code><\/li>\n<li><code>nebule\/objet\/taille<\/code><\/li>\n<li><code>nebule\/objet\/prenom<\/code><\/li>\n<li><code>nebule\/objet\/nom<\/code><\/li>\n<li><code>nebule\/objet\/surnom<\/code><\/li>\n<li><code>nebule\/objet\/prefix<\/code><\/li>\n<li><code>nebule\/objet\/suffix<\/code><\/li>\n<li><code>nebule\/objet\/lien<\/code><\/li>\n<li><code>nebule\/objet\/date<\/code><\/li>\n<li><code>nebule\/objet\/date\/annee<\/code><\/li>\n<li><code>nebule\/objet\/date\/mois<\/code><\/li>\n<li><code>nebule\/objet\/date\/jour<\/code><\/li>\n<li><code>nebule\/objet\/date\/heure<\/code><\/li>\n<li><code>nebule\/objet\/date\/minute<\/code><\/li>\n<li><code>nebule\/objet\/date\/seconde<\/code><\/li>\n<li><code>nebule\/objet\/date\/zone<\/code><\/li>\n<li><code>nebule\/objet\/entite<\/code><\/li>\n<li><code>nebule\/objet\/entite\/type<\/code><\/li>\n<li><code>nebule\/objet\/entite\/localisation<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi\/seconde<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi\/minute<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi\/heure<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi\/jour<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi\/mois<\/code><\/li>\n<li><code>nebule\/objet\/entite\/suivi\/annee<\/code><\/li>\n<li><code>nebule\/objet\/entite\/maitre<\/code><\/li>\n<li><code>nebule\/objet\/entite\/maitre\/securite<\/code><\/li>\n<li><code>nebule\/objet\/entite\/maitre\/code<\/code><\/li>\n<li><code>nebule\/objet\/entite\/maitre\/annuaire<\/code><\/li>\n<li><code>nebule\/objet\/entite\/maitre\/temps<\/code><\/li>\n<li><code>nebule\/objet\/entite\/autorite\/locale<\/code><\/li>\n<li><code>nebule\/objet\/entite\/recouvrement<\/code><\/li>\n<li><code>nebule\/objet\/interface\/web\/php\/bootstrap<\/code><\/li>\n<li><code>nebule\/objet\/interface\/web\/php\/bibliotheque<\/code><\/li>\n<li><code>nebule\/objet\/interface\/web\/php\/applications<\/code><\/li>\n<li><code>nebule\/objet\/interface\/web\/php\/applications\/modules<\/code><\/li>\n<li><code>nebule\/objet\/interface\/web\/php\/applications\/direct<\/code><\/li>\n<li><code>nebule\/objet\/interface\/web\/php\/applications\/active<\/code><\/li>\n<li><code>nebule\/objet\/noeud<\/code><\/li>\n<li><code>nebule\/objet\/image\/reference<\/code><\/li>\n<li><code>nebule\/objet\/emotion<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/joie<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/confiance<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/peur<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/surprise<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/tristesse<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/degout<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/colere<\/code><\/li>\n<li><code>nebule\/objet\/emotion\/interet<\/code><\/li>\n<li><code>nebule\/objet\/groupe<\/code><\/li>\n<li><code>nebule\/objet\/groupe\/suivi<\/code><\/li>\n<li><code>nebule\/objet\/groupe\/ferme<\/code><\/li>\n<li><code>nebule\/objet\/groupe\/protege<\/code><\/li>\n<li><code>nebule\/objet\/groupe\/dissimule<\/code><\/li>\n<li><code>nebule\/objet\/conversation<\/code><\/li>\n<li><code>nebule\/objet\/conversation\/suivie<\/code><\/li>\n<li><code>nebule\/objet\/conversation\/fermee<\/code><\/li>\n<li><code>nebule\/objet\/conversation\/protegee<\/code><\/li>\n<li><code>nebule\/objet\/conversation\/dissimulee<\/code><\/li>\n<li><code>nebule\/option<\/code><\/li>\n<li><code>nebule\/danger<\/code><\/li>\n<li><code>nebule\/warning<\/code><\/li>\n<li><code>nebule\/reference<\/code><\/li>\n<li><code>nebule\/arborescence<\/code><\/li>\n<\/ul>\n<p>Les objets r\u00e9serv\u00e9s p\u00e9rim\u00e9s :<\/p>\n<ul>\n<li>nebule\/objet\/entite\/web<\/li>\n<li>nebule\/objet\/entite\/web\/applications<\/li>\n<\/ul>\n<h4 id=\"ooio\">OOIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"ooia\">OOIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oov\">OOV \/ V\u00e9rification<\/h3>\n<p>L&#8217;empreinte d&rsquo;un objet doit \u00eatre v\u00e9rifi\u00e9e lors de la fin de la r\u00e9ception de l&rsquo;objet. L&#8217;empreinte d&rsquo;un objet devrait \u00eatre v\u00e9rifi\u00e9e avant chaque utilisation de cet objet. Un contenu d&rsquo;objet avec une empreinte qui ne lui correspond pas doit \u00eatre supprim\u00e9. Lors de la suppression d&rsquo;un objet, les liens de cet objet ne sont pas supprim\u00e9s. La v\u00e9rification de la validit\u00e9 des liens est compl\u00e8tement ind\u00e9pendante de celle des objets, et inversement (cf <a href=\"#co\">CO<\/a> et <a href=\"#lv\">LV<\/a>).<\/p>\n<h3 id=\"ooo\">OOO \/ Oubli<\/h3>\n<p>L&rsquo;oubli vonlontaire de certains liens et objets n&rsquo;est encore ni th\u00e9oris\u00e9 ni impl\u00e9ment\u00e9 mais deviendra indispensable lorsque l&rsquo;espace viendra \u00e0 manquer (cf <a href=\"#cn\">CN<\/a>).<\/p>\n<h2 id=\"oe\">OE \/ Entit\u00e9<\/h2>\n<p>A faire&#8230;<\/p>\n<p>L&rsquo;entit\u00e9 est un objet caract\u00e9ristique. Elle dispose d&rsquo;une cl\u00e9 publique, par laquelle elle est identifi\u00e9e, et d&rsquo;une cl\u00e9 priv\u00e9e.<\/p>\n<p>L&rsquo;indication de la fonction de prise d&#8217;empreinte (hashage) ainsi que le type de bi-cl\u00e9 sont imp\u00e9ratifs. Le lien est identique \u00e0 celui d\u00e9fini pour un objet.<\/p>\n<p>Le type mime <code>mime-type:application\/x-pem-file<\/code> est suffisant pour indiquer que cet objet est une entit\u00e9. <i>Des valeurs \u00e9quivalentes pourront \u00eatre d\u00e9finies ult\u00e9rieurement<\/i>.<\/p>\n<p>Toutes les autres indications sont optionnelles.<\/p>\n<h3 id=\"oem\">OEM \/ Entit\u00e9s Ma\u00eetresses<\/h3>\n<p>La biblioth\u00e8que utilise actuellement plusieurs entit\u00e9s sp\u00e9ciales, dites autorit\u00e9s ma\u00eetresses, avec des r\u00f4les pr\u00e9d\u00e9finis.<\/p>\n<ol>\n<li>Ma\u00eetre du tout. L&rsquo;instance actuelle s&rsquo;appelle <a href=\"http:\/\/puppetmaster.nebule.org\">puppetmaster<\/a>. Voir <a href=\"#cam\">CAM<\/a>.<\/li>\n<li>Ma\u00eetre de la s\u00e9curit\u00e9. L&rsquo;instance actuelle s&rsquo;appelle <a href=\"http:\/\/cerberus.nebule.org\">cerberus<\/a>. Voir <a href=\"#cams\">CAMS<\/a>.<\/li>\n<li>Ma\u00eetre du code. L&rsquo;instance actuelle s&rsquo;appelle <a href=\"http:\/\/bachue.nebule.org\">bachue<\/a>. Voir <a href=\"#camc\">CAMC<\/a>.<\/li>\n<li>Ma\u00eetre de l&rsquo;annuaire. L&rsquo;instance actuelle s&rsquo;appelle <a href=\"http:\/\/asabiyya.nebule.org\">assabyia<\/a>. Voir <a href=\"#cama\">CAMA<\/a>.<\/li>\n<li>Ma\u00eetre du temps. L&rsquo;instance actuelle s&rsquo;appelle <a href=\"http:\/\/kronos.nebule.org\">kronos<\/a>. Voir <a href=\"#camt\">CAMT<\/a>.<\/li>\n<\/ol>\n<h3 id=\"oen\">OEN \/ Nommage<\/h3>\n<p>Le nommage \u00e0 l&rsquo;affichage du nom des entit\u00e9s repose sur plusieurs propri\u00e9t\u00e9s :<\/p>\n<ol>\n<li>nom<\/li>\n<li>pr\u00e9nom<\/li>\n<li>surnom<\/li>\n<li>pr\u00e9fixe<\/li>\n<li>suffixe<\/li>\n<\/ol>\n<p>Ces propri\u00e9t\u00e9s sont mat\u00e9rialis\u00e9es par des liens de type <code>l<\/code> avec comme objets m\u00e9ta, respectivement :<\/p>\n<ol>\n<li><code>nebule\/objet\/nom<\/code><\/li>\n<li><code>nebule\/objet\/prenom<\/code><\/li>\n<li><code>nebule\/objet\/surnom<\/code><\/li>\n<li><code>nebule\/objet\/prefix<\/code><\/li>\n<li><code>nebule\/objet\/suffix<\/code><\/li>\n<\/ol>\n<p>Par convention, voici le nommage des entit\u00e9s :<\/p>\n<p><code>pr\u00e9fixe pr\u00e9nom \"surnom\" nom suffixe<\/code><\/p>\n<h3 id=\"oep\">OEP \/ Protection<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oed\">OED \/ Dissimulation<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oel\">OEL \/ Liens<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oec\">OEC \/ Cr\u00e9ation<\/h3>\n<p>La premi\u00e8re \u00e9tape consiste en la g\u00e9n\u00e9ration d&rsquo;un bi-cl\u00e9 (public\/priv\u00e9) cryptographique. Ce bi-cl\u00e9 peut \u00eatre de type RSA ou \u00e9quivalent. Aujourd&rsquo;hui, seul RSA est reconnu.<\/p>\n<p>On extrait la cl\u00e9 publique du bi-cl\u00e9. Le calcul de l&#8217;empreinte cryptographique de la cl\u00e9 publique donne l&rsquo;identifiant de l&rsquo;entit\u00e9. On \u00e9crit dans les objets (o\/*) l&rsquo;objet avec comme contenu la cl\u00e9 publique et comme id son empreinte cryptographique.<\/p>\n<p>On extrait la cl\u00e9 priv\u00e9e du bi-cl\u00e9. Il est fortement conseill\u00e9 lors de l&rsquo;extraction de prot\u00e9ger tout de suite la cl\u00e9 priv\u00e9e avec un mot de passe. On \u00e9crit dans les objets (o\/*) l&rsquo;objet avec comme contenu la cl\u00e9 priv\u00e9e et comme id son empreinte cryptographique (diff\u00e9rente de celle de la cl\u00e9 publique).<\/p>\n<p>A partir de maintenant, le bi-cl\u00e9 n&rsquo;est plus n\u00e9cessaire. Il faut le supprimer avec un effacement s\u00e9curis\u00e9.<\/p>\n<p>Pour que l&rsquo;objet soit reconnu comme entit\u00e9 il faut cr\u00e9er les liens correspondants.<\/p>\n<ul>\n<li>Lien 1 :\n<ul>\n<li>Signature du lien par la cl\u00e9 priv\u00e9e de la nouvelle entit\u00e9<\/li>\n<li>Identifiant de la cl\u00e9 publique<\/li>\n<li>Horodatage<\/li>\n<li>Lien de type <code>l<\/code><\/li>\n<li>Identifiant de la cl\u00e9 <span style=\"font-weight: bold;\">publique<\/span><\/li>\n<li>Empreinte de l&rsquo;algorithme de hash utilis\u00e9 pour le calcul des empreintes<\/li>\n<li>Empreinte de \u00e2\u20ac\u02dcnebule\/objet\/hash&rsquo;<\/li>\n<\/ul>\n<\/li>\n<li>Lien 2 :\n<ul>\n<li>Signature du lien par la cl\u00e9 priv\u00e9e de la nouvelle entit\u00e9<\/li>\n<li>Identifiant de la cl\u00e9 publique<\/li>\n<li>Horodatage<\/li>\n<li>Lien de type <code>l<\/code><\/li>\n<li>Identifiant de la cl\u00e9 <span style=\"font-weight: bold;\">priv\u00e9e<\/span><\/li>\n<li>Empreinte de l&rsquo;algorithme de hash utilis\u00e9 pour le calcul des empreintes<\/li>\n<li>Empreinte de \u00e2\u20ac\u02dcnebule\/objet\/hash&rsquo;<\/li>\n<\/ul>\n<\/li>\n<li>Lien 3 :\n<ul>\n<li>Signature du lien par la cl\u00e9 priv\u00e9e de la nouvelle entit\u00e9<\/li>\n<li>Identifiant de la cl\u00e9 publique<\/li>\n<li>Horodatage<\/li>\n<li>Lien de type <code>l<\/code><\/li>\n<li>Identifiant de la cl\u00e9 <span style=\"font-weight: bold;\">publique<\/span><\/li>\n<li>Empreinte de \u00e2\u20ac\u02dcapplication\/x-pem-file&rsquo;<\/li>\n<li>Empreinte de \u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;<\/li>\n<\/ul>\n<\/li>\n<li>Lien 4 :\n<ul>\n<li>Signature du lien par la cl\u00e9 priv\u00e9e de la nouvelle entit\u00e9<\/li>\n<li>Identifiant de la cl\u00e9 publique<\/li>\n<li>Horodatage<\/li>\n<li>Lien de type <code>l<\/code><\/li>\n<li>Identifiant de la cl\u00e9 <span style=\"font-weight: bold;\">priv\u00e9e<\/span><\/li>\n<li>Empreinte de \u00e2\u20ac\u02dcapplication\/x-pem-file&rsquo;<\/li>\n<li>Empreinte de \u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;<\/li>\n<\/ul>\n<\/li>\n<li>Lien 5 :\n<ul>\n<li>Signature du lien par la cl\u00e9 priv\u00e9e de la nouvelle entit\u00e9<\/li>\n<li>Identifiant de la cl\u00e9 publique<\/li>\n<li>Horodatage<\/li>\n<li>Lien de type <code>f<\/code> ;<\/li>\n<li>Identifiant de la cl\u00e9 <span style=\"font-weight: bold;\">priv\u00e9e<\/span><\/li>\n<li>Identifiant de la cl\u00e9 <span style=\"font-weight: bold;\">publique<\/span><\/li>\n<li>0.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>C&rsquo;est le minimum vital pour une entit\u00e9. Ensuite, d&rsquo;autres propri\u00e9t\u00e9s peuvent \u00eatre ajout\u00e9es \u00e0 l&rsquo;entit\u00e9 (id cl\u00e9 publique) comme sont nom, son type, etc&#8230;<\/p>\n<p>Si le mot de passe de la cl\u00e9 priv\u00e9e est d\u00e9finit par l&rsquo;utilisateur demandeur de la nouvelle entit\u00e9, il faut supprimer ce mot de passe avec un effacement s\u00e9curis\u00e9.<\/p>\n<p>Si le mot de passe de la cl\u00e9 priv\u00e9e a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9, donc que la nouvelle entit\u00e9 est esclave d&rsquo;une entit\u00e9 ma\u00eetre, le mot de passe doit \u00eatre stock\u00e9 dans un objet chiffr\u00e9 pour l&rsquo;entit\u00e9 ma\u00eetre. Et il faut g\u00e9n\u00e9rer un lien reliant l&rsquo;objet de mot de passe \u00e0 la cl\u00e9 priv\u00e9e de la nouvelle entit\u00e9.<\/p>\n<h3 id=\"oes\">OES \/ Stockage<\/h3>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h3 id=\"oet\">OET \/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oer\">OER \/ R\u00e9servation<\/h3>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oeio\">OEIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oeia\">OEIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oeo\">OEO \/ Oubli<\/h3>\n<p>L&rsquo;oubli vonlontaire de certains liens et objets n&rsquo;est encore ni th\u00e9oris\u00e9 ni impl\u00e9ment\u00e9 mais deviendra indispensable lorsque l&rsquo;espace viendra \u00e0 manquer (cf <a href=\"#cn\">CN<\/a>).<\/p>\n<h2 id=\"or\">OR \/ R\u00e9f\u00e9rence<\/h2>\n<p>A faire&#8230;<\/p>\n<h3 id=\"orn\">ORN \/ Nommage<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"orp\">ORP \/ Protection<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ord\">ORD \/ Dissimulation<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"orl\">ORL \/ Liens<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"orc\">ORC \/ Cr\u00e9ation<\/h3>\n<p>Liste des liens \u00e0 g\u00e9n\u00e9rer lors de la cr\u00e9ation d&rsquo;une entit\u00e9.<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ors\">ORS \/ Stockage<\/h3>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h3 id=\"ort\">ORT\/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"orr\">ORR \/ R\u00e9servation<\/h3>\n<p>A faire&#8230;<\/p>\n<h4 id=\"orio\">ORIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oria\">ORIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oro\">ORO \/ Oubli<\/h3>\n<p>L&rsquo;oubli vonlontaire de certains liens et objets n&rsquo;est encore ni th\u00e9oris\u00e9 ni impl\u00e9ment\u00e9 mais deviendra indispensable lorsque l&rsquo;espace viendra \u00e0 manquer (cf <a href=\"#cn\">CN<\/a>).<\/p>\n<h2 id=\"og\">OG \/ Groupe<\/h2>\n<p>Le groupe est un objet d\u00e9finit comme tel, c&rsquo;est \u00e0 dire qu&rsquo;il doit avoir un type mime <code>nebule\/objet\/groupe<\/code>.<\/p>\n<p>Fondamentalement, le groupe est un ensemble de plusieurs objets. C&rsquo;est \u00e0 dire, c&rsquo;est le regroupement d&rsquo;au moins deux objets. Le lien peut donc \u00e0 ce titre \u00eatre vu comme la mat\u00e9rialisation d&rsquo;un groupe. Mais la d\u00e9finition du groupe doit \u00eatre plus restrictive afin que celui-ci soit utilisable. Pour cela, dans <em>nebule<\/em>, le groupe n&rsquo;est reconnu comme tel uniquement si il est marqu\u00e9 de son type mime. Il est cependant possible d&rsquo;instancier explicitement un objet comme groupe et de l&rsquo;utiliser comme tel en cas de besoin.<\/p>\n<p>Le groupe va permettre de regrouper, et donc d&rsquo;associer et de retrouver, des objets. L&rsquo;objet du groupe va avoir des liens vers d&rsquo;autres objets afin de les d\u00e9finir comme membres du groupe.<\/p>\n<p>Un groupe peut avoir des liens de membres vers des objets d\u00e9finis aussi comme groupes. Ces objets peuvent \u00eatre vus comme des sous-groupes. La biblioth\u00e8que <em>nebule<\/em> ne prend en compte qu&rsquo;un seul niveau de groupe, c&rsquo;est \u00e0 dire que les sous-groupes sont g\u00e9r\u00e9s simplement comme des objets.<\/p>\n<h3 id=\"ogo\">OGO \/ Objet<\/h3>\n<p>L&rsquo;objet du groupe peut \u00eatre de deux natures.<\/p>\n<p>Soit c&rsquo;est un objet existant qui est en plus d\u00e9finit comme un groupe. L&rsquo;objet peut avoir un contenu et a s\u00fcrement d&rsquo;autres types mime propres. Dans ce cas l&rsquo;identifiant de groupe est l&rsquo;identifiant de l&rsquo;objet utilis\u00e9.<\/p>\n<p>Soit c&rsquo;est un objet dit virtuel qui n&rsquo;a pas et n&rsquo;aura jamais de contenu. Cela n&#8217;emp\u00eache pas qu&rsquo;il puisse avoir d&rsquo;autres types mime. Dans ce cas l&rsquo;identifiant de groupe a une forme commune aux objets virtuels.<\/p>\n<p>La cr\u00e9ation d&rsquo;un objet virtuel comme groupe se fait en cr\u00e9ant pour identifiant la concat\u00e9nation d&rsquo;un hash (<em>sha256<\/em>) d&rsquo;une valeur al\u00e9atoire de 128bits et de la cha\u00eene <code>006e6562756c652f6f626a65742f67726f757065<\/code>. Soit un identifiant complet de la taille de 104 caract\u00e8res.<\/p>\n<h3 id=\"ogn\">OGN \/ Nommage<\/h3>\n<p>Le nommage \u00e0 l&rsquo;affichage du nom des groupes repose sur une seule propri\u00e9t\u00e9 :<\/p>\n<ol>\n<li>nom<\/li>\n<\/ol>\n<p>Cette propri\u00e9t\u00e9 est mat\u00e9rialis\u00e9e par un lien de type <code>l<\/code> avec comme objets m\u00e9ta :<\/p>\n<ol>\n<li><code>nebule\/objet\/nom<\/code><\/li>\n<\/ol>\n<p>Par convention, voici le nommage des groupes :<\/p>\n<ul>\n<li><code>nom<\/code><\/li>\n<\/ul>\n<h3 id=\"ogp\">OGP \/ Protection<\/h3>\n<p>En tant que tel le groupe ne n\u00e9cessite pas de protection puisque soit l&rsquo;objet du groupe n&rsquo;a pas de contenu soit on n&rsquo;utilise pas son contenu directement.<\/p>\n<p>La gestion de la protection est d\u00e9sactiv\u00e9e dans une instance de groupe.<\/p>\n<h3 id=\"ogd\">OGD \/ Dissimulation<\/h3>\n<p>Le groupe peut en tant que tel \u00eatre dissimul\u00e9, c&rsquo;est \u00e0 dire que l&rsquo;on dissimule l&rsquo;existence du groupe, donc sa cr\u00e9ation.<\/p>\n<p>La dissimulation devrait se faire lors de la cr\u00e9ation du groupe.<\/p>\n<p>L&rsquo;annulation de la dissimulation d&rsquo;un groupe revient \u00e0 r\u00e9v\u00e9ler le lien de cr\u00e9ation du groupe.<\/p>\n<p>La dissimulation peut se (re)faire apr\u00e8s la cr\u00e9ation du groupe mais son efficacit\u00e9 est incertaine si les liens de cr\u00e9ation ont d\u00e9j\u00e0 \u00e9t\u00e9 diffus\u00e9s. En cas de dissimulation \u00e0 posteriori, il faut g\u00e9n\u00e9rer un lien de suppression du groupe puis g\u00e9n\u00e9rer un nouveau lien dissimul\u00e9 de cr\u00e9ation du groupe \u00e0 une date post\u00e9rieure au lien de suppression.<\/p>\n<h3 id=\"ogf\">OGF \/ Fermeture<\/h3>\n<p>Le groupe va contenir un certain nombre de membres ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter le nombre des membres \u00e0 utiliser dans un groupe en restreignant artificiellement les entit\u00e9s contributrices du groupe. Ainsi on marque le groupe comme ferm\u00e9 et on filtre sur les membres uniquement ajout\u00e9s par des entit\u00e9s d\u00e9finies.<\/p>\n<p>Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/groupe\/ferme<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des groupes ferm\u00e9s. Un groupe est consid\u00e9r\u00e9 ferm\u00e9 quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID du groupe en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 prendre aussi en compte ses liens dans le groupe ferm\u00e9. Dans ce cas c&rsquo;est une entit\u00e9 contributrice.<\/p>\n<p>C&rsquo;est uniquement un affichage du groupe que l&rsquo;on a et non la suppression de membres du groupe.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 un groupe comme ferm\u00e9, on doit explicitement ajouter des entit\u00e9s que l&rsquo;on veut voir contribuer.<\/p>\n<p>Il est possible ind\u00e9finiment de fermer et ouvrir un groupe.<\/p>\n<p>Il est possible de fermer un groupe qui ne nous appartient pas afin par exemple de le rendre plus lisible.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 un groupe comme ferm\u00e9, on peut voir la liste des entit\u00e9s explicitement que l&rsquo;on veut voir contribuer. On peut aussi voir les entit\u00e9s que les autres entit\u00e9s veulent voir contribuer et d\u00e9cider ou non de les ajouter.<\/p>\n<p>Lorsqu&rsquo;un groupe est marqu\u00e9 comme ferm\u00e9, l&rsquo;interface de visualisation du groupe peut permettre de le visualiser temporairement comme un groupe ouvert.<\/p>\n<p>Le traitement des liens de fermeture d&rsquo;un groupe doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h4 id=\"ogpm\">OGPM \/ Protection des membres<\/h4>\n<p>Le groupe va contenir un certain nombre de membres ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter la visibilit\u00e9 du contenu des membres utilis\u00e9s dans un groupe en restreignant artificiellement les entit\u00e9s destinataires qui pourront les consulter.<\/p>\n<p>Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/groupe\/protege<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des groupes prot\u00e9g\u00e9s. Un groupe est consid\u00e9r\u00e9 prot\u00e9g\u00e9 quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID du groupe en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 partager aussi les objets prot\u00e9g\u00e9s cr\u00e9\u00e9s pour ce groupe. Cela ne repartage pas la protection des objets d\u00e9j\u00e0 prot\u00e9g\u00e9s.<\/p>\n<p>Dans un groupe marqu\u00e9 prot\u00e9g\u00e9, tous les nouveaux membres ajout\u00e9s au groupe ont leur contenu prot\u00e9g\u00e9. Ce n&rsquo;est valable que pour l&rsquo;entit\u00e9 en cours et \u00e9ventuellement celles qui lui font confiance.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 un groupe comme prot\u00e9g\u00e9, on doit explicitement ajouter des entit\u00e9s avec qui on veut partager les contenus.<\/p>\n<p>Il est possible ind\u00e9finiment de prot\u00e9ger et d\u00e9prot\u00e9ger un groupe.<\/p>\n<p>Il est possible de prot\u00e9ger un groupe qui ne nous appartient afin de masquer le contenu des membres que l&rsquo;on y ajoute.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 un groupe comme prot\u00e9g\u00e9, on peut voir la liste des entit\u00e9s explicitement a qui on veut partager les contenus. On peut aussi voir les entit\u00e9s a qui les autres entit\u00e9s veulent partager les contenus et d\u00e9cider ou non de les ajouter.<\/p>\n<p>Le traitement des liens de protection d&rsquo;un groupe doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h4 id=\"ogdm\">OGDM \/ Dissimulation des membres<\/h4>\n<p>Le groupe va contenir un certain nombre de membres ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter la visibilit\u00e9 de l&rsquo;appartenance des membres utilis\u00e9s dans un groupe en restreignant artificiellement les entit\u00e9s destinataires qui pourront les voir.<\/p>\n<p>Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/groupe\/dissimule<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des groupes dissimul\u00e9s. Un groupe est consid\u00e9r\u00e9 dissimul\u00e9 quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID du groupe en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 partager aussi les objets dissimul\u00e9s cr\u00e9\u00e9s pour ce groupe. Cela ne repartage pas la dissimulation des objets d\u00e9j\u00e0 dissimul\u00e9s.<\/p>\n<p>Dans un groupe marqu\u00e9 dissimul\u00e9, tous les nouveaux membres ajout\u00e9s au groupe sont dissimul\u00e9s. Ce n&rsquo;est valable que pour l&rsquo;entit\u00e9 en cours et \u00e9ventuellement celles qui lui font confiance.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 un groupe comme dissimul\u00e9, on doit explicitement ajouter des entit\u00e9s avec qui on veut partager les membres du groupe.<\/p>\n<p>Il est possible ind\u00e9finiment de dissimuler et d\u00e9-dissimuler un groupe.<\/p>\n<p>Il est possible de dissimuler un groupe qui ne nous appartient afin de masquer le contenu des membres que l&rsquo;on y ajoute.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 un groupe comme dissimul\u00e9, on peut voir la liste des entit\u00e9s explicitement a qui on veut partager les contenus. On peut aussi voir les entit\u00e9s a qui les autres entit\u00e9s veulent partager les contenus et d\u00e9cider ou non de les ajouter.<\/p>\n<p>Le traitement des liens de dissimulation d&rsquo;un groupe doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h3 id=\"ogl\">OGL \/ Liens<\/h3>\n<p>Une entit\u00e9 doit \u00eatre d\u00e9verrouill\u00e9e pour la cr\u00e9ation de liens.<\/p>\n<ul>\n<li>Le lien de d\u00e9finition du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suivi du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>cible : ID du groupe<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/suivi&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de suivi du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>cible : ID du groupe<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/suivi&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de dissimulation d&rsquo;un groupe est le lien de d\u00e9finition cach\u00e9 dans une lien de type <code>c<\/code>.<\/li>\n<li>Le lien de rattachement d&rsquo;un membre du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;objet<\/li>\n<li>m\u00e9ta : ID du groupe<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de rattachement d&rsquo;un membre du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;objet<\/li>\n<li>m\u00e9ta : ID du groupe<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de fermeture d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/ferme&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de fermeture d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/ferme&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de protection des membres d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/protege&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de protection des membres d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/protege&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de dissimulation des membres d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/dissimule&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de dissimulation des membres d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/dissimule&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"ogc\">OGC \/ Cr\u00e9ation<\/h3>\n<p>Liste des liens \u00e0 g\u00e9n\u00e9rer lors de la cr\u00e9ation d&rsquo;un groupe :<\/p>\n<ul>\n<li>Le lien de d\u00e9finition du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de nommage du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : hash(nom du groupe)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/nom&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suivi du groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>cible : ID du groupe<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/suivi&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>On peut aussi au besoin ajouter ces liens :<\/p>\n<ul>\n<li>Le lien de fermeture d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/ferme&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de protection des membres d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/protege&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de dissimulation des membres d&rsquo;un groupe :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/dissimule&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"ogs\">OGS \/ Stockage<\/h3>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h3 id=\"ogt\">OGT \/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ogr\">OGR \/ R\u00e9servation<\/h3>\n<p>Les objets r\u00e9serv\u00e9s sp\u00e9cifiquement pour les groupes :<\/p>\n<ul>\n<li>nebule\/objet\/groupe<\/li>\n<li>nebule\/objet\/groupe\/ferme<\/li>\n<li>nebule\/objet\/groupe\/protege<\/li>\n<li>nebule\/objet\/groupe\/dissimule<\/li>\n<\/ul>\n<h4 id=\"ogio\">OGIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>Les options sp\u00e9cifiques aux groupes :<\/p>\n<ul>\n<li><code>permitWriteGroup<\/code> : permet toute \u00e9criture de groupes.<\/li>\n<\/ul>\n<p>Les options qui ont une influence sur les groupes :<\/p>\n<ul>\n<li><code>permitWrite<\/code> : permet toute \u00e9criture d&rsquo;objets et de liens ;<\/li>\n<li><code>permitWriteObject<\/code> : permet toute \u00e9criture d&rsquo;objets ;<\/li>\n<li><code>permitCreateObject<\/code> : permet la cr\u00e9ation locale d&rsquo;objets ;<\/li>\n<li><code>permitWriteLink<\/code> : permet toute \u00e9criture de liens ;<\/li>\n<li><code>permitCreateLink<\/code> : permet la cr\u00e9ation locale de liens.<\/li>\n<\/ul>\n<p>Il est n\u00e9cessaire \u00e0 la cr\u00e9ation d&rsquo;un groupe de pouvoir \u00e9crire des objets comme le nom du groupe, m\u00eame si l&rsquo;objet du groupe ne sera pas cr\u00e9\u00e9.<\/p>\n<h4 id=\"ogia\">OGIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>Dans les actions, on retrouve les cha\u00eenes :<\/p>\n<ul>\n<li><code>creagrp<\/code> : Cr\u00e9e un groupe.<\/li>\n<li><code>creagrpnam<\/code> : Nomme le groupe \u00e0 cr\u00e9er.<\/li>\n<li><code>creagrpcld<\/code> : Marque ferm\u00e9 le groupe \u00e0 cr\u00e9er.<\/li>\n<li><code>creagrpobf<\/code> : Dissimule les liens du groupe \u00e0 cr\u00e9er.<\/li>\n<li><code>actdelgrp<\/code> : Supprime un groupe.<\/li>\n<li><code>actaddtogrp<\/code> : Ajoute l&rsquo;objet courant membre \u00e0 groupe.<\/li>\n<li><code>actremtogrp<\/code> : Retire l&rsquo;objet courant membre d&rsquo;un groupe.<\/li>\n<li><code>actadditogrp<\/code> : Ajoute un objet membre au groupe courant.<\/li>\n<li><code>actremitogrp<\/code> : Retire un objet membre du groupe courant.<\/li>\n<\/ul>\n<h2 id=\"oc\">OC \/ Conversation<\/h2>\n<p>La conversation est un objet d\u00e9finit comme tel, c&rsquo;est \u00e0 dire qu&rsquo;il doit avoir un type mime <code>nebule\/objet\/conversation<\/code>.<\/p>\n<p>Fondamentalement, la conversation est un groupe de plusieurs objets et est donc g\u00e9r\u00e9 de la m\u00eame fa\u00e7on qu&rsquo;un groupe. Ainsi, un membre de la conversation n&rsquo;est pas une entit\u00e9 mais un message, une entit\u00e9 est dite entit\u00e9 contributrice. Certains liens g\u00e9n\u00e9r\u00e9s sont communs avec ceux des groupes et si un objet est marqu\u00e9 comme groupe et conversation, ses membres seront les m\u00eames.<\/p>\n<p>La conversation va permettre de regrouper, et donc d&rsquo;associer et de retrouver, des message. L&rsquo;objet de la conversation va avoir des liens vers d&rsquo;autres objets afin de les d\u00e9finir comme messages (membres) de la conversation.<\/p>\n<p>Une conversation peut avoir des liens de membres vers des objets d\u00e9finis aussi comme conversations. Ces objets peuvent \u00eatre vus comme des sous-conversations. La biblioth\u00e8que <em>nebule<\/em> ne prend en compte qu&rsquo;un seul niveau de conversation, c&rsquo;est \u00e0 dire que les sous-conversations sont g\u00e9r\u00e9s simplement comme des objets.<\/p>\n<h3 id=\"oco\">OCO \/ Objet<\/h3>\n<p>L&rsquo;objet de la conversation peut \u00eatre de deux natures.<\/p>\n<p>Soit c&rsquo;est un objet existant qui est en plus d\u00e9finit comme une conversation. L&rsquo;objet peut avoir un contenu et a s\u00fcrement d&rsquo;autres types mime propres. Dans ce cas l&rsquo;identifiant de conversation est l&rsquo;identifiant de l&rsquo;objet utilis\u00e9.<\/p>\n<p>Soit c&rsquo;est un objet dit virtuel qui n&rsquo;a pas et n&rsquo;aura jamais de contenu. Cela n&#8217;emp\u00eache pas qu&rsquo;il puisse avoir d&rsquo;autres types mime. Dans ce cas l&rsquo;identifiant de conversation a une forme commune aux objets virtuels.<\/p>\n<p>La cr\u00e9ation d&rsquo;un objet virtuel comme conversation se fait en cr\u00e9ant pour identifiant la concat\u00e9nation d&rsquo;un hash (<em>sha256<\/em>) d&rsquo;une valeur al\u00e9atoire de 128bits et de la cha\u00eene <code>006e6562756c652f6f626a65742f636f6e766572736174696f6e<\/code>. Soit un identifiant complet de la taille de 116 caract\u00e8res.<\/p>\n<h3 id=\"ocn\">OCN \/ Nommage<\/h3>\n<p>Le nommage \u00e0 l&rsquo;affichage du nom des conversations repose sur une seule propri\u00e9t\u00e9 :<\/p>\n<ol>\n<li>nom<\/li>\n<\/ol>\n<p>Cette propri\u00e9t\u00e9 est mat\u00e9rialis\u00e9e par un lien de type <code>l<\/code> avec comme objets m\u00e9ta :<\/p>\n<ol>\n<li><code>nebule\/objet\/nom<\/code><\/li>\n<\/ol>\n<p>Par convention, voici le nommage des conversations :<\/p>\n<ul>\n<li><code>nom<\/code><\/li>\n<\/ul>\n<h3 id=\"ocp\">OCP \/ Protection<\/h3>\n<p>En tant que tel la conversation ne n\u00e9cessite pas de protection puisque soit l&rsquo;objet de la conversation n&rsquo;a pas de contenu soit on n&rsquo;utilise pas son contenu directement.<\/p>\n<p>La gestion de la protection est d\u00e9sactiv\u00e9e dans une instance de conversation.<\/p>\n<h3 id=\"ocd\">OCD \/ Dissimulation<\/h3>\n<p>La conversation peut en tant que tel \u00eatre dissimul\u00e9e, c&rsquo;est \u00e0 dire que l&rsquo;on dissimule l&rsquo;existence de la conversation, donc sa cr\u00e9ation.<\/p>\n<p>La dissimulation devrait se faire lors de la cr\u00e9ation de la conversation.<\/p>\n<p>L&rsquo;annulation de la dissimulation d&rsquo;une conversation revient \u00e0 r\u00e9v\u00e9ler le lien de cr\u00e9ation de la conversation.<\/p>\n<p>La dissimulation peut se (re)faire apr\u00e8s la cr\u00e9ation de la conversation mais son efficacit\u00e9 est incertaine si les liens de cr\u00e9ation ont d\u00e9j\u00e0 \u00e9t\u00e9 diffus\u00e9s. En cas de dissimulation \u00e0 posteriori, il faut g\u00e9n\u00e9rer un lien de suppression de la conversation puis g\u00e9n\u00e9rer un nouveau lien dissimul\u00e9e de cr\u00e9ation de la conversation \u00e0 une date post\u00e9rieure au lien de suppression.<\/p>\n<h3 id=\"ocf\">OCF \/ Fermeture<\/h3>\n<p>La conversation va contenir un certain nombre de membres (messages) ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter le nombre des membres \u00e0 utiliser dans une conversation en restreignant artificiellement les entit\u00e9s contributrices de la conversation. Ainsi on marque la conversation comme ferm\u00e9e et on filtre sur les membres uniquement ajout\u00e9s par des entit\u00e9s d\u00e9finies.<\/p>\n<p>Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/conversation\/fermee<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des conversations ferm\u00e9es. Une conversation est consid\u00e9r\u00e9 ferm\u00e9e quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID de la conversation en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 prendre aussi en compte ses liens dans la conversation ferm\u00e9e. Dans ce cas c&rsquo;est une entit\u00e9 contributrice.<\/p>\n<p>C&rsquo;est uniquement un affichage de la conversation que l&rsquo;on a et non la suppression de membres de la conversation.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 une conversation comme ferm\u00e9e, on doit explicitement ajouter des entit\u00e9s que l&rsquo;on veut voir contribuer.<\/p>\n<p>Il est possible ind\u00e9finiment de fermer et ouvrir une conversation.<\/p>\n<p>Il est possible de fermer une conversation qui ne nous appartient afin par exemple de la rendre plus lisible.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 une conversation comme ferm\u00e9e, l&rsquo;interface de visualisation de la conversation peut permettre de la visualiser temporairement comme une conversation ouvert.<\/p>\n<p>Le traitement des liens de fermeture d&rsquo;une conversation doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h4 id=\"ocpm\">OCPM \/ Protection des membres<\/h4>\n<p>La conversation va contenir un certain nombre de membres (messages) ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter la visibilit\u00e9 du contenu des membres utilis\u00e9s dans une conversation en restreignant artificiellement les entit\u00e9s destinataires qui pourront les consulter.<\/p>\n<p>Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/conversation\/protegee<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des conversations prot\u00e9g\u00e9es. Une conversation est consid\u00e9r\u00e9 prot\u00e9g\u00e9e quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID de la conversation en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 partager aussi les objets prot\u00e9g\u00e9es cr\u00e9\u00e9s pour cette conversation. Cela ne repartage pas la protection des objets d\u00e9j\u00e0 prot\u00e9g\u00e9s.<\/p>\n<p>Dans une conversation marqu\u00e9 prot\u00e9g\u00e9e, tous les nouveaux membres ajout\u00e9s \u00e0 la conversation ont leur contenu prot\u00e9g\u00e9. Ce n&rsquo;est valable que pour l&rsquo;entit\u00e9 en cours et \u00e9ventuellement celles qui lui font confiance.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 une conversation comme prot\u00e9g\u00e9e, on doit explicitement ajouter des entit\u00e9s avec qui on veut partager les contenus.<\/p>\n<p>Il est possible ind\u00e9finiment de prot\u00e9ger et d\u00e9prot\u00e9ger une conversation.<\/p>\n<p>Il est possible de prot\u00e9ger une conversation qui ne nous appartient afin de masquer le contenu des membres que l&rsquo;on y ajoute.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 une conversation comme prot\u00e9g\u00e9e, on peut voir la liste des entit\u00e9s explicitement a qui on veut partager les contenus. On peut aussi voir les entit\u00e9s a qui les autres entit\u00e9s veulent partager les contenus et d\u00e9cider ou non de les ajouter.<\/p>\n<p>Le traitement des liens de protection d&rsquo;une conversation doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h4 id=\"ocdm\">OCDM \/ Dissimulation des membres<\/h4>\n<p>La conversation va contenir un certain nombre de membres (messages) ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter la visibilit\u00e9 de l&rsquo;appartenance des membres utilis\u00e9s dans une conversation en restreignant artificiellement les entit\u00e9s destinataires qui pourront les voir.<\/p>\n<p>Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/conversation\/dissimulee<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des conversations dissimul\u00e9es. Une conversation est consid\u00e9r\u00e9 dissimul\u00e9e quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID de la conversation en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 partager aussi les objets dissimul\u00e9es cr\u00e9\u00e9s pour cette conversation. Cela ne repartage pas la dissimulation des objets d\u00e9j\u00e0 dissimul\u00e9s.<\/p>\n<p>Dans une conversation marqu\u00e9 dissimul\u00e9e, tous les nouveaux membres ajout\u00e9s \u00e0 la conversation sont dissimul\u00e9s. Ce n&rsquo;est valable que pour l&rsquo;entit\u00e9 en cours et \u00e9ventuellement celles qui lui font confiance.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 une conversation comme dissimul\u00e9e, on doit explicitement ajouter des entit\u00e9s avec qui on veut partager les membres de la conversation.<\/p>\n<p>Il est possible ind\u00e9finiment de dissimuler et d\u00e9-dissimuler une conversation.<\/p>\n<p>Il est possible de dissimuler une conversation qui ne nous appartient afin de masquer le contenu des membres que l&rsquo;on y ajoute.<\/p>\n<p>Lorsque l&rsquo;on a marqu\u00e9 une conversation comme dissimul\u00e9e, on peut voir la liste des entit\u00e9s explicitement a qui on veut partager les contenus. On peut aussi voir les entit\u00e9s a qui les autres entit\u00e9s veulent partager les contenus et d\u00e9cider ou non de les ajouter.<\/p>\n<p>Le traitement des liens de dissimulation d&rsquo;une conversation doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h3 id=\"ocl\">OCL \/ Liens<\/h3>\n<p>Une entit\u00e9 doit \u00eatre d\u00e9verrouill\u00e9e pour la cr\u00e9ation de liens.<\/p>\n<ul>\n<li>Le lien de d\u00e9finition de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suivi de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>cible : ID de la conversation<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/suivie&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de suivi de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>cible : ID de la conversation<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/suivie&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de dissimulation d&rsquo;une conversation est le lien de d\u00e9finition cach\u00e9 dans une lien de type <code>c<\/code>.<\/li>\n<li>Le lien de rattachement d&rsquo;un membre (message) de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;objet<\/li>\n<li>m\u00e9ta : ID de la conversation<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de rattachement d&rsquo;un membre (message) de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;objet<\/li>\n<li>m\u00e9ta : ID de la conversation<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de fermeture d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/fermee&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de fermeture d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/fermee&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de protection des membres d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/protegee&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de protection des membres d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/protegee&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de dissimulation des membres d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/dissimulee&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suppression de dissimulation des membres d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>x<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/dissimulee&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"occ\">OCC \/ Cr\u00e9ation<\/h3>\n<p>Liste des liens \u00e0 g\u00e9n\u00e9rer lors de la cr\u00e9ation d&rsquo;une conversation :<\/p>\n<ul>\n<li>Le lien de d\u00e9finition de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de nommage de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : hash(nom de la conversation)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/nom&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de suivi de la conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>cible : ID de la conversation<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/suivie&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>On peut aussi au besoin ajouter ces liens :<\/p>\n<ul>\n<li>Le lien de fermeture d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/ferme&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de protection des membres d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/protege&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de dissimulation des membres d&rsquo;une conversation :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de la conversation<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/conversation\/dissimule&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"ocs\">OCS \/ Stockage<\/h3>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h3 id=\"oct\">OCT \/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ocr\">OCR \/ R\u00e9servation<\/h3>\n<p>Les objets r\u00e9serv\u00e9s sp\u00e9cifiquement pour les conversations :<\/p>\n<ul>\n<li>nebule\/objet\/conversation<\/li>\n<li>nebule\/objet\/conversation\/fermee<\/li>\n<li>nebule\/objet\/conversation\/protegee<\/li>\n<li>nebule\/objet\/conversation\/dissimulee<\/li>\n<\/ul>\n<h4 id=\"ocio\">OCIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>Les options sp\u00e9cifiques aux conversations :<\/p>\n<ul>\n<li><code>permitWriteConversation<\/code> : permet toute \u00e9criture de conversations.<\/li>\n<\/ul>\n<p>Les options qui ont une influence sur les conversations :<\/p>\n<ul>\n<li><code>permitWrite<\/code> : permet toute \u00e9criture d&rsquo;objets et de liens ;<\/li>\n<li><code>permitWriteObject<\/code> : permet toute \u00e9criture d&rsquo;objets ;<\/li>\n<li><code>permitCreateObject<\/code> : permet la cr\u00e9ation locale d&rsquo;objets ;<\/li>\n<li><code>permitWriteLink<\/code> : permet toute \u00e9criture de liens ;<\/li>\n<li><code>permitCreateLink<\/code> : permet la cr\u00e9ation locale de liens.<\/li>\n<\/ul>\n<p>Il est n\u00e9cessaire \u00e0 la cr\u00e9ation d&rsquo;une conversation de pouvoir \u00e9crire des objets comme le nom de la conversation, m\u00eame si l&rsquo;objet de la conversation ne sera pas cr\u00e9\u00e9.<\/p>\n<h4 id=\"ocia\">OCIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>Dans les actions, on retrouve les cha\u00eenes :<\/p>\n<ul>\n<li><code>creagrp<\/code> : Cr\u00e9e une conversation.<\/li>\n<li><code>creagrpnam<\/code> : Nomme la conversation \u00e0 cr\u00e9er.<\/li>\n<li><code>creagrpcld<\/code> : Marque ferm\u00e9e la conversation \u00e0 cr\u00e9er.<\/li>\n<li><code>creagrpobf<\/code> : Dissimule les liens de la conversation \u00e0 cr\u00e9er.<\/li>\n<li><code>actdelgrp<\/code> : Supprime une conversation.<\/li>\n<li><code>actaddtogrp<\/code> : Ajoute l&rsquo;objet courant membre \u00e0 conversation.<\/li>\n<li><code>actremtogrp<\/code> : Retire l&rsquo;objet courant membre d&rsquo;une conversation.<\/li>\n<li><code>actadditogrp<\/code> : Ajoute un objet membre \u00e0 la conversation courant.<\/li>\n<li><code>actremitogrp<\/code> : Retire un objet membre de la conversation courant.<\/li>\n<\/ul>\n<h2 id=\"ol\">OL \/ Localisation<\/h2>\n<p>A faire&#8230;<\/p>\n<p>Une localisation permet de trouver l&#8217;emplacement des objets et liens g\u00e9n\u00e9r\u00e9s par une entit\u00e9.<\/p>\n<p>Un emplacement n&rsquo;a de sens que pour une entit\u00e9.<\/p>\n<p>Une entit\u00e9 peut disposer de plusieurs localisations. Il faut consid\u00e9rer que toute entit\u00e9 qui h\u00e9berge l&rsquo;objet d&rsquo;une autre entit\u00e9 devient de fait une localisation valide m\u00eame si cela n&rsquo;est pas explicitement d\u00e9finit.<\/p>\n<h3 id=\"oln\">OLN \/ Nommage<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"olp\">OLP \/ Protection<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"old\">OLD \/ Dissimulation<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oll\">OLL \/ Liens<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"olc\">OLC \/ Cr\u00e9ation<\/h3>\n<p>Liste des liens \u00e0 g\u00e9n\u00e9rer lors de la cr\u00e9ation d&rsquo;une localisation.<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"ols\">OLS \/ Stockage<\/h3>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h3 id=\"olt\">OLT \/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"olr\">OLR \/ R\u00e9servation<\/h3>\n<p>A faire&#8230;<\/p>\n<h4 id=\"olio\">OLIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"olia\">OLIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>A faire&#8230;<\/p>\n<h2 id=\"oa\">OA \/ Application<\/h2>\n<p>A faire&#8230;<\/p>\n<p>Une application permet d&rsquo;interagir avec les objets et liens.<\/p>\n<p>Un application qui ne fait que lire des objets et liens, ou retrasmettre des liens d\u00e9j\u00e0 sign\u00e9s, est dite passive. Si l&rsquo;application \u00e0 la capacit\u00e9 de g\u00e9n\u00e9rer des liens sign\u00e9s, donc avec une entit\u00e9 d\u00e9verrouill\u00e9e, alors elle est dite active.<\/p>\n<p>Si l&rsquo;entit\u00e9 d&rsquo;une instance d&rsquo;application est par d\u00e9faut et automatiquement d\u00e9verrouill\u00e9e, donc active, alors c&rsquo;est aussi un robot. Le d\u00e9verrouillage de cette entit\u00e9 peut cependant b\u00e9n\u00e9ficier de protections paticuli\u00e8res.<\/p>\n<h3 id=\"oaf\">OAF \/ Fonctionnement<\/h3>\n<p>Dans la construction du code, il y a quatre niveaux. Chaque niveau de code est constitu\u00e9 d&rsquo;un et un seul objet nebule ou fichier utilis\u00e9. Une seule application est utilis\u00e9 \u00e0 un instant donn\u00e9 mais il peut y avoir plusieurs modules utilis\u00e9s par l&rsquo;application. Les niveaux :<\/p>\n<ul>\n<li>le bootstrap, fichier ;<\/li>\n<li>la librairie en PHP orient\u00e9 objet, objet ;<\/li>\n<li>une application au choix, objets ;<\/li>\n<li>des modules au choix, facultatifs, objets.<\/li>\n<\/ul>\n<p>Les applications sont toutes construites sur le m\u00eame mod\u00e8le et d\u00e9pendent (extend) toutes des m\u00eames classes de l&rsquo;application de r\u00e9f\u00e9rence dans la librairie nebule.<\/p>\n<p>Chaque application doit mettre en place les variables personnalis\u00e9es :<\/p>\n<ul>\n<li>$applicationName<\/li>\n<li>$applicationSurname<\/li>\n<li>$applicationDescription<\/li>\n<li>$applicationVersion<\/li>\n<li>$applicationLevel<\/li>\n<li>$applicationLicence<\/li>\n<li>$applicationAuthor<\/li>\n<li>$applicationWebsite<\/li>\n<\/ul>\n<p>Chaque application doit mettre en place les classes :<\/p>\n<ul>\n<li>Application<\/li>\n<li>Display<\/li>\n<li>Action<\/li>\n<li>Traduction<\/li>\n<\/ul>\n<p>Elles d\u00e9pendent respectivement des classes de l&rsquo;application de r\u00e9f\u00e9rence Applications, Displays, Actions et Traductions dans la librairie nebule.<\/p>\n<h3 id=\"oan\">OAN \/ Nommage<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oap\">OAP \/ Protection<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oad\">OAD \/ Dissimulation<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oal\">OAL \/ Liens<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oac\">OAC \/ Cr\u00e9ation<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oas\">OAS \/ Stockage<\/h3>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h3 id=\"oat\">OAT \/ Transfert<\/h3>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oar\">OAR \/ R\u00e9servation<\/h3>\n<p>Les objets r\u00e9serv\u00e9s sp\u00e9cifiquement pour les applications :<\/p>\n<ul>\n<li>nebule\/objet\/applications<\/li>\n<\/ul>\n<h3 id=\"oai\">OAI \/ Interface<\/h3>\n<p>Une interface est un programme d\u00e9di\u00e9 aux interactions entre deux milieux diff\u00e9rents.<\/p>\n<p>Une interface permet \u00e0 une entit\u00e9, c&rsquo;est \u00e0 dire un utilisateur ou un robot, d&rsquo;interagir avec une application. Cela peut \u00eatre vu comme une extension de l&rsquo;application.<\/p>\n<p>A faire&#8230;<\/p>\n<p>Les applications d\u00e9velopp\u00e9es dans le cadre de <i>nebule<\/i> :<\/p>\n<ul>\n<li><b>bootstrap<\/b> : le chargeur initial de la librairie et des applications, <a href=\"#oaigb\">OAIGB<\/a>.<\/li>\n<li><b>sylabe<\/b> : l&rsquo;application de r\u00e9f\u00e9rence des possibilit\u00e9s de nebule, <a href=\"#oaigs\">OAIGS<\/a>, <a href=\"http:\/\/blog.sylabe.org\">blog.sylabe.org<\/a>.<\/li>\n<li><b>klicty<\/b> : l&rsquo;application de partage d&rsquo;objets \u00e0 dur\u00e9e limit\u00e9e, <a href=\"#oaigk\">OAIGk<\/a>, <a href=\"http:\/\/blog.klicty.org\">blog.klicty.org<\/a>.<\/li>\n<li><b>messae<\/b> : l&rsquo;application de gestion des conversations et messages, <a href=\"#oaigm\">OAIGM<\/a>, <a href=\"http:\/\/blog.messae.org\">blog.messae.org<\/a>.<\/li>\n<li><b>option<\/b> : l&rsquo;application de gestion des options, <a href=\"#oaigo\">OAIGO<\/a>.<\/li>\n<li><b>upload<\/b> : l&rsquo;application de chargement de mises \u00e0 jours, <a href=\"#oaigu\">OAIGU<\/a>.<\/li>\n<li><b>defolt<\/b> : l&rsquo;application pour un affichage par d\u00e9faut sans application interactive, <a href=\"#oaigd\">OAIGD<\/a>.<\/li>\n<\/ul>\n<div class=\"layout-main\">\n<div class=\"layout-content\">\n<div id=\"appslist\">\n<div class=\"apps\" style=\"background: #000000;\"><span class=\"appstitle\">Nb<\/span><br \/>\n<span class=\"appsname\">break<\/span><\/div>\n<div class=\"apps\" style=\"background: #11dd11;\"><span class=\"appstitle\">Me<\/span><br \/>\n<span class=\"appsname\">messae<\/span><\/div>\n<div class=\"apps\" style=\"background: #212151;\"><span class=\"appstitle\">No<\/span><br \/>\n<span class=\"appsname\">option<\/span><\/div>\n<div class=\"apps\" style=\"background: #313131;\"><span class=\"appstitle\">Nd<\/span><br \/>\n<span class=\"appsname\">defolt<\/span><\/div>\n<div class=\"apps\" style=\"background: #ee8011;\"><span class=\"appstitle\">Kl<\/span><br \/>\n<span class=\"appsname\">klicty<\/span><\/div>\n<div class=\"apps\" style=\"background: #115131;\"><span class=\"appstitle\">Nu<\/span><br \/>\n<span class=\"appsname\">upload<\/span><\/div>\n<div class=\"apps\" style=\"background: #dd1111;\"><span class=\"appstitle\">Sy<\/span><br \/>\n<span class=\"appsname\">sylabe<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<h4 id=\"oain\">OAIN \/ Nommage<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oaip\">OAIP \/ Protection<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oaid\">OAID \/ Dissimulation<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oail\">OAIL \/ Liens<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oaic\">OAIC \/ Cr\u00e9ation<\/h4>\n<p>La cr\u00e9ation d&rsquo;une application se passe en trois parties. Il faut cr\u00e9er un objet de r\u00e9f\u00e9rence de la nouvelle application. Il faut lui affecter un objet de code, objet de code qui sera mise \u00e0 jour plus tard. Enfin il faut enregistrer l&rsquo;application pour la rendre disponible.<\/p>\n<h4 id=\"oaicr\">OAICR \/ R\u00e9f\u00e9rence<\/h4>\n<p>Cette partie est \u00e0 faire au d\u00e9but lorsque l&rsquo;on veut rendre visible et utiliser la nouvelle application. Elle ne sera plus refaite par la suite. Le but est de permettre au <i>bootstrap<\/i> de retrouver l&rsquo;application et de permettre \u00e0 l&rsquo;utilisateur de la s\u00e9lectionner.<\/p>\n<div class=\"layout-main\">\n<div class=\"layout-content\">\n<div id=\"appslist\">\n<div class=\"apps\" style=\"background: #dd1111;\"><span class=\"appstitle\">Sy<\/span><br \/>\n<span class=\"appsname\">sylabe<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>On d\u00e9finit un objet de r\u00e9f\u00e9rence, un objet qui sera en quelque sorte virtuel puisqu&rsquo;il n&rsquo;aura pas de contenu. Sa seule contrainte forte est que l&#8217;empreinte est exprim\u00e9e en hexad\u00e9cimal. Par convention, il est recommand\u00e9 que la taille de l&#8217;empreinte des objets virtuels soit comprise en 129 et 191 bits. Cet objet de r\u00e9f\u00e9rence peut \u00eatre g\u00e9n\u00e9r\u00e9 al\u00e9atoirement ou au contraire avoir un contenu pr\u00e9-d\u00e9termin\u00e9, ou mixer les deux.<\/p>\n<p>Chaque application doit avoir un objet de r\u00e9f\u00e9rence qui lui est r\u00e9serv\u00e9. Utiliser l&rsquo;objet de r\u00e9f\u00e9rence d&rsquo;une autre application revient \u00e0 tenter de mettre \u00e0 jour l&rsquo;application, non \u00e0 en faire une nouvelle.<\/p>\n<p>Par exemple avec la commande : <code>openssl rand -hex 24<\/code><\/p>\n<p>Cela donne une valeur, notre objet de r\u00e9f\u00e9rence, qui ressemble \u00e0 \u00e7a :<\/p>\n<p><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/p>\n<p>Pour finir avec l&rsquo;objet de r\u00e9f\u00e9rence, la couleur de l&rsquo;application d\u00e9pend de lui. Cette couleur \u00e9tant constitu\u00e9e des 6 premiers caract\u00e8res de l&#8217;empreinte de l&rsquo;objet de r\u00e9f\u00e9rence, il est possible de choisir volontairement cette couleur.<\/p>\n<p>L&rsquo;application doit avoir un nom et un pr\u00e9fixe. Ces deux propri\u00e9t\u00e9s sont utilis\u00e9es par le bootstrap pour l&rsquo;affichage des applications dans l&rsquo;application de s\u00e9lection des applications.<\/p>\n<p>Le nom est libre mais si il est trop grand il sera tronqu\u00e9 pour tenir dans le carr\u00e9 de l&rsquo;application.<\/p>\n<p>Le pr\u00e9fixe doit faire 2 caract\u00e8res. Si ce sont des lettres, syst\u00e9matiquement la premi\u00e8re sera transform\u00e9e en majuscule et la deuxi\u00e8me en minuscule.<\/p>\n<p>Par exemple :<\/p>\n<ul>\n<li>sylabe<\/li>\n<li>Sy<\/li>\n<\/ul>\n<p>Lorsque l&rsquo;on a d\u00e9fini notre objet de r\u00e9f\u00e9rence et le nom de l&rsquo;application, on cr\u00e9e les liens.<\/p>\n<p>Liste des liens \u00e0 g\u00e9n\u00e9rer lors de la cr\u00e9ation d&rsquo;une application interface.<\/p>\n<ul>\n<li>Le lien de hash :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;application<\/li>\n<li>cible : hash du nom de l&rsquo;algorithme de prise d&#8217;empreinte<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/hash&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de d\u00e9finition de type application :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;application<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/interface\/web\/php\/applications&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de nommage long de l&rsquo;application :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;application<\/li>\n<li>cible : hash(nom long de l&rsquo;application)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/nom&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<li>Le lien de nommage court de l&rsquo;application :\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : ID de l&rsquo;application<\/li>\n<li>cible : hash(nom court de l&rsquo;application)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/surnom&rsquo;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Pour que ces liens soient reconnus par le bootstrap, ils doivent tous \u00eatre sign\u00e9s d&rsquo;une autorit\u00e9 locale.<\/p>\n<h5 id=\"oaicc\">OAICC \/ Code<\/h5>\n<p>La cr\u00e9ation de la base d&rsquo;une application est simple, il suffit de copier le mod\u00e8le d&rsquo;application dans un nouveau fichier et dans un premier temps d&rsquo;adapter les variables et la fonction d&rsquo;affichage.<\/p>\n<p>Ensuite, ce fichier doit \u00eatre n\u00e9bulis\u00e9, c&rsquo;est \u00e0 dire transf\u00e9r\u00e9 vers le serveur comme nouvel objet.<\/p>\n<p>Une fois n\u00e9bulis\u00e9, l&rsquo;objet peut \u00eatre d\u00e9clar\u00e9 par un lien comme code pour l&rsquo;objet de r\u00e9f\u00e9rence de l&rsquo;application. Ainsi, l&rsquo;objet r\u00e9f\u00e9rence point un code \u00e0 ex\u00e9cuter.<\/p>\n<p>Le lien de pointage du code :<\/p>\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>f<\/code><\/li>\n<li>source :<\/li>\n<li>cible :<\/li>\n<li>m\u00e9ta :<\/li>\n<\/ul>\n<p>Exemple de mod\u00e8le d&rsquo;application :<\/p>\n<pre>&lt;?php\r\n\/\/ ------------------------------------------------------------------------------------------\r\n$applicationName\t\t= 'Share';\r\n$applicationSurname\t\t= 'Share All';\r\n$applicationDescription\t= 'Web page for sharing all you want.';\r\n$applicationVersion\t\t= '020190109';\r\n$applicationLevel\t\t= 'Developpement'; \/\/ Experimental | Developpement | Testing | Production\r\n$applicationLicence\t\t= 'GNU GPL 2019';\r\n$applicationAuthor\t\t= 'Me';\r\n$applicationWebsite\t\t= 'notme.nebule.org';\r\n\/\/ ------------------------------------------------------------------------------------------\r\n\r\n\r\n\r\n\/*\r\n ------------------------------------------------------------------------------------------\r\n \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/\r\n ------------------------------------------------------------------------------------------\r\n\r\n     .     [FR] Toute modification de ce code entrainera une modification de son empreinte\r\n    \/ \\           et entrainera donc automatiquement son invalidation !\r\n   \/ V \\   [EN] Any changes to this code will cause a chage in its footprint and therefore\r\n  \/__\u00c2\u00b0__\\         automatically result in its invalidation!\r\n     N     [ES] Cualquier cambio en el c\u00f3digo causar\u00e1n un cambio en su presencia y por lo\r\n     N            tanto lugar autom\u00e1ticamente a su anulaci\u00f3n!\r\n     N\r\n     N                                                                       Projet nebule\r\n ----N-------------------------------------------------------------------------------------\r\n \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/ WARNING \/\/\/\r\n ------------------------------------------------------------------------------------------\r\n *\/\r\n\r\n\r\n\r\n\/**\r\n * Classe Application\r\n * @author Me\r\n *\r\n * Le coeur de l'application.\r\n *\r\n *\/\r\nclass Application extends Applications\r\n{\r\n\t\/**\r\n\t * Constructeur.\r\n\t *\r\n\t * @param nebule $nebuleInstance\r\n\t * @return void\r\n\t *\/\r\n\tpublic function __construct(nebule $nebuleInstance)\r\n\t{\r\n\t\t$this-&gt;_nebuleInstance = $nebuleInstance;\r\n\t}\r\n\r\n\t\/\/ Tout par d\u00e9faut.\r\n}\r\n\r\n\r\n\r\n\/**\r\n * Classe Display\r\n * @author Me\r\n *\/\r\nclass Display extends Displays\r\n{\r\n\tconst DEFAULT_LOGO_BOOTSTRAP = 'data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaX\r\nHeAAABMElEQVR42u3ZQWqDQBTG8Tdp6VjEda5gyBnEeIkcxZ20mRuVrt0MIrhKyB3chFoIhULBalfZhCy6kBmI\/7dVnPHHm3E+VC\r\nLyKjOuhcy8AAAAAAAAAAAAAAAAAAAAAJhjPU7xkHEcX3xMXim1894Bvl5+qrHZAwAAAAAAfH+KfI6thP8CLAEAyAJkAbIAewAAAA\r\nAAAFmADgAAALIAWYAswB4AAAAAAEAWoAMAAIAsMGEVRbEyxmz\/c29VVYckSd5czOtBRDYuBrLWfmitP+M4XoZh+Hzrnr7vf621+z\r\nzPbdu2P3cFICJSluUpCIKvLMvWt67XdX1M0\/Td1cs7B7h0wjAMp2sEl23vFeB6OWitn1y3vXeAy3KIoui767rOGNM0TXP2cprkJM\r\nhBCAAAAJhx\/QGiUnc0nJCIeAAAAABJRU5ErkJggg==';\r\n\r\n\t\/**\r\n\t * Constructeur.\r\n\t *\r\n\t * @param Applications $applicationInstance\r\n\t * @return void\r\n\t *\/\r\n\tpublic function __construct(Applications $applicationInstance)\r\n\t{\r\n\t\t$this-&gt;_applicationInstance = $applicationInstance;\r\n\t}\r\n\r\n\r\n\r\n\t\/**\r\n\t * Affichage de la page.\r\n\t *\/\r\n\tpublic function display()\r\n\t{\r\n\t\tglobal $applicationVersion, $applicationLevel, $applicationLicence, $applicationWebsite,\r\n\t\t\t\t$applicationName, $applicationSurname, $applicationAuthor;\r\n\t\t?&gt;\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n\t&lt;body&gt;\r\n\t\tHello\r\n\t&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n&lt;?php\r\n\t}\r\n}\r\n\r\n\r\n\r\n\/**\r\n * Classe Action\r\n * @author Me\r\n *\/\r\nclass Action extends Actions\r\n{\r\n\tconst ACTION_APPLY_DELAY = 5;\r\n\t\/**\r\n\t * Constructeur.\r\n\t *\r\n\t * @param Applications $applicationInstance\r\n\t * @return void\r\n\t *\/\r\n\tpublic function __construct(Applications $applicationInstance)\r\n\t{\r\n\t\t$this-&gt;_applicationInstance = $applicationInstance;\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\t\/**\r\n\t * Traitement des actions g\u00e9n\u00e9riques.\r\n\t *\/\r\n\tpublic function genericActions()\r\n\t{\r\n\t\t$this-&gt;_metrology-&gt;addLog('Generic actions', 'DEBUG'); \/\/ Log\r\n\r\n\t\t\/\/ Rien.\r\n\r\n\t\t$this-&gt;_metrology-&gt;addLog('Generic actions end', 'DEBUG'); \/\/ Log\r\n\t}\r\n\t\r\n\r\n\t\r\n\t\/**\r\n\t * Traitement des actions sp\u00e9ciales, qui peuvent \u00eatre r\u00e9alis\u00e9es sans entit\u00e9 d\u00e9verrouill\u00e9e.\r\n\t *\/\r\n\tpublic function specialActions()\r\n\t{\r\n\t\t$this-&gt;_metrology-&gt;addLog('Special actions', 'DEBUG'); \/\/ Log\r\n\r\n\t\t\/\/ Rien.\r\n\t\t\r\n\t\t$this-&gt;_metrology-&gt;addLog('Special actions end', 'DEBUG'); \/\/ Log\r\n\t}\r\n}\r\n\r\n\r\n\r\n\/**\r\n * Classe Traduction\r\n * @author Me\r\n *\/\r\nclass Traduction extends Traductions\r\n{\r\n\t\/**\r\n\t * Constructeur.\r\n\t *\r\n\t * @param Application $applicationInstance\r\n\t * @return void\r\n\t *\/\r\n\tpublic function __construct(Application $applicationInstance)\r\n\t{\r\n\t\t$this-&gt;_applicationInstance = $applicationInstance;\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\t\/**\r\n\t * Initialisation de la table de traduction.\r\n\t *\/\r\n\tprotected function _initTable()\r\n\t{\r\n\t\t$this-&gt;_table['fr-fr']['::::INFO']='Information';\r\n\t\t$this-&gt;_table['en-en']['::::INFO']='Information';\r\n\t\t$this-&gt;_table['es-co']['::::INFO']='Information';\r\n\t\t$this-&gt;_table['fr-fr']['::::OK']='OK';\r\n\t\t$this-&gt;_table['en-en']['::::OK']='OK';\r\n\t\t$this-&gt;_table['es-co']['::::OK']='OK';\r\n\t\t$this-&gt;_table['fr-fr']['::::INFORMATION']='Message';\r\n\t\t$this-&gt;_table['en-en']['::::INFORMATION']='Message';\r\n\t\t$this-&gt;_table['es-co']['::::INFORMATION']='Mensaje';\r\n\t\t$this-&gt;_table['fr-fr']['::::WARN']='ATTENTION !';\r\n\t\t$this-&gt;_table['en-en']['::::WARN']='WARNING!';\r\n\t\t$this-&gt;_table['es-co']['::::WARN']='\u00c2\u00a1ADVERTENCIA!';\r\n\t\t$this-&gt;_table['fr-fr']['::::ERROR']='ERREUR !';\r\n\t\t$this-&gt;_table['en-en']['::::ERROR']='ERROR!';\r\n\t\t$this-&gt;_table['es-co']['::::ERROR']='\u00c2\u00a1ERROR!';\r\n\r\n\t\t$this-&gt;_table['fr-fr']['::::RESCUE']='Mode de sauvetage !';\r\n\t\t$this-&gt;_table['en-en']['::::RESCUE']='Rescue mode!';\r\n\t\t$this-&gt;_table['es-co']['::::RESCUE']='\u00c2\u00a1Modo de rescate!';\r\n\t}\r\n}\r\n<\/pre>\n<h5 id=\"oaice\">OAICE \/ Enregistrement<\/h5>\n<p>Le lien d&rsquo;enregistrement de l&rsquo;application :<\/p>\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source :<\/li>\n<li>cible :<\/li>\n<li>m\u00e9ta :<\/li>\n<\/ul>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oaiu\">OAIU \/ Mise \u00e0 Jour<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oais\">OAIS \/ Stockage<\/h4>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h4 id=\"oait\">OAIT \/ Transfert<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oair\">OAIR \/ R\u00e9servation<\/h4>\n<p>Les objets r\u00e9serv\u00e9s sp\u00e9cifiquement pour les applications :<\/p>\n<ul>\n<li>nebule\/objet\/interface\/web\/php\/bootstrap<\/li>\n<li>nebule\/objet\/interface\/web\/php\/bibliotheque<\/li>\n<li>nebule\/objet\/interface\/web\/php\/applications<\/li>\n<li>nebule\/objet\/interface\/web\/php\/applications\/direct<\/li>\n<li>nebule\/objet\/interface\/web\/php\/applications\/active<\/li>\n<\/ul>\n<h4 id=\"oaig\">OAIG \/ Applications d&rsquo;Interfa\u00e7age G\u00e9n\u00e9riques<\/h4>\n<p>Ces applications sont d\u00e9velopp\u00e9es dans le cadre de <i>nebule<\/i> et sont librement mises \u00e0 disposition (sous license).<\/p>\n<p>Le nom de ces applications est toujours en minuscule.<\/p>\n<h5 id=\"oaigb\">OAIGB \/ Nb &#8211; bootstrap<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"oaigs\">OAIGS \/ Sy &#8211; sylabe<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"oaigk\">OAIGK \/ Kl &#8211; klicty<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"oaigm\">OAIGM \/ Me &#8211; messae<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"oaigo\">OAIGO \/ No &#8211; option<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"oaigu\">OAIGU \/ Nu &#8211; upload<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"oaigd\">OAIGD \/ Nd &#8211; defolt<\/h5>\n<p>A faire&#8230;<\/p>\n<h3 id=\"oam\">OAM \/ Module<\/h3>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oamn\">OAMN \/ Nommage<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oamp\">OAMP \/ Protection<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oamd\">OAMD \/ Dissimulation<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oaml\">OAML \/ Liens<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oamc\">OAMC \/ Cr\u00e9ation<\/h4>\n<p>Liste des liens \u00e0 g\u00e9n\u00e9rer lors de la cr\u00e9ation d&rsquo;un module.<\/p>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oamu\">OAMU \/ Mise \u00e0 Jour<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oams\">OAMS \/ Stockage<\/h4>\n<p>Voir <a href=\"#oos\">OOS<\/a>, pas de particularit\u00e9 de stockage.<\/p>\n<h4 id=\"oamt\">OAMT \/ Transfert<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oamr\">OAMR \/ R\u00e9servation<\/h4>\n<p>Les objets r\u00e9serv\u00e9s sp\u00e9cifiquement pour les modules d&rsquo;applications :<\/p>\n<ul>\n<li>nebule\/objet\/interface\/web\/php\/applications\/modules<\/li>\n<li>nebule\/objet\/interface\/web\/php\/applications\/modules\/active<\/li>\n<\/ul>\n<h4 id=\"oaio\">OAIO \/ Impl\u00e9mentation des Options<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"oaia\">OAIA \/ Impl\u00e9mentation des Actions<\/h4>\n<p>A faire&#8230;<\/p>\n<h1 id=\"l\">L \/ Lien<\/h1>\n<p>Le lien est la mat\u00e9rialisation dans un graphe d&rsquo;une relation entre deux objets pond\u00e9r\u00e9 par un troisi\u00e8me objet.<\/p>\n<h5 id=\"lelpo\">LELPO \/ Liens \u00e0 Propos d&rsquo;un Objet<\/h5>\n<p>Les liens d&rsquo;un objet sont consultables s\u00e9quentiellement. Il doivent \u00eatre per\u00e7us comme des m\u00e9ta-donn\u00e9es d&rsquo;un objet.<\/p>\n<p>Les liens sont s\u00e9par\u00e9s soit par un caract\u00e8re espace \u00c2\u00ab\u00c2\u00a0\u00c2\u00bb, soit par un retour chariot \u00c2\u00ab\u00c2\u00a0\\n\u00c2\u00a0\u00c2\u00bb. Un lien est donc une suite de caract\u00e8res ininterrompue, c&rsquo;est \u00e0 dire sans espace ou retour \u00e0 la ligne.<\/p>\n<p>La taille du lien d\u00e9pend de la taille de chaque champs.<\/p>\n<p>Chaque localisation contenant des liens doit avoir un ent\u00eate de version.<\/p>\n<h5 id=\"lelco\">LELCO \/ Liens Contenu dans un Objet<\/h5>\n<p>Certains liens d&rsquo;un objet peuvent \u00eatre contenus dans un autre objet.<\/p>\n<p>Cette forme de stockage des liens permet de les transmettre et de les manipuler sous la forme d&rsquo;un objet. On peut ainsi profiter du d\u00e9coupage et du chiffrement. Plusieurs liens peuvent \u00eatre stock\u00e9s sans \u00eatre n\u00e9cessairement en rapport avec les m\u00eames objets.<\/p>\n<p>Les liens stock\u00e9s dans un objet ne peuvent pas faire r\u00e9f\u00e9rence \u00e0 ce m\u00eame objet.<\/p>\n<p>Tout ajout de lien cr\u00e9e implicitement un nouvel objet de mise \u00e0 jour, c&rsquo;est \u00e0 dire li\u00e9 par un lien de type u.<\/p>\n<p>Chaque fichier contenant des liens doit avoir un ent\u00eate de version.<\/p>\n<p>Les objets contenants des liens ne sont pas reconnus et exploit\u00e9s lors de la lecture des liens. Ceux-ci doivent d&rsquo;abord \u00eatre extraits et inject\u00e9s dans les liens des objets concern\u00e9s. En clair, on ne peux pas s&rsquo;en servir facilement pour de l&rsquo;anonymisation.<\/p>\n<h2 id=\"le\">LE \/ Ent\u00eate<\/h2>\n<p>L&rsquo;ent\u00eate des liens est constitu\u00e9 du texte <code>nebule\/liens\/version\/1.2<\/code>. Il est s\u00e9par\u00e9 du premier lien soit par un caract\u00e8re espace \u00c2\u00ab\u00c2\u00a0\u00c2\u00bb, soit par un retour chariot \u00c2\u00ab\u00c2\u00a0\\n\u00c2\u00a0\u00c2\u00bb.<\/p>\n<p>Il doit \u00eatre transmit avec les liens, en premier.<\/p>\n<h2 id=\"lr\">LR \/ Registre<\/h2>\n<p>Le registre du lien d\u00e9crit la syntaxe du lien :<\/p>\n<p style=\"text-align: center;\"><code>Signature_HashSignataire_TimeStamp_Action_HashSource_HashCible_HashMeta<\/code><\/p>\n<p>Ce registre a un nombre de champs fixe. Chaque champs a une place fixe dans le lien. Les champs ont une taille variable. Le s\u00e9parateur de champs est l&rsquo;underscore \u00c2\u00ab\u00c2\u00a0_\u00c2\u00a0\u00c2\u00bb. Les champs ne peuvent contenir ni l&rsquo;underscore \u00c2\u00ab\u00c2\u00a0_\u00c2\u00a0\u00c2\u00bb ni l&rsquo;espace \u00c2\u00a0\u00c2\u00bb \u00c2\u00a0\u00c2\u00bb ni le retour chariot \u00c2\u00ab\u00c2\u00a0\\n\u00c2\u00a0\u00c2\u00bb.<\/p>\n<p>Tout lien qui ne respecte pas cette syntaxe est \u00e0 consid\u00e9rer comme invalide et \u00e0 supprimer. Tout lien dont la <code>Signature<\/code> est invalide est \u00e0 consid\u00e9rer comme invalide et \u00e0 supprimer. La v\u00e9rification peut \u00eatre r\u00e9alis\u00e9e en r\u00e9-assemblant les champs apr\u00e8s nettoyage.<\/p>\n<h4 id=\"lrsi\">LRSI \/ Le champ <code>Signature<\/code><\/h4>\n<p>Le champ <code>Signature<\/code> est repr\u00e9sent\u00e9 en deux parties s\u00e9par\u00e9es par un point \u00c2\u00ab\u00c2\u00a0.\u00c2\u00a0\u00c2\u00bb . La premi\u00e8re partie contient la valeur de la signature. La deuxi\u00e8me partie contient le nom court de la fonction de prise d&#8217;empreinte utilis\u00e9e.<\/p>\n<p>La signature est calcul\u00e9e sur l&#8217;empreinte du lien r\u00e9alis\u00e9e avec la fonction de prise d&#8217;empreinte d\u00e9sign\u00e9e dans la deuxi\u00e8me partie. L&#8217;empreinte du lien est calcul\u00e9e sur tout le lien sauf le champs <code>signature<\/code>, c&rsquo;est \u00e0 dire sur \u00c2\u00ab\u00c2\u00a0<code>_HashSignataire_TimeStamp_Action_HashSource_HashCible_HashMeta<\/code>\u00c2\u00a0\u00c2\u00bb avec le premier underscore inclus.<\/p>\n<p>La signature ne contient que des caract\u00e8res hexad\u00e9cimaux, c&rsquo;est \u00e0 dire de \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a09\u00c2\u00a0\u00c2\u00bb et de \u00c2\u00ab\u00c2\u00a0a\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a0f\u00c2\u00a0\u00c2\u00bb en minuscule. La fonction de prise d&#8217;empreinte est not\u00e9e en caract\u00e8res alpha-num\u00e9riques en minuscule.<\/p>\n<h5 id=\"lrusi\">LRHSI \/ Le champ <code>HashSignataire<\/code><\/h5>\n<p>Le champ <code>signataire<\/code> d\u00e9signe l&rsquo;objet de l&rsquo;entit\u00e9 qui g\u00e9n\u00e8re le lien et le signe.<\/p>\n<p>Il ne contient que des caract\u00e8res hexad\u00e9cimaux, c&rsquo;est \u00e0 dire de \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a09\u00c2\u00a0\u00c2\u00bb et de \u00c2\u00ab\u00c2\u00a0a\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a0f\u00c2\u00a0\u00c2\u00bb en minuscule.<\/p>\n<h3 id=\"lrt\">LRT \/ Le champ <code>TimeStamp<\/code><\/h3>\n<p>Le champ <code>TimeStamp<\/code> est une marque de temps qui donne un ordre temporel aux liens. Ce champs peut \u00eatre une date et une heure au format <a class=\"external text\" title=\"http:\/\/fr.wikipedia.org\/wiki\/ISO_8601\" href=\"http:\/\/fr.wikipedia.org\/wiki\/ISO_8601\" rel=\"nofollow\">ISO8601<\/a> ou simplement un compteur incr\u00e9mental.<\/p>\n<h3 id=\"lra\">LRA \/ Le champ <code>Action<\/code><\/h3>\n<p>Le champ <code>Action<\/code> d\u00e9termine la fa\u00e7on dont le lien doit \u00eatre utilis\u00e9.<\/p>\n<p>Quand on parle du type d&rsquo;un lien, on fait r\u00e9f\u00e9rence \u00e0 son champ <code>Action<\/code>.<\/p>\n<p>L&rsquo;interpr\u00e9tation de ce champ est limit\u00e9 au premier caract\u00e8re. Des caract\u00e8res alpha-num\u00e9riques suppl\u00e9mentaires sont autoris\u00e9s mais ignor\u00e9s.<\/p>\n<p>Cette interpr\u00e9tation est bas\u00e9e sur un vocabulaire particulier. Ce vocabulaire est sp\u00e9cifique \u00e0 <i>nebule v1.2<\/i> (et <i>nebule v1.1<\/i>).<\/p>\n<p>Le vocabulaire ne reconna\u00eet que les 8 caract\u00e8res <code>l<\/code>, <code>f<\/code>, <code>u<\/code>, <code>d<\/code>, <code>e<\/code>, <code>x<\/code>, <code>k<\/code> et <code>s<\/code>, en minuscule.<\/p>\n<h4 id=\"lral\">LRAL \/ Action <code>l<\/code> Lien entre objets<\/h4>\n<p>Met en place une relation entre deux objets. Cette relation a un sens de mise en place et peut \u00eatre pond\u00e9r\u00e9e par un objet m\u00e9ta.<\/p>\n<p>Les liens de type <code>l<\/code> ne devraient avoir ni <code>HashMeta<\/code> nul ni <code>HashCible<\/code> nul.<\/p>\n<h4 id=\"lraf\">LRAF \/ Action <code>f<\/code> D\u00e9riv\u00e9 d&rsquo;objet<\/h4>\n<p>Le nouvel objet est consid\u00e9r\u00e9 comme enfant ou parent suivant le sens du lien.<\/p>\n<p>Le champs <code>ObjetMeta<\/code> doit \u00eatre vu comme le contexte du lien. Par exemple, deux objets contenants du texte peuvent \u00eatre reli\u00e9s simplement sans contexte, c&rsquo;est \u00e0 dire reli\u00e9s de fa\u00e7on simplement hi\u00e9rarchique. Ces deux m\u00eames textes peuvent \u00eatre plut\u00f4t (ou en plus) reli\u00e9s avec un contexte comme celui d&rsquo;une discussion dans un blog. Dans ce deuxi\u00e8me cas, la relation entre les deux textes n&rsquo;a pas de sens en dehors de cette discussion sur ce blog. Il est m\u00eame probable que le blog n&rsquo;affichera pas les autres textes en relations si ils n&rsquo;ont pas un contexte appartenant \u00e0 ce blog.<\/p>\n<p><code>f<\/code> comme <i>fork<\/i>.<\/p>\n<h4 id=\"lrau\">LRAU \/ Action <code>u<\/code> Mise \u00e0 jour d&rsquo;objet<\/h4>\n<p>Mise \u00e0 jour d&rsquo;un objet d\u00e9riv\u00e9 qui remplace l&rsquo;objet parent.<\/p>\n<p><code>u<\/code> comme <i>update<\/i>.<\/p>\n<h4 id=\"lrad\">LRAD \/ Action <code>d<\/code> Suppression d&rsquo;objet<\/h4>\n<p>L&rsquo;objet est marqu\u00e9 comme \u00e0 supprimer d&rsquo;un ou de tous ses emplacements de stockage.<\/p>\n<p><code>d<\/code> comme <i>delete<\/i>.<\/p>\n<p>Le champs <code>HashCible<\/code> <span style=\"text-decoration: underline;\">peut<\/span> \u00eatre nuls, c&rsquo;est \u00e0 dire \u00e9gal \u00e0 <code>0<\/code>. Si non nul, ce champs doit contenir une entit\u00e9 destinataire de <i>l&rsquo;ordre<\/i> de suppression. C&rsquo;est utilis\u00e9 pour demander \u00e0 une entit\u00e9 relaie de supprimer un objet sp\u00e9cifique. Cela peut \u00eatre utilis\u00e9 pour demander \u00e0 une entit\u00e9 en r\u00e8gle g\u00e9n\u00e9rale de bien vouloir supprimer l&rsquo;objet, ce qui n&rsquo;est pas forc\u00e9ment ex\u00e9cut\u00e9.<\/p>\n<p>Le champs <code>HashMeta<\/code> <span style=\"text-decoration: underline;\">doit<\/span> \u00eatre nuls, c&rsquo;est \u00e0 dire \u00e9gal \u00e0 <code>0<\/code>.<\/p>\n<p>Un lien de suppression sur un objet ne veut pas forc\u00e9ment dire qu&rsquo;il a \u00e9t\u00e9 supprim\u00e9. M\u00eame localement, l&rsquo;objet est peut-\u00eatre encore pr\u00e9sent. Si le lien de suppression vient d&rsquo;une autre entit\u00e9, on ne va s\u00fcrement pas par d\u00e9faut en tenir compte.<\/p>\n<p>Lorsque le lien de suppression est g\u00e9n\u00e9r\u00e9, le serveur sur lequel est g\u00e9n\u00e9r\u00e9 le lien doit essayer par d\u00e9faut de supprimer l&rsquo;objet. Dans le cas d&rsquo;un serveur h\u00e9bergeant plusieurs entit\u00e9s, un objet ne sera pas supprim\u00e9 si il est encore utilis\u00e9 par une autre entit\u00e9, c&rsquo;est \u00e0 dire si une entit\u00e9 a un lien qui le concerne et n&rsquo;a pas de lien de suppression.<\/p>\n<h4 id=\"lrae\">LRAE \/ Action <code>e<\/code> \u00c9quivalence d&rsquo;objets<\/h4>\n<p>D\u00e9finit des objets jug\u00e9s \u00e9quivalents, et donc interchangeables par exemple pour une traduction.<\/p>\n<h4 id=\"lrac\">LRAC \/ Action <code>c<\/code> Chiffrement de lien<\/h4>\n<p>Ce lien de dissimulation contient un lien dissimul\u00e9 sans signature. Il permet d&rsquo;offusquer des liens entre objets et donc d&rsquo;anonymiser certaines actions de l&rsquo;entit\u00e9 (cf <a href=\"#ckl\">CKL<\/a>).<\/p>\n<p>Le champs <code>HashSource<\/code> fait r\u00e9f\u00e9rence \u00e0 l&rsquo;entit\u00e9 destinataire du lien, celle qui peut le d\u00e9chiffrer. A part le champs de l&rsquo;entit\u00e9 signataire, c&rsquo;est le seul champs qui fait r\u00e9f\u00e9rence \u00e0 un objet.<\/p>\n<p>Le champs <code>HashCible<\/code> ne contient pas la r\u00e9f\u00e9rence d&rsquo;un objet mais le lien chiffr\u00e9 et encod\u00e9 en hexad\u00e9cimal. Le chiffrement est de type sym\u00e9trique avec la cl\u00e9 de session. Le lien offusqu\u00e9 n&rsquo;a pas grand int\u00e9r\u00eat en lui m\u00eame, c&rsquo;est le lien d\u00e9chiffr\u00e9 qui en a.<\/p>\n<p>Le champs <code>HashMeta<\/code> ne contient pas la r\u00e9f\u00e9rence d&rsquo;un objet mais la cl\u00e9 de chiffrement du lien, dite cl\u00e9 de session. Cette cl\u00e9 est chiffr\u00e9e (asym\u00e9trique) pour l&rsquo;entit\u00e9 destinataire et encod\u00e9e en hexad\u00e9cimal. Chaque entit\u00e9s destinataires d&rsquo;un lien de dissimul\u00e9 doit disposer d&rsquo;un lien de dissimulation qui lui est propre.<\/p>\n<p>Lors du traitement des liens, si une entit\u00e9 est d\u00e9verrouill\u00e9e, les liens offusqu\u00e9s pour cette entit\u00e9 doivent \u00eatre d\u00e9chiffr\u00e9s et utilis\u00e9s en remplacement des liens offusqu\u00e9s originels. Les liens offusqu\u00e9s doivent \u00eatre v\u00e9rifi\u00e9s avant d\u00e9chiffrement. Les liens d\u00e9chiffr\u00e9s doivent \u00eatre v\u00e9rifi\u00e9s avant exploitation.<\/p>\n<p>Les liens de dissimulations posent un probl\u00e8me pour \u00eatre efficacement utilis\u00e9s par les entit\u00e9s \u00e9metrices et destinataires. Pour r\u00e9soudre ce probl\u00e8me sans risquer de r\u00e9v\u00e9ler les identifiants des objets utilis\u00e9s dans un lien dissimul\u00e9, les liens de dissimulation sont attach\u00e9s \u00e0 des objets virtuels translat\u00e9s depuis les identifiants des objets originaux (cf <a href=\"#ld\">LD<\/a>).<\/p>\n<p>L&rsquo;option <code>permitObfuscatedLink<\/code> permet de d\u00e9sactiver la dissimulation (offuscation) des liens des objets. Dans ce cas le lien de type <code>c<\/code> est rejet\u00e9 comme invalide avec le code erreur 43.<\/p>\n<h4 id=\"lrak\">LRAK \/ Action <code>k<\/code> Chiffrement d&rsquo;objet<\/h4>\n<p>D\u00e9signe la version chiffr\u00e9e de l&rsquo;objet (cf <a href=\"#cko\">CKO<\/a>).<\/p>\n<p>L&rsquo;option <code>permitProtectedObject<\/code> permet de d\u00e9sactiver la protection (chiffrement) des objets. Dans ce cas le lien de type <code>k<\/code> est rejet\u00e9 comme invalide avec le code erreur 42.<\/p>\n<h4 id=\"lras\">LRAS \/ Action <code>s<\/code> Subdivision d&rsquo;objet<\/h4>\n<p>D\u00e9signe un fragment de l&rsquo;objet.<\/p>\n<p>Ce champ n\u00e9cessite un objet m\u00e9ta qui pr\u00e9cise intervalle de contenu de l&rsquo;objet d&rsquo;origine. Le contenu de l&rsquo;objet m\u00e9ta doit \u00eatre de la forme <code>x-y<\/code> avec :<\/p>\n<ul>\n<li><code>x<\/code> et <code>y<\/code> exprim\u00e9 en octet sans z\u00e9ro et sans unit\u00e9 ;<\/li>\n<li><code>x<\/code> strictement sup\u00e9rieur \u00e0 z\u00e9ro ;<\/li>\n<li><code>y<\/code> strictement inf\u00e9rieur ou \u00e9gal \u00e0 la taille de l&rsquo;objet (lien vers <i>nebule\/objet\/taille<\/i>) ;<\/li>\n<li><code>x<\/code> inf\u00e9rieur \u00e0 <code>y<\/code> ;<\/li>\n<li>sans espace, tabulation ou retour chariot.<\/li>\n<\/ul>\n<h4 id=\"lrax\">LRAX \/ Action <code>x<\/code> Suppression de lien<\/h4>\n<p>Supprime un ou plusieurs liens pr\u00e9c\u00e9demment mis en place.<\/p>\n<p>Les liens concern\u00e9s par la suppression sont les liens ant\u00e9rieurs de type <code>l<\/code>, <code>f<\/code>, <code>u<\/code>, <code>d<\/code>, <code>e<\/code>, <code>k<\/code> et <code>s<\/code>. Ils sont rep\u00e9r\u00e9s par les 3 derniers champs, c&rsquo;est \u00e0 dire sur <code>HashSource_HashCible_HashMeta<\/code>. Les champs nuls sont strictement pris en compte.<\/p>\n<p>Le champ <code>TimeStamp<\/code> permet de d\u00e9terminer l&rsquo;ant\u00e9riorit\u00e9 du lien et donc de d\u00e9terminer sa suppression ou pas.<\/p>\n<p>C&rsquo;est la seule action sur les liens et non sur les objets.<\/p>\n<h4 id=\"lrhs\">LRHS \/ Le champ <code>HashSource<\/code><\/h4>\n<p>Le champ <code>HashSource<\/code> d\u00e9signe l&rsquo;objet source du lien.<\/p>\n<p>Le champ <code>signataire<\/code> ne contient que des caract\u00e8res hexad\u00e9cimaux, c&rsquo;est \u00e0 dire de \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a09\u00c2\u00a0\u00c2\u00bb et de \u00c2\u00ab\u00c2\u00a0a\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a0f\u00c2\u00a0\u00c2\u00bb en minuscule.<\/p>\n<h4 id=\"lrhc\">LRHC \/ Le champ <code>HashCible<\/code><\/h4>\n<p>Le champ <code>HashCible<\/code> d\u00e9signe l&rsquo;objet destination du lien.<\/p>\n<p>Le champ <code>signataire<\/code> ne contient que des caract\u00e8res hexad\u00e9cimaux, c&rsquo;est \u00e0 dire de \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a09\u00c2\u00a0\u00c2\u00bb et de \u00c2\u00ab\u00c2\u00a0a\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a0f\u00c2\u00a0\u00c2\u00bb en minuscule.<\/p>\n<p>Il peut \u00eatre nuls, c&rsquo;est \u00e0 dire repr\u00e9sent\u00e9s par la valeur \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb sur un seul caract\u00e8re.<\/p>\n<h4 id=\"lrhm\">LRHM \/ Le champ <code>HashMeta<\/code><\/h4>\n<p>Le champ <code>HashMeta<\/code> d\u00e9signe l&rsquo;objet contenant une caract\u00e9risation du lien entre l&rsquo;objet source et l&rsquo;objet destination.<\/p>\n<p>Le champ <code>signataire<\/code> ne contient que des caract\u00e8res hexad\u00e9cimaux, c&rsquo;est \u00e0 dire de \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a09\u00c2\u00a0\u00c2\u00bb et de \u00c2\u00ab\u00c2\u00a0a\u00c2\u00a0\u00c2\u00bb \u00e0 \u00c2\u00ab\u00c2\u00a0f\u00c2\u00a0\u00c2\u00bb en minuscule.<\/p>\n<p>Il peut \u00eatre nuls, c&rsquo;est \u00e0 dire repr\u00e9sent\u00e9s par la valeur \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb sur un seul caract\u00e8re.<\/p>\n<h2 id=\"l1\">L1 \/ Lien simple<\/h2>\n<p>Le registre du lien simple a ses champs <code>HashCible<\/code> et <code>HashMeta<\/code> \u00e9gaux \u00e0 \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb.<\/p>\n<p>Il ressemble \u00e0 :<\/p>\n<p class=\"pcenter\"><code>Signature_HashSignataire_TimeStamp_Action_HashSource_0_0<\/code><\/p>\n<h2 id=\"l2\">L2 \/ Lien double<\/h2>\n<p>Le registre du lien double a son champ <code>HashMeta<\/code> \u00e9gal \u00e0 \u00c2\u00ab\u00c2\u00a00\u00c2\u00a0\u00c2\u00bb.<\/p>\n<p>Il ressemble \u00e0 :<\/p>\n<p class=\"pcenter\"><code>Signature_HashSignataire_TimeStamp_Action_HashSource_HashCible_0<\/code><\/p>\n<h2 id=\"l3\">L3 \/ Lien triple<\/h2>\n<p>Le registre du lien triple est compl\u00e8tement utilis\u00e9.<\/p>\n<p>Il ressemble \u00e0 :<\/p>\n<p class=\"pcenter\"><code>Signature_HashSignataire_TimeStamp_Action_HashSource_HashCible_HashMeta<\/code><\/p>\n<h2 id=\"ls\">LS \/ Stockage<\/h2>\n<p>Tous les liens sont stock\u00e9s dans un m\u00eame emplacement ou sont visible comme \u00e9tant dans un m\u00eame emplacement. Cet emplacement ne contient pas les contenus des objets (cf <a href=\"#oos\">OOS<\/a>).<\/p>\n<p>Le lien dissimul\u00e9 est stock\u00e9 dans le m\u00eame emplacement mais dispose de fichiers de stockages diff\u00e9rents du fait de la sp\u00e9cificit\u00e9 (cf <a href=\"#lsds\">LSDS<\/a>).<\/p>\n<h3 id=\"lsa\">LSA \/ Arborescence<\/h3>\n<p>Sur un syst\u00e8me de fichiers, tous les liens sont stock\u00e9s dans des fichiers contenus dans le dossier <code>pub\/l\/<\/code> (<code>l<\/code> comme lien).<\/p>\n<p>A faire&#8230;<\/p>\n<h3 id=\"lsd\">LSD \/ Dissimulation<\/h3>\n<p>Le lien de dissimulation, de type <code>c<\/code>, contient un lien dissimul\u00e9 sans signature (cf <a href=\"#lrac\">LRAC<\/a>). Il permet d&rsquo;offusquer des liens entre objets et donc d&rsquo;anonymiser certaines actions de l&rsquo;entit\u00e9 (cf <a href=\"#ckl\">CKL<\/a>).<\/p>\n<h4 id=\"lsda\">LSDA \/ Attaque sur la dissimulation<\/h4>\n<p>Le fait qu&rsquo;une entit\u00e9 synchronise des liens dissimul\u00e9s que d&rsquo;autres entit\u00e9s partagent et les range dans des fichiers transcod\u00e9s peut r\u00e9v\u00e9ler l&rsquo;ID de l&rsquo;objet transcod\u00e9. Et par t\u00e2tonnement on peut retourner ainsi le transcodage de tous les objets.<\/p>\n<p>Il suffit qu&rsquo;une entit\u00e9 attaquante g\u00e9n\u00e8re un lien dissimul\u00e9 \u00e0 destination d&rsquo;une entit\u00e9 attaqu\u00e9e concernant un objet en particulier. L&rsquo;entit\u00e9 attaqu\u00e9e va alors ranger le lien dissimul\u00e9 dans le fichier transcod\u00e9. L&rsquo;entit\u00e9 attaquante peut alors rechercher quel fichier transcod\u00e9 contient sont lien dissimul\u00e9 et en d\u00e9duire que ce fichier transcod\u00e9 correspond \u00e0 l&rsquo;objet.<\/p>\n<p>En plus, si le lien dissimul\u00e9 n&rsquo;a aucune action valable, il ne sera pas exploit\u00e9, donc pas d\u00e9tect\u00e9 par l&rsquo;entit\u00e9 attaqu\u00e9e.<\/p>\n<p>La solution impl\u00e9ment\u00e9e pour palier \u00e0 ce probl\u00e8me c&rsquo;est la m\u00e9thode dite de translation des liens dissimul\u00e9s.<\/p>\n<h4 id=\"lsds\">LSDS \/ Stockage et transcodage<\/h4>\n<p>Les liens dissimul\u00e9s sont camoufl\u00e9s dans des liens de dissimulation, ils ne sont donc plus utilisables pour assurer le transfert entre entit\u00e9s et le tri dans les fichiers de stockage des liens.<\/p>\n<p>De plus, les liens de dissimulations ne doivent pas \u00eatre stock\u00e9s directement dans des fichiers de stockage des liens directement rattach\u00e9s aux objets concern\u00e9s, comme les autres liens, sous peine de d\u00e9voiler assez rapidement les identifiants des objets utilis\u00e9s&#8230; et donc assez facilement le lien dissimul\u00e9 correspondant. Cela poserait en plus un probl\u00e8me lors du nettoyage des liens parce qu&rsquo;il faut avoir acc\u00e8s aux liens dissimul\u00e9s pour correctement les ranger.<\/p>\n<p>Le nommage des fichiers contenant ces liens doit aussi \u00eatre diff\u00e9rent des entit\u00e9s signataires et destinataires des liens, et ce nommage peut par facilit\u00e9 faire r\u00e9f\u00e9rence simultan\u00e9ment \u00e0 ces deux entit\u00e9s. Ainsi ces fichiers sont stock\u00e9s dans le dossier des liens. Cette organisation et cette s\u00e9paration des liens dans des fichiers clairement distincts r\u00e9pond au besoin d&rsquo;utilisation. Et lors du nettoyage des liens, le traitement peut \u00eatre diff\u00e9renci\u00e9 par rapport \u00e0 la structure du nom des fichiers.<\/p>\n<h5 id=\"lsdst\">LSDST \/ Translation de lien<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"lsdsp\">LSDSP \/ Protection de translation<\/h5>\n<p>A faire&#8230;<\/p>\n<h4 id=\"lsdt\">LSDT \/ Transfert et partage<\/h4>\n<p>A faire&#8230;<\/p>\n<h4 id=\"lsdc\">LSDC \/ Compromission<\/h4>\n<p>A faire&#8230;<\/p>\n<h2 id=\"lt\">LT \/ Transfert<\/h2>\n<p>A faire&#8230;<\/p>\n<h2 id=\"lv\">LV \/ V\u00e9rification<\/h2>\n<p>La signature d&rsquo;un lien doit \u00eatre v\u00e9rifi\u00e9e lors de la fin de la r\u00e9ception du lien. La signature d&rsquo;un lien devrait \u00eatre v\u00e9rifi\u00e9e avant chaque utilisation de ce lien. Un lien avec une signature invalide doit \u00eatre supprim\u00e9. Lors de la suppression d&rsquo;un lien, les autres liens de cet objet ne sont pas supprim\u00e9s et l&rsquo;objet n&rsquo;est pas supprim\u00e9. La v\u00e9rification de la validit\u00e9 des objets est compl\u00e8tement ind\u00e9pendante de celle des liens, et inversement (cf <a href=\"#cl\">CL<\/a> et <a href=\"#oov\">OOV<\/a>).<\/p>\n<p>Toute modification de l&rsquo;un des champs du lien entra\u00eene l&rsquo;invalidation de tout le lien.<\/p>\n<h2 id=\"lo\">LO \/ Oubli<\/h2>\n<p>L&rsquo;oubli vonlontaire de certains liens et objets n&rsquo;est encore ni th\u00e9oris\u00e9 ni impl\u00e9ment\u00e9 mais deviendra indispensable lorsque l&rsquo;espace viendra \u00e0 manquer (cf <a href=\"#cn\">CN<\/a>).<\/p>\n<h1 id=\"c\">C \/ Confiance<\/h1>\n<p>La confiance n&rsquo;est pas quelque chose de palpable, m\u00eame num\u00e9riquement. Cela tient plus de la fa\u00e7on de concevoir les choses et le fait de faire en sorte que l&rsquo;ensemble soit solide. L&rsquo;ensemble doit \u00eatre coh\u00e9rent et r\u00e9sistant. On doit pouvoir compter sur ce que l&rsquo;on a.<\/p>\n<p>La confiance est donc sous-jacente aux objets et aux liens.<\/p>\n<p>Les objets et les liens doivent tous \u00eatre sign\u00e9s. Toute modification devient impossible <span style=\"font-weight: bold;\">si l&rsquo;on prend le temps de v\u00e9rifier les signatures<\/span>.<\/p>\n<p>En l&rsquo;absence de nouvelle d\u00e9couverte math\u00e9matique majeure, les algorithmes cryptographiques nous permettent aujourd&rsquo;hui une offuscation forte et une prise d&#8217;empreinte fiable. C&rsquo;est le chiffrement et la signature.<\/p>\n<h3 id=\"cfo\">CFO \/ Fable des Origines<\/h3>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 001 &#8211;<\/span><br \/>\nLe premier jour, il cr\u00e9a l&rsquo;<span style=\"font-weight: bold;\">objet<\/span>, essence de toute chose.<br \/>\nAinsi la mati\u00e8re de l&rsquo;information naquit du n\u00e9ant de l&rsquo;\u00e9ther binaire.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 010 &#8211;<\/span><br \/>\nLe deuxi\u00e8me jour, il cr\u00e9a le <span style=\"font-weight: bold;\">lien<\/span>, pour les relier tous.<br \/>\nAinsi apparurent les objets \u00e0 la lumi\u00e8re, ils pouvaient se voir mutuellement.<br \/>\nAinsi l&rsquo;univers informationnel naquit des objets et des liens.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 011 &#8211;<\/span><br \/>\nLe troisi\u00e8me jour, il cr\u00e9a l&rsquo;<span style=\"font-weight: bold;\">entit\u00e9<\/span>.<br \/>\nLa mati\u00e8re inerte et uniforme devint active et prot\u00e9iforme.<br \/>\nAinsi la vie naquit de l&rsquo;univers informationnel.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 100 &#8211;<\/span><br \/>\nLe quatri\u00e8me jour, il cr\u00e9a la <span style=\"font-weight: bold;\">signature<\/span>.<br \/>\nL&rsquo;univers informationnel s&rsquo;illumina du feu des entit\u00e9s attirants inexorablement les objets.<br \/>\nAinsi les n\u00e9buleuses naquirent des entit\u00e9s.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 101 &#8211;<\/span><br \/>\nLe cinqui\u00e8me jour, il cr\u00e9a le <span style=\"font-weight: bold;\">groupe<\/span>.<br \/>\nA l&rsquo;int\u00e9rieur des n\u00e9buleuses, les objets se rassembl\u00e8rent en orbite autour des groupes.<br \/>\nAinsi les galaxies naquirent des n\u00e9buleuses.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 110 &#8211;<\/span><br \/>\nLe sixi\u00e8me jour, il cr\u00e9a le <span style=\"font-weight: bold;\">cryptogramme<\/span>.<br \/>\nPour la premi\u00e8re fois, la mati\u00e8re des objets commen\u00e7a \u00e0 dispara\u00eetre de la lumi\u00e8re.<br \/>\nAinsi les trous noirs naquirent des galaxies.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 111 &#8211;<\/span><br \/>\nLe septi\u00e8me jour, il cr\u00e9a l&rsquo;<span style=\"font-weight: bold;\">interface<\/span>.<br \/>\nEt permit \u00e0 l&rsquo;homme de voir l&rsquo;univers.<br \/>\nAinsi l&rsquo;univers fut achev\u00e9.<\/p>\n<p style=\"text-align: center; margin-bottom: 10px;\"><span style=\"font-weight: bold; font-family: monospace;\">&#8211; 8 &#8211;<\/span><br \/>\nLe huiti\u00e8me jour, au nom de lui, l&rsquo;homme cr\u00e9a la religion.<br \/>\nIl s&rsquo;appropria tous les objets et soumit toutes les entit\u00e9s sous une seule.<br \/>\nAinsi disparut l&rsquo;univers dans un trou noir super-massif.<\/p>\n<h2 id=\"co\">CO \/ Confiance dans l&rsquo;Objet<\/h2>\n<p>L&rsquo;int\u00e9grit\u00e9 et la confidentialit\u00e9 des objets est garantie non pas par une <i>m\u00e9ta-donn\u00e9e<\/i> mais par les math\u00e9matiques qui animent les algorithmes cryptographiques.<\/p>\n<p>Un objet num\u00e9rique est identifi\u00e9 par une empreinte ou condensat (hash) num\u00e9rique. Cette empreinte doit avoir des caract\u00e9ristiques propres fortes correspondant \u00e0 des fonctions de prise d&#8217;empreinte cryptographiques. C&rsquo;est \u00e0 dire :<\/p>\n<ol>\n<li>L&rsquo;espace des valeurs possibles est suffisamment grand ;<\/li>\n<li>La r\u00e9partition des valeurs possibles est \u00e9quiprobable ;<\/li>\n<li>La r\u00e9sistance aux collisions est forte ;<\/li>\n<li>La fonction utilis\u00e9e est non r\u00e9versible.<\/li>\n<\/ol>\n<p>Il est donc extr\u00eamement difficile de cr\u00e9er deux contenus diff\u00e9rents ayants la m\u00eame empreinte et extr\u00eamement peu probable de trouver par hasard deux contenus diff\u00e9rents ayants la m\u00eame empreinte. Par &lsquo;extr\u00eamement&rsquo; on entend impossible avec les technologies actuelles ou pr\u00e9visibles dans un proche avenir. M\u00eame \u00e0 moyen terme, affabli, ces fonctions de prise d&#8217;empreinte seront \u00e0 m\u00eame d&#8217;emp\u00eacher une falsification massive des donn\u00e9es.<\/p>\n<p>La fonction de prise d&#8217;empreinte actuellement recommand\u00e9e est <code>sha256<\/code>. Elle remplie toutes les exigences \u00e9voqu\u00e9es ci-dessus. Aucune faille ne permet de remettre en question de fa\u00e7on significative sa r\u00e9sistance et sa non-r\u00e9versibilit\u00e9 \u00e0 cours terme.<\/p>\n<p>Pour certains petits besoins sp\u00e9cifiques, la fonction de prise d&#8217;empreinte peut \u00eatre minimaliste, donc rapide et non s\u00e9curis\u00e9e. Cependant, celle-ci doit faire au minimum 2 octets. Les valeurs sur un octets sont susceptibles d&rsquo;\u00eatre interpr\u00e9t\u00e9es, comme la valeur <code>0<\/code> qui ne d\u00e9signe aucun objet.<\/p>\n<p>Avec le temps, les fonctions de prise d&#8217;empreinte vont \u00e9voluer avec les besoins et la technologie.<\/p>\n<p>L&#8217;empreinte d&rsquo;un objet doit \u00eatre v\u00e9rifi\u00e9e lors de la fin de la r\u00e9ception de l&rsquo;objet. L&#8217;empreinte d&rsquo;un objet devrait \u00eatre v\u00e9rifi\u00e9e avant chaque utilisation de cet objet. Un contenu d&rsquo;objet avec une empreinte qui ne lui correspond pas doit \u00eatre supprim\u00e9. Lors de la suppression d&rsquo;un objet, les liens de cet objet sont conserv\u00e9s. La v\u00e9rification de la validit\u00e9 des objets est compl\u00e8tement ind\u00e9pendante de celle des liens, et inversement (cf <a href=\"#oov\">OOV<\/a> et <a href=\"#lv\">LV<\/a>).<\/p>\n<h2 id=\"cl\">CL \/ Confiance dans le Lien<\/h2>\n<p>L&rsquo;int\u00e9grit\u00e9 des liens est garantie non pas par une <i>m\u00e9ta-donn\u00e9e<\/i> mais par les fonctions math\u00e9matiques utilis\u00e9es par les algorithmes cryptographiques.<\/p>\n<p>La signature du lien est obligatoire. La signature doit \u00eatre r\u00e9alis\u00e9e par le signataire. La signature englobe tout le lien \u00e0 l&rsquo;exception d&rsquo;elle-m\u00eame. Un lien avec une signature invalide ou non v\u00e9rifiable doit \u00eatre ignor\u00e9 et supprim\u00e9.<\/p>\n<p>Toute modification de l&rsquo;un des champs du lien entra\u00eene l&rsquo;invalidation de tout le lien.<\/p>\n<p>L&#8217;empreinte du signataire est inclue dans la partie sign\u00e9e, ainsi il ne peut \u00eatre modifier sans invalider tout le lien. On ne peut ainsi pas usurper une autre entit\u00e9.<\/p>\n<p>La signature d&rsquo;un lien doit \u00eatre v\u00e9rifi\u00e9e lors de la fin de la r\u00e9ception du lien. La signature d&rsquo;un lien devrait \u00eatre v\u00e9rifi\u00e9e avant chaque utilisation de ce lien. Un lien avec une signature invalide doit \u00eatre supprim\u00e9. Lors de la suppression d&rsquo;un lien, les autres liens de cet objet ne sont pas supprim\u00e9s et l&rsquo;objet n&rsquo;est pas supprim\u00e9. La v\u00e9rification de la validit\u00e9 des objets est compl\u00e8tement ind\u00e9pendante de celle des liens, et inversement (cf <a href=\"#lv\">LV<\/a> et <a href=\"#oov\">OOV<\/a>).<\/p>\n<h3 id=\"coe\">COE \/ Confiance dans l&rsquo;Objet Entit\u00e9<\/h3>\n<p>Une entit\u00e9 est un objet contenant une cl\u00e9 cryptographique publique. Cette cl\u00e9 permet de v\u00e9rifier les liens sign\u00e9s par cette entit\u00e9.<\/p>\n<p>A faire&#8230;<\/p>\n<h2 id=\"ca\">CA \/ Autorit\u00e9s<\/h2>\n<p>Les entit\u00e9s autorit\u00e9s, au nombre de 5, permettent de structurer et de g\u00e9rer la confiance dans le code et l&rsquo;utilisation du code de la biblioth\u00e8que et de toutes les applications.<\/p>\n<p>Cette restriction \u00e0 cinq entit\u00e9s est une facilit\u00e9 pour le d\u00e9veloppement aujourd&rsquo;hui. Mais ce n&rsquo;est pas un mod\u00e8le viable \u00e0 moyen terme. L&rsquo;autorit\u00e9 ma\u00eetresse pourra \u00eatre concurrenc\u00e9e par une entit\u00e9 d\u00e9sign\u00e9e de l&rsquo;entit\u00e9 de l&rsquo;instance locale du serveur. Et les autres entit\u00e9s appartiendront \u00e0 des groupes sp\u00e9cifique d\u00e9pendants \u00e0 la fois de l&rsquo;autorit\u00e9 ma\u00eetresse et de l&rsquo;entit\u00e9 d\u00e9sign\u00e9e par l&rsquo;entit\u00e9 de l&rsquo;instance locale du serveur.<\/p>\n<h3 id=\"cam\">CAM \/ Autorit\u00e9 Ma\u00eetresse<\/h3>\n<p>Autrement appel\u00e9e entit\u00e9 ma\u00eetresse du tout, cette entit\u00e9 est la seule d\u00e9clar\u00e9e en dur dans le code de la biblioth\u00e8que. Toutes les autres entit\u00e9s sont d\u00e9finies par des liens de cette entit\u00e9.<\/p>\n<p>Au besoin elle peut \u00eatre remplac\u00e9e par une autre entit\u00e9 via l&rsquo;option <code>puppetmaster<\/code> dans le fichier de configuration. Cette option n&rsquo;est pas utilisable via les liens.<\/p>\n<p>L&rsquo;instance actuelle s&rsquo;appelle <i>puppetmaster<\/i> et est localis\u00e9e en <a href=\"http:\/\/puppetmaster.nebule.org\">puppetmaster.nebule.org<\/a>.<\/p>\n<p>L&rsquo;identifiant de cette entit\u00e9 est <code>88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea<\/code>.<\/p>\n<h4 id=\"cams\">CAMS \/ Autorit\u00e9 Ma\u00eetresse de la S\u00e9curit\u00e9<\/h4>\n<p>Cette entit\u00e9 est d\u00e9dign\u00e9e par le puppetmaster par rapport au r\u00f4le de ma\u00eetre de la s\u00e9curit\u00e9. Le r\u00f4le est d\u00e9finit pas l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/entite\/maitre\/securite<\/code>. Voir <a href=\"#oor\">OOR<\/a> et <a href=\"#oer\">OER<\/a>.<\/p>\n<p>A faire&#8230;<\/p>\n<p>L&rsquo;instance actuelle s&rsquo;appelle <i>cerberus<\/i> et est localis\u00e9e en <a href=\"http:\/\/cerberus.nebule.org\">cerberus.nebule.org<\/a>.<\/p>\n<p>Les enfers n&rsquo;ayant pas encore ouvert, cette entit\u00e9 n&rsquo;est pas utilis\u00e9e.<\/p>\n<h4 id=\"camc\">CAMC \/ Autorit\u00e9 Ma\u00eetresse du code<\/h4>\n<p>Cette entit\u00e9 est d\u00e9dign\u00e9e par le puppetmaster par rapport au r\u00f4le de ma\u00eetre du code. Le r\u00f4le est d\u00e9finit pas l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/entite\/maitre\/code<\/code>. Voir <a href=\"#oor\">OOR<\/a> et <a href=\"#oer\">OER<\/a>.<\/p>\n<p>A faire&#8230;<\/p>\n<p>L&rsquo;instance actuelle s&rsquo;appelle <i>bachue<\/i> et est localis\u00e9e en <a href=\"http:\/\/bachue.nebule.org\">bachue.nebule.org<\/a>.<\/p>\n<h4 id=\"cama\">CAMA \/ Autorit\u00e9 Ma\u00eetresse de l&rsquo;annuaire<\/h4>\n<p>Cette entit\u00e9 est d\u00e9dign\u00e9e par le puppetmaster par rapport au r\u00f4le de ma\u00eetre de l&rsquo;annuaire. Le r\u00f4le est d\u00e9finit pas l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/entite\/maitre\/annuaire<\/code>. Voir <a href=\"#oor\">OOR<\/a> et <a href=\"#oer\">OER<\/a>.<\/p>\n<p>A faire&#8230;<\/p>\n<p>L&rsquo;instance actuelle s&rsquo;appelle <i>asabiyya<\/i> et est localis\u00e9e en <a href=\"http:\/\/asabiyya.nebule.org\">asabiyya.nebule.org<\/a>.<\/p>\n<h4 id=\"camt\">CAMT \/ Autorit\u00e9 Ma\u00eetresse du temps<\/h4>\n<p>Cette entit\u00e9 est d\u00e9dign\u00e9e par le puppetmaster par rapport au r\u00f4le de ma\u00eetre du temps. Le r\u00f4le est d\u00e9finit pas l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/entite\/maitre\/temps<\/code>. Voir <a href=\"#oor\">OOR<\/a> et <a href=\"#oer\">OER<\/a>.<\/p>\n<p>A faire&#8230;<\/p>\n<p>L&rsquo;instance actuelle s&rsquo;appelle <i>kronos<\/i> et est localis\u00e9e en <a href=\"http:\/\/kronos.nebule.org\">kronos.nebule.org<\/a>.<\/p>\n<h2 id=\"cc\">CC \/ Configuration<\/h2>\n<p>A faire&#8230;<\/p>\n<h3 id=\"cco\">CCO \/ Options<\/h3>\n<p>Les options permettent de modifier le comportement du code de la biblioth\u00e8que et des applications.<\/p>\n<p>La sensibilit\u00e9 des options est variable. On compte trois niveau de sensibilit\u00e9 :<\/p>\n<ul>\n<li>utile (useful)<\/li>\n<li>important (careful)<\/li>\n<li>critique (critical)<\/li>\n<\/ul>\n<p>Les options sont rang\u00e9es par cat\u00e9gories, c&rsquo;est juste de l&rsquo;affichage :<\/p>\n<ul>\n<li>Global<\/li>\n<li>Objects<\/li>\n<li>Links<\/li>\n<li>Entities<\/li>\n<li>Groups<\/li>\n<li>Conversations<\/li>\n<li>Applications<\/li>\n<li>Logs<\/li>\n<li>Cryptography<\/li>\n<li>I\/O<\/li>\n<li>Social<\/li>\n<li>Display<\/li>\n<\/ul>\n<p>Toutes les options ont une valeur par d\u00e9faut. Les valeurs peuvent \u00eatre modifi\u00e9es via un fichier de configuration et via des liens. Les modifications appliqu\u00e9es dans le fichier de configuration ne sont pas \u00e9crasables par des modifications faites via des liens, cela force le comportement du code sur un serveur. Pour des raisons de s\u00e9curit\u00e9, certaines options ne peuvent \u00eatre modifi\u00e9es que dans le fichier de configuration, elles sont dites en lecture seule.<\/p>\n<p>Liste des options :<\/p>\n<ul>\n<li>Cat\u00e9gorie &lsquo;<code>Global<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>puppetmaster<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The master of all. the authority of all globals authorities.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>hostURL<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The URL, domain name, of this server. This is use by others servers and others entities to find this server and it's local entities.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>localhost<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitWrite<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The big switch to write protect all the instance on this server. This switch is not an object but is on the options file.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitLocalisationStats<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitOnlineRescue<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>modeRescue<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Activate the rescue mode. Follow only links from globals authorities for applications detection.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Objects<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitWriteObject<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit objects writing.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitCreateObject<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit creation of new objects localy.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitSynchronizeObject<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit to synchronize (update) objects from other localisations.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitProtectedObject<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit read\/write protected objects. On false, generation of liens k for protected objects is disabled and all existing\/downloaded links for protected objects are assumed as invalid and dropped.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitDeleteObjectOnUnknowHash<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Permit erasing object if not valid hash type can be found.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitCheckObjectHash<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Links<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitWriteLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit links writing.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitCreateLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit creation of new links localy.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitSynchronizeLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit to synchronize links of objects from other localisations.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitUploadLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit ask creation and sign of new links uploaded within an URL.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitPublicUploadLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit ask upload signed links (from known entities) within an URL.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitPublicUploadCodeMasterLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit ask upload signed links by the code master within an URL.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitObfuscatedLink<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit read\/write obfuscated links. On false, generation of obfuscated liens c is disabled and all existing\/downloaded obfuscated links are assumed as invalid and dropped.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitCheckSignOnVerify<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitCheckSignOnList<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitListInvalidLinks<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitHistoryLinksSign<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitAddLinkToSigner<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitListOtherHash<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitFollowUpdates<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>maxFollowedUpdates<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>100<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>defaultObfuscateLinks<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>defaultLinksVersion<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>1.3<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Entities<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitWriteEntity<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit entities writing.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitPublicCreateEntity<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit create new entity by anyone.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitInstanceEntityAsAuthority<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Declare instance entity of this server as local authority.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitDefaultEntityAsAuthority<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Declare default entity on this server as local authority.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitLocalSecondaryAuthorities<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitRecoveryEntities<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Activate the recovery process. Local recovery entities are listed and new protection of objects are automaticaly shared with recovery entities.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitRecoveryRemoveEntity<\/code>&lsquo; :\n<ul>\n<li>Description : <code>An entity can remove shared protection to recovery entity. By default, it is not permited.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitInstanceEntityAsRecovery<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Declare instance entity of this server as recovery entity.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitDefaultEntityAsRecovery<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Declare default entity on this server as recovery entity.<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>defaultCurrentEntity<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Groups<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitWriteGroup<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit groups writing.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Conversations<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitWriteConversation<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit conversations writing.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Applications<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitSynchronizeApplication<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit to synchronize (update) applications from other localisations.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitPublicSynchronizeApplication<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The switch to permit to synchronize (update) applications by anyone from other localisations.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>defaultApplication<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>0<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Logs<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitLogs<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Activate more logs (syslog) on internal process.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>logsLevel<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Select verbosity of logs. Select on NORMAL, ERROR, FUNCTION and DEBUG.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>NORMAL<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Cryptography<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>cryptoLibrary<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>openssl<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>cryptoHashAlgorithm<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>sha256<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>cryptoSymetricAlgorithm<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>aes-256-ctr<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>cryptoAsymetricAlgorithm<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>rsa2048<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>I\/O<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>ioLibrary<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>ioFileSystem<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>ioReadMaxLinks<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Maximum number of links readable in one time for one object.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>2000<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>ioReadMaxData<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Maximum quantity of bytes readable in one time from one object file content.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>10000<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>ioReadMaxUpload<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Maximum file size on upload. Overload default value upload_max_filesize on php.ini file.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>2000000<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>ioTimeout<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>1<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitSessionOptions<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>permitSessionBuffer<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>sessionBufferSize<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>1000<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Social<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>socialLibrary<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Todo description...<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>string<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>strict<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Cat\u00e9gorie &lsquo;<code>Display<\/code>&lsquo; :\n<ul>\n<li>Option &lsquo;<code>permitJavaScript<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Activate by default JavaScript (JS) on web pages.<\/code><\/li>\n<li>Criticit\u00e9 : <code>careful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>displayUnsecureURL<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Display a warning message if the connexion link is not protected (https : HTTP overs TLS).<\/code><\/li>\n<li>Criticit\u00e9 : <code>critical<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<li>En lecture seule.<\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>displayNameSize<\/code>&lsquo; :\n<ul>\n<li>Description : <code>The maximum displayable size of a name of objects.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>integer<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>128<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>displayEmotions<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Display all emotions when asked by applications, or not.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>true<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Option &lsquo;<code>forceDisplayEntityOnTitle<\/code>&lsquo; :\n<ul>\n<li>Description : <code>Force display of current selected entity on application even if is the same of current entity used on library.<\/code><\/li>\n<li>Criticit\u00e9 : <code>useful<\/code><\/li>\n<li>Type : <code>boolean<\/code><\/li>\n<li>Valeur par d\u00e9faut : <code>false<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4 id=\"ccor\">CCOR \/ R\u00e9servation<\/h4>\n<p>Les objets r\u00e9serv\u00e9s sp\u00e9cifiquement pour les options :<\/p>\n<ul>\n<li>nebule\/option<\/li>\n<\/ul>\n<h4 id=\"ccof\">CCOF \/ Options via Fichier<\/h4>\n<p>Dans les deux m\u00e9thodes pour g\u00e9rer les options, il y a le fichier des options. Toutes les options inscrites dans ce fichier sont dites forc\u00e9es et ne peuvent \u00eatre surcharg\u00e9es par un lien d&rsquo;option. Les options dites en lecture seule ne peuvent \u00eatre chang\u00e9e que via le fichier des options.<\/p>\n<p>Le fichier contenant les options doit s&rsquo;appeler <code>nebule.env<\/code>, doit \u00eatre positionn\u00e9 \u00e0 c\u00f4t\u00e9 du fichier <code>index.php<\/code> utilis\u00e9, et doit \u00eatre lisible de l&rsquo;utilisateur du service web. Par s\u00e9curit\u00e9, les fichiers <code>nebule.env<\/code> et <code>index.php<\/code> doivent \u00eatre prot\u00e9g\u00e9s en \u00e9criture, c&rsquo;est \u00e0 dire en lecture seule, pour l&rsquo;utilisateur du service web.<\/p>\n<p>Chaque option est repr\u00e9sent\u00e9e sur une seule ligne commen\u00e7ant par le nom de l&rsquo;option suivi du caract\u00e8re <code>=<\/code> entour\u00e9 ou non d&rsquo;espaces. Tout ce qui est apr\u00e8s le signe <code>=<\/code> constitue la valeur de l&rsquo;option. La valeur ne n\u00e9cessite par de simple ou double c\u00f4te de protection.<\/p>\n<p>Dans le fichier des options, une ligne commen\u00e7ant par le caract\u00e8re <code>#<\/code> est enti\u00e8rement ignor\u00e9e. C&rsquo;est un commentaire. Une ligne ne contenant pas le signe <code>=<\/code> est ignor\u00e9e mais cela peut \u00eatre per\u00e7u comme ambigu\u00eb, \u00e0 \u00e9viter.<\/p>\n<p>Si des espaces sont pr\u00e9sents en d\u00e9but ou fin de ligne, ils sont ignor\u00e9s lors du traitement de l&rsquo;option. Les espaces autour du signe <code>=<\/code> sont ignor\u00e9s lors du traitement de l&rsquo;option.<\/p>\n<p>Le fichier des options peut contenir indiff\u00e9remment des options pour plusieurs biblioth\u00e8ques et applications. Le fichier des options n&rsquo;est parcouru que lors de la recherche d&rsquo;une options. Les options inconnues sont ignor\u00e9es. Seule la premi\u00e8re occurence d&rsquo;une option est prise en compte.<\/p>\n<p>Par d\u00e9faut, le fichier des options contient :<\/p>\n<pre># nebule bash\r\nfilesystemBaseDirectory=~\/nebule\r\nfilesystemPublicDirectory=~\/nebule\/pub\r\nfilesystemPrivateDirectory=~\/nebule\/priv\r\nfilesystemTemporaryDirectory=~\/nebule\/temp\r\nfilesystemLogActivate=false\r\nfilesystemLogFile=~\/nebule\/neb.log\r\n\r\n# nebule php\r\n#puppetmaster = 88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea\r\n#hostURL = localhost\r\n#permitWrite = true\r\n#permitWriteObject = true\r\n#permitCreateObject = true\r\n#permitSynchronizeObject = false\r\n#permitProtectedObject = true\r\n#permitWriteLink = true\r\n#permitCreateLink = true\r\n#permitSynchronizeLink = false\r\n#permitUploadLink = false\r\n#permitPublicUploadLink = false\r\n#permitPublicUploadCodeMasterLink = true\r\n#permitObfuscatedLink = true\r\n#permitWriteEntity = false\r\n#permitPublicCreateEntity = false\r\n#permitWriteGroup = false\r\n#permitWriteConversation = false\r\n#permitSynchronizeApplication = false\r\n#permitPublicSynchronizeApplication = false\r\n#permitDeleteObjectOnUnknowHash = true\r\n#permitCheckSignOnVerify = true\r\n#permitCheckSignOnList = true\r\n#permitCheckObjectHash = true\r\n#permitListInvalidLinks = false\r\n#permitHistoryLinksSign = false\r\n#permitInstanceEntityAsAuthority = false\r\n#permitDefaultEntityAsAuthority = false\r\n#permitLocalSecondaryAuthorities = true\r\n#permitRecoveryEntities = false\r\n#permitRecoveryRemoveEntity = false\r\n#permitInstanceEntityAsRecovery = false\r\n#permitDefaultEntityAsRecovery = false\r\n#permitAddLinkToSigner = true\r\n#permitListOtherHash = false\r\n#permitLocalisationStats = true\r\n#permitFollowUpdates = true\r\n#permitOnlineRescue = false\r\n#permitLogs = false\r\n#permitJavaScript = true\r\n#logsLevel = NORMAL\r\n#modeRescue = false\r\n#cryptoLibrary = openssl\r\n#cryptoHashAlgorithm = sha256\r\n#cryptoSymetricAlgorithm = aes-256-ctr\r\n#cryptoAsymetricAlgorithm = rsa2048\r\n#socialLibrary = strict\r\n#ioLibrary = ioFileSystem\r\n#ioReadMaxLinks = 2000\r\n#ioReadMaxData = 10000\r\n#ioReadMaxUpload = 2000000\r\n#ioTimeout = 1\r\n#displayUnsecureURL = true\r\n#displayNameSize = 128\r\n#displayEmotions = true\r\n#forceDisplayEntityOnTitle = false\r\n#maxFollowedUpdates = 100\r\n#permitSessionOptions = true\r\n#permitSessionBuffer = true\r\n#sessionBufferSize = 1000\r\n#defaultCurrentEntity = 88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea\r\n#defaultApplication = 0\r\n#defaultObfuscateLinks = false\r\n#defaultLinksVersion = 1.3\r\n<\/pre>\n<h4 id=\"ccol\">CCOL \/ Options via Liens<\/h4>\n<p>Dans les deux m\u00e9thodes pour g\u00e9rer les options, il y a le lien d&rsquo;option. Toutes les options, \u00e0 l&rsquo;exception de celles dites en lecture seule, peuvent \u00eatre d\u00e9finies par les liens d&rsquo;options correspondants.<\/p>\n<p>Toutes les options inscrites dans le fichier des options sont dites forc\u00e9es et ne peuvent \u00eatre surcharg\u00e9es par un lien d&rsquo;option.<\/p>\n<p>La valeur de l&rsquo;option doit \u00eatre pr\u00e9sente ou \u00e9crite dans l&rsquo;objet correspondant. Si la valeur de l&rsquo;option ne peut \u00eatre lu, elle ne sera pas prise en compte. Le nom de l&rsquo;option n&rsquo;a pas besoin d&rsquo;\u00eatre \u00e9crit dans l&rsquo;objet correspondant, il est d\u00e9j\u00e0 d\u00e9fini dans le code.<\/p>\n<p>L&rsquo;option se d\u00e9finit en cr\u00e9ant un lien :<\/p>\n<ul>\n<li>Signature du lien<\/li>\n<li>Identifiant du signataire<\/li>\n<li>Horodatage<\/li>\n<li>action : <code>l<\/code><\/li>\n<li>source : hash(nom de l&rsquo;option)<\/li>\n<li>cible : hash(valeur de l&rsquo;option)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/option&rsquo;)<\/li>\n<\/ul>\n<p>Liste des options non modifiables via des liens :<\/p>\n<ul>\n<li>Option &lsquo;<code>puppetmaster<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitWrite<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitDeleteObjectOnUnknowHash<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitCheckSignOnVerify<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitCheckObjectHash<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitListInvalidLinks<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitInstanceEntityAsAuthority<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitDefaultEntityAsAuthority<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitRecoveryEntities<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitRecoveryRemoveEntity<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitInstanceEntityAsRecovery<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitDefaultEntityAsRecovery<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>permitJavaScript<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>modeRescue<\/code>&lsquo;<\/li>\n<li>Option &lsquo;<code>displayUnsecureURL<\/code>&lsquo;<\/li>\n<\/ul>\n<h2 id=\"ce\">CE \/ Confiance dans les \u00c9changes<\/h2>\n<p>A faire&#8230;<\/p>\n<h4 id=\"cems\">CEMS \/ Moyens et Supports<\/h4>\n<p>Il est possible de t\u00e9l\u00e9charger des objets et des liens avec diff\u00e9rents protocoles. Le plus simple \u00e9tant le <i>http<\/i>. Le protocole et le serveur distant doivent \u00eatre capable de transmettre une requ\u00eate et de renvoyer en sens inverse une r\u00e9ponse.<\/p>\n<p>C\u00f4t\u00e9 serveur, c&rsquo;est \u00e0 dire la machine qui fait office de relais des objets et liens, tout ne peut pas \u00eatre demand\u00e9. Les requ\u00eates doivent \u00eatre triviales \u00e0 traiter, ne pas n\u00e9cessiter de forte puissance de calcul ni d&#8217;empreinte m\u00e9moire d\u00e9mesur\u00e9e. Une avalanche de requ\u00eates diverses ne doit pas mettre \u00e0 plat le serveur.<\/p>\n<p>A faire&#8230;<\/p>\n<h5 id=\"cecto\">CECTO \/ Comportement au T\u00e9l\u00e9chargement d&rsquo;Objets<\/h5>\n<p>Comportement global (t\u00e9l\u00e9chargement sans localisation pr\u00e9cis\u00e9e) :<\/p>\n<ol>\n<li>Si l&#8217;empreinte de l&rsquo;objet demand\u00e9 est 0, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet existe d\u00e9j\u00e0 dans le r\u00e9pertoire public des objets, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet existe d\u00e9j\u00e0 dans le r\u00e9pertoire priv\u00e9 des objets, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet n&rsquo;a pas de lien dans le r\u00e9pertoire public des liens, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet n&rsquo;a pas de lien dans le r\u00e9pertoire priv\u00e9 des liens, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>On se r\u00e9f\u00e8re \u00e0 l&rsquo;objet <code>0f183d69e06108ac3791eb4fe5bf38beec824db0a2d9966caffcfef5bc563355<\/code> (<code>nebule\/objet\/entite\/localisation<\/code>) pour trouver la localisation de toutes les entit\u00e9s connues.<\/li>\n<li>On parcourt les diff\u00e9rentes localisations une \u00e0 une (cf <i>comportement local<\/i>) pour essayer de t\u00e9l\u00e9charger l&rsquo;objet demand\u00e9 jusqu&rsquo;\u00e0 en obtenir une copie valide si c&rsquo;est possible.<\/li>\n<\/ol>\n<p>Comportement local (t\u00e9l\u00e9chargement sur une localisation pr\u00e9cise) :<\/p>\n<ol>\n<li>Si l&#8217;empreinte de l&rsquo;objet demand\u00e9 est 0, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet existe d\u00e9j\u00e0 dans le r\u00e9pertoire public des objets, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet existe d\u00e9j\u00e0 dans le r\u00e9pertoire priv\u00e9 des objets, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet n&rsquo;a pas de lien dans le r\u00e9pertoire public des liens, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>Si l&rsquo;objet n&rsquo;a pas de lien dans le r\u00e9pertoire priv\u00e9 des liens, on quitte le processus de t\u00e9l\u00e9chargement.<\/li>\n<li>On t\u00e9l\u00e9charge un objet sur une localisation pr\u00e9cise vers le r\u00e9pertoire public des objets.<\/li>\n<li>Si il est vide, on supprime l&rsquo;objet.<\/li>\n<li>Si l&#8217;empreinte est invalide, on supprime l&rsquo;objet.<\/li>\n<\/ol>\n<h5 id=\"cectl\">CECTL \/ Comportement au T\u00e9l\u00e9chargement de Liens<\/h5>\n<p>A faire&#8230;<\/p>\n<h5 id=\"cecte\">CECTE \/ Comportement au T\u00e9l\u00e9chargement d&rsquo;Entit\u00e9s<\/h5>\n<p>A faire&#8230;<\/p>\n<h2 id=\"ck\">CK \/ Cryptographie<\/h2>\n<h3 id=\"ckl\">CKL \/ Cryptographie du Lien<\/h3>\n<p>Le chiffrement permet de dissimuler des liens. Il est optionnel.<\/p>\n<p>A faire&#8230;<\/p>\n<p>L&rsquo;option <code>permitObfuscatedLink<\/code> permet de d\u00e9sactiver la dissimulation (offuscation) des liens des objets. Dans ce cas le lien de type <code>c<\/code> est aussi rejet\u00e9 comme invalide (cf <a href=\"#lrac\">LRAC<\/a>).<\/p>\n<h3 id=\"cko\">CKO \/ Cryptographie de l&rsquo;Objet<\/h3>\n<p>Le chiffrement permet de cacher le contenu des objets. Il est optionnel.<\/p>\n<p>Ce chiffrement doit \u00eatre r\u00e9sistant, c&rsquo;est \u00e0 dire correspondre \u00e0 l&rsquo;\u00e9tat de l&rsquo;art en cryptographie appliqu\u00e9e. On doit \u00eatre en mesure de parfaitement distinguer l&rsquo;objet en clair de l&rsquo;objet chiffr\u00e9, m\u00eame si le second est d\u00e9riv\u00e9 du premier.<\/p>\n<p>L&rsquo;option <code>permitProtectedObject<\/code> permet de d\u00e9sactiver la protection (chiffrement) des objets. Dans ce cas le lien de type <code>k<\/code> est aussi rejet\u00e9 comme invalide (cf <a href=\"#lrak\">LRAK<\/a>).<\/p>\n<h5 id=\"ckode\">CKODE \/ Cryptographie de l&rsquo;Objet &#8211; Deux \u00c9tapes<\/h5>\n<p>Les entit\u00e9s sont des objets contenant le mat\u00e9riel cryptographique n\u00e9cessaire au chiffrement asym\u00e9trique. Cependant, le chiffrement asym\u00e9trique est tr\u00e8s consommateur en ressources CPU (calcul). On peut l&rsquo;utiliser directement pour chiffrer les objets avec la cl\u00e9 publique d&rsquo;un correspondant, mais cela devient rapidement catastrophique en terme de performances et donc en exp\u00e9rience utilisateur. D&rsquo;un autre c\u00f4t\u00e9, le chiffrement sym\u00e9trique est beaucoup plus performant, mais sa gestion des cl\u00e9s de chiffrement est d\u00e9licate. Pour am\u00e9liorer l&rsquo;ensemble, il faut mixer les deux pour profiter des avantages de chacun.<\/p>\n<p>Ainsi, on va aborder le chiffrement en deux \u00e9tapes distinctes.<\/p>\n<p>Pour la compr\u00e9hension des sch\u00e9mas, ne pas oublier que les propri\u00e9t\u00e9s des objets sont elles-m\u00eames des objets&#8230;<\/p>\n<h6 id=\"ckoecs\">CKOECS \/ Cryptographie de l&rsquo;Objet &#8211; \u00c9tape Chiffrement Sym\u00e9trique<\/h6>\n<p>Le chiffrement d&rsquo;un objet peut prendre du temps, surtout si il est volumineux. On va donc privil\u00e9gier le chiffrement sym\u00e9trique qui est assez rapide. Nous avons besoin pour ce chiffrement de deux valeurs.<\/p>\n<p>La premi\u00e8re valeur est une cl\u00e9 de chiffrement. Elle est dite cl\u00e9 de session. La longueur de celle-ci d\u00e9pend de l&rsquo;algorithme de chiffrement utilis\u00e9. Par exemple, elle fait 128bits pour l&rsquo;AES. Elle est g\u00e9n\u00e9r\u00e9e al\u00e9atoirement. C&rsquo;est cette valeur qui va permettre le d\u00e9chiffrement de l&rsquo;objet et doit donc rester secr\u00e8te. Mais il faut pouvoir la partager avec ses correspondants, c&rsquo;est ce que l&rsquo;on verra dans la deuxi\u00e8me \u00e9tape.<\/p>\n<p>La seconde valeur est ce que l&rsquo;on appelle une semence ou vecteur initial (IV = Initial Vector). Elle est utilis\u00e9e dans la m\u00e9thode de chiffrement sur plusieurs blocs, c&rsquo;est \u00e0 dire lorsque l&rsquo;on chiffre un objet dont la taille d\u00e9passe le bloc, quantit\u00e9 de donn\u00e9es que traite l&rsquo;algorithme de chiffrement. Par exemple, le bloc fait 128bits pour l&rsquo;AES, tout ce qui fait plus que cette taille doit \u00eatre trait\u00e9 en plusieurs fois. Comme IV, je propose d&rsquo;utiliser l&rsquo;identifiant de l&rsquo;objet \u00e0 chiffrer, c&rsquo;est \u00e0 dire le hash de cet objet. Cela simplifie la diffusion de cette valeur qui n&rsquo;a pas \u00e0 \u00eatre dissimul\u00e9e.<\/p>\n<p>L&rsquo;objet source que l&rsquo;on voulait \u00e0 l&rsquo;origine prot\u00e9ger peut maintenant \u00eatre marqu\u00e9 \u00e0 supprimer. Il pourra \u00eatre restaur\u00e9 depuis l&rsquo;objet d\u00e9riv\u00e9 chiffr\u00e9 et la cl\u00e9 de session.<\/p>\n<p>Sur le sch\u00e9ma ci-dessous, la partie chiffrement sym\u00e9trique est mise en valeur. On retrouve l&rsquo;objet source en clair qui est ici une image de type JPEG. En chiffrant cet objet, cela g\u00e9n\u00e8re un nouvel objet. Le chiffrement est mat\u00e9rialis\u00e9 par un lien de type K. Ce lien associe aussi un objet contenant la cl\u00e9 de session. Le nouvel objet est de type AES-CTR, par exemple. Cela signifie qu&rsquo;il est chiffr\u00e9 avec le protocole AES et la gestion des blocs CTR (CounTeR). L&rsquo;objet contenant la cl\u00e9 de session est de type texte.<\/p>\n<h6 id=\"ckoeca\">CKOECA \/ Cryptographie de l&rsquo;Objet &#8211; \u00c9tape Chiffrement Asym\u00e9trique<\/h6>\n<p>Suite \u00e0 la premi\u00e8re \u00e9tape de chiffrement, nous nous retrouvons avec un objet chiffr\u00e9 et un objet contenant la cl\u00e9 de session. Si le fichier chiffr\u00e9 est bien prot\u00e9g\u00e9 (en principe) et peut donc \u00eatre rendu public, l&rsquo;objet avec la cl\u00e9 de session est au contraire bien embarrassant. C&rsquo;est l\u00e0 qu&rsquo;intervient le chiffrement asym\u00e9trique et les cl\u00e9s publiques\/priv\u00e9es.<\/p>\n<p>Le syst\u00e8me de cl\u00e9s publiques\/priv\u00e9es va permettre de chiffrer l&rsquo;objet contenant la cl\u00e9 de session avec la cl\u00e9 publique d&rsquo;une entit\u00e9. Ainsi on permet \u00e0 cette entit\u00e9, c&rsquo;est \u00e0 dire le destinataire, de r\u00e9cup\u00e9rer la cl\u00e9 de session avec sa cl\u00e9 priv\u00e9 et donc de lire l&rsquo;objet source. Et plus encore, en re-chiffrant cette m\u00eame cl\u00e9 de session avec d&rsquo;autres cl\u00e9s publiques, ce qui g\u00e9n\u00e8re autant d&rsquo;objets de cl\u00e9s chiffr\u00e9s, nous permettons \u00e0 autant de nouvelles entit\u00e9s de lire l&rsquo;objet source.<\/p>\n<p>Le cr\u00e9ateur de l&rsquo;objet chiffr\u00e9 doit obligatoirement faire partie des entit\u00e9s destinataires si il souhaite pouvoir d\u00e9chiffrer l&rsquo;objet source plus tard. Sinon, il passe int\u00e9gralement sous le contr\u00f4le d&rsquo;une des entit\u00e9s destinataires.<\/p>\n<p>Sur le sch\u00e9ma ci-dessous, la partie chiffrement asym\u00e9trique est mise en valeur. On retrouve l&rsquo;objet en clair qui est ici la cl\u00e9 des session. En chiffrant cet objet, cela g\u00e9n\u00e8re un nouvel objet. Le chiffrement est mat\u00e9rialis\u00e9 par un lien de type K. Ce lien associe aussi un objet contenant la cl\u00e9 publique d&rsquo;une entit\u00e9. Le nouvel objet est de type RSA.<\/p>\n<h5 id=\"ckoep\">CKOEP \/ Cryptographie de l&rsquo;Objet &#8211; Ensemble du Processus<\/h5>\n<p>\u00c9videmment, ce sch\u00e9ma de chiffrement ne r\u00e9-invente pas la roue. C&rsquo;est une fa\u00e7on de faire assez commune, voire un cas d&rsquo;\u00e9cole. Mais il est ici adapt\u00e9 au fonctionnement particulier de nebule et de ses objets.<\/p>\n<p>Il y a deux points \u00e0 v\u00e9rifier : Partager l&rsquo;objet chiffr\u00e9 et permettre \u00e0 une autre entit\u00e9 de le voir, c&rsquo;est aussi lui donner acc\u00e8s \u00e0 la cl\u00e9 de session. Rien n&#8217;emp\u00eache cette entit\u00e9 de rediffuser ensuite cette cl\u00e9 de session en clair ou re-chiffr\u00e9e \u00e0 d&rsquo;autres entit\u00e9s. Cependant, la cl\u00e9 de session est unique et n&rsquo;a pas de valeur en dehors de l&rsquo;objet chiffr\u00e9 qu&rsquo;elle prot\u00e8ge. De m\u00eame, l&rsquo;objet source peut toujours \u00eatre re-chiffr\u00e9 avec une nouvelle cl\u00e9 de session et d&rsquo;autres cl\u00e9s publiques. On retombe sur un probl\u00e8me commun, insoluble et le m\u00eame constat : on perd automatiquement le contr\u00f4le de toute information que l&rsquo;on diffuse \u00e0 autrui. L&#8217;empreinte (hash) de la cl\u00e9 de session est publique. Peut-\u00eatre que cela affaiblie le chiffrement et donc la solidit\u00e9 de la protection des objets. A voir&#8230;<\/p>\n<p>Par commodit\u00e9, je pense qu&rsquo;il serait int\u00e9ressant de lier explicitement l&rsquo;entit\u00e9 destinataire et l&rsquo;objet chiffr\u00e9.<\/p>\n<h5 id=\"ckovi\">CKOVI \/ Cryptographie de l&rsquo;Objet &#8211; Vecteur Initial<\/h5>\n<p>Pour la plupart des modes de chiffrements sym\u00e9triques, un vecteur initial (semence ou IV) est n\u00e9cessaire. Il est li\u00e9 \u00e0 l&rsquo;objet chiffr\u00e9 pour permettre le d\u00e9chiffrement de celui-ci. Par d\u00e9faut, sa valeur est al\u00e9atoire.<\/p>\n<p>Si pas pr\u00e9cis\u00e9, il est \u00e9gale \u00e0 0.<\/p>\n<p>Du fait du fonctionnement du mode CTR (CounTeR), l&rsquo;IV s&rsquo;incr\u00e9mente \u00e0 chaque bloc chiffr\u00e9.<\/p>\n<h4 id=\"ckoc\">CKOC \/ Cryptographie de l&rsquo;Objet &#8211; Compression<\/h4>\n<p>Il est pr\u00e9f\u00e9rable d&rsquo;associer de la compression avec le chiffrement.<\/p>\n<p>La compression des donn\u00e9es d\u00e9j\u00e0 chiffr\u00e9es est impossible, non que l&rsquo;on ne puisse le faire, mais le gain de compression sera nul. L&rsquo;entropie d\u00e9termine la limite th\u00e9orique maximum vers laquelle un algorithme de compression sans pertes peut esp\u00e9rer compresser des donn\u00e9es. Quelque soit l&rsquo;entropie des donn\u00e9es d&rsquo;origine, une fois chiffr\u00e9es leur entropie est maximale. Si un algorithme obtient une compression des donn\u00e9es chiffr\u00e9es, il faut s\u00e9rieusement remettre en question la fiabilit\u00e9 de l&rsquo;algorithme de chiffrement. CF <a class=\"external text\" title=\"http:\/\/fr.wikipedia.org\/wiki\/Entropie_de_Shannon\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Entropie_de_Shannon\" rel=\"nofollow\">Wikipedia Entropie de Shannon<\/a>.<\/p>\n<p>A cause de l&rsquo;entropie apr\u00e8s chiffrement, si on veut compresser les donn\u00e9es il est donc n\u00e9cessaire de le faire avant le chiffrement.<\/p>\n<p>Ensuite, il faut choisir l&rsquo;algorithme de compression. On pourrait forcer par d\u00e9faut cet algorithme, pour tout le monde. C&rsquo;est notamment ce qui se passe pour le HTML5 avec le WebM ou le H.264&#8230; et c&rsquo;est pr\u00e9cis\u00e9ment ce qui pose probl\u00e8me. En dehors des probl\u00e8mes de droits d&rsquo;utilisation \u00e0 s&rsquo;acquitter, c&rsquo;est une facilit\u00e9 pour l&rsquo;impl\u00e9mentation de cette compression par d\u00e9faut dans les programmes. Cela \u00e9vite de devoir n\u00e9gocier pr\u00e9alablement l&rsquo;algorithme de compression. Mais si il est difficile de pr\u00e9senter des vid\u00e9os en plusieurs formats \u00e0 pr\u00e9-n\u00e9gocier, ce n&rsquo;est pas le cas de la plupart des donn\u00e9es. On perd la capacit\u00e9 d&rsquo;\u00e9volution que l&rsquo;on a en acceptant de nouveaux algorithmes de compression. Et plus encore, on perd la capacit\u00e9 du choix de l&rsquo;algorithme le plus adapt\u00e9 aux donn\u00e9es \u00e0 compresser. Il faut donc permettre l&rsquo;utilisation de diff\u00e9rents algorithmes de compression.<\/p>\n<p>Cependant, si l&rsquo;objet \u00e0 chiffrer est d\u00e9j\u00e0 compress\u00e9 en interne, comme le PNG ou OGG par exemple, la compression avant chiffrement est inutile. Ce serait une sur compression qui bien souvent n&rsquo;apporte rien. Le chiffrement n&rsquo;implique donc pas automatiquement une compression.<\/p>\n<p>Lors du chiffrement, l&rsquo;objet r\u00e9sultant chiffr\u00e9 est li\u00e9 \u00e0 l&rsquo;objet source non chiffr\u00e9 par un lien <code>k<\/code>. Il est aussi marqu\u00e9 comme \u00e9tant un objet de <i>type-mime<\/i> correspondant \u00e0 l&rsquo;algorithme de chiffrement, via un lien <code>l<\/code>. Pour marquer la compression avant chiffrement, un autre lien <code>l<\/code> est ajout\u00e9 comme <i>type-mime<\/i> vers l&rsquo;algorithme de compression utilis\u00e9. Ce lien n&rsquo;est ajout\u00e9 que dans le cas d&rsquo;une compression r\u00e9alis\u00e9e en m\u00eame temps que le chiffrement.<\/p>\n<p>La seule contrainte, c&rsquo;est l&rsquo;obligation d&rsquo;utiliser un algorithme de compression sans perte. L&rsquo;objet, une fois d\u00e9compress\u00e9 doit \u00eatre v\u00e9rifiable par sa signature. Il doit donc \u00eatre strictement identique, aucune modification ou perte n&rsquo;est tol\u00e9r\u00e9e.<\/p>\n<h5 id=\"ckotm\">CKOTM \/ Cryptographie de l&rsquo;Objet &#8211; Type Mime<\/h5>\n<p>Il n&rsquo;existe pas de type mime g\u00e9n\u00e9ralistes pour des fichiers chiffr\u00e9s. Comme les objets chiffr\u00e9s ne sont li\u00e9s \u00e0 aucune application en particulier.<\/p>\n<p>Il faut aussi un moyen de pr\u00e9ciser l&rsquo;algorithme de chiffrement derri\u00e8re. Une application aura besoin de conna\u00eetre cet algorithme pour d\u00e9chiffrer le <i>flux<\/i> d&rsquo;octets. En suivant la <a class=\"external text\" title=\"http:\/\/www.rfc-editor.org\/rfc\/rfc2046.txt\" href=\"http:\/\/www.rfc-editor.org\/rfc\/rfc2046.txt\" rel=\"nofollow\">rfc2046<\/a>, il reste la possibilit\u00e9 de cr\u00e9er quelque chose en <code>application\/x-...<\/code><\/p>\n<p>Voici donc comment seront d\u00e9finis les objets chiffr\u00e9s dans nebule :<\/p>\n<ul>\n<li><code>application\/x-encrypted\/aes-256-ctr<\/code><\/li>\n<li><code>application\/x-encrypted\/aes-256-cbc<\/code><\/li>\n<li><code>application\/x-encrypted\/rsa<\/code><\/li>\n<li>Etc&#8230;<\/li>\n<\/ul>\n<p>En fonction de l&rsquo;algorithme invoqu\u00e9, on sait si c&rsquo;est du chiffrement sym\u00e9trique ou asym\u00e9trique, et donc en principe si c&rsquo;est pour une cl\u00e9 de session ou pas.<\/p>\n<h5 id=\"ckorc\">CKORC \/ Cryptographie de l&rsquo;Objet &#8211; R\u00e9solution de Conflits<\/h5>\n<p>Comment se comporter face \u00e0 un objet que l&rsquo;on sait (lien k) chiffr\u00e9 dans un autre objet mais qui est disponible chez d&rsquo;autres entit\u00e9s ? Si on est destinataire l\u00e9gitime de cet objet, on ne le propage pas en clair. On ne t\u00e9l\u00e9charge pas la version en clair. On garde la version chiffr\u00e9e.<\/p>\n<h3 id=\"cka\">CKA \/ Al\u00e9as cryptographiques<\/h3>\n<p>L&rsquo;al\u00e9a de qualit\u00e9 cryptographique est d\u00e9fini comme une suite de bits reconnue comme al\u00e9atoire, c&rsquo;est \u00e0 dire lorsque son \u00e9tat futur est parfaitement impr\u00e9dictible, y compris en disposant de l&rsquo;int\u00e9gralit\u00e9 de l&rsquo;al\u00e9a g\u00e9n\u00e9r\u00e9 par la machine dans le pass\u00e9. Elle est n\u00e9cessaire \u00e0 certains processus cryptographiques.<\/p>\n<p>L&rsquo;al\u00e9a de qualit\u00e9 cryptographique \u00e9tant long \u00e0 g\u00e9n\u00e9rer, il doit \u00eatre utilis\u00e9 avec pr\u00e9caution pour ne pas se retrouver \u00e9puis\u00e9e lorsque le besoin est r\u00e9el.<\/p>\n<p>Cependant, l&rsquo;al\u00e9a peut \u00eatre utile dans certaines fonctions sans pour autant n\u00e9cessiter d&rsquo;\u00eatre de bonne qualit\u00e9. Il faut donc disposer d&rsquo;un al\u00e9a de qualit\u00e9 cryptographique et un al\u00e9a g\u00e9n\u00e9raliste.<\/p>\n<p>La biblioth\u00e8que propose dans son code deux g\u00e9n\u00e9rations d&rsquo;al\u00e9a.<\/p>\n<h2 id=\"cs\">CS \/ Sociabilit\u00e9<\/h2>\n<p>Lors de l&rsquo;exploitation des liens, plusieurs m\u00e9thodes permettent une analyse pr\u00e9-d\u00e9finie de la validit\u00e9 dite sociale des liens afin de les trier ou de les filtrer.<\/p>\n<p>A faire&#8230;<\/p>\n<h2 id=\"cn\">CN \/ Nettoyage, suppression et oubli<\/h2>\n<p>L&rsquo;oubli vonlontaire de certains liens et objets n&rsquo;est encore ni th\u00e9oris\u00e9 ni impl\u00e9ment\u00e9 mais deviendra indispensable lorsque l&rsquo;espace viendra \u00e0 manquer (cf <a href=\"#ooo\">OOO<\/a> et <a href=\"#lo\">LO<\/a>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Documentation technique de nebule Version 1.3 &#8211; 020190821 Developpement (c) GNU GPL 2010-2019 Projet nebule &#8211; www.nebule.org &#8212; Copie en attendant la mise en ligne &#8212;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[428],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/3218"}],"collection":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3218"}],"version-history":[{"count":2,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/3218\/revisions"}],"predecessor-version":[{"id":3220,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/3218\/revisions\/3220"}],"wp:attachment":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}