UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

94 lines (93 loc) 2.62 kB
/** * Proof Generation for XMCP-I Runtime * * Handles JCS canonicalization, SHA-256 digest generation, and Ed25519 JWS signing (compact format) * according to requirements 5.1, 5.2, 5.3, 5.6. */ import { DetachedProof } from "@kya-os/contracts/proof"; import { SessionContext } from "@kya-os/contracts/handshake"; import { AgentIdentity } from "./identity"; /** * Tool request structure for proof generation */ export interface ToolRequest { method: string; params?: any; } /** * Tool response structure for proof generation */ export interface ToolResponse { data: any; meta?: { proof?: DetachedProof; [key: string]: any; }; } /** * Proof generation options */ export interface ProofOptions { scopeId?: string; delegationRef?: string; clientDid?: string; } /** * Proof generator class */ export declare class ProofGenerator { private identity; constructor(identity: AgentIdentity); /** * Generate proof for tool request/response * Requirements: 5.1, 5.2, 5.3, 5.6 */ generateProof(request: ToolRequest, response: ToolResponse, session: SessionContext, options?: ProofOptions): Promise<DetachedProof>; /** * Generate canonical hashes for request and response * Requirement: 5.1 */ private generateCanonicalHashes; /** * Generate SHA-256 hash with JCS canonicalization * Requirement: 5.2 */ private generateSHA256Hash; /** * JCS canonicalization implementation (RFC 8785) */ private canonicalizeJSON; /** * Generate Ed25519 JWS in compact format (header.payload.signature) * Requirement: 5.3 * * Uses standard JWT claims (aud, sub, iss) in addition to custom claims */ private generateJWS; /** * Format base64 private key as PKCS#8 PEM for JOSE library */ private formatPrivateKeyAsPEM; /** * Verify a proof (for testing/validation) */ verifyProof(proof: DetachedProof, request: ToolRequest, response: ToolResponse): Promise<boolean>; /** * Convert base64 public key to Ed25519 JWK format */ private base64PublicKeyToJWK; } /** * Utility functions */ /** * Create a tool response with proof */ export declare function createProofResponse(request: ToolRequest, data: any, identity: AgentIdentity, session: SessionContext, options?: ProofOptions): Promise<ToolResponse>; /** * Extract canonical data for hashing (utility for testing) */ export declare function extractCanonicalData(request: ToolRequest, response: ToolResponse): { request: any; response: any; };