Package Exports
- eccrypto-js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eccrypto-js) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
eccrypto-js 
Elliptic curve cryptography library (NodeJS, Browser and Pure JS)
Description
This library is a port from eccrypto it makes use of native libraries on NodeJS and Browser enviroments with pure javascript fallbacks.
Usage
RandomBytes
import * as eccryptoJS from 'eccrypto-js';
const length = 32;
const key = eccryptoJS.randomBytes(length);
// key.length === lengthAES
import * as eccryptoJS from 'eccrypto-js';
const key = eccryptoJS.randomBytes(32);
const iv = eccryptoJS.randomBytes(16);
const str = 'test message to encrypt';
const msg = eccryptoJS.utf8ToBuffer(str);
const ciphertext = await eccryptoJS.aesCbcEncrypt(iv, key, msg);
const decrypted = await eccryptoJS.aesCbcDecrypt(iv, key, ciphertext);
// decrypted.toString() === strHMAC
import * as eccryptoJS from 'eccrypto-js';
const key = eccryptoJS.randomBytes(32);
const iv = eccryptoJS.randomBytes(16);
const macKey = eccryptoJS.concatBuffers(iv, key);
const dataToMac = eccryptoJS.concatBuffers(iv, key, msg);
const mac = await eccryptoJS.hmacSha256Sign(macKey, dataToMac);
const result = await eccryptoJS.hmacSha256Verify(macKey, dataToMac, mac);
// result will return true if matchSHA2
import * as eccryptoJS from 'eccrypto-js';
// SHA256
const str = 'test message to hash';
const msg = eccryptoJS.utf8ToBuffer(str);
const hash = await eccryptoJS.sha256(str);
// SHA512
const str = 'test message to hash';
const msg = eccryptoJS.utf8ToBuffer(str);
const hash = await eccryptoJS.sha512(str);SHA3
import * as eccryptoJS from 'eccrypto-js';
// SHA3
const str = 'test message to hash';
const msg = eccryptoJS.utf8ToBuffer(str);
const hash = await eccryptoJS.sha3(str);
// KECCAK256
const str = 'test message to hash';
const msg = eccryptoJS.utf8ToBuffer(str);
const hash = await eccryptoJS.keccak256(str);ECDSA
import * as eccryptoJS from 'eccrypto-js';
const keyPair = eccryptoJS.generateKeyPair();
const str = 'test message to hash';
const msg = eccryptoJS.utf8ToBuffer(str);
const hash = await eccryptoJS.sha256(str);
const sig = await eccryptoJS.sign(keyPair.privateKey, hash);
await eccryptoJS.verify(keyPair.publicKey, msg, sig);
// verify will throw if signature is BADECDH
import * as eccryptoJS from 'eccrypto-js';
const keyPairA = eccryptoJS.generateKeyPair();
const keyPairB = eccryptoJS.generateKeyPair();
const sharedKey1 = await eccryptoJS.derive(
keyPairA.privateKey,
keyPairB.publicKey
);
const sharedKey2 = await eccryptoJS.derive(
keyPairB.privateKey,
keyPairA.publicKey
);
// sharedKey1.toString('hex') === sharedKey2.toString('hex')ECIES
import * as eccryptoJS from 'eccrypto-js';
const keyPair = eccryptoJS.generateKeyPair();
const str = 'test message to encrypt';
const msg = eccryptoJS.utf8ToBuffer(str);
const encrypted = await eccryptoJS.encrypt(keyPairB.publicKey, msg);
const decrypted = await eccryptoJS.decrypt(keyPairB.privateKey, encrypted);
// decrypted.toString() === strPBKDF2
import * as eccryptoJS from 'eccrypto-js';
const password = 'password';
const buffer = eccryptoJS.utf8ToBuffer(str);
const key = await eccryptoJS.pbkdf2(buffer);
// key.length === 32React-Native Support
This library is intended for use in a Browser or NodeJS environment, however it is possible to use in a React-Native environment if NodeJS modules are polyfilled with react-native-crypto, read more here.