@tidecloak/js
Version:
TideCloak client side JS SDK
61 lines • 3.02 kB
JavaScript
;
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