UNPKG

@firefly-exchange/library-sui

Version:

Sui library housing helper methods, classes to interact with Bluefin protocol(s) deployed on Sui

78 lines (77 loc) 5.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const cryptography_1 = require("@mysten/sui/cryptography"); const src_1 = require("../src"); const enums_1 = require("../src/enums"); const helpers_1 = require("../src/helpers"); const helpers_2 = require("./helpers"); describe("Order Signer", () => { const secpKP = (0, src_1.getKeyPairFromSeed)(helpers_1.TEST_WALLETS[0].phrase, "Secp256k1"); const edKP = (0, src_1.getKeyPairFromSeed)(helpers_1.TEST_WALLETS[0].phrase, "ED25519"); const orderSigner = new src_1.OrderSigner(secpKP); it("should verify payload signature generated by UI wallet - I", async () => { const payload = { onboarding: "https://trade-sui.bluefin.exchange" }; // signature generated using UI wallet const uiData = { MsgBytes: "eyJvbmJvYXJkaW5nIjoiaHR0cHM6Ly90cmFkZS1zdWkuYmx1ZWZpbi5leGNoYW5nZSJ9", Signature: "ADOH068/PM2turB9tokiYPaJJ+m4HYO2+kYWBWDZUnucvqN6dTRi3hVAv26AAk60dDcA3FB2wBC5+1e7trSdnglUjfgvPyOTw/0UA7oq6oRzrETgT/6/pqpwTjav8KDg0Q==" }; const SigPK = (0, cryptography_1.parseSerializedSignature)(uiData.Signature); const signature = Buffer.from(SigPK.signature).toString("hex") + enums_1.SIGNER_TYPES.UI_ED25519; const publicKey = Buffer.from(SigPK.publicKey).toString("base64"); (0, helpers_2.expect)(src_1.OrderSigner.verifySignature(payload, signature, publicKey)).to.be.equal(true); }); it("should verify payload signature generated by UI wallet - II", async () => { const payload = { hashes: [ "f2QxZzmXq9/QJtmmbk+kvaHpFhgWNtBps6HKeT9sxSU=", "f2QxZzmXq9/QJtmmbk+kvaHpFhgWNtBps6HKeT9sxSU=", "f2QxZzmXq9/QJtmmbk+kvaHpFhgWNtBps6HKeT9sxSU=" ] }; // signature generated using UI wallet const uiData = { MsgBytes: "eyJvbmJvYXJkaW5nIjoiaHR0cHM6Ly90cmFkZS1zdWkuYmx1ZWZpbi5leGNoYW5nZSJ9", Signature: "AHnkknXkyJVFMWP4e4YwshlN820DBCoAw9CCDf7ACPh0Tdq2+oAT/yxp20V8SzdSzvnPaWmex2DkUB6rMUtvtAcq3XRi9gtN0vRnK6rISvD0CcnlC3m43EiPVlMzPa6sIQ==" }; const SigPK = (0, cryptography_1.parseSerializedSignature)(uiData.Signature); const signature = Buffer.from(SigPK.signature).toString("hex") + enums_1.SIGNER_TYPES.UI_ED25519; const publicKey = Buffer.from(SigPK.publicKey).toString("base64"); (0, helpers_2.expect)(src_1.OrderSigner.verifySignature(payload, signature, publicKey)).to.be.equal(true); }); it("should revert as payload signature generated by UI wallet is incorrect", async () => { const payload = { onboarding: "https://trade-sui.bluefin.io" }; // wrong signature const uiData = { MsgBytes: "eyJvbmJvYXJkaW5nIjoiaHR0cHM6Ly90cmFkZS1zdWkuYmx1ZWZpbi5leGNoYW5nZSJ9", Signature: "ADOH068/PM2turB9tokiYPaJJ+m4HYO2+kYWBWDZUnucvqN6dTRi3hVAv26AAk60dDcA3FB2wBC5+1e7trSdnglUjfgvPyOTw/0UA7oq6oRzrETgT/6/pqpwTjav8KDg0Q==" }; const SigPK = (0, cryptography_1.parseSerializedSignature)(uiData.Signature); const signature = Buffer.from(SigPK.signature).toString("hex") + enums_1.SIGNER_TYPES.UI_ED25519; const publicKey = Buffer.from(SigPK.publicKey).toString("base64"); (0, helpers_2.expect)(src_1.OrderSigner.verifySignature(payload, signature, publicKey)).to.be.equal(false); }); it("should revert as payload used for UI wallet signature verification is incorrect", async () => { // wrong payload const payload = { onboarding: "https://sui.bluefin.exchange" }; // signature generated using UI wallet const uiData = { MsgBytes: "eyJvbmJvYXJkaW5nIjoiaHR0cHM6Ly90cmFkZS1zdWkuYmx1ZWZpbi5leGNoYW5nZSJ9", Signature: "AFHcFfuMegVlael9p8X/zUpUhWoEmpnDyWKBnQWfNZFj7zF8sIoxdCp1gt6smAkLHV1i7+jIv8wRJRileWb9nQ0q3XRi9gtN0vRnK6rISvD0CcnlC3m43EiPVlMzPa6sIQ==" }; const SigPK = (0, cryptography_1.parseSerializedSignature)(uiData.Signature); const signature = Buffer.from(SigPK.signature).toString("hex") + enums_1.SIGNER_TYPES.UI_ED25519; const publicKey = Buffer.from(SigPK.publicKey).toString("base64"); (0, helpers_2.expect)(src_1.OrderSigner.verifySignature(payload, signature, publicKey)).to.be.equal(false); }); it("should verify payload signature generated using SECP wallet", async () => { const payload = { onboarding: "https://trade-sui.bluefin.exchange" }; const signature = await orderSigner.signPayload(payload, secpKP); (0, helpers_2.expect)(src_1.OrderSigner.verifySignature(payload, signature.signature, signature.publicKey)).to.be.equal(true); }); it("should verify payload signature generated using ED wallet", async () => { const payload = { onboarding: "https://trade-sui.bluefin.exchange" }; const signature = await orderSigner.signPayload(payload, edKP); (0, helpers_2.expect)(src_1.OrderSigner.verifySignature(payload, signature.signature, signature.publicKey)).to.be.equal(true); }); });