Duniter/Silkaj/DuniterPy & Scuttlebot - comment partager les clefs de chiffrage des crypto-applications?

Clairement, c’était un chantier pour la 0.8, mais y’a toujours des nouvelles choses à gérer qui prennent la priorité, qui fait que la gestion correcte des méthodes d’authentification est passé après.

1 Like

Le format de Duniter :

pub: XX
sec: XX

proche de celui de DuniterPy :

Ça matche pas celui de Césium.

C’est à on avis la clef du crypto Web qui se crée:!!!
Allez je mets 240 DU sur le tapis (24.000 LOVE :heart:)

Bon, je crois qu’il y a un bug dans Silkaj, mais j’expliciterai plus tard, là dodo.

@Frederic_Renault teste ce code en bash, je pense avoir trouvé ta solution :

#!/bin/bash

g1pub="BdanxHdwRRzCXZpiqvTVTX4gyyh6qFTYjeCWCkLwDifx"
g1priv="2CNFWPJEi9oy9RQYpDYmPvFsRbaQQBzi6n4McqQsJmYQ336NL8nsewG7p49SVa6bgEwKzmB1pMtD7SmnxD2EM5LA"

# créer le fichier pubsec (un truc du genre)
file="PubSecFile.dunikey"
rm $file        # c'est mieux pour vider les tests précédents
echo "pub: $g1pub" >> $file
echo "sec: $g1priv" >> $file

# utiliser le fichier pubsec dans Silkaj :
silkaj -af --file $file --gtest balance

normalement je pense qu’il devrait fonctionner avec Silkaj. Le fichier pubsec ne doit pas contenir de champs « Type » et « Version », il doit ressembler à :

pub: BdanxHdwRRzCXZpiqvTVTX4gyyh6qFTYjeCWCkLwDifx
sec: 2CNFWPJEi9oy9RQYpDYmPvFsRbaQQBzi6n4McqQsJmYQ336NL8nsewG7p49SVa6bgEwKzmB1pMtD7SmnxD2EM5LA

#PourMoiCaMarche


Attention cependant : Silkaj a une RE qui matche pour des clefs priv de longueur {88,90} alors que Duniterpy matche pour des privkey de longueur {87,90}, je ne sais pas qui a juste. Pas sûr que ça marche pour toutes les clefs priv rencontrées, donc.

Perso j’utilise https://regex101.com/ :slight_smile:

Merci @matograine tu as grandement fait avancer la compréhension du phénomène.

Par contre comme tu le craignais, j’ai du pas matcher la longueur?

ssbpub=$(cat .ssb/secret | grep public\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
ssbpriv=$(cat .ssb/secret | grep private\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
g1pub=$(echo $ssbpub | base64 -d | base58)
g1priv=$(echo $ssbpriv | base64 -d | base58)

# Qui donnent dans le cas de mon ssb
g1pub=SSytWZ4LpL9XtCYeaGXqsFDc16sk6hReCBWo2pXKDB9
g1priv=T8X5ZairryS6sfWt7dVHKzSL2oHrLaH7v42s8sJzeVEnPzA6aN7F7PikoGe5c3t372zLb9xcgnJkipwF8qbPWbu

# créer le fichier pubsec (un truc du genre, tu peux essayer echo aussi au lieu de print)
file="PubSecFile.dunikey"
rm $file        # c'est mieux pour vider les tests précédents
echo "pub: $g1pub" >> $file
echo "sec: $g1priv" >> $file

# utiliser le fichier pubsec dans Silkaj :
silkaj -af --file $file --gtest balance

Error: the format of the file is invalid

Je dirai que 88 est plus juste?

1 Like

Non c’est le contraire. Duniterpy accepte des privkey de longueur 87 comme celle que tu obtiens et qui est donc sans doute valide, mais Silkaj les refuse en-dessous de 88. C’est donc Duniterpy qui a raison, ta clef priv aurait dû être acceptée.

Spoiler : c’est un des éléments du bug que je crois avoir relevé.

1 Like

Spotted!
:heart_eyes_cat:

Ca me fait penser au code que @tuxmain a créé :
https://git.p2p.legal/axiom-team/G1sms/src/master/shell/natools.py
Il me sert à chiffrer/déchiffrer les données inscritent dans ipfs… et discuter entre ipfs node

J’utilise cet outil avec le authfile (seed silkaj), il vaudrait mieux utiliser aussi pub/sec dans ce cas?

De mémoire, quand j’ai implémenté le support des fichiers d’authentification, j’ai copié le code de Silkaj.
Ça ne fonctionnait pas à cause du regexp, que j’ai modifié dans Duniterpy. J’ai évidemment complètement oublié de le signaler à @moul… My bad. Mais c’est dans l’historique des commits :

2 Likes

Je vous laisse le bonheur de corriger votre découverte.
C’est vous qui l’avez trouvé, vous méritez d’être l’auteur du correctif.

3 Likes

Je propose qu’on fasse une v0.7.4 pour faire profiter le correctif à Fred.
Ça te dirait de t’en occuper matograine ? Pour te faire au processus de release.

2 Likes

J’avais prévu de Ğtravailler sur Silkaj cet aprèm, ça me va. J’ai créé une issue, je veux bien que tu y jettes un oeil.

3 Likes

Super ticket :+1: Tu as bien exposé la problématique et proposé des solutions remarquables.
Ça serait bien d’importer les expressions régulières de DuniterPy.
Par contre, je suis pas sûr que ça le soit dans l’état actuel.
Il faudrait définir les pattern/regex en constantes.
Ça peut se faire proprement pour plus tard pour la 0.8.0 ou 0.9.0, car DuniterPy 0.56.0 est prévue pour dans pas longtemps.
L’important étant d’avoir le correctif pour Fred.

2 Likes

BUG HUPs :hugs:
merci les amis

Hop, tu peux installer la v0.7.4 qui corrige le bug :

pip3 install silkaj --user --upgrade

Un grand merci et bravo à matograine pour le correctif et la première release réalisée !

5 Likes

:cool: :smile:
A quoi sert --user ?
Si j’avais installé avec sudo pip3 install silkaj, il vaut mieux que je continue en y mettant --upgrade, non?

À installer uniquement pour ton utilisateur.

Avec sudo tu installes pour root, des fois ça s’installe pas bien et ou il te faut les droits root pour utiliser le logiciel, ce qui n’est pas recommandé dans le cas où le logiciel a des failles de sécurité ou des backdoors, il pourra être roi sur la machine :wink:

Je te conseille de désinstaller et de repartir avec --user.

1 Like
sudo pip3 uninstall silkaj
pip3 install silkaj --user

Et … une série d’erreurs…

Lequels ?