UNPKG

@signalapp/mock-server

Version:
53 lines (52 loc) 2.19 kB
"use strict"; // Copyright 2026 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.IcePasswordSchema = exports.ICE_PASSWORD_SIZE = exports.IceUsernameFragmentSchema = exports.ICE_USERNAME_FRAGMENT_SIZE = void 0; exports.getRandomIceUsernameFragment = getRandomIceUsernameFragment; exports.getIceUsernames = getIceUsernames; exports.getClientIceUsername = getClientIceUsername; exports.getRandomIcePassword = getRandomIcePassword; const node_assert_1 = __importDefault(require("node:assert")); const node_crypto_1 = require("node:crypto"); const zod_1 = __importDefault(require("zod")); function getRandomBase64String(size) { (0, node_assert_1.default)(size % 4 === 0, 'Must be multiple of 4'); const byteLength = (size * 6) / 8; const bytes = (0, node_crypto_1.randomBytes)(byteLength); const base64 = bytes.toString('base64'); (0, node_assert_1.default)(base64.length === size, 'Must be exact length'); return base64; } exports.ICE_USERNAME_FRAGMENT_SIZE = 4; function getRandomIceUsernameFragment() { return getRandomBase64String(exports.ICE_USERNAME_FRAGMENT_SIZE); } exports.IceUsernameFragmentSchema = zod_1.default .string() .min(4) .max(256) .transform((input) => input); function toIceUsername(a, b) { return `${a}:${b}`; } function getIceUsernames(params) { const serverIceUsername = toIceUsername(params.serverIceUsernameFragment, params.clientIceUsernameFragment); const clientIceUsername = toIceUsername(params.clientIceUsernameFragment, params.serverIceUsernameFragment); return { serverIceUsername, clientIceUsername }; } function getClientIceUsername(params) { return `${params.clientIceUsernameFragment}:${params.serverIceUsernameFragment}`; } exports.ICE_PASSWORD_SIZE = 32; function getRandomIcePassword() { return getRandomBase64String(exports.ICE_PASSWORD_SIZE); } exports.IcePasswordSchema = zod_1.default .string() .min(22) .max(256) .transform((input) => input);