UNPKG

crypti-cli

Version:

Crypti DApps Command Line Interface

51 lines (41 loc) 1.31 kB
var nacl_factory = require('js-nacl'); var crypto = require('crypto-browserify'); var bignum = require('browserify-bignum'); var nacl = nacl_factory.instantiate(); var randomString = function (max) { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789#$%^&*@"; for (var i = 0; i < max; i++) { text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; } var keypair = function (secret) { var hash = crypto.createHash('sha256').update(secret, 'utf8').digest(); var kp = nacl.crypto_sign_keypair_from_seed(hash); var keypair = { publicKey: new Buffer(kp.signPk).toString('hex'), privateKey: new Buffer(kp.signSk).toString('hex') } return keypair; } var sign = function (keypair, data) { var hash = crypto.createHash('sha256').update(data).digest(); var signature = nacl.crypto_sign_detached(hash, new Buffer(keypair.privateKey, 'hex')); return new Buffer(signature).toString('hex'); } var getId = function (data) { var hash = crypto.createHash('sha256').update(data).digest(); var temp = new Buffer(8); for (var i = 0; i < 8; i++) { temp[i] = hash[7 - i]; } var id = bignum.fromBuffer(temp).toString(); return id; } module.exports = { keypair: keypair, sign: sign, getId: getId, randomString: randomString }