@chorus-one/signer-fireblocks
Version:
Fireblocks signer for Chorus One SDK
41 lines (40 loc) • 1.36 kB
JavaScript
;
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;