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',
null,
null,
[
{
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)
Export to string :
const SignedData = require('@buckless/signed-data')
const inst = new SignedData({
'secret',
null,
null,
[
{
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)
With more signature bytes:
const SignedData = require('@buckless/signed-data')
const inst = new SignedData({
'secret',
23,
null,
[
{
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)
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',
null,
Rusha.createHash,
[
{
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)
API
constructor(secret: String, [maxBytes: Number], [hashAlgorithm: Function], [scheme: Array])
encode(data: Object)
decode(raw: Buffer|String)