hum… le format JSON proposé par @elois ne sert pas à stocker uniquement un trousseau chiffré, mais également les portefeuilles dérivés. Il ne s’agit pas que d’un fichier d’authentification (mais la discussion a peut-être dérivé depuis le début ?).
Le format d’authentification proposé par @elois est le DEWIF, qui est une string base64 et peut être incluse dans tout format de fichier texte.
Je vois un avantage au JSON par rapport au YAML : il est déjà formaté pour être envoyé dans une requête. (je dis peut-être des sottises). C’est une facilité coté dev, ça ne change rien pour l’utilisateur.
YAML et JSON ont une caractéristique par rapport au binaire, qui peut être vue comme avantage ou inconvénient : ils peuvent être modifiés à la main, dans un simple éditeur de texte. C’est à la fois une liberté pour l’utilisateur final et un risque de perte de monnaie.
Après, que l’extension soit .dunikey, .dewif, .ewif, l’utilisateur s’en fiche. Iel souhaite qu’en important un trousseau dans un client, ça juste marche. Or on parle là de trois usages différents :
- le fichier d’authentification lié à un trousseau dont la clef publique est… publique (appelons ça trousseau “simple”)
- un fichier d’authentification lié à un trousseau maître HDWallet (dont la clef publique doit rester secrète dans la plupart des cas)
- un format d’enregistrement des trousseaux dérivés d’un trousseau maître.
Les cas 2 et 3 peuvent être regroupés dans un même format de fichier, avec la seed stockée sous forme DEWIF, et n’être utilisable que par les clients qui implémentent les HDWallets. On aurait une extension .hdunit
par exemple. JSON ou binaire me semblent adaptés pour cet usage.
Le cas 1 regroupe plusieurs modes de génération de trousseau, et tout le monde n’est pas d’accord s’il faut chiffrer ou non la seed. Pour ce cas 1, un format “conteneur” comme proposé par @kimamila me semble adapté. Il faut en revanche limiter quel type de données peuvent s’y trouver, et définir les besoins minimum pour un client Duniter. Je vois trois types de données :
Tout client Duniter devrait être en mesure d’utiliser ces trois types pour au moins importer des trousseaux “simples”, même non chiffrés. Il devrait être en mesure d’exporter un trousseau dans au moins un de ces trois types (pour par exemple, dériver un trousseau porte-monnaie pour ma fille depuis mon trousseau maître, sur lequel je garderais le contrôle). Les devs de clients qui veulent absolument chiffrer les données d’imports pourraient choisir de n’exporter que en EWIF/DEWIF. L’extension .dunikey
pour ce format me semble adaptée. Après, que ce soit un YAML ou un JSON, je vois pas trop la différence.
Le format seed et le format salt + passwd me semblent redondants avec WIF, et pourraient être abandonnés. D’autant plus que tous les clients n’ont pas accès à salt + passwd, il me semble.
Je vois un dernier cas d’import entre clients : c’est l’import d’une sous-clef publique de HDWallet, qui sera dérivée pour envoyer des transactions toujours à une même entité, mais sur des clefs publiques différentes. Ce serait une sorte de “fiche de contact”, donc encore un troisième format de fichier et une troisième extension.
PS : désolé, j’utilise “type” et “format” de façon non maîtrisée, je ne saisis pas très bien la différence : type de données, type de fichier, format de fichier, format de données d’un fichier texte…