UNPKG

gamemoney-frorff

Version:
65 lines 2.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.getRandomString = exports.generateHmacSignature = exports.generateRsaSignature = exports.verifyRsaSignature = exports.paramsToString = void 0; const crypto_1 = __importDefault(require("crypto")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const publicCert = fs_1.default.readFileSync(path_1.default.join(__dirname, '../certs/gm.crt')).toString(); function paramsToString(body) { let paramsString = ''; let keys = Object.keys(body).sort(); if (Array.isArray(body)) { keys = keys.sort((a, b) => +a - +b); } keys.forEach((key) => { let value = body[key]; if (key === 'signature') { return; } if (value == null) { value = ''; } if (typeof value === 'object') { value = paramsToString(value); } paramsString += `${key}:${value};`; }); return paramsString; } exports.paramsToString = paramsToString; function verifyRsaSignature(body) { const paramsString = paramsToString(body); const signature = body.signature; return crypto_1.default .createVerify('RSA-SHA256') .update(paramsString, 'utf8') .verify(publicCert, signature, 'base64'); } exports.verifyRsaSignature = verifyRsaSignature; function generateRsaSignature(body, privateKey) { const paramsString = paramsToString(body); return crypto_1.default .createSign('RSA-SHA256') .update(paramsString, 'utf8') .sign(privateKey, 'base64'); } exports.generateRsaSignature = generateRsaSignature; function generateHmacSignature(body, key) { const paramsString = paramsToString(body); return crypto_1.default .createHmac('sha256', key) .update(paramsString, 'utf8') .digest('hex'); } exports.generateHmacSignature = generateHmacSignature; function getRandomString(length) { return crypto_1.default .randomBytes(Math.ceil(length / 2)) .toString('hex') .slice(0, length); } exports.getRandomString = getRandomString; //# sourceMappingURL=utils.js.map