Pas mal l’histoire du eval ! Par contre on dirait que les gens qui font la review sont un peu bornés ><
Mais donc il y a vraiment un audit du code, c’est intéressant.
C’est au pied du mur qu’ils se réveillent enfin, mieux vaut tard que jamais: Transition from manifest v2 to v3 by TarikGul · Pull Request #1367 · polkadot-js/extension · GitHub
Les extensions avec manifest v2 seront toutes désactivés sur chrome dès le mois prochain.
Pour rappel j’avais fait la migration vers v3, mais causant quelques bugs mineurs résiduelles sur chrome (fenêtre popup que reste ouverte au lieux de se fermer après validation du password par exemple).
Une fois cette PR terminé je pourrais rebase duniter-connect.
J’ai oublié de préciser ici que Duniter-Connect est bien à jour sur les store chrome et mozilla, avec les derniers dev de migration vers manifest v3 fait plus proprement par l’équipe initiale.
Je remarque de meilleurs performances globalement, et surtout plus de petits bugs d’affichage chiant sur chrome (enfin Brave pour moi).
C’est la v0.48.3 que vous devriez voir dans les paramètres de gestion de l’extension, elle devrait se mettre à jour toute seule normalement.
Dites moi si parfois vous avez un nouveau bug par contre, en ouvrant la popup de l’extension, rarement, elle affiche ...loading...
au lieu de son état normal. On ferme et réouvre et c’est bon.
C’est dû à leur implémentation du service worker qui n’est pas encore totalement bien gérer à l’init, mais je veux bien vos retours savoir si ya que moi qui vois ça…
Si ça vous arrive, je veux bien les logs de votre console JS (celle de la popup) pour remonter un ticket chez eux.
Ne faites pas attention à la v0.49.3 de polkadot.js qui en réalité reprends des choses que j’avais déjà ajouté dans notre fork, suite à des oublies de leur part que j’ai pointé, donc on est bien à jour.
Voir ce ticket: Background task with manifest v3 not working on chrome · Issue #1395 · polkadot-js/extension · GitHub
Suis-je vraiment le seul à avoir ce problème ? Serais-ce spécifique à Brave ?
J’ai aussi ça sur Firefox 118. La plupart du temps quand j’ouvre l’extension pour la première fois depuis quelques minutes sur un site, “… loading …”, et fermer-rouvrir ça marche.
idem sur mon firefox…
Ok c’est remonté, merci! Est-ce que vous pouvez me confirmer que vous avez aussi le même soucis avec la dernière version de l’extension polkadot.js directement ?
Nouvelle version sur les stores où j’ai simplement rendu le logo D clickable
“J’ai” aussi créé un script bash pour build et publier automatiquement sur les stores Mozilla et Chrome via leurs API, sans quoi c’était super chiant:
./scripts/publish.sh ✔
[ERREUR] Usage: ./scripts/publish.sh [chrome|firefox|all] [publish]
Vous n’avez qu’a me demander le .env
avec les tokens si vous voulez maintenir et publier des versions de cette extension.
Sinon on peut en faire une CI.
Sur les conseils de @tuxmain, notre consultant en cybersécurité, j’ai rendu les mots de passe optionnels pour les wallets.
La traduction varie en fonction de la langue…
L’état de cette case est persisté dans le localstorage, parceque la flemme quoi non ?
Lorsqu’un wallet est importé sans mot de passe, l’écran de signature pop et se valide automatiquement, ya pas le temps …
Prochaine étape, permettre l’export de la seed en claire, toujours sur recommandation de notre consultant en cybersécurité.
(Version 0.51.3 en attente d’approbation sur les stores, maintenant que c’est roadé ça prends généralement moins de 12h pour chrome, et quelques minutes pour firefox).
N’oubliez pas que vous pouvez déclarer vos vœux au sujet de ces outils sur ce topic.
polkadot.js ne permet pas de retrouver la seed d’un wallet importé.
Une fois transformé en KeyPair c’est finito.
J’ai retourné le web ainsi que la lib, et je ne trouve aucun moyen, si vous en avez un je suis preneur.
Sur Gecko je triche en stockant le mnemonic chiffré à côté, pour pouvoir le ré-afficher à l’utiliser ultérieurement.
J’ai bien les “encoded data”, que j’ai pu transformer en hexa, voici pour un wallet par exemple:
0xa89069205d4088db2831ac2b850f7cec43edebb38e7d8fa143b86b5dfa24e6bb00800000010000000800000088481aaee6c1ccece6a3ff7d9395502de85cc25f4665934843cbde2979ff9fe17dc0f3bcbfb28c3c9c651ae8af70bfe670f423e7565e064375cf49005efd22d4180e4f3982c5a4cbd4b75528b1a1396882d505706aa7301c11338c3c713b0fecb5ff11780c31f58540df7a94bacbfbed4915191e2a0386ce13eec61d7aa6b363ebf663f4d858794c9b9517b518aef38528564a43e5199690687e7b55e3
Mais je ne sais pas du tout à quoi ça correspond. Si vous arrivez à en faire quelque chose allez y, ya quelques gdev dessus, je suis curieux de savoir si c’est exploitable.
Donc désolé @tuxmain mais je ne vais pas pouvoir permettre ça, sauf si on me dit comment faire.
J’ai regardé le code, en effet la seed ne peut pas être récupérée depuis la clé privée. Mais la clé privée peut toujours être importée dans un autre client, ça peut servir.
Même pour le test je trouve bien d’avoir une validation manuelle côté extension, ça permet de vérifier ce qui va être signé, ça évite les mauvaises manips et permet de tester l’interface web sans risque.
Je demandais l’absence de mdp parce que pour créer plusieurs comptes de test il fallait à chaque fois créer un mdp de 5 caractères (donc test1, test2, etc.).
Est-ce que ce que je t’ai donné correspond à une clé privé exploitable pour toi ? Tu arrives à en faire quelque chose ?
Je ne sais pas de quelle structure de données c’est la représentation, ça fait 201 octets donc le découpage ne se devine pas. Il semble y avoir des nombres au milieu des octets aléatoires.
Dans le code JS, Keypair
a un champ de clé privée. Il y a peut-être le code adéquat pour l’export chiffré.
Le cas d’usage est quand on a un compte dans l’extension, dont on n’a pas conservé le mnemonic (vieux compte ou compte de test), et qu’on veut l’utiliser dans un autre client.
Ce que j’ai partagé est la représentation hexa du champ encoded
présent l’objet KeyringPair une fois le json déchiffré.
Initialement en base64:
m4S2/Djk0Bl+72s598nV22IX4nz6e6jdmncJGLgJbd0AgAAAAQAAAAgAAABaJZfbnR27hp5kVXsTN+6Z7MMVximfdryx/m/L/S/0M806h131xjWRufu2rujztkRqEtpd2aP0jlEn8wxyoni2F8+HsR1gr9FLvKksvIwhk/XUri8zl9v5EuyLYcmTf3moAHFA5/KY9hq1iBo8BjZ6wxq5veSsmvnWB5sNUcVydMxnpVlNyXFqvmgiK9DQ9uXuyOWbrfKLmVoOSz4K
5HfN44uQZu4zbb8xwn5MiwBZTPeoKDNVQ6VN85v5eKVuYLXS.json (506 Octets)
On constate dans les metadata que c’est un format ed25519, de type scrypt (wallet cesium), mais je ne trouve aucune info précise sur le format exacte de ce champ encoded, qui contient la clé privé mais chiffré du coup.
Je ne sais pas récupérer autre chose, il n’y a pas de getter pour la privatekey.
Du coup je ne sais pas quoi afficher.
edit: Voici une version déchiffré du encoded, avec l’aide de tweetnacl-ts:
0x286e55a0159cde378d85b041b6a84e74a2fc7242ccf6539e0bbad986baa869634c97d5cf05e30457dc8313a0a360aeb3e84d92772cb9d35027c3b4751d38817b7894b4be68edaf6f3b82ade60928895a12a0c626cd79cba681e597d63be2dad2e7b607b0fe72149f1ad984d419c9474f84d93a64dfed4a918b8ac83164bb4b74bbfa44b4efd747a7a4b903c9ceb684953598cd517b0a6bddf454b4a8ce5b9e11c086d91ff625928f41e675875a9bc94a62b7b7d32f76db92a47cf0254b92f9f25c
exploitable ?
edit 2: bon voilà ça ma saoulé: polkadot js - Decoding keyringPair’s encoded field for private key extraction - Substrate and Polkadot Stack Exchange
J’ai restauré ce comportement.
C’est désormais chose possible:
Disponible sur la v0.52.2.
Pour G1nkgo c’est un peu plus compliqué, car il chiffre la clé à partir d’un schéma, je ne sais pas encore comment retranscrire ce schéma en chiffre, il faut creuser le code pour ça, peut être que @vjrj pourrait nous en dire plus.
J’ai finalement réussi à permettre les imports de wallets ğ1nkgo
Disponible en v0.52.3.
En espérant que ça serve à quelque chose, ça ma pris la journée …
Les import pubsec et ğ1nkgo sont pour le moment forcément sans mot de passe, je rajouterais la possibilité de définir un mot de passe pour ces import dans une prochaine version.
N’oubliez pas que vous pouvez déclarer vos vœux au sujet de ces outils sur ce topic.
Wow, thanks @poka for that. I was missing that kind of work in other clients.
PS: I’m currently with many personal and working issues and I’m slow reading and with few spare time, but this will change in short (I hope).
Bonus track: Not related but I recently discovered GitHub - mrtnetwork/polkadot_dart: This package facilitates Substrate interactions: create, sign, send transactions (ECDSA, ED25519, SR25519), query, runtime calls, JSON-RPC for seamless Substrate operations. maybe we can use it for web or similar as porkadart does not support yet web as you well know:
Search results for polkadot