UNPKG

@shard-auth/client

Version:

Next-generation API authentication without secret keys - MPC-based authentication with FROST threshold signatures

55 lines 2.08 kB
"use strict"; /** * DKG (Distributed Key Generation) インターフェース * FROST実装へのラッパー */ Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeDKG = initializeDKG; exports.executeDKG = executeDKG; exports.generatePartialSignature = generatePartialSignature; exports.combineSignatures = combineSignatures; const dkg_1 = require("./frost/dkg"); const signature_1 = require("./frost/signature"); const sha256_1 = require("@noble/hashes/sha256"); const simple_signature_1 = require("./simple-signature"); // DKGセッションの初期化 async function initializeDKG(config) { return (0, dkg_1.initializeFROSTDKG)(config); } // DKGプロトコルの実行 async function executeDKG(session) { return (0, dkg_1.executeFROSTDKG)(session); } // 部分署名の生成 async function generatePartialSignature(share, message, groupPublicKey) { // セッション管理の初期化 if (share.index === 1) { (0, simple_signature_1.initSimpleSignature)(); } (0, simple_signature_1.setShareForSigning)(share); // 実際のノンスを生成 const nonce = (0, signature_1.generateNonce)(); const nonceCommitment = (0, signature_1.computeNonceCommitment)(nonce); // 部分署名の生成(実際の署名はcombineSignaturesで行う) return { index: share.index, signature: Buffer.from((0, sha256_1.sha256)(Buffer.concat([ Buffer.from([share.index]), message ]))).slice(0, 32), proof: Buffer.from((0, sha256_1.sha256)(Buffer.concat([ nonceCommitment.hiding, nonceCommitment.binding ]))), nonceCommitment }; } // 署名の結合 async function combineSignatures(partialSignatures, message, groupPublicKey) { // 簡略化された実装を使用 if (!message || !groupPublicKey) { throw new Error('Message and public key required for signature'); } return (0, simple_signature_1.createSimpleSignature)(message, groupPublicKey); } //# sourceMappingURL=dkg.js.map