eosjs-ecc

    4.0.7 • Public • Published

    NPM Build Status

    Elliptic curve cryptography functions (ECC)

    Private Key, Public Key, Signature, AES, Encryption / Decryption

    Import

    import ecc from 'eosjs-ecc'
    // or
    const ecc = require('eosjs-ecc')

    Include

    • Install with: yarn add eosjs-ecc
    • Html script tag, see releases for the correct version and its matching script integrity hash.
    <html>
    <head>
      <meta charset="utf-8">
      <!--
      sha512-cL+IQQaQ586s9DrXfGtDheRpj5iDKh2M+xlpfwbhNjRIp4BGQ1fkM/vB4Ta8mc+f51YBW9sJiPcyMDIreJe6gQ== lib/eosjs-ecc.js
      sha512-dYFDmK/d9r3/NCp6toLtfkwOjSMRBaEzaGAx1tfRItC0nsI0hVLERk05iNBQR7uDNI7ludYhcBI4vUiFHdjsTQ== lib/eosjs-ecc.min.js
      sha512-eq1SCoSe38uR1UVuQMwR73VgY8qKTBDc87n2nIiC5WLhn1o2y1U6c5wY8lrigVX7INM8fM0PxDlMX5WvpghKig== lib/eosjs-ecc.min.js.map
      -->
      <script src="https://cdn.jsdelivr.net/npm/eosjs-ecc@4.0.4/lib/eosjs-ecc.min.js"
        integrity="sha512-dYFDmK/d9r3/NCp6toLtfkwOjSMRBaEzaGAx1tfRItC0nsI0hVLERk05iNBQR7uDNI7ludYhcBI4vUiFHdjsTQ=="
        crossorigin="anonymous"></script> 
     
    </head>
    <body>
      See console object: eosjs_ecc
    </body>
    </html>

    Common API

    Table of Contents

    wif

    Wallet Import Format

    Type: string

    ecc

    initialize

    Initialize by running some self-checking code. This should take a second to gather additional CPU entropy used during private key generation.

    Initialization happens once even if called multiple times.

    Returns Promise

    unsafeRandomKey

    Does not pause to gather CPU entropy.

    Returns Promise<PrivateKey> test key

    randomKey

    Parameters

    • cpuEntropyBits number gather additional entropy from a CPU mining algorithm. This will already happen once by default. (optional, default 0)

    Examples

    ecc.randomKey().then(privateKey => {
    console.log('Private Key:\t', privateKey) // wif
    console.log('Public Key:\t', ecc.privateToPublic(privateKey)) // EOSkey...
    })

    Returns Promise<wif>

    seedPrivate

    Parameters

    • seed string any length string. This is private. The same seed produces the same private key every time. At least 128 random bits should be used to produce a good private key.

    Examples

    ecc.seedPrivate('secret') === wif

    Returns wif

    privateToPublic

    Parameters

    • wif wif
    • pubkey_prefix string public key prefix (optional, default 'EOS')

    Examples

    ecc.privateToPublic(wif) === pubkey

    Returns pubkey

    isValidPublic

    Parameters

    • pubkey pubkey like EOSKey..
    • pubkey_prefix string (optional, default 'EOS')

    Examples

    ecc.isValidPublic(pubkey) === true

    Returns boolean valid

    isValidPrivate

    Parameters

    Examples

    ecc.isValidPrivate(wif) === true

    Returns boolean valid

    sign

    Create a signature using data or a hash.

    Parameters

    • data (string | Buffer)
    • privateKey (wif | PrivateKey)
    • encoding String data encoding (if string) (optional, default 'utf8')

    Examples

    ecc.sign('I am alive', wif)

    Returns string string signature

    signHash

    Parameters

    • dataSha256 (String | Buffer) sha256 hash 32 byte buffer or string
    • privateKey (wif | PrivateKey)
    • encoding String dataSha256 encoding (if string) (optional, default 'hex')

    Returns string string signature

    verify

    Verify signed data.

    Parameters

    • signature (string | Buffer) buffer or hex string
    • data (string | Buffer)
    • pubkey (pubkey | PublicKey)
    • encoding (optional, default 'utf8')
    • hashData boolean sha256 hash data before verify (optional, default true)

    Examples

    ecc.verify(signature, 'I am alive', pubkey) === true

    Returns boolean

    recover

    Recover the public key used to create the signature.

    Parameters

    • signature (String | Buffer) (EOSbase58sig.., Hex, Buffer)
    • data (String | Buffer) full data
    • encoding String data encoding (if data is a string) (optional, default 'utf8')

    Examples

    ecc.recover(signature, 'I am alive') === pubkey

    Returns pubkey

    recoverHash

    Parameters

    • signature (String | Buffer) (EOSbase58sig.., Hex, Buffer)
    • dataSha256 (String | Buffer) sha256 hash 32 byte buffer or hex string
    • encoding String dataSha256 encoding (if dataSha256 is a string) (optional, default 'hex')

    Returns PublicKey

    sha256

    Parameters

    • data (string | Buffer) always binary, you may need Buffer.from(data, 'hex')
    • resultEncoding (optional, default 'hex')
    • encoding string result encoding 'hex', 'binary' or 'base64' (optional, default 'hex')

    Examples

    ecc.sha256('hashme') === '02208b..'
    ecc.sha256(Buffer.from('02208b', 'hex')) === '29a23..'

    Returns (string | Buffer) Buffer when encoding is null, or string

    pubkey

    EOSKey..

    Type: string

    Usage (Object API)

    let {PrivateKey, PublicKey, Signature, Aes, key_utils, config} = require('eosjs-ecc')
     
    // Create a new random private key
    let privateWif
    PrivateKey.randomKey().then(privateKey => privateWif = privateKey.toWif())
     
    // Convert to a public key
    pubkey = PrivateKey.fromString(privateWif).toPublic().toString()

    Browser

    git clone https://github.com/EOSIO/eosjs-ecc.git
    cd eosjs-ecc
    yarn
    yarn build_browser
    # builds: ./dist/eosjs-ecc.js 
    # Verify release hash 
    <script src=eosjs-ecc.js></script>
    var ecc = eosjs_ecc
     
    ecc.randomKey().then(privateWif =>  {
      var pubkey = ecc.privateToPublic(privateWif)
      console.log(pubkey)
    })

    Install

    npm i eosjs-ecc

    DownloadsWeekly Downloads

    64,533

    Version

    4.0.7

    License

    MIT

    Unpacked Size

    1.25 MB

    Total Files

    20

    Last publish

    Collaborators

    • b1serviceaccount
    • benbenben1010
    • chris-allnutt
    • j8u8s8t8i8n8
    • jeffreyssmith2nd
    • julienheller
    • smetelin
    • takn