A simple, fault-tolerant, and easy-to-audit password manager. Only ONE dependency: Stanford Javascript Crypto Library https://pwm.sequentialread.com

index.html.gotemplate 3.2KB

    <!DOCTYPE HTML> <html manifest="index.appcache?v={{.Version}}"> <head> <meta charset="UTF-8"> <title>pwm</title> <script> // global namespace where we will be putting everything window.sequentialReadPasswordManager = { AWSAccessKeyId: "{{.AWSAccessKeyId}}", AWSSecretAccessKey: "{{.AWSSecretAccessKey}}" }; // a fake implementation of AMD just so I can use use sjcl.js (Stanford JavaScript Crypto Library) without any modifications window.define = function(dependencies, factory) { window.sequentialReadPasswordManager.sjcl = factory(); }; </script> <script src="static/vendor/sjcl.js?v={{.Version}}"></script> <script src="static/vendor/tenThousandMostCommonEnglishWords.js?v={{.Version}}"></script> <script src="static/awsClient.js?v={{.Version}}"></script> <link rel="stylesheet" type="text/css" href="static/application.css?v={{.Version}}"> </head> <body> <div class="header">Sequential Read Password Manager</div> <div class="header-shadow"></div> <div class="splash content" id="splash-content"> <h3>Enter/Generate your Secret Encryption Key</h3> <div class="progress-bar-holder"> <span id="move-mouse-instruction" style="visibility: hidden;">Move your mouse around to generate entropy</span> <div class="progress-bar" id="entropy-progress-bar" style="width:0;"></div> </div> <input id="encryption-secret" type="text" style="width:calc(100% - 20px);"></input> <button id="generate-encryption-secret-button"> Generate new Encryption Secret </button> <button id="splash-continue-button" style="float:right;"> Continue </button> <p class="instructions"> This is an encryption key, not a password. Save it somewhere <u>secure</u> so you don't lose it. We can't recover it for you.<br/> This is the only thing protecting the data you enter here from being publicly avaliable, so it should be <u>extremely long and hard to guess</u>.<br/> It needs to be so long that even a supercomputer can't guess it. It should contain about 256 bits of entropy. If you are in doubt click generate.<br/> </p> </div> <div class="main content" id="file-list-content" style="display:none;"> <h3>Files</h3> <div style="height:40px; width:100%;"> <button id="new-file-button" style="float:right;"> New File... </button> </div> <div id="file-list"> </div> </div> <div class="main content" id="file-detail-content" style="display:none;"> <h3> <a href="#" id="file-detail-back-link">Files</a> &gt; <span id="file-detail-file-name"></span> </h3> <div style="height:40px;"> <div class="saved-status-indicator saved" id="saved-status-indicator">Saved</div> </div> <textarea id="file-content"></textarea> </div> <div class="modal-container" id="modal-container" style="display:none;"> <div class="modal content" > <h3 id="modal-title"></h3> <div id="modal-body"></div> <div id="modal-footer" style="height:50px;"></div> </div> </div> <div class="modal-container" id="progress-container" style="display:none;"> <div class="loader">loading</div> </div> <script src="static/application.js?v={{.Version}}"></script> </body> </html>