Coder Social home page Coder Social logo

cyphrme / ed25519tool Goto Github PK

View Code? Open in Web Editor NEW
22.0 6.0 2.0 118 KB

Ed25519 signing and verification online tool.

Home Page: https://cyphr.me/ed25519_tool/ed.html

License: BSD 3-Clause "New" or "Revised" License

JavaScript 89.67% HTML 8.86% Go 1.47%
cryptography ed25519 signing curve25519 eddsa html javascript noble single-page-app crypto

ed25519tool's Introduction

Ed25519Tool

Ed25519 signing and verification online tool.

Also, Github hosted copy

All functions are ran locally. Nothing is sent or computed by a remote server (other than downloading the page itself).

This tool may be used offline and does not need an Internet connection

For local use, git clone this project:

(
git clone https://github.com/Cyphrme/Ed25519Tool.git ed25519_tool
cd ed25519_tool 
git clone [email protected]:Cyphrme/URLFormJS.git urlformjs
git submodule add [email protected]:Cyphrme/URLFormJS.git urlformjs
)

Alternatively, download from the release page.
Integrity checking may be done by comparing the digests on the release page, or use git which will integrity check

Then navigate to file://path_to_file/ed.html.

file:///path_to_file/ed.html

Naming Differences in Implementations

Many libraries, including this tool, refer to what the RFC calls "private key" as the "seed" (like Go ). The 32 byte seed is used to generate the private component "secret scalar s" (sss), the public key, and the "prefix" (nounce).

The "actual" private component (secret scalar s as named by the RFC (Section 5.1.5.3)) is typically regenerated from seed on signing, although it is possible to use sss and prefix to sign without the seed. The public component is computed from sss, but prefix is generated from seed and is used for signing. For example, NaCL, in the past, returned the private key as sss concatenated with prefix .

Instead of requiring sss and prefix for signing, most libraries require the seed and regenerate both sss and prefix from seed, and optionally cache the public key since caching the public key precludes relatively slow regeneration when signing. What some libraries call the "private key" (64 bytes) is the seed (32 bytes) concatenated with the public key (32 bytes). For example, Go's "private key" is seed || public key.

TODO

Ed25519ph

paulmillr/noble-ed25519#63

Paul's Noble library currently only supports "PureEdDSA" and does not support Ed25519ph ("pre-hashed"). We are waiting for it to be supported before we can implement it.

Generate from seed "secret scalar s" and permit input from sss || prefix

It would be nice to output "secret scalar s" || "prefix" and accept it as input as well. See paulmillr/noble-ed25519#64. It would require additional code to Noble since sss || prefix is not a possible input, assuming seed is not given.

We might never do this if there's no use for it among modern tools.

Dist

noble-ed25519.js is taken directly from Noble and may be used in other applications. See also join.js.

Other ed25519 resources:

Why

Previously, the top result on Google was an evil tool that stole private keys. ๐Ÿ˜ฑ

This tool replaced the evil tool in Google results. Special thank you to /r/ethfinance for helping report the evil site and getting it removed.

License, Attribution, and Trademark Notice

Ed25519Tool is released under the 3-Clause BSD License.

Implemented using noble/ed25519.

"Cyphr.me" is a trademark of Cypherpunk, LLC. The Cyphr.me logo is all rights reserved Cypherpunk, LLC and may not be used without permission.

Keywords

Ed25519 test page, Ed25519 online tool.

ed25519tool's People

Contributors

adamt20054 avatar chrisipk avatar horvski avatar zamicol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ed25519tool's Issues

Unable to use pre-generated Private Keys

I already have private keys generated with ed25519, but I am unable to use it in the tool, it asks for seeds instead of the key, but I don't know how to get that.

Signature shows up as "invalid" when private key is not supplied

Given a message, a public key and a signature, it should be possible to verify the signature. However, when no private key is supplied, the UI always shows the signature as "invalid".

The reason for this is that the routine to get the input values from the GUI always ensures that a private key is present. However, for verifying a signature, a private key is not required.

Add copy buttons ๐Ÿ“‹.

It would be nice to have a small copy button on the message, seed, public key, signature, and share link. Can use the clipboard emoji ๐Ÿ“‹.

Support Ed25519ph

Paul currently supports Ed25519. We're hoping Paul will implement Ed25519ph soon: paulmillr/noble-ed25519#63

The W3C Web Cryptography API recommendation also omits Ed25519, so an external package that implements the Ed25519 primitive is used. The upcoming update FIPS 186-5 specifies Ed25519 support. (https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5-draft.pdf, section 7.8) Hopefully this will motivate Javascript to include Ed25519.

See also:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.