Check the reference implementation repository mirror for more details.
npm i shannon-bindings
const Shannon = require('shannon-bindings')
const shannon = new Shannon(key /* Buffer */)
shannon.nonce(nonce /* Buffer */)
shannon.decrypt(encryptedBuffer /* Buffer, decrypted in place */)
shannon.encrypt(buffer /* Buffer, encrypted in place */)
/* mac is calculated in-place */
const mac = Buffer.alloc(N)
shannon.mac(mac)