UNPKG

kalshi-typescript

Version:
39 lines (31 loc) 1.17 kB
import * as crypto from 'crypto'; export class KalshiAuth { private apiKey: string; private privateKeyPem: string; constructor(apiKey: string, privateKeyPem: string) { this.apiKey = apiKey; this.privateKeyPem = privateKeyPem; } private signPssText(text: string): string { const sign = crypto.createSign('RSA-SHA256'); sign.update(text); sign.end(); const signature = sign.sign({ key: this.privateKeyPem, padding: crypto.constants.RSA_PKCS1_PSS_PADDING, saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST, }); return signature.toString('base64'); } public generateAuthHeaders(method: string, path: string): Record<string, string> { const currentTimeMilliseconds = Date.now(); const timestampStr = currentTimeMilliseconds.toString(); const msgString = timestampStr + method + path; const sig = this.signPssText(msgString); return { 'KALSHI-ACCESS-KEY': this.apiKey, 'KALSHI-ACCESS-SIGNATURE': sig, 'KALSHI-ACCESS-TIMESTAMP': timestampStr }; } }