mirror of
https://github.com/multipleof4/KalBot.git
synced 2026-03-17 05:51:02 +00:00
Fix: Harden RSA key env parsing
This commit is contained in:
@@ -3,13 +3,34 @@ import crypto from 'crypto';
|
|||||||
const DEFAULT_KALSHI_API_BASE = 'https://api.elections.kalshi.com';
|
const DEFAULT_KALSHI_API_BASE = 'https://api.elections.kalshi.com';
|
||||||
const KALSHI_API_BASE = (process.env.KALSHI_API_BASE || DEFAULT_KALSHI_API_BASE).trim().replace(/\/+$/, '');
|
const KALSHI_API_BASE = (process.env.KALSHI_API_BASE || DEFAULT_KALSHI_API_BASE).trim().replace(/\/+$/, '');
|
||||||
|
|
||||||
|
function normalizePrivateKey(value) {
|
||||||
|
if (!value) return '';
|
||||||
|
|
||||||
|
let key = String(value).trim();
|
||||||
|
|
||||||
|
// Strip accidental wrapping quotes from env UIs
|
||||||
|
if (
|
||||||
|
(key.startsWith('"') && key.endsWith('"')) ||
|
||||||
|
(key.startsWith("'") && key.endsWith("'"))
|
||||||
|
) {
|
||||||
|
key = key.slice(1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Normalize line breaks from various env formats
|
||||||
|
return key
|
||||||
|
.replace(/\\r\\n/g, '\n')
|
||||||
|
.replace(/\r\n/g, '\n')
|
||||||
|
.replace(/\\n/g, '\n')
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signs a Kalshi API request using RSA-PSS with SHA-256.
|
* Signs a Kalshi API request using RSA-PSS with SHA-256.
|
||||||
* Returns headers needed for authenticated requests.
|
* Returns headers needed for authenticated requests.
|
||||||
*/
|
*/
|
||||||
export function signRequest(method, path, timestampMs = Date.now()) {
|
export function signRequest(method, path, timestampMs = Date.now()) {
|
||||||
const keyId = process.env.KALSHI_API_KEY_ID;
|
const keyId = process.env.KALSHI_API_KEY_ID?.trim();
|
||||||
const privateKeyPem = process.env.KALSHI_RSA_PRIVATE_KEY?.replace(/\\n/g, '\n');
|
const privateKeyPem = normalizePrivateKey(process.env.KALSHI_RSA_PRIVATE_KEY);
|
||||||
|
|
||||||
if (!keyId || !privateKeyPem) {
|
if (!keyId || !privateKeyPem) {
|
||||||
throw new Error('Missing KALSHI_API_KEY_ID or KALSHI_RSA_PRIVATE_KEY');
|
throw new Error('Missing KALSHI_API_KEY_ID or KALSHI_RSA_PRIVATE_KEY');
|
||||||
|
|||||||
Reference in New Issue
Block a user