node-aes-cmac
Version:
A pure Node.js implementation of the AES-CMAC algorithm (NIST 800-38B / RFC 4493).
23 lines (19 loc) • 752 B
JavaScript
var aesCmac = require('./lib/aes-cmac.js').aesCmac;
exports.aesCmac = function (key, message, options) {
validateKey(key);
var messageBuffer = validateMessage(message);
options = options ? options : {};
var result = aesCmac(key, messageBuffer);
return options.returnAsBuffer ? result : result.toString('hex');
};
function validateKey(key) {
if ((typeof key !== 'string') && !(key instanceof Buffer)) {
throw new Error('Keys must be provided as a Buffer or string.');
}
}
function validateMessage(message) {
if ((typeof message !== 'string') && !(message instanceof Buffer)) {
throw new Error('The message must be provided as a string or Buffer.');
}
return (message instanceof Buffer) ? message : new Buffer(message);
}