UNPKG

aws-cloudfront-sign

Version:

Utility module for signing AWS CloudFront URLs

58 lines 2.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.assert = exports.getPrivateKey = exports.getIpRange = exports.getExpireTime = exports.createPolicySignature = exports.createPolicy = exports.normalizeBase64 = void 0; const fs_1 = require("fs"); const crypto_1 = require("crypto"); const canned_policy_1 = __importDefault(require("./canned-policy")); function normalizeBase64(str) { return str .replace(/\+/g, '-') .replace(/=/g, '_') .replace(/\//g, '~'); } exports.normalizeBase64 = normalizeBase64; function createPolicy(cfUrl, expireTime, ipRange) { const defaultExpireTime = Math.round(Date.now() + 1800000); expireTime = expireTime || defaultExpireTime; return new canned_policy_1.default(cfUrl, expireTime, ipRange); } exports.createPolicy = createPolicy; function createPolicySignature(policy, privateKey) { const sign = (0, crypto_1.createSign)('RSA-SHA1'); sign.update(policy.toJSON()); return sign.sign(privateKey, 'base64'); } exports.createPolicySignature = createPolicySignature; function getExpireTime(opts) { return +opts.expireTime || null; } exports.getExpireTime = getExpireTime; function getIpRange(opts) { return opts.ipRange || null; } exports.getIpRange = getIpRange; function getPrivateKey(params) { let privateKeyString = params.privateKeyString; let pem; if (params.privateKeyPath) { pem = (0, fs_1.readFileSync)(params.privateKeyPath); privateKeyString = pem.toString('ascii'); } const newLinePattern = /\r|\n/; const lineBreakExists = newLinePattern.test(privateKeyString); if (!lineBreakExists) { throw new Error('Invalid private key string, must include line breaks'); } return privateKeyString; } exports.getPrivateKey = getPrivateKey; function assert(assertion, msg) { if (!assertion) { throw new Error(msg); } } exports.assert = assert; //# sourceMappingURL=utils.js.map