/* eslint-disable camelcase */ const assert = require('nanoassert') const Poly1305 = require('./internal/poly1305') const { crypto_verify_16 } = require('./crypto_verify') const crypto_onetimeauth_BYTES = 16 const crypto_onetimeauth_KEYBYTES = 32 const crypto_onetimeauth_PRIMITIVE = 'poly1305' module.exports = { crypto_onetimeauth, crypto_onetimeauth_verify, crypto_onetimeauth_BYTES, crypto_onetimeauth_KEYBYTES, crypto_onetimeauth_PRIMITIVE } function crypto_onetimeauth (mac, msg, key) { assert(mac.byteLength === crypto_onetimeauth_BYTES, "mac must be 'crypto_onetimeauth_BYTES' bytes") assert(msg.byteLength != null, 'msg must be buffer') assert(key.byteLength === crypto_onetimeauth_KEYBYTES, "key must be 'crypto_onetimeauth_KEYBYTES' bytes") var s = new Poly1305(key) s.update(msg, 0, msg.byteLength) s.finish(mac, 0) } function crypto_onetimeauth_verify (mac, msg, key) { assert(mac.byteLength === crypto_onetimeauth_BYTES, "mac must be 'crypto_onetimeauth_BYTES' bytes") assert(msg.byteLength != null, 'msg must be buffer') assert(key.byteLength === crypto_onetimeauth_KEYBYTES, "key must be 'crypto_onetimeauth_KEYBYTES' bytes") var tmp = new Uint8Array(16) crypto_onetimeauth(tmp, msg, key) return crypto_verify_16(mac, 0, tmp, 0) }