58ca4e68db
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics) - Rust analytics service with parallel report generation - C runtime with POSIX shared memory IPC - PostgreSQL schema with 30+ tables, full migrations - Redis cache, sessions, pub/sub - Kafka event streaming with Zookeeper - WebSocket hub for real-time updates - Automation engine with cron jobs, workflows, event triggers - JWT authentication, multi-tenant from start - Docker Compose with all services - Nginx reverse proxy with rate limiting - Integration tests passing - Feature gap analysis against Fortnox/Odoo/Visma Refs: BOC-001
41 lines
1.8 KiB
JavaScript
41 lines
1.8 KiB
JavaScript
/**
|
|
* Interface encapsulating the various crypto computations used by the library,
|
|
* allowing pluggable underlying crypto implementations.
|
|
*/
|
|
export class CryptoProvider {
|
|
/**
|
|
* Computes a SHA-256 HMAC given a secret and a payload (encoded in UTF-8).
|
|
* The output HMAC should be encoded in hexadecimal.
|
|
*
|
|
* Sample values for implementations:
|
|
* - computeHMACSignature('', 'test_secret') => 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd'
|
|
* - computeHMACSignature('\ud83d\ude00', 'test_secret') => '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43
|
|
*/
|
|
computeHMACSignature(payload, secret) {
|
|
throw new Error('computeHMACSignature not implemented.');
|
|
}
|
|
/**
|
|
* Asynchronous version of `computeHMACSignature`. Some implementations may
|
|
* only allow support async signature computation.
|
|
*
|
|
* Computes a SHA-256 HMAC given a secret and a payload (encoded in UTF-8).
|
|
* The output HMAC should be encoded in hexadecimal.
|
|
*
|
|
* Sample values for implementations:
|
|
* - computeHMACSignature('', 'test_secret') => 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd'
|
|
* - computeHMACSignature('\ud83d\ude00', 'test_secret') => '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43
|
|
*/
|
|
computeHMACSignatureAsync(payload, secret) {
|
|
throw new Error('computeHMACSignatureAsync not implemented.');
|
|
}
|
|
}
|
|
/**
|
|
* If the crypto provider only supports asynchronous operations,
|
|
* throw CryptoProviderOnlySupportsAsyncError instead of
|
|
* a generic error so that the caller can choose to provide
|
|
* a more helpful error message to direct the user to use
|
|
* an asynchronous pathway.
|
|
*/
|
|
export class CryptoProviderOnlySupportsAsyncError extends Error {
|
|
}
|