kbpgp
Version:
Keybase's PGP Implementation
93 lines (86 loc) • 2.73 kB
JavaScript
// Generated by IcedCoffeeScript 108.0.11
(function() {
var SRF, bufxor, genseed, iced, __iced_k, __iced_k_noop;
iced = require('iced-runtime');
__iced_k = __iced_k_noop = function() {};
SRF = require('../rand').SRF;
exports.bufxor = bufxor = function(b1, b2) {
var arr, c, i;
arr = (function() {
var _i, _len, _results;
_results = [];
for (i = _i = 0, _len = b1.length; _i < _len; i = ++_i) {
c = b1[i];
_results.push(c ^ b2[i]);
}
return _results;
})();
return Buffer.from(arr);
};
exports.genseed = genseed = function(_arg, cb) {
var err, len, rseed, seed, server_half, split, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
seed = _arg.seed, split = _arg.split, len = _arg.len, server_half = _arg.server_half;
err = rseed = null;
if (server_half == null) {
server_half = null;
}
(function(_this) {
return (function(__iced_k) {
if ((seed == null) || (split && (server_half == null))) {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/keybase/util.iced"
});
SRF().random_bytes(len, __iced_deferrals.defer({
assign_fn: (function() {
return function() {
return rseed = arguments[0];
};
})(),
lineno: 16
}));
__iced_deferrals._fulfill();
})(__iced_k);
} else {
return __iced_k();
}
});
})(this)((function(_this) {
return function() {
if ((seed != null) && seed.length !== len) {
err = new Error("Wrong seed length; need " + len + " bytes; got " + seed.length);
} else if ((seed != null) && (rseed != null)) {
server_half = rseed;
seed = bufxor(seed, rseed);
} else if ((seed != null) && (server_half != null)) {
seed = bufxor(seed, server_half);
} else if (seed == null) {
seed = rseed;
}
return cb(err, {
seed: seed,
server_half: server_half
});
};
})(this));
};
exports.prefix_signature_payload = function(prefix, payload) {
var v;
v = [];
if (prefix != null ? prefix.length : void 0) {
v.push(prefix);
v.push(Buffer.from([0]));
}
if (payload != null) {
v.push(payload);
}
if (v.length) {
return Buffer.concat(v);
} else {
return null;
}
};
}).call(this);