UNPKG

next

Version:

The React Framework

93 lines (92 loc) 2.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { arrayBufferToString: null, decrypt: null, encrypt: null, getActionEncryptionKey: null, stringToUint8Array: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { arrayBufferToString: function() { return arrayBufferToString; }, decrypt: function() { return decrypt; }, encrypt: function() { return encrypt; }, getActionEncryptionKey: function() { return getActionEncryptionKey; }, stringToUint8Array: function() { return stringToUint8Array; } }); const _invarianterror = require("../../shared/lib/invariant-error"); const _manifestssingleton = require("./manifests-singleton"); let __next_loaded_action_key; function arrayBufferToString(buffer) { const bytes = new Uint8Array(buffer); const len = bytes.byteLength; // @anonrig: V8 has a limit of 65535 arguments in a function. // For len < 65535, this is faster. // https://github.com/vercel/next.js/pull/56377#pullrequestreview-1656181623 if (len < 65535) { return String.fromCharCode.apply(null, bytes); } let binary = ''; for(let i = 0; i < len; i++){ binary += String.fromCharCode(bytes[i]); } return binary; } function stringToUint8Array(binary) { const len = binary.length; const arr = new Uint8Array(len); for(let i = 0; i < len; i++){ arr[i] = binary.charCodeAt(i); } return arr; } function encrypt(key, iv, data) { return crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, data); } function decrypt(key, iv, data) { return crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, data); } async function getActionEncryptionKey() { if (__next_loaded_action_key) { return __next_loaded_action_key; } const serverActionsManifest = (0, _manifestssingleton.getServerActionsManifest)(); const rawKey = process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY || serverActionsManifest.encryptionKey; if (rawKey === undefined) { throw Object.defineProperty(new _invarianterror.InvariantError('Missing encryption key for Server Actions'), "__NEXT_ERROR_CODE", { value: "E571", enumerable: false, configurable: true }); } __next_loaded_action_key = await crypto.subtle.importKey('raw', stringToUint8Array(atob(rawKey)), 'AES-GCM', true, [ 'encrypt', 'decrypt' ]); return __next_loaded_action_key; } //# sourceMappingURL=encryption-utils.js.map