@3846masa/http-signature
Version:
Create / Verify HTTP Signatures (https://tools.ietf.org/html/draft-cavage-http-signatures-10)
30 lines • 2.42 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 createSignature({ method, pathname, properties, privateKey, algorithm, keyId, headers: rawHeaders, }) {
const headers = new Headers_1.Headers({
...rawHeaders,
'(request-target)': `${method.toLowerCase()} ${pathname}`,
});
const sign = crypto_1.default.createSign('RSA-SHA256');
sign.update(createSignatureString_1.createSignatureString({ headers, properties }));
const result = {
keyId,
algorithm,
headers: properties.join('\x20'),
signature: sign.sign(privateKey).toString('base64'),
};
return [
`keyId="${result.keyId}"`,
`algorithm="${result.algorithm}"`,
`headers="${result.headers}"`,
`signature="${result.signature}"`,
].join(',');
}
exports.createSignature = createSignature;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NyZWF0ZVNpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1Qix1Q0FBb0M7QUFFcEMsbUVBQWdFO0FBYWhFLFNBQWdCLGVBQWUsQ0FBQyxFQUM5QixNQUFNLEVBQ04sUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULEtBQUssRUFDTCxPQUFPLEVBQUUsVUFBVSxHQUNJO0lBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQztRQUMxQixHQUFHLFVBQVU7UUFDYixrQkFBa0IsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxRQUFRLEVBQUU7S0FDMUQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyw2Q0FBcUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxNQUFNLEdBQW9CO1FBQzlCLEtBQUs7UUFDTCxTQUFTO1FBQ1QsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7S0FDcEQsQ0FBQztJQUVGLE9BQU87UUFDTCxVQUFVLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDekIsY0FBYyxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2pDLFlBQVksTUFBTSxDQUFDLE9BQU8sR0FBRztRQUM3QixjQUFjLE1BQU0sQ0FBQyxTQUFTLEdBQUc7S0FDbEMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxDQUFDO0FBOUJELDBDQThCQyJ9