UNPKG

@tidecloak/js

Version:

TideCloak client side JS SDK

61 lines 3.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const AdminAuthorization_js_1 = require("./AdminAuthorization.js"); const BaseTideRequest_js_1 = __importDefault(require("./BaseTideRequest.js")); const Serialization_js_1 = require("../Cryptide/Serialization.js"); class AuthorizationBuilder { constructor(tideRequest = null, authorizationPacks = null, ruleSettings = null) { this.tideRequest = tideRequest; this.authorizationPacks = authorizationPacks; this.ruleSettings = ruleSettings; } /** * @param {BaseTideRequest} request */ setTideRequest(request) { this.tideRequest = request; } /** * @param {Uint8Array} authPacks */ setAuthorizationPacks(authPacks) { this.authorizationPacks = authPacks; } setRuleSettings(ruleSettings) { this.ruleSettings = ruleSettings; } addAuthorization() { const authPacks = this.authorizationPacks.map(auth => { return AdminAuthorization_js_1.AdminAuthorization.fromString(auth); }); // add authorizer const authorizerSize = authPacks.reduce((sum, a) => sum + (a.encodeContext().length + 4), 0); const Authorizer = (0, Serialization_js_1.CreateTideMemory)(authPacks[0].encodeContext(), authorizerSize); for (let i = 1; i < authPacks.length; i++) { (0, Serialization_js_1.WriteValue)(Authorizer, 1, authPacks[i].encodeContext()); } // data to authenticate authorizer const authorizerSigSize = authPacks.reduce((sum, a) => sum + (a.getAdminCert().length + 4), 0); const AuthorizerSignatures = (0, Serialization_js_1.CreateTideMemory)(authPacks[0].getAdminCert(), authorizerSigSize); for (let i = 1; i < authPacks.length; i++) { (0, Serialization_js_1.WriteValue)(AuthorizerSignatures, i, authPacks[i].getAdminCert()); } // data to verify the approval const AuthorizerApprovals = (0, Serialization_js_1.CreateTideMemory)(authPacks[0].encodeApproval(), authPacks.reduce((sum, a) => sum + (a.encodeApproval().length + 4), 0)); for (let i = 1; i < authPacks.length; i++) { (0, Serialization_js_1.WriteValue)(AuthorizerApprovals, i, authPacks[i].encodeApproval()); } this.tideRequest.addAuthorizer(Authorizer); this.tideRequest.addAuthorizerCertificate(AuthorizerSignatures); this.tideRequest.addAuthorization(AuthorizerApprovals); if (this.ruleSettings !== null) { this.tideRequest.addRules((0, Serialization_js_1.StringToUint8Array)(JSON.stringify(this.ruleSettings.rules))); this.tideRequest.addRulesCert((0, Serialization_js_1.base64ToBytes)(this.ruleSettings.rulesCert)); } } } exports.default = AuthorizationBuilder; //# sourceMappingURL=AuthorizationBuilder.js.map