UNPKG

@botwall/sdk

Version:

BotWall SDK for site protection and bot crawling

28 lines 1.33 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.signRequest = signRequest; const tweetnacl_1 = __importDefault(require("tweetnacl")); /** * Signs a request using Ed25519 based on the signature-input header. * @param headers - Object containing all headers (header names are case-insensitive) * @param privateKey - Ed25519 private key (base64-encoded) * @returns base64-encoded signature string */ function signRequest(headers, privateKey) { // signature-input header must exist const sigInput = headers['signature-input'] || headers['Signature-Input'] || headers['SIGNATURE-INPUT']; if (!sigInput) throw new Error('Missing signature-input header'); // Canonicalize header names (lowercase) const headerNames = sigInput.trim().split(/\s+/); const message = headerNames.map(h => headers[h.toLowerCase()] || '').join(' '); // Decode private key const privKeyBytes = Buffer.from(privateKey, 'base64'); // Sign message const signature = tweetnacl_1.default.sign.detached(Buffer.from(message), privKeyBytes); return Buffer.from(signature).toString('base64'); } //# sourceMappingURL=signRequest.js.map