@kya-os/mcp-i
Version:
The TypeScript MCP framework with identity features built-in
94 lines (93 loc) • 2.62 kB
TypeScript
/**
* 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;
};