UNPKG

@silvana-one/coordination

Version:

Silvana Coordination Client

44 lines 1.43 kB
import Client from "mina-signer"; import { convertFieldsToPublicKey } from "./base58/public-key.js"; const client = new Client({ network: "testnet", }); export function publicKeyToU256(publicKey) { const raw = client.publicKeyToRaw(publicKey); const swappedRaw = raw .match(/.{1,2}/g) ?.reverse() .join("") || ""; const u256 = BigInt("0x" + swappedRaw); return u256; } const MAX_BIT = 2n ** 255n; export function u256ToFields(u256) { const isOdd = (u256 & MAX_BIT) != 0n; const x = u256 - (isOdd ? MAX_BIT : 0n); return { x, isOdd }; } export function u256ToPublicKey(u256) { const { x, isOdd } = u256ToFields(u256); return convertFieldsToPublicKey({ x, isOdd }); } export function convertMinaPublicKey(publicKey) { const u256 = publicKeyToU256(publicKey); return u256ToFields(u256); } export function convertMinaPublicKeyToFields(publicKey) { if (!publicKey) return []; const { x, isOdd } = convertMinaPublicKey(publicKey); return [x, isOdd ? 1n : 0n]; } export function signFields(params) { const { privateKey, fields } = params; const signedData = client.signFields(fields.map(BigInt), privateKey); return signedData; } export function verifyFields(params) { const { publicKey, fields, signature } = params; return client.verifyFields({ data: fields, publicKey, signature }); } //# sourceMappingURL=public-key.js.map