- Integrated ECDSA for signature verification in ComboHandler. - Updated event emissions to include additional parameters for better tracking. - Improved gas tracking during execution of combo plans. - Enhanced database interactions for storing and retrieving plans, including conflict resolution and status updates. - Added new dependencies for security and database management in orchestrator.
67 lines
2.1 KiB
TypeScript
67 lines
2.1 KiB
TypeScript
/**
|
|
* HSM (Hardware Security Module) integration service
|
|
* For cryptographic operations in production
|
|
*/
|
|
|
|
export interface HSMService {
|
|
sign(data: Buffer, keyId: string): Promise<Buffer>;
|
|
verify(data: Buffer, signature: Buffer, keyId: string): Promise<boolean>;
|
|
generateKey(keyId: string): Promise<string>;
|
|
encrypt(data: Buffer, keyId: string): Promise<Buffer>;
|
|
decrypt(encrypted: Buffer, keyId: string): Promise<Buffer>;
|
|
}
|
|
|
|
/**
|
|
* Mock HSM service (for development)
|
|
* In production, integrate with actual HSM (AWS CloudHSM, Azure Dedicated HSM, etc.)
|
|
*/
|
|
export class MockHSMService implements HSMService {
|
|
private keys: Map<string, Buffer> = new Map();
|
|
|
|
async sign(data: Buffer, keyId: string): Promise<Buffer> {
|
|
// Mock implementation - in production use HSM SDK
|
|
const key = this.keys.get(keyId) || Buffer.from(keyId);
|
|
// In production: return await hsmClient.sign(data, keyId);
|
|
return Buffer.from("mock-signature");
|
|
}
|
|
|
|
async verify(data: Buffer, signature: Buffer, keyId: string): Promise<boolean> {
|
|
// Mock implementation
|
|
// In production: return await hsmClient.verify(data, signature, keyId);
|
|
return true;
|
|
}
|
|
|
|
async generateKey(keyId: string): Promise<string> {
|
|
// Mock implementation
|
|
// In production: return await hsmClient.generateKey(keyId);
|
|
const key = Buffer.from(`key-${keyId}-${Date.now()}`);
|
|
this.keys.set(keyId, key);
|
|
return keyId;
|
|
}
|
|
|
|
async encrypt(data: Buffer, keyId: string): Promise<Buffer> {
|
|
// Mock implementation
|
|
// In production: return await hsmClient.encrypt(data, keyId);
|
|
return Buffer.from(`encrypted-${data.toString()}`);
|
|
}
|
|
|
|
async decrypt(encrypted: Buffer, keyId: string): Promise<Buffer> {
|
|
// Mock implementation
|
|
// In production: return await hsmClient.decrypt(encrypted, keyId);
|
|
return Buffer.from(encrypted.toString().replace("encrypted-", ""));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get HSM service instance
|
|
*/
|
|
export function getHSMService(): HSMService {
|
|
// In production, initialize actual HSM client
|
|
// const hsmUrl = process.env.HSM_URL;
|
|
// const hsmClient = new HSMClient(hsmUrl);
|
|
// return new HSMService(hsmClient);
|
|
|
|
return new MockHSMService();
|
|
}
|
|
|