mirror of
https://github.com/thewesker/bug-em.git
synced 2025-12-21 12:31:05 -05:00
lol
This commit is contained in:
56
node_modules/http-signature/lib/verify.js
generated
vendored
Normal file
56
node_modules/http-signature/lib/verify.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
// Copyright 2015 Joyent, Inc.
|
||||
|
||||
var assert = require('assert-plus');
|
||||
var crypto = require('crypto');
|
||||
|
||||
|
||||
|
||||
///--- Exported API
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Verify RSA/DSA signature against public key. You are expected to pass in
|
||||
* an object that was returned from `parse()`.
|
||||
*
|
||||
* @param {Object} parsedSignature the object you got from `parse`.
|
||||
* @param {String} pubkey RSA/DSA private key PEM.
|
||||
* @return {Boolean} true if valid, false otherwise.
|
||||
* @throws {TypeError} if you pass in bad arguments.
|
||||
*/
|
||||
verifySignature: function verifySignature(parsedSignature, pubkey) {
|
||||
assert.object(parsedSignature, 'parsedSignature');
|
||||
assert.string(pubkey, 'pubkey');
|
||||
|
||||
var alg = parsedSignature.algorithm.match(/^(RSA|DSA)-(\w+)/);
|
||||
if (!alg || alg.length !== 3)
|
||||
throw new TypeError('parsedSignature: unsupported algorithm ' +
|
||||
parsedSignature.algorithm);
|
||||
|
||||
var verify = crypto.createVerify(alg[0]);
|
||||
verify.update(parsedSignature.signingString);
|
||||
return verify.verify(pubkey, parsedSignature.params.signature, 'base64');
|
||||
},
|
||||
|
||||
/**
|
||||
* Verify HMAC against shared secret. You are expected to pass in an object
|
||||
* that was returned from `parse()`.
|
||||
*
|
||||
* @param {Object} parsedSignature the object you got from `parse`.
|
||||
* @param {String} secret HMAC shared secret.
|
||||
* @return {Boolean} true if valid, false otherwise.
|
||||
* @throws {TypeError} if you pass in bad arguments.
|
||||
*/
|
||||
verifyHMAC: function verifyHMAC(parsedSignature, secret) {
|
||||
assert.object(parsedSignature, 'parsedHMAC');
|
||||
assert.string(secret, 'secret');
|
||||
|
||||
var alg = parsedSignature.algorithm.match(/^HMAC-(\w+)/);
|
||||
if (!alg || alg.length !== 2)
|
||||
throw new TypeError('parsedSignature: unsupported algorithm ' +
|
||||
parsedSignature.algorithm);
|
||||
|
||||
var hmac = crypto.createHmac(alg[1].toUpperCase(), secret);
|
||||
hmac.update(parsedSignature.signingString);
|
||||
return (hmac.digest('base64') === parsedSignature.params.signature);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user