pzp-db/lib/msg-v4/represent-data.js

24 lines
565 B
JavaScript

const crypto = require('crypto')
const b4a = require('b4a')
const base58 = require('bs58')
// @ts-ignore
const stringify = require('json-canon')
/**
* @typedef {Buffer | Uint8Array} B4A
*/
/**
* @param {any} data
* @returns {[string, number]}
*/
function representData(data) {
const dataBuf = b4a.from(stringify(data), 'utf8')
const fullHash = crypto.createHash('sha512').update(dataBuf).digest()
const dataHash = base58.encode(fullHash.subarray(0, 32))
const dataSize = dataBuf.length
return [dataHash, dataSize]
}
module.exports = representData