oken-waas
Version:
Oken Wallet as a Service SDK
31 lines • 1.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const crypto_1 = __importDefault(require("crypto"));
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
exports.default = (okenClientId, privateKey, options) => ({
signJWT: () => jsonwebtoken_1.default.sign({ 'oken-client-id': okenClientId }, privateKey, { algorithm: 'RS256', expiresIn: '21600s' }),
signMsg: (payload) => {
const payloadWithTimestamp = {
...payload,
timestamp: new Date().toISOString()
};
if (options?.signerType === 'SMART_ACCOUNT') {
if (!options.from) {
throw new Error('\'from\' address if required for SMART_ACCOUNT signer');
}
payloadWithTimestamp.signerType = options.signerType;
payloadWithTimestamp.from = options.from;
}
const msg = JSON.stringify(payloadWithTimestamp);
const msgHash = crypto_1.default.createHash('sha256').update(msg).digest('base64');
const signer = crypto_1.default.createSign('sha256');
signer.update(msgHash);
const signature = signer.sign(privateKey, 'base64');
const signedPayload = { ...payloadWithTimestamp, signature };
return signedPayload;
}
});
//# sourceMappingURL=okenSigner.js.map