iota.lib.js
Version:
Javascript Library for IOTA
27 lines (23 loc) • 912 B
JavaScript
var Curl = require("../curl/curl");
var Converter = require("../converter/converter");
var HMAC_ROUNDS = 27;
function hmac(key) {
this._key = Converter.trits(key);
}
hmac.prototype.addHMAC = function(bundle) {
var curl = new Curl(HMAC_ROUNDS);
var key = this._key;
for(var i = 0; i < bundle.bundle.length; i++) {
if (bundle.bundle[i].value > 0) {
var bundleHashTrits = Converter.trits(bundle.bundle[i].bundle);
var hmac = new Int8Array(243);
curl.initialize();
curl.absorb(key, 0, key.length);
curl.absorb(bundleHashTrits, 0, bundleHashTrits.length);
curl.squeeze(hmac, 0, hmac.length);
var hmacTrytes = Converter.trytes(hmac);
bundle.bundle[i].signatureMessageFragment = hmacTrytes + bundle.bundle[i].signatureMessageFragment.substring(81, 2187);
}
}
}
module.exports = hmac;