Nocturnal Pumpkin Maelstrom

    @oipwg/bitcoinjs-message

    2.2.0-beta.0 • Public • Published

    bitcoinjs-message

    NPM Package Build Status Dependency status

    js-standard-style

    Examples

    var bitcoin = require('bitcoinjs-lib') // v3.x.x
    var bitcoinMessage = require('bitcoinjs-message')

    sign(message, privateKey, compressed[, network.messagePrefix, sigOptions])

    • If you pass the sigOptions arg instead of messagePrefix it will dynamically replace.
    • sigOptions contains two attributes
      • segwitType should be one of 'p2sh(p2wpkh)' or 'p2wpkh'
      • extraEntropy will be used to create non-deterministic signatures using the RFC6979 extra entropy parameter. R value reuse is not an issue.

    Sign a Bitcoin message

    var keyPair = bitcoin.ECPair.fromWIF('5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss')
    var privateKey = keyPair.privateKey
    var message = 'This is an example of a signed message.'
     
    var signature = bitcoinMessage.sign(message, privateKey, keyPair.compressed)
    console.log(signature.toString('base64'))
    // => 'G9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='

    To produce non-deterministic signatures you can pass an extra option to sign()

    var { randomBytes } = require('crypto')
    var keyPair = bitcoin.ECPair.fromWIF('5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss')
    var privateKey = keyPair.privateKey
    var message = 'This is an example of a signed message.'
     
    var signature = bitcoinMessage.sign(message, privateKey, keyPair.compressed, { extraEntropy: randomBytes(32) })
    console.log(signature.toString('base64'))
    // => different (but valid) signature each time

    Sign a Bitcoin message (with segwit addresses)

    // P2SH(P2WPKH) address 'p2sh(p2wpkh)'
    var signature = bitcoinMessage.sign(message, privateKey, keyPair.compressed, { segwitType: 'p2sh(p2wpkh)' })
    console.log(signature.toString('base64'))
    // => 'I9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='
     
    // P2WPKH address 'p2wpkh'
    var signature = bitcoinMessage.sign(message, privateKey, keyPair.compressed, { segwitType: 'p2wpkh' })
    console.log(signature.toString('base64'))
    // => 'J9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='

    verify(message, address, signature[, network.messagePrefix])

    Verify a Bitcoin message

    var address = '1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN'
     
    console.log(bitcoinMessage.verify(message, address, signature))
    // => true

    LICENSE MIT

    Install

    npm i @oipwg/bitcoinjs-message

    DownloadsWeekly Downloads

    9

    Version

    2.2.0-beta.0

    License

    MIT

    Unpacked Size

    9.36 kB

    Total Files

    5

    Last publish

    Collaborators

    • iameddieyayaya
    • ohryan
    • bitspill
    • ostlerdev