Digital signing
12 random words (or your choice of unique text):
Copy
Message to sign/verify:
SignCopy
Status:
Signing Instructions:
- A random set of 12 memorizable English words appears in the upper text box every time this page is refreshed.
- They should be securely stored and kept private because they are used to generate your secret key and therefore may be needed to prove that you are the owner of your public key.
- Type or paste text into the Message box.
- Use the Sign button to compute the signature from the secret key and the message.
- Send to the recipient the signed message including the appended public key and signature.
- Dragging and dropping a file into the Message box will automatically compute its SHA-256 checksum, base64 encoded, and sign it.
Verifying instructions:
- The secret key is not used for verification so it doesn't matter what is in the upper text box.
- Paste the received signed message into the Message box.
- If the message was signed by the owner of the public key and has not been altered since signing, the Status field will indicate verified and the Message box background will turn green; otherwise it turns pink.
Technical notes:
This page uses the TweetNaCl-js implementaion of Ed25519 DSA (Digital Signature Algorithm) and SHA-512 for hashing the mnemonic seed.
Once it is served to your computer, has no further communication with the server or any other entity. No cookies or local data storage are created when the pages run in your browser. Therefore, secret data exist only temporarily within the browser while it is open, unless manually copied elsewhere. The browser cache should be cleared before closing it. The clipboard should also be cleared if a secret was copied to it.
For enhanced peace of mind, save this HTML page to your computer when it is blank and move it to an offline computer before using. Review the dowloaded code, which includes the two libraries nacl.min.js and nacl-util.min.js, obtained from Github user dchest (Dmitry Chestnykh). The originals are available at these links along with non-minified (and possibly more recent) versions:
- tweetnacl-js 1.0.3
- tweetnacl-util-js v0.15.0
TweetNaCl.js was ported from
TweetNaCl / NaCl.