La lib total fait autour de 100ko, la partie crypto fait 69ko, ça ce base sur tweetnacl / libsodium et noble-crypto, mais ça ne charge que les parties utilisé de ces lib. J'avais testé avec du wasm depuis rust mais les perfs était moindre qu'avec les fonctions natives fournies par les navigateurs récents (et l'intégration est plus simple également)
avec un npm install --save g1lib pour l'avoir sous la main et ajuster ./crypto.mjs dans les imports en mettant le chemin où se trouve la g1lib probablement ./node_module/g1lib/browser/all.mjs ou ./node_module/g1lib/browser/crypto.mjs selon si tu as besoin d'autre chose que la crypto ou uniquement de la crypto.
Mais la les dépendances partent vers node_modules et autre... Que je ne sais pas trouver non plus.
Dans l'idée, le package crypto et gva pourraient être mis dans TW
Pour assurer le chiffrage signature et permettre des paiements vers les signataires des tiddlers
Une version "minified" pourrait exister?
Oui, tu peux la trouver là : https://unpkg.com/g1lib@3.4.2/browser/crypto.mjs
Et je vais faire en sorte que les nouvelles versions soient accessibles sous forme de release gitlab-ci.
Je vois quand même un import (tweetnacl) alors qu'il ne devrait y avoir aucune dépendances. Tu peux tenter de voir si ça marche sans, et je vais faire en sorte de virer ça dans les prochaines version.
Merci pour ces retour qui me permettent d'identifier des points d'amélioration ;)
Excellent.
Cette version crypto.mjs fait 67ko, mais a d'autres chargements externes? On peut "causer gva" avec ou il faut un autre module ?
Si tu arrivais à mettre tout dans un seul fichier, on pourrait le distribuer sur IPFS , et l'utiliser dans l'index des TW. Tu crois que c'est possible?
Clairement oui ! Je vais je pense ajouter un contrôle dans ma CI pour la faire échouer s'il reste des dépendances dans les versions que je publie. Normalement ça devrait déjà être inclus et sans dépendances externes.
C'est fait, la v3.5.0 est en ligne et tu peux l'utiliser sans aucune dépendances ;)
Pour ton usage, tu ne devrais pas avoir besoin de tout, donc :
https://unpkg.com/browse/g1lib@3.5.0/browser/crypto.mjs
devrait parfaitement faire l'affaire ;)
Mon objectif est de produire une clef à partir d'un "salt/pepper" pour servir à signer et chiffrer les tiddlers afin qu'ils ne soient lisibles que par mes amis (étoiles) gchange
soit tu chiffre une version pour chaque ami, et quand tu ajoute des amis tu rechiffre une version pour eux de tout ton historique de publication, et quand tu retire un ami, il garde techniquement accès à ce que tu lui avais partagé mais pas à tes nouvelles publication que tu ne chiffre pas pour lui.
soit tu chiffres un mot de passe symétrique avec la clef de tes amis et tu chiffres tes publications avec ce mot de passe symétrique, une fois ça fait, tes publications sont accessible à qui à ce mot de passe, et si tu retire des amis, tu change de mot de passe pour tes futures publications. (éventuellement tu rechiffre tes anciennes publications avec le nouveau mot de passe et tu fais disparaitre de ton mieux les versions avec l'ancien mot de passe)
Pour l'instant g1lib gère le chiffrement asymétrique mais pas le chiffrement symétrique.
D'autre part, les message ainsi chiffrés serons lisible depuis tiddlers si tu fait le nécessaire, mais pas depuis gchange à moins que gchange gère la communication chiffré de groupe.
TW a déjà une librairie pour le chiffrement symétrique incluse.
Pour les discussions privées pair à pair, on convertirait le tiddler en clair en 2 tiddlers chiffrés, un avec sa clef (pour pouvoir le voir), un autre avec la clef du destinataire, le rendant lisible uniquement par lui.
Pour les "dialogues de groupe", je pensais fonctionner façon "stargate".
Chaque PLAYER chaque jour crée une clef pour chacun de ses niveaux : 1 , 2, 3 ...
Chaque ":star:key" est chiffrée par la clef publique :star:n équivalente de chaque ami atteignant ce niveau de confiance. Puis diffusé par IPFS sur la clef feed du PLAYER.
L'adresse des canaux :star:n chiffrés de son nuage d'amis est disponible pour la journée et constitue des espace de groupe relatifs au niveaux de confiance entre chacun.
Un processus se déclenche à 20H12 pour effectuer les renouvellements et synchronisations entre les clefs de chacun.