UNPKG

@chorus-one/signer-fireblocks

Version:

Fireblocks signer for Chorus One SDK

41 lines (40 loc) 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAuthProvider = exports.ApiTokenProvider = void 0; const uuid_1 = require("uuid"); const jsrsasign_1 = require("jsrsasign"); class ApiTokenProvider { privateKey; apiKey; constructor(privateKey, apiKey) { this.privateKey = privateKey; this.apiKey = apiKey; } signJwt(path, bodyJson) { const header = { alg: 'RS256', typ: 'JWT' }; const payload = { uri: path, nonce: (0, uuid_1.v4)(), iat: Math.floor(Date.now() / 1000), exp: Math.floor(Date.now() / 1000) + 55, sub: this.apiKey, bodyHash: jsrsasign_1.KJUR.crypto.Util.sha256(JSON.stringify(bodyJson || '')) }; const sHeader = JSON.stringify(header); const sPayload = JSON.stringify(payload); const privateKeyObject = jsrsasign_1.KEYUTIL.getKey(this.privateKey); const token = jsrsasign_1.KJUR.jws.JWS.sign('RS256', sHeader, sPayload, privateKeyObject); return token; } getApiKey() { return this.apiKey; } } exports.ApiTokenProvider = ApiTokenProvider; function getAuthProvider(privateKey, apiKey) { return new ApiTokenProvider(privateKey, apiKey); } exports.getAuthProvider = getAuthProvider;