UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

109 lines (108 loc) 3.94 kB
"use strict"; /** * Deterministic key generation for testing */ Object.defineProperty(exports, "__esModule", { value: true }); exports.generateDeterministicKeyPair = generateDeterministicKeyPair; exports.generateTestIdentity = generateTestIdentity; exports.getPredefinedTestIdentities = getPredefinedTestIdentities; exports.generateTestNonce = generateTestNonce; exports.generateTestSessionId = generateTestSessionId; const crypto_1 = require("crypto"); const test_1 = require("@kya-os/contracts/test"); const test_environment_1 = require("./test-environment"); /** * Generate deterministic Ed25519 key pair from seed */ function generateDeterministicKeyPair(seed) { (0, test_environment_1.ensureTestMode)(); try { // Create deterministic seed by hashing the input const hash = (0, crypto_1.createHash)("sha256").update(seed).digest(); // For testing, we'll use the hash as a mock private key // In a real implementation, this would use proper Ed25519 key derivation const privateKey = hash.toString("base64"); // Generate a mock public key by hashing the private key const publicKey = (0, crypto_1.createHash)("sha256") .update(privateKey) .digest() .toString("base64"); return { privateKey, publicKey, }; } catch (error) { throw new Error(`${test_1.TEST_ERROR_CODES.DETERMINISTIC_KEY_GENERATION_FAILED}: ${error instanceof Error ? error.message : "Unknown error"}`); } } /** * Generate test identity with deterministic keys */ function generateTestIdentity(testName, options = {}) { (0, test_environment_1.ensureTestMode)(); const seed = options.seed || (0, test_environment_1.getCurrentTestSeed)(testName); const did = options.did || test_1.TEST_DIDS.AGENT_1; const kid = options.kid || test_1.TEST_KEY_IDS.KEY_TEST_1; const { privateKey, publicKey } = generateDeterministicKeyPair(`${seed}-${testName}-${did}-${kid}`); const now = new Date().toISOString(); return { did, kid, privateKey, publicKey, createdAt: now, lastRotated: now, }; } /** * Get predefined test identities */ function getPredefinedTestIdentities() { (0, test_environment_1.ensureTestMode)(); return { agent1: generateTestIdentity("agent1", { did: test_1.TEST_DIDS.AGENT_1, kid: test_1.TEST_KEY_IDS.KEY_TEST_1, }), agent2: generateTestIdentity("agent2", { did: test_1.TEST_DIDS.AGENT_2, kid: test_1.TEST_KEY_IDS.KEY_TEST_2, }), verifier1: generateTestIdentity("verifier1", { did: test_1.TEST_DIDS.VERIFIER_1, kid: test_1.TEST_KEY_IDS.KEY_VERIFIER_1, }), }; } /** * Generate nonce for testing (deterministic if seed provided) */ function generateTestNonce(seed) { (0, test_environment_1.ensureTestMode)(); if (seed) { // Deterministic nonce for reproducible tests return (0, crypto_1.createHash)("sha256") .update(`nonce-${seed}-${(0, test_environment_1.getCurrentTestSeed)()}`) .digest() .subarray(0, 16) .toString("base64url"); } // Random nonce for general testing return (0, crypto_1.randomBytes)(16).toString("base64url"); } /** * Generate session ID for testing (deterministic if seed provided) */ function generateTestSessionId(seed) { (0, test_environment_1.ensureTestMode)(); if (seed) { // Deterministic session ID for reproducible tests return `sess_test_${(0, crypto_1.createHash)("sha256") .update(`session-${seed}-${(0, test_environment_1.getCurrentTestSeed)()}`) .digest("hex") .substring(0, 16)}`; } // Random session ID for general testing return `sess_test_${(0, crypto_1.randomBytes)(8).toString("hex")}`; }