palmpaywrappersdk
Version:
PalmPay Wrapper Sdk
50 lines (49 loc) • 1.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SignUtil = void 0;
const jsrsasign_1 = require("jsrsasign");
const md5_1 = __importDefault(require("md5"));
const PEM_BEGIN = '-----BEGIN PRIVATE KEY-----\n';
const PEM_END = '-----END PRIVATE KEY-----\n';
const HashMap = {
SHA256withRSA: 'SHA256withRSA',
SHA1withRSA: 'SHA1withRSA',
};
class SignUtil {
static rsaSign(content, privateKey, hash) {
const _privateKey = this._formatKey(privateKey);
const signature = new jsrsasign_1.KJUR.crypto.Signature({
alg: hash,
});
signature.init(_privateKey);
signature.updateString(content);
const signData = signature.sign();
return (0, jsrsasign_1.hextob64)(signData);
}
static sign(params, privateKey) {
let parseStr = Object.keys(params)
.sort()
.filter((item) => params[item])
.map((item) => `${item}=${params[item]}`)
.join('&');
console.log('parseStr', parseStr);
parseStr = (0, md5_1.default)(parseStr).toUpperCase();
console.log('MD5', parseStr);
const str = this.rsaSign(parseStr, privateKey, HashMap.SHA1withRSA);
console.log('sign', str);
return str;
}
static _formatKey(key) {
if (!key.startsWith(PEM_BEGIN)) {
key = PEM_BEGIN + key;
}
if (!key.endsWith(PEM_END)) {
key = key + PEM_END;
}
return key;
}
}
exports.SignUtil = SignUtil;