stint-signer
Version:
Short-lived, non-custodial session signer using passkeys for Cosmos SDK
1 lines • 81.2 kB
Source Map (JSON)
{"version":3,"sources":["../src/errors.ts","../src/logger.ts","../src/passkey.ts","../src/execute.ts","../src/stint.ts"],"names":["privateKey","config","Any"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Custom error class for Stint-specific errors\n */\nexport class StintError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly details?: Record<string, unknown>\n ) {\n super(message)\n this.name = 'StintError'\n }\n}\n\n/**\n * Standard error codes used throughout the library\n */\nexport const ErrorCodes = {\n // WebAuthn and Passkey errors\n WEBAUTHN_NOT_SUPPORTED: 'WEBAUTHN_NOT_SUPPORTED',\n PASSKEY_CREATION_FAILED: 'PASSKEY_CREATION_FAILED',\n PASSKEY_AUTHENTICATION_FAILED: 'PASSKEY_AUTHENTICATION_FAILED',\n PRF_NOT_SUPPORTED: 'PRF_NOT_SUPPORTED',\n USER_CANCELLED: 'USER_CANCELLED',\n\n // Client initialization errors\n CLIENT_INITIALIZATION_FAILED: 'CLIENT_INITIALIZATION_FAILED',\n SIGNER_EXTRACTION_FAILED: 'SIGNER_EXTRACTION_FAILED',\n RPC_URL_EXTRACTION_FAILED: 'RPC_URL_EXTRACTION_FAILED',\n\n // Grant checking errors\n GRANT_CHECK_FAILED: 'GRANT_CHECK_FAILED',\n INVALID_RESPONSE: 'INVALID_RESPONSE',\n\n // Validation errors\n INVALID_ADDRESS: 'INVALID_ADDRESS',\n INVALID_AMOUNT: 'INVALID_AMOUNT',\n INVALID_DENOMINATION: 'INVALID_DENOMINATION',\n INVALID_RPC_URL: 'INVALID_RPC_URL',\n\n // Key generation errors\n KEY_GENERATION_FAILED: 'KEY_GENERATION_FAILED',\n} as const\n\nexport type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes]\n","/**\n * Logger interface that can be implemented by users\n */\nexport interface Logger {\n debug(message: string, context?: Record<string, unknown>): void\n info(message: string, context?: Record<string, unknown>): void\n warn(message: string, context?: Record<string, unknown>): void\n error(message: string, error?: Error, context?: Record<string, unknown>): void\n}\n\n/**\n * Simple console-based logger implementation\n * Users can provide their own logger that implements the Logger interface\n */\nexport const consoleLogger: Logger = {\n debug: (message: string, context?: Record<string, unknown>) => {\n if (context) {\n console.log(`[Stint] ${message}`, context)\n } else {\n console.log(`[Stint] ${message}`)\n }\n },\n\n info: (message: string, context?: Record<string, unknown>) => {\n if (context) {\n console.info(`[Stint] ${message}`, context)\n } else {\n console.info(`[Stint] ${message}`)\n }\n },\n\n warn: (message: string, context?: Record<string, unknown>) => {\n if (context) {\n console.warn(`[Stint] ${message}`, context)\n } else {\n console.warn(`[Stint] ${message}`)\n }\n },\n\n error: (message: string, error?: Error, context?: Record<string, unknown>) => {\n if (error && context) {\n console.error(`[Stint] ${message}`, error, context)\n } else if (error) {\n console.error(`[Stint] ${message}`, error)\n } else if (context) {\n console.error(`[Stint] ${message}`, context)\n } else {\n console.error(`[Stint] ${message}`)\n }\n },\n}\n\n/**\n * No-op logger that discards all log messages\n * Useful for production environments where logging is not desired\n */\nexport const noopLogger: Logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n}\n","import { fromBase64 } from '@cosmjs/encoding'\nimport { PublicKeyCredentialWithPRF } from './types'\nimport { StintError, ErrorCodes } from './errors'\nimport { Logger, noopLogger } from './logger'\n\n// ============================================================================\n// SECURITY UTILITIES\n// ============================================================================\n\n/**\n * Generate time-windowed stint salt for PRF and HKDF\n * Creates unique salt based on domain, user, purpose, and UTC time window\n * Uses Unix epoch-based calculation to handle arbitrary window sizes\n */\nfunction generateStintSalt(\n userAddress: string,\n purpose: string,\n windowHours: number = 24,\n windowNumber?: number\n): string {\n // Use UTC milliseconds since Unix epoch for global synchronization\n const now = Date.now()\n const windowMs = windowHours * 60 * 60 * 1000\n const calculatedWindowNumber = windowNumber ?? Math.floor(now / windowMs)\n\n const domain = window.location.hostname\n return `${domain}:${userAddress}:${purpose}:${calculatedWindowNumber}`\n}\n\n/**\n * Get the current window boundaries for debugging and validation\n * @param windowHours The window size in hours\n * @returns Object with start and end timestamps of current window\n */\nexport function getWindowBoundaries(windowHours: number = 24): {\n start: Date\n end: Date\n windowNumber: number\n} {\n const now = Date.now()\n const windowMs = windowHours * 60 * 60 * 1000\n const windowNumber = Math.floor(now / windowMs)\n\n return {\n start: new Date(windowNumber * windowMs),\n end: new Date((windowNumber + 1) * windowMs),\n windowNumber,\n }\n}\n\n/**\n * Validate and get secure RP ID\n */\nfunction getSecureRpId(): string {\n const hostname = window.location.hostname\n\n // Allow localhost, IP addresses, and valid domain names\n if (\n !hostname ||\n hostname === 'localhost' ||\n /^[\\d.]+$/.test(hostname) ||\n /^[a-zA-Z0-9.-]+$/.test(hostname)\n ) {\n return hostname\n }\n\n throw new StintError('Invalid hostname for WebAuthn', ErrorCodes.WEBAUTHN_NOT_SUPPORTED, {\n hostname,\n })\n}\n\n/**\n * HKDF-SHA256 key derivation function using WebCrypto API\n * @param ikm Input Key Material (PRF output)\n * @param salt Salt for extraction phase\n * @param info Context information for expansion\n * @param length Output length in bytes\n */\nasync function hkdf(\n ikm: Uint8Array,\n salt: Uint8Array,\n info: Uint8Array,\n length: number\n): Promise<Uint8Array> {\n // Import the input key material\n const key = await crypto.subtle.importKey('raw', ikm.buffer as ArrayBuffer, 'HKDF', false, [\n 'deriveBits',\n ])\n\n // Derive bits using HKDF-SHA256\n const derivedBits = await crypto.subtle.deriveBits(\n {\n name: 'HKDF',\n hash: 'SHA-256',\n salt: salt.buffer as ArrayBuffer,\n info: info.buffer as ArrayBuffer,\n },\n key,\n length * 8 // Convert bytes to bits\n )\n\n return new Uint8Array(derivedBits)\n}\n\n// Public interfaces\nexport interface DerivedKey {\n credentialId: string\n privateKey: Uint8Array // Private key bytes\n}\n\nexport interface PasskeyConfig {\n address: string // Cosmos address as userID\n displayName?: string // Optional display name\n saltName?: string // Salt for key derivation (default: 'stint-session')\n stintWindowHours?: number // Time window in hours for key validity (default: 24, supports any duration)\n windowNumber?: number // Specific window number to use (optional, for grace period logic)\n logger?: Logger // Optional logger\n}\n\n/**\n * Get or create a derived key from passkey for the current domain\n * - Checks for existing passkey with PRF support\n * - Creates new one if none exists or PRF not supported\n * - Returns derived private key\n */\nexport async function getOrCreateDerivedKey(options: PasskeyConfig): Promise<DerivedKey> {\n const logger = options.logger || noopLogger\n const purpose = options.saltName || 'stint-session'\n const windowHours = options.stintWindowHours || 24\n\n // Generate time-windowed stint salt\n const stintSalt = generateStintSalt(options.address, purpose, windowHours, options.windowNumber)\n\n logger.debug('Starting passkey derivation', {\n address: options.address.slice(0, 10) + '...',\n purpose,\n windowHours,\n stintSalt,\n })\n\n if (!window.PublicKeyCredential) {\n logger.error('WebAuthn not supported in this browser')\n throw new StintError('WebAuthn not supported', ErrorCodes.WEBAUTHN_NOT_SUPPORTED, {\n userAgent: navigator.userAgent,\n })\n }\n\n // First, try to get existing credential\n let existingCredential: ExistingCredential | null = null\n\n try {\n existingCredential = await getExistingPasskey(options.address, stintSalt, logger)\n } catch (error) {\n // If user cancelled during existing passkey check, don't proceed to create\n if (\n error instanceof Error &&\n (error.name === 'NotAllowedError' || error.name === 'AbortError')\n ) {\n logger.warn('User cancelled passkey operation')\n throw new StintError('Passkey operation cancelled', ErrorCodes.USER_CANCELLED, {\n operation: 'getExisting',\n error: error.message,\n })\n }\n // Otherwise, no existing credential found, continue to create\n logger.debug('No existing passkey found, will create new one')\n }\n\n // If we found an existing credential, try to use it\n if (existingCredential) {\n logger.debug('Found existing passkey')\n\n if (existingCredential.prfSupported && existingCredential.prfOutput) {\n // Use the PRF output we already got to derive the private key with HKDF\n const saltBytes = new TextEncoder().encode(stintSalt)\n const infoBytes = new TextEncoder().encode('stint-key-derivation')\n const privateKey = await hkdf(existingCredential.prfOutput, saltBytes, infoBytes, 32)\n logger.debug('Session key ready')\n return {\n credentialId: existingCredential.credentialId,\n privateKey,\n }\n } else if (existingCredential.prfSupported) {\n try {\n const privateKey = await derivePrivateKey(\n existingCredential.credentialId,\n stintSalt,\n logger\n )\n logger.debug('Session key ready')\n return {\n credentialId: existingCredential.credentialId,\n privateKey,\n }\n } catch (error) {\n // If deriving the private key fails, we need to create a new passkey\n // This could happen if the user cancels the authentication or there's a timeout\n if (\n error instanceof Error &&\n (error.name === 'NotAllowedError' || error.name === 'AbortError')\n ) {\n logger.warn('User cancelled existing passkey authentication')\n throw new StintError(\n 'Authentication with existing passkey was cancelled',\n ErrorCodes.PASSKEY_AUTHENTICATION_FAILED,\n { operation: 'derivePrivateKey', error: error.message }\n )\n }\n // For other errors, we'll fall through to create a new passkey\n logger.warn('Failed to derive key from existing passkey, will create new one', {\n error: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n } else {\n logger.error('Existing passkey does not support PRF extension')\n throw new StintError(\n 'Existing passkey does not support PRF extension',\n ErrorCodes.PRF_NOT_SUPPORTED,\n { suggestion: 'Please delete the existing passkey for this site and create a new one' }\n )\n }\n }\n\n // Create new passkey\n logger.debug('Creating new passkey')\n const credential = await createPasskey(\n {\n userName: options.address,\n userDisplayName: options.displayName || `Stint: ${options.address.slice(0, 10)}...`,\n },\n logger\n )\n\n const privateKey = await derivePrivateKey(credential.id, stintSalt, logger)\n\n logger.debug('Session key ready')\n return {\n credentialId: credential.id,\n privateKey,\n }\n}\n\n// Internal interfaces\ninterface InternalPasskeyConfig {\n userName: string\n userDisplayName: string\n}\n\ninterface ExistingCredential {\n credentialId: string\n prfSupported: boolean\n prfOutput?: Uint8Array // Include PRF output if available\n}\n\n// Check for existing passkey with PRF support\nasync function getExistingPasskey(\n address: string,\n stintSalt: string,\n logger: Logger = noopLogger\n): Promise<ExistingCredential | null> {\n const challenge = crypto.getRandomValues(new Uint8Array(32)).buffer as ArrayBuffer\n\n try {\n const publicKeyCredentialRequestOptions: PublicKeyCredentialRequestOptions = {\n challenge,\n rpId: getSecureRpId(),\n userVerification: 'required',\n allowCredentials: [], // Let user select any credential for this domain\n timeout: 60000, // 60 seconds for authentication\n extensions: {\n prf: {\n eval: {\n first: new TextEncoder().encode(stintSalt + '\\x00').buffer as ArrayBuffer,\n second: new TextEncoder().encode(stintSalt + '\\x01').buffer as ArrayBuffer,\n },\n },\n },\n }\n\n const assertion = (await navigator.credentials.get({\n publicKey: publicKeyCredentialRequestOptions,\n })) as PublicKeyCredentialWithPRF | null\n\n if (!assertion) {\n return null\n }\n\n // Validate that the passkey belongs to the expected address\n const userHandle = (assertion.response as any).userHandle as ArrayBuffer | null\n if (userHandle) {\n const userIdFromPasskey = new TextDecoder().decode(userHandle)\n if (userIdFromPasskey !== address) {\n logger.debug('Passkey user ID does not match current address', {\n expected: address,\n actual: userIdFromPasskey,\n })\n return null\n }\n } else {\n // If no userHandle is present, we can't validate the address\n logger.debug('Passkey has no userHandle, cannot validate address')\n return null\n }\n\n // Check if PRF extension is supported and extract output\n const clientExtensionResults = assertion.getClientExtensionResults()\n const prfResult1 = clientExtensionResults.prf?.results?.first\n const prfResult2 = clientExtensionResults.prf?.results?.second\n const prfSupported = !!prfResult1\n\n let prfOutput: Uint8Array | undefined\n if (prfResult1) {\n // Convert first result to Uint8Array\n let output1: Uint8Array\n if (prfResult1 instanceof ArrayBuffer) {\n output1 = new Uint8Array(prfResult1)\n } else {\n output1 = new Uint8Array(prfResult1)\n }\n\n // Convert second result to Uint8Array (if available)\n let output2: Uint8Array\n if (prfResult2) {\n if (prfResult2 instanceof ArrayBuffer) {\n output2 = new Uint8Array(prfResult2)\n } else {\n output2 = new Uint8Array(prfResult2)\n }\n } else {\n // If second output is not available, use first output again\n output2 = output1\n }\n\n // Combine both outputs for maximum entropy\n const combinedOutput = new Uint8Array(output1.length + output2.length)\n combinedOutput.set(output1)\n combinedOutput.set(output2, output1.length)\n prfOutput = combinedOutput\n }\n\n return {\n credentialId: assertion.id,\n prfSupported,\n prfOutput,\n }\n } catch (error) {\n if (error instanceof Error) {\n // Check for specific WebAuthn errors that might indicate domain/credential issues\n if (error.name === 'NotAllowedError') {\n logger.debug('User cancelled passkey authentication or invalid credential for domain', {\n error: error.message,\n suggestion: 'This might be due to selecting a passkey from a different domain',\n })\n } else if (error.name === 'SecurityError') {\n logger.debug('Security error during passkey authentication', {\n error: error.message,\n suggestion: 'This might be due to domain mismatch or invalid RP ID',\n })\n } else {\n logger.debug('Passkey authentication failed', {\n error: error.message,\n errorType: error.name,\n })\n }\n } else {\n logger.debug('Unknown error during passkey authentication', {\n error: 'Unknown error',\n })\n }\n return null\n }\n}\n\n// Create a new passkey credential with PRF extension\nasync function createPasskey(\n options: InternalPasskeyConfig,\n logger: Logger = noopLogger\n): Promise<PublicKeyCredential> {\n const challenge = crypto.getRandomValues(new Uint8Array(32)).buffer as ArrayBuffer\n\n const publicKeyCredentialCreationOptions: PublicKeyCredentialCreationOptions = {\n challenge,\n rp: {\n id: getSecureRpId(),\n name: 'Stint Session Signer',\n },\n user: {\n id: new TextEncoder().encode(options.userName),\n name: options.userName,\n displayName: options.userDisplayName,\n },\n pubKeyCredParams: [\n { alg: -7, type: 'public-key' }, // ES256\n { alg: -257, type: 'public-key' }, // RS256\n ],\n authenticatorSelection: {\n // Remove platform restriction to allow 1Password and other passkey managers\n userVerification: 'required',\n requireResidentKey: false,\n residentKey: 'preferred',\n },\n timeout: 120000,\n attestation: 'none',\n extensions: {\n prf: {},\n },\n }\n\n const credential = (await navigator.credentials.create({\n publicKey: publicKeyCredentialCreationOptions,\n })) as PublicKeyCredentialWithPRF | null\n\n if (!credential) {\n logger.error('Failed to create passkey - credential is null')\n throw new StintError('Failed to create passkey', ErrorCodes.PASSKEY_CREATION_FAILED, {\n reason: 'Credential creation returned null',\n })\n }\n\n // Add a small delay to handle potential race conditions\n await new Promise((resolve) => setTimeout(resolve, 100))\n\n // Verify PRF extension is supported\n const clientExtensionResults = credential.getClientExtensionResults()\n\n // More lenient PRF check - sometimes the 'enabled' flag isn't set but PRF still works\n const prfExtension = clientExtensionResults.prf\n if (!prfExtension) {\n logger.error('Passkey created but PRF extension not enabled')\n throw new StintError(\n 'Passkey created but PRF extension not enabled',\n ErrorCodes.PRF_NOT_SUPPORTED,\n { suggestion: 'Your browser or authenticator may not support the PRF extension' }\n )\n }\n\n return credential\n}\n\n// Get PRF output from passkey\nasync function getPasskeyPRF(\n credentialId: string,\n stintSalt: string,\n logger: Logger = noopLogger\n): Promise<Uint8Array> {\n const challenge = crypto.getRandomValues(new Uint8Array(32)).buffer as ArrayBuffer\n\n // Convert base64url credential ID to bytes\n const base64 = credentialId.replace(/-/g, '+').replace(/_/g, '/')\n const padded = base64 + '==='.sli