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:
npm install 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
- pubkey
- ecc
wif
Type: string
pubkey
EOSKey..
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.
Parameters
-
keyFormat
(optional, default'WIF'
) -
keyType
(optional, default'K1'
)
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, default0
) -
keyFormat
(optional, default'WIF'
) -
keyType
(optional, default'K1'
)
Examples
ecc.randomKey().then(privateKey => {
console.log('Private Key:\t', privateKey) // wif
console.log('Public Key:\t', ecc.privateToPublic(privateKey)) // EOSkey...
})
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. -
keyFormat
(optional, default'WIF'
) -
keyType
(optional, default'K1'
)
Examples
ecc.seedPrivate('secret') === wif
Returns wif
privateToPublic
Parameters
Examples
ecc.privateToPublic(wif) === pubkey
Returns pubkey
isValidPublic
Parameters
Examples
ecc.isValidPublic(pubkey) === true
Returns boolean valid
isValidPrivate
Parameters
-
wif
wif
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, defaulttrue
)
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
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
npm install
npm run 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)
})