@3846masa/http-signature
Version:
Create / Verify HTTP Signatures (https://tools.ietf.org/html/draft-cavage-http-signatures-10)
23 lines • 2.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const crypto_1 = __importDefault(require("crypto"));
const Headers_1 = require("./Headers");
const createSignatureString_1 = require("./createSignatureString");
function verifySignature({ signature, method, pathname, publicKey, headers: rawHeaders, }) {
const headers = new Headers_1.Headers({
...rawHeaders,
'(request-target)': `${method.toLowerCase()} ${pathname}`,
});
const properties = signature.headers.split(/\s+/g).map((p) => p.trim());
const verify = crypto_1.default.createVerify('RSA-SHA256');
verify.update(createSignatureString_1.createSignatureString({ headers, properties }));
if (!verify.verify(publicKey, signature.signature, 'base64')) {
return false;
}
return true;
}
exports.verifySignature = verifySignature;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5U2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZlcmlmeVNpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qix1Q0FBb0M7QUFDcEMsbUVBQWdFO0FBWWhFLFNBQWdCLGVBQWUsQ0FBQyxFQUM5QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUFFLFVBQVUsR0FDSTtJQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUM7UUFDMUIsR0FBRyxVQUFVO1FBQ2Isa0JBQWtCLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksUUFBUSxFQUFFO0tBQzFELENBQUMsQ0FBQztJQUVILE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFeEUsTUFBTSxNQUFNLEdBQUcsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyw2Q0FBcUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUU7UUFDNUQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXJCRCwwQ0FxQkMifQ==