const sodium = require('sodium-universal')

const addr = Buffer.alloc(6)
let i = 0

module.exports = hash

function num (ip) {
  let n = 0
  let c = 0
  while (i < ip.length && (c = ip.charCodeAt(i++)) !== 46) n = n * 10 + (c - 48)
  return n
}

function hash (ip, port, out = Buffer.allocUnsafe(32)) {
  i = 0
  addr[0] = num(ip)
  addr[1] = num(ip)
  addr[2] = num(ip)
  addr[3] = num(ip)
  addr[4] = port
  addr[5] = port >>> 8
  sodium.crypto_generichash(out, addr)
  return out
}