2.1.0 • Published 6 years ago

@buckless/signed-number v2.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

signed-data

Sign data using HMAC-SHA1

Output format

Outputs both data and the signature in buffers

Signature is HMAC-SHA1 and is at least 4 bytes.

 +-----------------------------------------------------------+
 |                        |                                  |
 |                        |        HMAC-SHA1 signature       |
 |          Data          |                                  |
 |                        |         (4 to 20 bytes)          |
 |                        |                                  |
 +-----------------------------------------------------------+

Usage

const SignedData = require('@buckless/signed-data')

const inst = new SignedData(
  'secret', // signature key
  null, // max bytes (defaults to: auto)
  null, // hashing algorithm (defaults to : nodejs crypto sha1)
  [
    // some number (from 0 to 16777215)
    {
      name: 'number',
      default: '000000',
      size: 3,
      encode: number => number.toString(16),
      decode: data => parseInt(data, 16)
    }
  ]
)

const cipher = inst.encode(value)
const decipher = inst.decode(value)

// decipher === value

Export to string :

const SignedData = require('@buckless/signed-data')

const inst = new SignedData(
  'secret', // signature key
  null, // max bytes (defaults to: auto)
  null, // hashing algorithm (defaults to : nodejs sha1)
  [
    // some number (from 0 to 16777215)
    {
      name: 'number',
      default: '000000',
      size: 3,
      encode: number => number.toString(16),
      decode: data => parseInt(data, 16)
    }
  ]
)

const cipher = inst.encode(value).toString('hex')
const decipher = inst.decode(value) // decode can handle strings as well

// decipher === value

With more signature bytes:

const SignedData = require('@buckless/signed-data')

const inst = new SignedData(
  'secret', // signature key
  23, // (3 bytes of data + 20 bytes of signature)
  null, // hashing algorithm (defaults to : nodejs sha1)
  [
    // some number (from 0 to 16777215)
    {
      name: 'number',
      default: '000000',
      size: 3,
      encode: number => number.toString(16),
      decode: data => parseInt(data, 16)
    }
  ]
)

const cipher = inst.encode(value)
const decipher = inst.decode(value)

// cipher.length === 23
// decipher === value

With another SHA-1 algorithm (defaults to node's crypto module):

const SignedData = require('@buckless/signed-data')
const Rusha = require('rusha')

const inst = new SignedData(
  'secret', // signature key
  null, // max bytes (defaults to: auto)
  Rusha.createHash, // Rusha.createHash is a great sha1 library
  [
    // some number (from 0 to 16777215)
    {
      name: 'number',
      default: '000000',
      size: 3,
      encode: number => number.toString(16),
      decode: data => parseInt(data, 16)
    }
  ]
)

const cipher = inst.encode(value)
const decipher = inst.decode(value)

// decipher === value

API

constructor(secret: String, [maxBytes: Number], [hashAlgorithm: Function], [scheme: Array])
# Override secret from constructor
key(secret: String)
encode(data: Object)
decode(raw: Buffer|String)
2.1.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago