fcoin/lib/bip70/pk.js
2016-11-18 23:05:04 -08:00

44 lines
1.1 KiB
JavaScript

/*!
* pk.js - public key algorithms for bcoin
* Copyright (c) 2016, Christopher Jeffrey (MIT License).
* https://github.com/bcoin-org/bcoin
*/
'use strict';
var pk = require('../crypto/pk');
exports._verify = function verify(hash, msg, sig, key) {
switch (key.alg) {
case 'dsa':
return pk.dsa.verify(hash, msg, sig, key.data, key.params);
case 'rsa':
return pk.rsa.verify(hash, msg, sig, key.data);
case 'ecdsa':
return pk.ecdsa.verify(key.curve, hash, msg, sig, key.data);
default:
throw new Error('Unsupported algorithm.');
}
};
exports.verify = function verify(hash, msg, sig, key) {
try {
return exports._verify(hash, msg, sig, key);
} catch (e) {
return false;
}
};
exports.sign = function sign(hash, msg, key) {
switch (key.alg) {
case 'dsa':
return pk.dsa.sign(hash, msg, key.data, key.params);
case 'rsa':
return pk.rsa.sign(hash, msg, key.data);
case 'ecdsa':
return pk.ecdsa.sign(key.curve, hash, msg, key.data);
default:
throw new Error('Unsupported algorithm.');
}
};