kbpgp
Version:
Keybase's PGP Implementation
85 lines (71 loc) • 1.91 kB
JavaScript
// Generated by IcedCoffeeScript 108.0.11
(function() {
var C, WordArray, algos, alloc, alloc_or_throw, decorate, k, make_hasher, make_streamer, streamers, triplesec, v, _lookup, _ref;
C = require('./const').openpgp;
triplesec = require('triplesec');
WordArray = triplesec.WordArray;
algos = triplesec.hash;
decorate = function(f, klass, name, type) {
f.type = type;
f.algname = name;
f.output_length = klass.output_size;
f.klass = klass;
return f;
};
make_hasher = function(klass, name, type) {
var f;
if (klass != null) {
f = function(x) {
return (new klass).bufhash(x);
};
return decorate(f, klass, name, type);
} else {
return null;
}
};
make_streamer = function(klass, name, type) {
return function() {
var obj, ret;
obj = new klass;
ret = function(buf) {
return obj.clone().finalize(buf != null ? WordArray.from_buffer(buf) : null).to_buffer();
};
ret.update = function(buf) {
if (buf != null) {
obj.update(WordArray.from_buffer(buf));
}
return this;
};
return decorate(ret, klass, name, type);
};
};
_lookup = {};
exports.streamers = streamers = {};
_ref = C.hash_algorithms;
for (k in _ref) {
v = _ref[k];
_lookup[v] = k;
exports[k] = make_hasher(algos[k], k, v);
streamers[k] = make_streamer(algos[k], k, v);
}
exports.alloc = alloc = function(typ) {
var klass, name, ret;
ret = null;
name = _lookup[typ];
if (name != null) {
klass = algos[name];
}
if (klass != null) {
ret = make_hasher(klass, name, typ);
}
return ret;
};
exports.alloc_or_throw = alloc_or_throw = function(typ) {
var ret;
ret = alloc(typ);
if (!ret) {
throw new Error("unknown hash type: " + typ);
}
return ret;
};
}).call(this);