eccrypto-js
    TypeScript icon, indicating that this package has built-in type declarations

    5.4.0 • Public • Published

    eccrypto-js npm version

    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 === length

    AES

    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() === str

    HMAC

    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 match

    SHA2

    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 BAD

    ECDH

    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() === str

    PBKDF2

    import * as eccryptoJS from 'eccrypto-js';
    
    const password = 'password';
    const buffer = eccryptoJS.utf8ToBuffer(str);
    
    const key = await eccryptoJS.pbkdf2(buffer);
    
    // key.length === 32

    React-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.

    License

    MIT License

    Install

    npm i eccrypto-js

    DownloadsWeekly Downloads

    2,356

    Version

    5.4.0

    License

    MIT

    Unpacked Size

    659 kB

    Total Files

    111

    Last publish

    Collaborators

    • pedrouid