@shard-auth/client
Version:
Next-generation API authentication without secret keys - MPC-based authentication with FROST threshold signatures
55 lines • 2.08 kB
JavaScript
;
/**
* 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