aws-cloudfront-sign
Version:
Utility module for signing AWS CloudFront URLs
29 lines • 1.66 kB
JavaScript
import { URL } from 'node:url';
import { getPrivateKey, createPolicy, createPolicySignature, getExpireTime, getIpRange, normalizeBase64 } from './utils';
export function getSignedUrl(cfUrl, params) {
const privateKey = getPrivateKey(params);
const policy = createPolicy(cfUrl, getExpireTime(params), getIpRange(params));
const signature = createPolicySignature(policy, privateKey);
const policyStr = Buffer.from(policy.toJSON()).toString('base64');
const parsedUrl = new URL(cfUrl);
parsedUrl.searchParams.set('Expires', `${policy.expireTime}`);
parsedUrl.searchParams.set('Policy', normalizeBase64(policyStr));
parsedUrl.searchParams.set('Signature', normalizeBase64(signature));
parsedUrl.searchParams.set('Key-Pair-Id', params.keypairId);
return parsedUrl.toString();
}
export 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');
}
export function getSignedCookies(cfUrl, params) {
const privateKey = getPrivateKey(params);
const policy = createPolicy(cfUrl, getExpireTime(params), getIpRange(params));
const signature = createPolicySignature(policy, privateKey);
const policyStr = Buffer.from(policy.toJSON()).toString('base64');
const cookies = {};
cookies['CloudFront-Policy'] = normalizeBase64(policyStr);
cookies['CloudFront-Signature'] = normalizeBase64(signature);
cookies['CloudFront-Key-Pair-Id'] = params.keypairId;
return cookies;
}
//# sourceMappingURL=cloudfront-signer.js.map