1234567891011121314151617181920212223242526272829303132333435363738 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const crypto = require("crypto");
- const util_1 = require("util");
- const dsa_digest_js_1 = require("./dsa_digest.js");
- const node_key_js_1 = require("./node_key.js");
- const sign_js_1 = require("./sign.js");
- const get_sign_verify_key_js_1 = require("./get_sign_verify_key.js");
- const flags_js_1 = require("./flags.js");
- let oneShotVerify;
- if (crypto.verify.length > 4 && flags_js_1.oneShotCallback) {
- oneShotVerify = (0, util_1.promisify)(crypto.verify);
- }
- else {
- oneShotVerify = crypto.verify;
- }
- const verify = async (alg, key, signature, data) => {
- const keyObject = (0, get_sign_verify_key_js_1.default)(alg, key, 'verify');
- if (alg.startsWith('HS')) {
- const expected = await (0, sign_js_1.default)(alg, keyObject, data);
- const actual = signature;
- try {
- return crypto.timingSafeEqual(actual, expected);
- }
- catch {
- return false;
- }
- }
- const algorithm = (0, dsa_digest_js_1.default)(alg);
- const keyInput = (0, node_key_js_1.default)(alg, keyObject);
- try {
- return await oneShotVerify(algorithm, data, keyInput, signature);
- }
- catch {
- return false;
- }
- };
- exports.default = verify;
|