kbpgp
Version:
Keybase's PGP Implementation
809 lines (766 loc) • 29.9 kB
JavaScript
// Generated by IcedCoffeeScript 108.0.11
(function() {
var BaseBurner, Burner, C, Compressed, CreationTime, Issuer, Literal, OnePassSignature, PKESK, SEIPD, SHA512, SRF, Signature, WordArray, clearsign, detachsign, dummy_key_id, encode, export_key_pgp, get_cipher, iced, make_esc, make_simple_literals, scrub_buffer, triplesec, unix_time, __iced_k, __iced_k_noop, _ref, _ref1, _ref2,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
iced = require('iced-runtime');
__iced_k = __iced_k_noop = function() {};
make_esc = require('iced-error').make_esc;
OnePassSignature = require('./packet/one_pass_sig').OnePassSignature;
_ref = require('./packet/signature'), Signature = _ref.Signature, CreationTime = _ref.CreationTime, Issuer = _ref.Issuer;
Compressed = require('./packet/compressed').Compressed;
Literal = require('./packet/literal').Literal;
unix_time = require('../util').unix_time;
SRF = require('../rand').SRF;
triplesec = require('triplesec');
_ref1 = require('../symmetric'), export_key_pgp = _ref1.export_key_pgp, get_cipher = _ref1.get_cipher;
scrub_buffer = triplesec.util.scrub_buffer;
WordArray = triplesec.WordArray;
_ref2 = require('./packet/sess'), SEIPD = _ref2.SEIPD, PKESK = _ref2.PKESK;
C = require('../const').openpgp;
SHA512 = require('../hash').SHA512;
encode = require('./armor').encode;
clearsign = require('./clearsign');
detachsign = require('./detachsign');
BaseBurner = require('./baseburner').BaseBurner;
dummy_key_id = Buffer.from((function() {
var _i, _results;
_results = [];
for (_i = 0; _i < 16; _i++) {
_results.push(0);
}
return _results;
})());
Burner = (function(_super) {
__extends(Burner, _super);
function Burner(_arg) {
var asp, encrypt_for, encryption_key, sign_with, signing_key;
this.literals = _arg.literals, this.opts = _arg.opts, sign_with = _arg.sign_with, encrypt_for = _arg.encrypt_for, signing_key = _arg.signing_key, encryption_key = _arg.encryption_key, asp = _arg.asp;
Burner.__super__.constructor.call(this, {
sign_with: sign_with,
encrypt_for: encrypt_for,
signing_key: signing_key,
encryption_key: encryption_key,
asp: asp
});
this.packets = [];
this.opts || (this.opts = {});
this.signed_payload = null;
}
Burner.prototype._frame_literals = function(cb) {
var esc, l, p, sp, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "Burner::_frame_literals");
sp = [];
(function(_this) {
return (function(__iced_k) {
var _i, _len, _ref3, _results, _while;
_ref3 = _this.literals;
_len = _ref3.length;
_i = 0;
_while = function(__iced_k) {
var _break, _continue, _next;
_break = __iced_k;
_continue = function() {
return iced.trampoline(function() {
++_i;
return _while(__iced_k);
});
};
_next = _continue;
if (!(_i < _len)) {
return _break();
} else {
l = _ref3[_i];
sp.push(l.to_signature_payload());
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._frame_literals"
});
l.write(esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return p = arguments[0];
};
})(),
lineno: 51
})));
__iced_deferrals._fulfill();
})(function() {
return _next(_this.packets.push(p));
});
}
};
_while(__iced_k);
});
})(this)((function(_this) {
return function() {
_this.signed_payload = Buffer.concat(sp);
return cb(null);
};
})(this));
};
Burner.prototype._sign = function(cb) {
var esc, fp, hasher, ops, ops_framed, sig, ___iced_passed_deferral, __iced_deferrals, __iced_k, _ref3, _ref4;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "Burner::_sign");
hasher = (_ref3 = (_ref4 = this.opts) != null ? _ref4.hasher : void 0) != null ? _ref3 : SHA512;
ops = new OnePassSignature({
sig_type: C.sig_types.binary_doc,
hasher: hasher,
sig_klass: this.signing_key.get_klass(),
key_id: this.signing_key.get_key_id(),
is_final: 1
});
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._sign"
});
ops.write(esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return ops_framed = arguments[0];
};
})(),
lineno: 68
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
var _ref5;
sig = new Signature({
type: C.sig_types.binary_doc,
hasher: hasher,
key: _this.signing_key.key,
hashed_subpackets: [new CreationTime(((_ref5 = _this.opts) != null ? _ref5.now : void 0) || unix_time())],
unhashed_subpackets: [new Issuer(_this.signing_key.get_key_id())]
});
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._sign"
});
_this.asp.progress({
what: 'sign',
i: 0,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 76
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._sign"
});
sig.write(_this.signed_payload, esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return fp = arguments[0];
};
})(),
lineno: 77
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._sign"
});
_this.asp.progress({
what: 'sign',
i: 1,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 78
})));
__iced_deferrals._fulfill();
})(function() {
_this.packets.unshift(ops_framed);
_this.packets.push(fp);
return cb(null);
});
});
});
};
})(this));
};
Burner.prototype.collect_packets = function() {
var ret;
ret = Buffer.concat(this.packets);
this.packets = [];
return ret;
};
Burner.prototype._compress = function(cb) {
var esc, inflated, opkt, pkt, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "Burner::_compress");
inflated = this.collect_packets();
pkt = new Compressed({
algo: C.compression.zlib,
inflated: inflated
});
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._compress"
});
_this.asp.progress({
what: 'compress',
i: 0,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 96
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._compress"
});
pkt.write(esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return opkt = arguments[0];
};
})(),
lineno: 97
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._compress"
});
_this.asp.progress({
what: 'compress',
i: 1,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 98
})));
__iced_deferrals._fulfill();
})(function() {
_this.packets.push(opkt);
return cb(null);
});
});
};
})(this));
};
Burner.prototype._make_session_key = function(cb) {
var ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
this._cipher_algo = C.symmetric_key_algorithms.AES256;
this._cipher_info = get_cipher(this._cipher_algo);
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._make_session_key"
});
SRF().random_bytes(_this._cipher_info.key_size, __iced_deferrals.defer({
assign_fn: (function(__slot_1) {
return function() {
return __slot_1._session_key = arguments[0];
};
})(_this),
lineno: 107
}));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
_this._cipher = new _this._cipher_info.klass(WordArray.from_buffer(_this._session_key));
return cb(null);
};
})(this));
};
Burner.prototype.scrub = function() {
if (this._cipher != null) {
this._cipher.scrub();
}
if (this._session_key != null) {
return scrub_buffer(this._session_key);
}
};
Burner.prototype._encrypt_session_key_once = function(encryption_key, cb) {
var ekey, esc, fingerprint, key_id, payload, pkesk, pkt, pub_k, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "_encrypt_session_key_once");
payload = export_key_pgp(this._cipher_algo, this._session_key);
pub_k = encryption_key.key;
fingerprint = encryption_key.get_fingerprint();
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
_this.asp.progress({
what: 'session key encrypt',
i: 0,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 124
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
pub_k.pad_and_encrypt(payload, {
fingerprint: fingerprint
}, esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return ekey = arguments[0];
};
})(),
lineno: 125
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
_this.asp.progress({
what: 'session key encrypt',
i: 1,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 126
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
if (_this.opts.hide) {
key_id = dummy_key_id;
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
_this.asp.progress({
what: 'hide encryption',
i: 0,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 129
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
var _ref3, _ref4;
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
ekey.hide({
max: (_ref3 = _this.opts.hide) != null ? _ref3.max : void 0,
slosh: (_ref4 = _this.opts.hide) != null ? _ref4.slosh : void 0,
key: pub_k
}, esc(__iced_deferrals.defer({
lineno: 130
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
_this.asp.progress({
what: 'hide encryption',
i: 1,
total: 1
}, esc(__iced_deferrals.defer({
lineno: 131
})));
__iced_deferrals._fulfill();
})(__iced_k);
});
});
} else {
return __iced_k(key_id = encryption_key.get_key_id());
}
})(function() {
pkt = new PKESK({
crypto_type: pub_k.type,
key_id: key_id,
ekey: ekey
});
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key_once"
});
pkt.write(esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return pkesk = arguments[0];
};
})(),
lineno: 139
})));
__iced_deferrals._fulfill();
})(function() {
return cb(null, pkesk);
});
});
});
});
};
})(this));
};
Burner.prototype._encrypt_session_key = function(cb) {
var esc, k, pkesk, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "_encrypt_session_key");
this._pkesks = [];
(function(_this) {
return (function(__iced_k) {
var _i, _len, _ref3, _results, _while;
_ref3 = _this.encryption_keys;
_len = _ref3.length;
_i = 0;
_while = function(__iced_k) {
var _break, _continue, _next;
_break = __iced_k;
_continue = function() {
return iced.trampoline(function() {
++_i;
return _while(__iced_k);
});
};
_next = _continue;
if (!(_i < _len)) {
return _break();
} else {
k = _ref3[_i];
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_session_key"
});
_this._encrypt_session_key_once(k, esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return pkesk = arguments[0];
};
})(),
lineno: 148
})));
__iced_deferrals._fulfill();
})(function() {
return _next(_this._pkesks.push(pkesk));
});
}
};
_while(__iced_k);
});
})(this)((function(_this) {
return function() {
return cb(null);
};
})(this));
};
Burner.prototype._encrypt_payload = function(cb) {
var asp, esc, pkt, plaintext, prefixrandom, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "Burner::_encrypt_payload");
plaintext = this.collect_packets();
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_payload"
});
SRF().random_bytes(_this._cipher.blockSize, __iced_deferrals.defer({
assign_fn: (function() {
return function() {
return prefixrandom = arguments[0];
};
})(),
lineno: 157
}));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
pkt = new SEIPD({});
asp = _this.asp.section('encrypt payload');
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_payload"
});
pkt.encrypt({
cipher: _this._cipher,
plaintext: plaintext,
prefixrandom: prefixrandom,
asp: asp
}, esc(__iced_deferrals.defer({
lineno: 160
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt_payload"
});
pkt.write(esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return pkt = arguments[0];
};
})(),
lineno: 161
})));
__iced_deferrals._fulfill();
})(function() {
scrub_buffer(plaintext);
_this.packets = _this._pkesks.concat([pkt]);
return cb(null);
});
});
};
})(this));
};
Burner.prototype._encrypt = function(cb) {
var esc, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "Burner::_encrypt");
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt"
});
_this._make_session_key(esc(__iced_deferrals.defer({
lineno: 170
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt"
});
_this._encrypt_session_key(esc(__iced_deferrals.defer({
lineno: 171
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner._encrypt"
});
_this._encrypt_payload(esc(__iced_deferrals.defer({
lineno: 172
})));
__iced_deferrals._fulfill();
})(function() {
return cb(null);
});
});
};
})(this));
};
Burner.prototype.scrub = function() {};
Burner.prototype.burn = function(cb) {
var esc, output, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "Burner::burn");
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner.burn"
});
_this._find_keys(esc(__iced_deferrals.defer({
lineno: 183
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner.burn"
});
_this._frame_literals(esc(__iced_deferrals.defer({
lineno: 184
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
if (_this.signing_key != null) {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner.burn"
});
_this._sign(esc(__iced_deferrals.defer({
lineno: 186
})));
__iced_deferrals._fulfill();
})(__iced_k);
} else {
return __iced_k();
}
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner.burn"
});
_this._compress(esc(__iced_deferrals.defer({
lineno: 187
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
if (_this.encryption_keys != null) {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "Burner.burn"
});
_this._encrypt(esc(__iced_deferrals.defer({
lineno: 189
})));
__iced_deferrals._fulfill();
})(__iced_k);
} else {
return __iced_k();
}
})(function() {
output = Buffer.concat(_this.packets);
return cb(null, output);
});
});
});
});
};
})(this));
};
return Burner;
})(BaseBurner);
exports.Burner = Burner;
exports.make_simple_literals = make_simple_literals = function(msg) {
return [
new Literal({
data: Buffer.from(msg),
format: C.literal_formats.utf8,
date: unix_time()
})
];
};
exports.clearsign = clearsign.sign;
exports.detachsign = detachsign.sign;
exports.burn = function(_arg, cb) {
var aout, asp, b, encrypt_for, encryption_key, err, literals, msg, opts, raw, sign_with, signing_key, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
msg = _arg.msg, literals = _arg.literals, sign_with = _arg.sign_with, encrypt_for = _arg.encrypt_for, signing_key = _arg.signing_key, encryption_key = _arg.encryption_key, asp = _arg.asp, opts = _arg.opts;
if ((msg != null) && (literals == null)) {
literals = make_simple_literals(msg);
}
b = new Burner({
literals: literals,
sign_with: sign_with,
encrypt_for: encrypt_for,
signing_key: signing_key,
encryption_key: encryption_key,
asp: asp,
opts: opts
});
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/kbpgp/src/openpgp/burner.iced",
funcname: "burn"
});
b.burn(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
err = arguments[0];
return raw = arguments[1];
};
})(),
lineno: 249
}));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
b.scrub();
if ((typeof raw !== "undefined" && raw !== null) && (typeof err === "undefined" || err === null)) {
aout = encode(C.message_types.generic, raw);
}
return cb(err, aout, raw);
};
})(this));
};
}).call(this);