hybrid-ecies
v1.3.0
Published
Hybrid EC encryption scheme that EC curve secp256k1, and chacha20-poly1305 or aes-256-gcm to encrypt data. The returned data is a packed Buffer with the public key, nonce/iv, tag, and encrypted data.
Downloads
16
Maintainers
Readme
hybrid-ecies
Install
Install nodejs
npm i hybrid-ecies
npm test
Usage
// Typescript
import { ECIES, JWK } from 'hybrid-ecies';
let ecies = new ECIES();
// use ecies to call methods
// javascript
const { ECIES } = require('hybrid-ecies');
let ecies = new ECIES();
// use ecies to call methods
hybrid-ecies › Globals › "ecies" › ECIES
Class: ECIES
Hybrid EC encryption scheme that takes an EC curve secp256k1, and chacha20-poly1305 or aes-256-gcm to encrypt data. The returned data is a packed Buffer with the public key, nonce/iv, tag, and encrypted data.
Hierarchy
- ECIES
Index
Methods
- JWKtoBuffer
- createKeyPair
- decryptAES256
- decryptChaCha20
- encryptAES256
- encryptChaCha20
- getDER
- getPEM
- getPublicKey
- getSecret
- privateJWK
- publicJWK
Methods
JWKtoBuffer
▸ JWKtoBuffer(jwk
: JWK): Buffer
Return a Buffer from either a public or private JWK.
Parameters:
Name | Type | Description |
------ | ------ | ------ |
jwk
| JWK | public or private JSON Web Key |
Returns: Buffer
Buffer of either public or private key
createKeyPair
▸ createKeyPair(): Buffer
This creates a EC secp256k1 key pair and returns the private key as a buffer.
Returns: Buffer
EC Private Key as a Buffer
decryptAES256
▸ decryptAES256(privateKey
: Buffer, encodedData
: Buffer): Buffer
Takes private EC key of the public key used to encrypt the data and decrypts it.
Parameters:
Name | Type | Description |
------ | ------ | ------ |
privateKey
| Buffer | EC Key used to encrypt the data. |
encodedData
| Buffer | Buffer(Bytes) - ECPubKey(33) iv(12) tag(16) encData(variable) |
Returns: Buffer
Buffer of decrypted data.
decryptChaCha20
▸ decryptChaCha20(privateKey
: Buffer, encodedData
: Buffer): Buffer
Takes private EC key of the public key used to encrypt the data and decrypts it.
Parameters:
Name | Type | Description |
------ | ------ | ------ |
privateKey
| Buffer | EC Key used to encrypt the data. |
encodedData
| Buffer | Buffer(Bytes) - ECPubKey(33) nonce(12) tag(16) encData(variable) |
Returns: Buffer
Buffer of decrypted data.
encryptAES256
▸ encryptAES256(publicKey
: Buffer, data
: Buffer): Buffer
This takes an EC public key as input, creates an unique EC pair to encrypt the data. Returns a packed buffer of the EC public key, nonce, tag, and encrypted data. Optional to supply Private Key
Parameters:
Name | Type | Description |
------ | ------ | ------ |
publicKey
| Buffer | EC Public Key |
data
| Buffer | Data to encrypt |
Returns: Buffer
Buffer(Bytes) - ECPubKey(33) iv(12) tag(16) encData(variable)
▸ encryptAES256(publicKey
: Buffer, privateKey
: Buffer, data
: Buffer): Buffer
Parameters:
Name | Type |
------ | ------ |
publicKey
| Buffer |
privateKey
| Buffer |
data
| Buffer |
Returns: Buffer
encryptChaCha20
▸ encryptChaCha20(publicKey
: Buffer, data
: any): Buffer
This takes an EC public key as input, creates an EC pair to encrypt the data. Returns a packed buffer of the EC public key, nonce, tag, and encrypted data. Optional to supply Private Key
Parameters:
Name | Type | Description |
------ | ------ | ------ |
publicKey
| Buffer | EC Public Key |
data
| any | Data to encrypt |
Returns: Buffer
Buffer(Bytes) - ECPubKey(33) nonce(12) tag(16) encData(variable)
▸ encryptChaCha20(publicKey
: Buffer, privateKey
: Buffer, data
: any): Buffer
Parameters:
Name | Type |
------ | ------ |
publicKey
| Buffer |
privateKey
| Buffer |
data
| any |
Returns: Buffer
getDER
▸ getDER(ecKey
: Buffer, type
: "Private" | "Public"): Buffer
Parameters:
Name | Type |
------ | ------ |
ecKey
| Buffer |
type
| "Private" | "Public" |
Returns: Buffer
getPEM
▸ getPEM(ecKey
: Buffer, encoding
: "RAW" | "DER", type
: "Private" | "Public"): string
Parameters:
Name | Type |
------ | ------ |
ecKey
| Buffer |
encoding
| "RAW" | "DER" |
type
| "Private" | "Public" |
Returns: string
getPublicKey
▸ getPublicKey(privateKey
: Buffer, compress?
: Boolean): Buffer
Takes EC private key and returns the public key.
Parameters:
Name | Type | Description |
------ | ------ | ------ |
privateKey
| Buffer | EC Private Key |
compress?
| Boolean | If true return only the x value |
Returns: Buffer
publicKey X,Y buffer
getSecret
▸ getSecret(privateKey
: Buffer, publicKey
: Buffer): Buffer
This returns the calculated secret from a private and public key.
Parameters:
Name | Type |
------ | ------ |
privateKey
| Buffer |
publicKey
| Buffer |
Returns: Buffer
secret
privateJWK
▸ privateJWK(privateKey
: Buffer): JWK
This takes an EC private key and returns the JWK.
Parameters:
Name | Type | Description |
------ | ------ | ------ |
privateKey
| Buffer | EC private key |
Returns: JWK
Json Web Token
publicJWK
▸ publicJWK(publicKey
: Buffer): JWK
This takes an EC public key and returns the JWK.
Parameters:
Name | Type | Description |
------ | ------ | ------ |
publicKey
| Buffer | EC Public Key |
Returns: JWK
Json Web Token
hybrid-ecies
Index
Modules
hybrid-ecies › Globals › "ecies" › JWK
Interface: JWK
JSON Wek Token
Hierarchy
- JWK
Index
Properties
Properties
crv
• crv: string
Optional
d
• d? : undefined | string
kid
• kid: string
kty
• kty: string
x
• x: string
Optional
y
• y? : undefined | string
hybrid-ecies › Globals › "ecies"