UNPKG

@tidecloak/js

Version:

TideCloak client side JS SDK

56 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.genBlindMessage = genBlindMessage; exports.unblindSignature = unblindSignature; exports.verifyBlindSignature = verifyBlindSignature; exports.serializeBlindSig = serializeBlindSig; const Math_js_1 = require("../Math.js"); const Ed25519_js_1 = require("../Ed25519.js"); const Hash_js_1 = require("../Hashing/Hash.js"); const Serialization_js_1 = require("../Serialization.js"); const index_js_1 = require("../index.js"); /** * * @param {Point} gR * @param {Point} pub * @param {Uint8Array} message * @param {bigint} multiplier */ async function genBlindMessage(gR, pub, message, multiplier) { const blur = (0, Math_js_1.RandomBigInt)(); const gRMul = gR.mul((0, Math_js_1.mod_inv)(blur)); const eddsaH = (0, Math_js_1.mod)((0, Serialization_js_1.BigIntFromByteArray)(await (0, Hash_js_1.SHA512_Digest)((0, Serialization_js_1.ConcatUint8Arrays)([gRMul.toRawBytes(), pub.toRawBytes(), message])))); const blurHCMKMul = (0, Math_js_1.mod)(eddsaH * multiplier * blur); return { blurHCMKMul, blur, gRMul }; } /** * * @param {bigint} blindS * @param {bigint} blur */ async function unblindSignature(blindS, blur) { const s = (0, Math_js_1.mod)(blindS * (0, Math_js_1.mod_inv)(blur)); return s; } /** * * @param {bigint} S * @param {Point} noncePublic * @param {Point} pub * @param {Uint8Array} message */ async function verifyBlindSignature(S, noncePublic, pub, message) { const valid = await index_js_1.EdDSA.verifyRaw(S, noncePublic, pub, message); if (!valid) { console.error(`Signature failed. \nM: ${(0, Serialization_js_1.bytesToBase64)(message)}\nS: ${S.toString()}\nNoncePublic: ${noncePublic.toBase64()}\nPublic: ${pub.toBase64()}`); } return valid; } /** * @param {bigint} S * @param {Point} noncePublic */ function serializeBlindSig(S, noncePublic) { return (0, Serialization_js_1.ConcatUint8Arrays)([(0, Serialization_js_1.BigIntToByteArray)(S), noncePublic.toRawBytes()]); } //# sourceMappingURL=BlindSig.js.map