Comments (2)
These APIs are indeed confusing, but basically what sign.keyPair.fromSeed
does is it allows you to replace nacl's internal randombytes(32)
with your own 32 bytes, which it then uses for the secret key and computes the corresponding public key:
The problem with the signing secret key (due to NaCl design) is that it contains both this 32-byte seed and also 32-byte public key concatenated with it (can't see it in the screenshot). What sign.keyPair.fromSecretKey
does is that it takes these 64 bytes and just extracts the public key from it, creating a suitable JS object.
box.keyPair
doesn't have .fromSeed
because .fromSecretKey
already serves the same purpose: box's secret key is just 32 random bytes. That is, .fromSeed
would be the same as .fromSecretKey
.
To summarize, if you need to get a key pair from your own 32 random or derived bytes, use: nacl.box.fromSecretKey
and nacl.sign.fromSeed
. If you need to get the original key pair from the secret key (32 bytes for box and 64 bytes for sign), use nacl.box.fromSecretKey
and nacl.sign.fromSecretKey
.
Note that box (x25519) and sign (ed25519) use different curve representations, so their keys are not compatible with each other. You can however re-use a sign key pair for box if you convert it with https://github.com/dchest/ed2curve-js.
from tweetnacl-js.
Ah, ok, thank you @dchest! That's very clear and very helpful. Closing this issue then. 😄
from tweetnacl-js.
Related Issues (20)
- ed25519 decode / decompress HOT 3
- Please also export "pack" function in nacl.lowlevel HOT 2
- Public-key authenticated encryption (box) without authentication HOT 1
- Generating keypair leaks memory HOT 9
- setPRNG HOT 4
- nacl.sign.keyPair & nacl.box.keyPair have inconsistent pubkey HOT 6
- How to use ed25519 secret key in php (Should I convert it to to PEM/OpenSSH compatible format?) HOT 4
- How to add public keys (EC points)? HOT 6
- Hierarchical Deterministic (HD) style extended keys HOT 1
- Support Ed25519ph (HashEdDSA) RFC 8032 Section 5 HOT 2
- Converting ed25519 keys from elliptic lib
- Security vulnerability: nacl.sign.detached accepts invalid keys HOT 8
- no PRNG in react-native HOT 1
- ed25519 verification is malleable and accepts forged signatures HOT 7
- tweetnacl for signal protocol keypairs?
- decrypt with box always return null HOT 1
- This package is unlicensed HOT 1
- Licensing library under MIT HOT 1
- 2.0 or something revamped? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tweetnacl-js.