• [^] # Re: Code source

    Posté par . En réponse au journal Mon gestionnaire de mots de passe, en 50 lignes de HTML. Évalué à 5.

    Oui, et c'est très appréciable.

    Mais comme nombre de moules ici, je suis sur mobile et on n'a pas forcément tous Kiwi browser pour inspecter le code source ou Termux pour curl ta page.

    Du coup pour ceux-là et les feignasses comme moi, je pose ton code là:

    <html><head>
     <title>SHA256-based password generator</title>
     <style>
     #result {
     user-select: all;
     }
     </style>
     </head>
     <body>
     <h1>SHA256-based password generator</h1>
     <noscript>This page relies on JavaScript.</noscript>
     <form>
     <div>
     <label for="domain">Domain name or mnemonic:</label>
     <input id="domain" type="text">
     </div>
     <div>
     <label for="password">Master password:</label>
     <input id="password" type="password">
     </div>
     </form>
     <p id="result"></p>
     <script>
     'use strict';
     function bufferToBase64(buffer) {
     return btoa(String.fromCodePoint(...new Uint8Array(buffer)));
     }
     async function sha256(text) {
     const bytes = new TextEncoder().encode(text);
     const digest = await window.crypto.subtle.digest("SHA-256", bytes);
     return bufferToBase64(digest);
     }
     const domain = document.getElementById("domain");
     const password = document.getElementById("password");
     const result = document.getElementById("result");
     async function update() {
     if (password.value) {
     result.textContent = await sha256(domain.value + "|" + password.value + "\n");
     } else {
     result.textContent = "No master password provided";
     }
     }
     domain.addEventListener("input", update);
     password.addEventListener("input", update);
     </script>
    </body></html>
    

    Parce que 50 lignes, je pense que ça vaut le coup de les mettre en valeur. Autant pour l'idée, que je trouve excellente personnellement, que pour le code en soi, et malgré les limites évoquées en commentaire.

    Car remplacer une app type *pass* (et toutes ses variantes par plateforme) par 50 lignes de code "statique" avec une seule fonctionnalité simple et qui me plaise, je trouve ça beau.

    J'aurais aimé l'avoir eu plus tôt, car migrer tous mes comptes maintenant prendrait la vie des rats. Mais pour un geek même débutant qui se pose la question de quelle app choisir, je pense qu'il y a là une belle occasion de mêler le geek à la pratique... quotidienne.

    Voilà, merci!