Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. var EC = require("elliptic").ec;
  2. var ec = new EC("secp256k1");
  3. var crypto = require('crypto');
  4.  
  5. /**
  6. * Retrieve public key from a private key
  7. * @param {string} privateKey Private key from where extract the public key
  8. * @returns {string} Public key as hexadicemal
  9. */
  10. function getPublicKey (privateKey) {
  11. var pubKey = privateKey.getPublic()
  12. var publicKey = pubKey.encode('hex');
  13. return publicKey;
  14. }
  15.  
  16. /**
  17. * Sign an message
  18. * @params {string} message Message to sign
  19. * @params {string} privateKey Private key to sign the message
  20. * @returns {Array} Array of integer from the signature of the message signed
  21. */
  22. function createSignature (message, privateKey) {
  23. var privKey = ec.keyFromPrivate(privateKey, 'hex')
  24. var signature = ec.sign(message, privKey)
  25. return signature.toDER()
  26. }
  27.  
  28. /**
  29. * Check a signature with a public key
  30. * @params {string} message Message in the signature
  31. * @params {string} publicKey Public key used to check the signature
  32. * @params {Array} signature Array of integer from the signature serialized
  33. */
  34. function checkSignature (message, publicKey, signature) {
  35. var _publicKey = ec.keyFromPublic(publicKey, 'hex')
  36. var checkresult = _publicKey.verify(message, signature)
  37. return checkresult
  38. }
  39.  
  40. /**
  41. * Hash a message with as SHA256
  42. * @params {string} message Message to hash
  43. * @returns {string} Hashed message
  44. */
  45. function hashMessage (message) {
  46. var message = new Buffer(message, 'utf8')
  47. var shaMsg = crypto.createHash('sha256').update(message).digest()
  48. return shaMsg
  49. }
  50.  
  51. var message = hashMessage('test')
  52. var prvKey = '6fb63b7bdee06a3554e9b20881e982d8dd92e6be08f2797e29dff98fb473c1d1'
  53. var privateKey = ec.keyFromPrivate(prvKey, 'hex')
  54. var publicKey = getPublicKey(privateKey)
  55.  
  56. var signature = createSignature(message, privateKey)
  57. var result = checkSignature(message, publicKey, signature)
  58.  
  59. console.log(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement