aws-cloudfront-sign
Version:
Utility module for signing AWS CloudFront URLs
35 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSignedCookies = exports.getSignedRTMPUrl = exports.getSignedUrl = void 0;
const node_url_1 = require("node:url");
const utils_1 = require("./utils");
function getSignedUrl(cfUrl, params) {
const privateKey = (0, utils_1.getPrivateKey)(params);
const policy = (0, utils_1.createPolicy)(cfUrl, (0, utils_1.getExpireTime)(params), (0, utils_1.getIpRange)(params));
const signature = (0, utils_1.createPolicySignature)(policy, privateKey);
const policyStr = Buffer.from(policy.toJSON()).toString('base64');
const parsedUrl = new node_url_1.URL(cfUrl);
parsedUrl.searchParams.set('Expires', `${policy.expireTime}`);
parsedUrl.searchParams.set('Policy', (0, utils_1.normalizeBase64)(policyStr));
parsedUrl.searchParams.set('Signature', (0, utils_1.normalizeBase64)(signature));
parsedUrl.searchParams.set('Key-Pair-Id', params.keypairId);
return parsedUrl.toString();
}
exports.getSignedUrl = getSignedUrl;
function getSignedRTMPUrl() {
throw new Error('Amazon CloudFront has deprecated RTMP distributions. For more information see https://repost.aws/questions/QUoUZgHZh7SEWlnQUPlBmVNQ/announcement-rtmp-support-discontinuing-on-december-31-2020');
}
exports.getSignedRTMPUrl = getSignedRTMPUrl;
function getSignedCookies(cfUrl, params) {
const privateKey = (0, utils_1.getPrivateKey)(params);
const policy = (0, utils_1.createPolicy)(cfUrl, (0, utils_1.getExpireTime)(params), (0, utils_1.getIpRange)(params));
const signature = (0, utils_1.createPolicySignature)(policy, privateKey);
const policyStr = Buffer.from(policy.toJSON()).toString('base64');
const cookies = {};
cookies['CloudFront-Policy'] = (0, utils_1.normalizeBase64)(policyStr);
cookies['CloudFront-Signature'] = (0, utils_1.normalizeBase64)(signature);
cookies['CloudFront-Key-Pair-Id'] = params.keypairId;
return cookies;
}
exports.getSignedCookies = getSignedCookies;
//# sourceMappingURL=cloudfront-signer.js.map