-
Notifications
You must be signed in to change notification settings - Fork 1
/
crypto.js
29 lines (22 loc) · 779 Bytes
/
crypto.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const { randomBytes } = require('crypto')
const secp256k1 = require('secp256k1')
const fs = require('fs');
// or require('secp256k1/elliptic')
// if you want to use pure js implementation in node
// generate message to sign
const msg = randomBytes(32)
// generate privKey
let privKey
do {
privKey = randomBytes(32)
} while (!secp256k1.privateKeyVerify(privKey))
fs.writeFileSync('private.key',privKey);
importedKey = fs.readFileSync('private.key')
// get the public key in a compressed format
const pubKey = secp256k1.publicKeyCreate(importedKey, false)
console.log('pubKey: ' pubKey.toString('hex'));
// sign the message
const sigObj = secp256k1.sign(msg, importedKey)
// verify the signature
console.log(secp256k1.verify(msg, sigObj.signature, pubKey))
// => true