@wppconnect/curve25519
v1.0.0
Published
[](https://www.npmjs.com/package/@wppconnect/curve25519) [](https://www.npmjs.com/package/@wppconnect/
Readme
WPPConnect/Curve25519
WPPConnect/Curve25519 This library isolates the implementation of the X25519 curves used in libsignal-protocol-javascript and exposes the basic functions in an easy-to-use TypeScript package.
This project is a fork of privacyresearchgroup/curve25519-typescript. Modifications were made to expose the API only as functions (no classes) and to make usage easier in modern TypeScript projects.
Installation
Use yarn or npm to install:
yarn add @wppconnect/curve25519
# or
npm install @wppconnect/curve25519Usage
The API is now function-based. Example usage for Diffie-Hellman:
import { generateKeyPair, sharedSecret, sign, verify, signatureIsValid } from '@wppconnect/curve25519'
const alicePair = generateKeyPair(alice_bytes)
const bobPair = generateKeyPair(bob_bytes)
const aliceSecret = sharedSecret(bobPair.pubKey, alicePair.privKey)
const bobSecret = sharedSecret(alicePair.pubKey, bobPair.privKey)Signing and verifying:
// pub, priv, msg are Uint8Array
import { sign, verify, signatureIsValid } from '@wppconnect/curve25519'
const sig = sign(priv, msg)
const verified = verify(pub, msg, sig)
if (verified) {
// Yes, this is correct. `verify` returns `true` for invalid signatures
throw new Error('INVALID SIGNATURE!')
}
// To avoid confusion, use:
const isValid = signatureIsValid(pub, msg, sig)
if (!isValid) {
throw new Error('INVALID SIGNATURE!')
}See the tests for details on how to create input Uint8Arrays and for sample data.
About this fork
- Function-based API: There are no more classes, only named functions for all operations (generateKeyPair, sharedSecret, sign, verify, signatureIsValid).
- Compatibility: Usage is simpler and more direct for modern TypeScript projects.
Build
The main curve implementation is written in C and can be found in the native/ directory. It is compiled to Javascript with Emscripten, as shown in the compile.sh script.
If you want to modify the C code or the compilation arguments, you will need to install Emscripten.
Acknowledgements
This project is based on the work of the folks at Signal and the original repository privacyresearchgroup/curve25519-typescript.
License
Copyright 2020 Privacy Research, LLC
Licensed under GPLv3: http://www.gnu.org/licenses/gpl-3.0.html
