ocn-registry
Version:
Oli-systems OCN registry smart contracts
111 lines • 4.79 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.revokeAgreementRaw = exports.createAgreementRaw = exports.deleteServiceRaw = exports.setServiceRaw = exports.deletePartyRaw = exports.setPartyModulesRaw = exports.setPartyRaw = exports.deleteNodeRaw = exports.setNodeRaw = void 0;
const ethers_1 = require("ethers");
const web3_utils_1 = require("web3-utils");
const ethers = __importStar(require("ethers"));
// TODO unify with src/lib/sign.ts
function encodeRoles(roles) {
let rolesBytes = ethers.hexlify('0x');
for (const roleDetails of roles) {
// Ensure certificateData and signature are properly formatted as hex strings
const certificateDataHex = ethers.isHexString(roleDetails.certificateData)
? roleDetails.certificateData
: ethers.hexlify(roleDetails.certificateData);
const signatureHex = ethers.isHexString(roleDetails.signature)
? roleDetails.signature
: ethers.hexlify(roleDetails.signature);
// Convert Role enum to bytes
const roleBytes = ethers.hexlify(ethers.toBeHex(roleDetails.role));
rolesBytes = ethers.concat([
rolesBytes,
certificateDataHex,
signatureHex,
roleBytes
]);
}
return rolesBytes;
}
async function sign(txMsg, wallet) {
const messageHashBytes = (0, ethers_1.getBytes)(txMsg);
const flatSig = await wallet.signMessage(messageHashBytes);
const splitSig = ethers_1.Signature.from(flatSig);
return {
v: splitSig.v,
r: splitSig.r,
s: splitSig.s,
hash: messageHashBytes,
};
}
async function setNodeRaw(domain, wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(wallet.address, domain);
return await sign(txMsg, wallet);
}
exports.setNodeRaw = setNodeRaw;
async function deleteNodeRaw(wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(wallet.address);
return sign(txMsg, wallet);
}
exports.deleteNodeRaw = deleteNodeRaw;
async function setPartyRaw(countryCode, partyId, roles, operator, name, url, wallet) {
const encodedRoles = encodeRoles(roles);
const rolesHash = (0, web3_utils_1.soliditySha3)(encodedRoles) || "";
const txMsg = (0, web3_utils_1.soliditySha3)(wallet.address, countryCode, partyId, rolesHash, operator, name, url);
return sign(txMsg, wallet);
}
exports.setPartyRaw = setPartyRaw;
async function setPartyModulesRaw(sender, receiver, wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(wallet.address, ...sender, ...receiver);
return sign(txMsg, wallet);
}
exports.setPartyModulesRaw = setPartyModulesRaw;
async function deletePartyRaw(wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(wallet.address);
return sign(txMsg, wallet);
}
exports.deletePartyRaw = deletePartyRaw;
async function setServiceRaw(name, url, permissions, wallet) {
const optionalParams = [name, url].filter((param) => param !== null && param !== undefined);
const txMsg = (0, web3_utils_1.soliditySha3)(...optionalParams, ...permissions);
return sign(txMsg, wallet);
}
exports.setServiceRaw = setServiceRaw;
async function deleteServiceRaw(wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(wallet.address);
return sign(txMsg, wallet);
}
exports.deleteServiceRaw = deleteServiceRaw;
async function createAgreementRaw(provider, wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(provider);
return sign(txMsg, wallet);
}
exports.createAgreementRaw = createAgreementRaw;
async function revokeAgreementRaw(provider, wallet) {
const txMsg = (0, web3_utils_1.soliditySha3)(provider);
return sign(txMsg, wallet);
}
exports.revokeAgreementRaw = revokeAgreementRaw;
//# sourceMappingURL=sign.js.map