UNPKG

aws-cloudfront-sign

Version:

Utility module for signing AWS CloudFront URLs

29 lines 1.66 kB
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