README
eciesjs
Elliptic Curve Integrated Encryption Scheme for secp256k1 in TypeScript.
This is the JavaScript/TypeScript version of eciespy with a built-in class-like secp256k1 API, you may go there for detailed documentation and learn the mechanism under the hood.
If you want a WASM version to run directly in modern browsers, check ecies-wasm
.
Install
npm install eciesjs
Node.js Compatibility
We'll still be compatible with Node.js 10 for a while, albeit its official security support ended on Apr 30 2021. Please note that it is strongly not recommended to run on an outdated runtime.
Quick Start
Run the code below with npx ts-node
.
> import { encrypt, decrypt, PrivateKey } from 'eciesjs'
> const k1 = new PrivateKey()
> const data = Buffer.from('this is a test')
> decrypt(k1.toHex(), encrypt(k1.publicKey.toHex(), data)).toString()
'this is a test'
API
encrypt(receiverRawPK: string | Buffer, msg: Buffer): Buffer
Parameters:
- receiverRawPK - Receiver's secp256k1 public key, hex string or buffer
- msg - Data to encrypt
Returns: Buffer
decrypt(receiverRawSK: string | Buffer, msg: Buffer): Buffer
Parameters:
- receiverRawSK - Receiver's secp256k1 private key, hex string or buffer
- msg - Data to decrypt
Returns: Buffer
PrivateKey
- Methods
static fromHex(hex: string): PrivateKey;
constructor(secret?: Buffer);
toHex(): string;
encapsulate(pub: PublicKey): Buffer;
multiply(pub: PublicKey): Buffer;
equals(other: PrivateKey): boolean;
- Properties
readonly secret: Buffer;
readonly publicKey: PublicKey;
PublicKey
- Methods
static fromHex(hex: string): PublicKey;
constructor(buffer: Buffer);
toHex(compressed?: boolean): string;
decapsulate(priv: PrivateKey): Buffer;
equals(other: PublicKey): boolean;
- Properties
readonly uncompressed: Buffer;
readonly compressed: Buffer;
Release Notes
0.3.1 ~ 0.3.13
- Bump dependencies
- Update documentation
- Extract constant variables and rename some parameters
0.3.0
- API change:
encrypt/decrypt
now can take both hexstring
andBuffer
0.2.0
- API change: use
HKDF-sha256
to derive shared keys instead ofsha256
- Bump dependencies
- Update documentation
0.1.1 ~ 0.1.5
- Bump dependencies
- Update documentation
0.1.0
- First beta version release