| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | 
							- 'use strict';
 
- var Buffer = require('safe-buffer').Buffer;
 
- var createHash = require('create-hash');
 
- var stream = require('readable-stream');
 
- var inherits = require('inherits');
 
- var sign = require('./sign');
 
- var verify = require('./verify');
 
- var algorithms = require('./algorithms.json');
 
- Object.keys(algorithms).forEach(function (key) {
 
-   algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');
 
-   algorithms[key.toLowerCase()] = algorithms[key];
 
- });
 
- function Sign(algorithm) {
 
-   stream.Writable.call(this);
 
-   var data = algorithms[algorithm];
 
-   if (!data) { throw new Error('Unknown message digest'); }
 
-   this._hashType = data.hash;
 
-   this._hash = createHash(data.hash);
 
-   this._tag = data.id;
 
-   this._signType = data.sign;
 
- }
 
- inherits(Sign, stream.Writable);
 
- Sign.prototype._write = function _write(data, _, done) {
 
-   this._hash.update(data);
 
-   done();
 
- };
 
- Sign.prototype.update = function update(data, enc) {
 
-   this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
 
-   return this;
 
- };
 
- Sign.prototype.sign = function signMethod(key, enc) {
 
-   this.end();
 
-   var hash = this._hash.digest();
 
-   var sig = sign(hash, key, this._hashType, this._signType, this._tag);
 
-   return enc ? sig.toString(enc) : sig;
 
- };
 
- function Verify(algorithm) {
 
-   stream.Writable.call(this);
 
-   var data = algorithms[algorithm];
 
-   if (!data) { throw new Error('Unknown message digest'); }
 
-   this._hash = createHash(data.hash);
 
-   this._tag = data.id;
 
-   this._signType = data.sign;
 
- }
 
- inherits(Verify, stream.Writable);
 
- Verify.prototype._write = function _write(data, _, done) {
 
-   this._hash.update(data);
 
-   done();
 
- };
 
- Verify.prototype.update = function update(data, enc) {
 
-   this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
 
-   return this;
 
- };
 
- Verify.prototype.verify = function verifyMethod(key, sig, enc) {
 
-   var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;
 
-   this.end();
 
-   var hash = this._hash.digest();
 
-   return verify(sigBuffer, hash, key, this._signType, this._tag);
 
- };
 
- function createSign(algorithm) {
 
-   return new Sign(algorithm);
 
- }
 
- function createVerify(algorithm) {
 
-   return new Verify(algorithm);
 
- }
 
- module.exports = {
 
-   Sign: createSign,
 
-   Verify: createVerify,
 
-   createSign: createSign,
 
-   createVerify: createVerify
 
- };
 
 
  |