2.4.0 • Published 3 months ago

securewalletbundle v2.4.0

Weekly downloads
-
License
ISC
Repository
-
Last release
3 months ago

Secure Wallet Bundle

Package pour la création d'un bundle pour le wallet Decrypto OFFLINE 100% sécurisé "par vous". C'est ce qu'on appelle un paper wallet, mais géré par une application web OFFLINE.

Ce package a été créé pour éviter les doublons de code dans les librairies et ainsi réduire au maximum le poids du bundle embarqué pour tous les wallets.

Suivez le tuto d'utilisation XLM ici.

Suivez le tuto d'utilisation XRP ici.

Ceci vous permetra de compiler/recompiler vous même les libraries et vous assurer qu'il n'y a pas d'altération de code et que tout est clean. Vous pouvez me faire confiance, mais vous pouvez aussi vérifier et faire vérifier.

➡️ Comment ça marche ?

Le wallet fonctionne actuellement pour des wallets XRP et XLM. (prochainement disponible : HBAR et TRX)

Le wallet contient 4 fichiers HTML qui fonctionnent en autonomie. Les fichiers se trouvent dans ./node_modules/securewalletbundle/dist.

2 fichiers OFFLINE:

  • 1.OFFLINE_wallet-generation.html (pour générer un nouveau wallet ou récupérer un ancien wallet)
  • 2.2.OFFLINE_transaction-sign.html (pour signer une transaction sans que votre clé privée quitte le mode OFFLINE)

2 fichiers ONLINE:

  • 2.1.ONLINE_transaction-prepare.html (pour créer une nouvelle transaction à signer)
  • 2.3.ONLINE_transaction-send.html (pour envoyer une transaction signée sur la blockchain)

Veuillez regarder les tutoriels vidéos que vous trouverez en lien, en bas à droite des fichiers HTML, selon la blockchain sur laquelle vous êtes.

➡️ Simple et 100 sécurisé, par vous !

Ce wallet se veut simple à utiliser, tout en restant 100% sécurisé si vous respectez la marche à suivre dans les tutos, et il permet de ne dépendre d'aucune société extérieure, comme c'est le cas avec les wallets hardware ou applicatifs.

De plus, vos fichiers HTML restent les vôtres et ne peuvent pas être mis à jour sans que vous le fassiez vous-même, ce qui assure qu'aucune altération de code n'a pû être faite entre 2 utilisations. Les scripts sont aussi protégés grâce au SHA d'intégrité et refuseront de s'executer si un script a changé, ce qui est normalement impossible.

Il n'y a rien à faire d'autre que de télécharger et utilisé les fichiers. Tout ce qui suit permet de vérifier le code pour vous sentir encore plus 100% sécurisé.

➡️ Instructions de vérification du code

Cette partie n'est pas obligatoire. Faites ces étapes seulement si vous souhaitez vérifier le code des librairies utilisées et recompiler vous même le résultat.

Pour ce faire, installez ce bundle sur votre ordinateur. Dans un nouveau dossier, lancez la commande suivante :

$ npm install securewalletbundle

Vérifications 1 : le code javascript

La première vérification à effectuer est de vous assurer que le code HTML est sain. Pour cela, vérifiez ou faites vérifiez le code contenu dans les fichiers HTML que vous avez téléchargés. Téléchargez TOUJOURS des fichiers depuis un lien officiel, sur la chaine youtube officielle, le telegram officiel, ou sur ce bundle NPM.

Vérifications 2 : les librairies

Vérifiez les différentes libraries utilisées. En effet, certaines librairies auraient pu être affectées ou altérées pour récupérer votre clé privée ou encore faire des translations d'adresse de destination. Si un danger existe, c'est dans l'utilisation des librairies au niveau OFFLINE. Vous assurer que vous êtes OFFLINE suffit à éviter tout problème.

Voici les librairies (dépendances) utilisées :

  • xrpl - version 4.1.0 : Librairie officielle du XRP-Ledger - Danger possible, peut-être altérée. Assurez-vous que c'est bien la librairie officielle qui est utilisée.
  • @xrplf/secret-numbers - version 1.0.0 : De wietsewind, bien reconnu dans la communauté XRPL. Librairie permettant de générer/récupérer un wallet numérique, type Xaman - Danger possible, peut-être altérée. Assurez-vous que c'est bien la librairie officielle qui est utilisée.
  • @stellar/stellar-sdk - version 13.1.0 : Librairie officielle de la blockchain XLM - Danger possible, peut-être altérée. Assurez-vous que c'est bien la librairie officielle qui est utilisée.
  • bip39 - version 3.1.0 : Librairie permettant la génération de seed à base de mnemonic - Danger très faible surtout si vous utilisez les fichiers HTML 1 et 3 OFFLINE.
  • create-hmac - version 1.1.7 : Librairie pour hasher du code - Aucun rapport avec la crypo - Ancun danger.
  • uglify-js - version 3.19.3 : Librairie pour minifier du code - Aucun rapport avec la crypo - Ancun danger et n'est pas utilisé dans les fichiers HTML.
  • get-sri - version 1.0.2 : Librairie pour hasher du code - Aucun rapport avec la crypo - Ancun danger et n'est pas utilisé dans les fichiers HTML.

Dans tous les cas, rappelez-vous que d'utiliser les fichiers HTML 1 & 3 strictement sur un PC OFFLINE vous assurera une protection parfaite.

Vérifications 3 : la compilation du code

Le code du bundle final est compilé grâce au fichier 'bundle.js' qui n'est qu'un aggrégat des librairies que l'on souhaite rendre disponibles dans les fichiers HTML.

Le code est minifié et le hash SRI d'intégrité est généré dans le fichier 'sriGenerator.js', que vous pouvez aussi vérifier dans ce même fichier.

➡️ Instruction pour installer et recompiler

Installez ce package avec NPM comme suit :

$ npm install securewalletbundle

Altération minime du code

Seules 2 petites altérations de code ont été faites pour bénéficier de plus grandes possibilités de générations avec les mnemonics.

Ouvrez le fichier ./node_modules/@scure/bip39/index.js et commentez les lignes 59 et 60 comme suit.

function normalize(str) {
    const norm = nfkd(str);
    const words = norm.split(' ');
    /*if (![12, 15, 18, 21, 24].includes(words.length))
        throw new Error('Invalid mnemonic');*/
    return { nfkd: norm, words };
}

Puis ouvrez le fichier ./node_modules/xrpl/dist/npm/Wallet/index.js et commentez les lignes 79 à 81 comme suit.

static fromMnemonic(mnemonic, opts = {}) {
        var _a;
        if (opts.mnemonicEncoding === 'rfc1751') {
            return Wallet.fromRFC1751Mnemonic(mnemonic, {
                masterAddress: opts.masterAddress,
                algorithm: opts.algorithm,
            });
        }
        /*if (!(0, bip39_1.validateMnemonic)(mnemonic, english_1.wordlist)) {
            throw new errors_1.ValidationError('Unable to parse the given mnemonic using bip39 encoding');
        }*/
        const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
        const masterNode = bip32_1.HDKey.fromMasterSeed(seed);
        const node = masterNode.derive((_a = opts.derivationPath) !== null && _a !== void 0 ? _a : DEFAULT_DERIVATION_PATH);
        validateKey(node);
        const publicKey = (0, utils_1.bytesToHex)(node.publicKey);
        const privateKey = (0, utils_1.bytesToHex)(node.privateKey);
        return new Wallet(publicKey, `00${privateKey}`, {
            masterAddress: opts.masterAddress,
        });
    }

Compilation, minification et SRI

C'est tout pour la modification de code. Maintenant, naviguez vers ./node_modules/securewalletbundle et entrez la commande suivante pour compiler le code pour un navigateur (browserify), le minifier, et créer son hash d'intégrité :

$ npm run createBundle

Cette commande va lancer browserify, puis va minifier le code, puis va créer le SRI pour la balise script. Une fois terminé, vous obtenez un SRI que vous pouvez utiliser dans vos fichiers HTML. Malheureusement, le code généré par browserify n'est pas déterministique et semble différer lorsque les noms de fichiers (et les chemins) ne sont pas identiques...

Pour utiliser votre propre génération dans vos fichiers, voir la note2 ci-dessous.

Si la commande browserify ne fonctionne pas, installez le module en faisant :

$ npm install browserify -g

Les fichiers compilés dans leur version normale et minifiée se trouvent maintenant dans ./dist si vous êtes toujours dans ./node_modules/securewalletbundle.

Note1 : la balise <script> avec le paramètre d'intégrité ne fonctionnera pas avec un fichier js local, mais vous permettra de mettre votre propre fichier sur un CDN si besoin. Sinon gardez le simplement en référence locale.

Note2 : Pour insérer le code javascript résultant dans les fichiers HTML OFFLINE, copiez le code dans le fichier SecureWalletBundle.browser.min.js et collez le entre 2 balises <script>...</script>.

Note3 : le fichier minifié résultant est disponible ici https://unpkg.com/securewalletbundle@2.4.0/dist/SecureWalletBundle.browser.min.js pour la version 2.4.0 (changer le numéro de version pour une autre version).

2.4.0

3 months ago

2.3.0

4 months ago

2.2.0

4 months ago

2.1.0

4 months ago

2.0.4

4 months ago

2.0.4-beta.0

4 months ago

2.0.3

4 months ago

2.0.2

4 months ago

2.0.1

4 months ago

2.0.0

4 months ago

1.2.0

4 months ago

1.1.0

4 months ago

1.0.8

4 months ago

1.0.7

4 months ago

1.0.6

4 months ago

1.0.5

4 months ago

1.0.4

4 months ago

1.0.3

4 months ago

1.0.2

4 months ago

1.0.1

4 months ago

1.0.0

4 months ago