Files
DndGamePlayerLicenseServer/lib/signPayload.mjs
T
2026-05-11 22:20:21 +08:00

19 lines
532 B
JavaScript

import { createPrivateKey, sign } from 'node:crypto';
import { canonicalJson } from './canonicalJson.mjs';
export function b64url(buf) {
return Buffer.from(buf)
.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/u, '');
}
export function signPayload(payload, privateKeyPem) {
const key = createPrivateKey(privateKeyPem);
const body = canonicalJson(payload);
const sig = sign(null, Buffer.from(body, 'utf8'), key);
return `${b64url(Buffer.from(body, 'utf8'))}.${b64url(sig)}`;
}