Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var EC = require("elliptic").ec;
- var ec = new EC("secp256k1");
- var crypto = require('crypto');
- /**
- * Retrieve public key from a private key
- * @param {string} privateKey Private key from where extract the public key
- * @returns {string} Public key as hexadicemal
- */
- function getPublicKey (privateKey) {
- var pubKey = privateKey.getPublic()
- var publicKey = pubKey.encode('hex');
- return publicKey;
- }
- /**
- * Sign an message
- * @params {string} message Message to sign
- * @params {string} privateKey Private key to sign the message
- * @returns {Array} Array of integer from the signature of the message signed
- */
- function createSignature (message, privateKey) {
- var privKey = ec.keyFromPrivate(privateKey, 'hex')
- var signature = ec.sign(message, privKey)
- return signature.toDER()
- }
- /**
- * Check a signature with a public key
- * @params {string} message Message in the signature
- * @params {string} publicKey Public key used to check the signature
- * @params {Array} signature Array of integer from the signature serialized
- */
- function checkSignature (message, publicKey, signature) {
- var _publicKey = ec.keyFromPublic(publicKey, 'hex')
- var checkresult = _publicKey.verify(message, signature)
- return checkresult
- }
- /**
- * Hash a message with as SHA256
- * @params {string} message Message to hash
- * @returns {string} Hashed message
- */
- function hashMessage (message) {
- var message = new Buffer(message, 'utf8')
- var shaMsg = crypto.createHash('sha256').update(message).digest()
- return shaMsg
- }
- var message = hashMessage('test')
- var prvKey = '6fb63b7bdee06a3554e9b20881e982d8dd92e6be08f2797e29dff98fb473c1d1'
- var privateKey = ec.keyFromPrivate(prvKey, 'hex')
- var publicKey = getPublicKey(privateKey)
- var signature = createSignature(message, privateKey)
- var result = checkSignature(message, publicKey, signature)
- console.log(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement