@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
JavaScript
"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);
});
});