Skip to content

Elliptic curve cryptography functions: Private Key, Public Key, Signature, AES, Encryption, Decryption

Notifications You must be signed in to change notification settings

SophiaTX/SophiaTX-Cryptography-ECC

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPM Build Status

Elliptic curve cryptography functions (ECC)

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

Import

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

Common API

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

Examples

ecc.privateToPublic(wif) === pubkey

Returns pubkey

isValidPublic

Parameters

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)
  • encoding string 'hex', 'binary' or 'base64' (optional, default 'hex')

Examples

ecc.sha256('hashme') === '02208b..'

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('sphtxjs-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/SophiaTX/sphtxjs-ecc.git
cd sphtxjs-ecc
npm install
npm run build_browser
# builds: ./dist/sphtxjs-ecc.js
# Verify release hash
<script src=sphtxjs-ecc.js></script>
var ecc = sphtxjs_ecc

ecc.randomKey().then(privateWif =>  {
  var pubkey = ecc.privateToPublic(privateWif)
  console.log(pubkey)
})

About

Elliptic curve cryptography functions: Private Key, Public Key, Signature, AES, Encryption, Decryption

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%