@bcts/frost-hubert 1.0.0-alpha.22 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/frost.cjs +347 -75
- package/dist/bin/frost.cjs.map +1 -1
- package/dist/bin/frost.mjs +347 -75
- package/dist/bin/frost.mjs.map +1 -1
- package/dist/busy-DkM2jAIZ.mjs +27 -0
- package/dist/busy-DkM2jAIZ.mjs.map +1 -0
- package/dist/busy-EZU7EKr6.cjs +38 -0
- package/dist/busy-EZU7EKr6.cjs.map +1 -0
- package/dist/{chunk-uaV2rQ02.cjs → chunk-CZWwpsFl.cjs} +22 -32
- package/dist/{chunk-ClPoSABd.mjs → chunk-CjcI7cDX.mjs} +6 -12
- package/dist/cmd/index.cjs +46 -43
- package/dist/cmd/index.d.cts +2 -4
- package/dist/cmd/index.d.mts +2 -4
- package/dist/cmd/index.mjs +7 -6
- package/dist/cmd-Bw9_i2_f.cjs +130 -0
- package/dist/cmd-Bw9_i2_f.cjs.map +1 -0
- package/dist/cmd-CS1uJtuD.mjs +113 -0
- package/dist/cmd-CS1uJtuD.mjs.map +1 -0
- package/dist/common-CvH6dFvQ.mjs +282 -0
- package/dist/common-CvH6dFvQ.mjs.map +1 -0
- package/dist/common-DUWvtc08.mjs +96 -0
- package/dist/common-DUWvtc08.mjs.map +1 -0
- package/dist/common-lKP5EzHy.cjs +372 -0
- package/dist/common-lKP5EzHy.cjs.map +1 -0
- package/dist/common-lThIvJmZ.cjs +114 -0
- package/dist/common-lThIvJmZ.cjs.map +1 -0
- package/dist/dkg/index.cjs +245 -7
- package/dist/dkg/index.cjs.map +1 -0
- package/dist/dkg/index.d.cts +2 -2
- package/dist/dkg/index.d.mts +2 -2
- package/dist/dkg/index.mjs +238 -2
- package/dist/dkg/index.mjs.map +1 -0
- package/dist/finalize-BRgJK-Xv.cjs +402 -0
- package/dist/finalize-BRgJK-Xv.cjs.map +1 -0
- package/dist/finalize-BfLgzn8f.cjs +303 -0
- package/dist/finalize-BfLgzn8f.cjs.map +1 -0
- package/dist/finalize-CNTDj6aS.mjs +389 -0
- package/dist/finalize-CNTDj6aS.mjs.map +1 -0
- package/dist/finalize-EC3ikHQq.mjs +252 -0
- package/dist/finalize-EC3ikHQq.mjs.map +1 -0
- package/dist/finalize-IA01t_Qq.mjs +290 -0
- package/dist/finalize-IA01t_Qq.mjs.map +1 -0
- package/dist/finalize-UPyI1yb1.cjs +265 -0
- package/dist/finalize-UPyI1yb1.cjs.map +1 -0
- package/dist/frost/index.cjs +8 -9
- package/dist/frost/index.cjs.map +1 -1
- package/dist/frost/index.mjs +2 -3
- package/dist/frost/index.mjs.map +1 -1
- package/dist/{group-invite-Dz1Jmiky.d.cts → index-B3c-80VS.d.cts} +25 -2
- package/dist/index-B3c-80VS.d.cts.map +1 -0
- package/dist/{index-CcvTi5EA.d.cts → index-BgbSGpxn.d.mts} +102 -80
- package/dist/index-BgbSGpxn.d.mts.map +1 -0
- package/dist/{registry-impl-CE76sTXQ.d.cts → index-C8QeHNwa.d.cts} +46 -2
- package/dist/index-C8QeHNwa.d.cts.map +1 -0
- package/dist/{group-invite-Wk9CIbHL.d.mts → index-D3QTWkEm.d.mts} +25 -2
- package/dist/index-D3QTWkEm.d.mts.map +1 -0
- package/dist/{registry-impl-BETn_lEO.d.mts → index-DVbWyOs7.d.mts} +46 -2
- package/dist/index-DVbWyOs7.d.mts.map +1 -0
- package/dist/{index-DNCPeLNM.d.mts → index-F1iNEAJR.d.cts} +102 -80
- package/dist/index-F1iNEAJR.d.cts.map +1 -0
- package/dist/index.cjs +72 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -7
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +4 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +11 -10
- package/dist/index.mjs.map +1 -1
- package/dist/invite-5277FQVT.cjs +274 -0
- package/dist/invite-5277FQVT.cjs.map +1 -0
- package/dist/invite-DUTcfTgX.cjs +109 -0
- package/dist/invite-DUTcfTgX.cjs.map +1 -0
- package/dist/invite-IU4n0dq2.mjs +96 -0
- package/dist/invite-IU4n0dq2.mjs.map +1 -0
- package/dist/invite-RU-OXTNS.mjs +219 -0
- package/dist/invite-RU-OXTNS.mjs.map +1 -0
- package/dist/parallel-D1R6ZGlY.cjs +318 -0
- package/dist/parallel-D1R6ZGlY.cjs.map +1 -0
- package/dist/parallel-D6zc6VW4.mjs +235 -0
- package/dist/parallel-D6zc6VW4.mjs.map +1 -0
- package/dist/proposed-participant-Dm1Eq6mX.cjs +141 -0
- package/dist/proposed-participant-Dm1Eq6mX.cjs.map +1 -0
- package/dist/proposed-participant-cWM7iUrO.mjs +129 -0
- package/dist/proposed-participant-cWM7iUrO.mjs.map +1 -0
- package/dist/receive-CAI-x4II.cjs +213 -0
- package/dist/receive-CAI-x4II.cjs.map +1 -0
- package/dist/receive-D2Nn68L7.mjs +188 -0
- package/dist/receive-D2Nn68L7.mjs.map +1 -0
- package/dist/receive-DA_KQEgk.mjs +177 -0
- package/dist/receive-DA_KQEgk.mjs.map +1 -0
- package/dist/receive-kZMsXhbK.cjs +190 -0
- package/dist/receive-kZMsXhbK.cjs.map +1 -0
- package/dist/registry/index.cjs +881 -13
- package/dist/registry/index.cjs.map +1 -0
- package/dist/registry/index.d.cts +1 -1
- package/dist/registry/index.d.mts +1 -1
- package/dist/registry/index.mjs +867 -2
- package/dist/registry/index.mjs.map +1 -0
- package/dist/{registry-FMU-ec5K.cjs → registry-9puTaRrD.cjs} +28 -31
- package/dist/registry-9puTaRrD.cjs.map +1 -0
- package/dist/{registry-BDnNV1Rk.mjs → registry-BpCwtrRt.mjs} +7 -10
- package/dist/{registry-BDnNV1Rk.mjs.map → registry-BpCwtrRt.mjs.map} +1 -1
- package/dist/round1-4Hyx8w0x.cjs +422 -0
- package/dist/round1-4Hyx8w0x.cjs.map +1 -0
- package/dist/round1-7v9LlE11.mjs +373 -0
- package/dist/round1-7v9LlE11.mjs.map +1 -0
- package/dist/round1-BHBjru1m.cjs +465 -0
- package/dist/round1-BHBjru1m.cjs.map +1 -0
- package/dist/round1-CMLKN2RR.mjs +195 -0
- package/dist/round1-CMLKN2RR.mjs.map +1 -0
- package/dist/round1-CWSXZx5R.cjs +208 -0
- package/dist/round1-CWSXZx5R.cjs.map +1 -0
- package/dist/round1-CcQCGlIT.mjs +208 -0
- package/dist/round1-CcQCGlIT.mjs.map +1 -0
- package/dist/round1-Cgm7j1kI.mjs +452 -0
- package/dist/round1-Cgm7j1kI.mjs.map +1 -0
- package/dist/round1-DQ0fnc1H.cjs +221 -0
- package/dist/round1-DQ0fnc1H.cjs.map +1 -0
- package/dist/round2-BWz9SQIi.cjs +305 -0
- package/dist/round2-BWz9SQIi.cjs.map +1 -0
- package/dist/round2-BkNRCXgS.mjs +292 -0
- package/dist/round2-BkNRCXgS.mjs.map +1 -0
- package/dist/round2-Bl2uK93U.mjs +450 -0
- package/dist/round2-Bl2uK93U.mjs.map +1 -0
- package/dist/round2-CdUT-AhH.cjs +499 -0
- package/dist/round2-CdUT-AhH.cjs.map +1 -0
- package/dist/round2-DOA3rnV-.mjs +280 -0
- package/dist/round2-DOA3rnV-.mjs.map +1 -0
- package/dist/round2-Dg24w-TU.mjs +397 -0
- package/dist/round2-Dg24w-TU.mjs.map +1 -0
- package/dist/round2-LylCa84n.cjs +293 -0
- package/dist/round2-LylCa84n.cjs.map +1 -0
- package/dist/round2-o2Q-GMbX.cjs +410 -0
- package/dist/round2-o2Q-GMbX.cjs.map +1 -0
- package/dist/storage-B-Gu68-O.cjs +79 -0
- package/dist/storage-B-Gu68-O.cjs.map +1 -0
- package/dist/storage-Bkkliz0K.mjs +74 -0
- package/dist/storage-Bkkliz0K.mjs.map +1 -0
- package/package.json +17 -17
- package/src/bin/frost.ts +849 -128
- package/src/cmd/common.ts +19 -1
- package/src/cmd/dkg/common.ts +97 -10
- package/src/cmd/dkg/coordinator/invite.ts +5 -2
- package/src/cmd/dkg/participant/finalize.ts +52 -18
- package/src/cmd/dkg/participant/round1.ts +39 -38
- package/src/cmd/dkg/participant/round2.ts +60 -26
- package/src/cmd/sign/coordinator/round2.ts +5 -1
- package/src/cmd/sign/participant/finalize.ts +6 -2
- package/src/cmd/sign/participant/receive.ts +5 -2
- package/src/dkg/group-invite.ts +12 -2
- package/src/dkg/proposed-participant.ts +33 -5
- package/src/frost/index.ts +1 -1
- package/src/registry/owner-record.ts +13 -2
- package/src/registry/participant-record.ts +36 -4
- package/src/registry/registry-impl.ts +74 -18
- package/dist/group-invite-CrbOabFL.cjs +0 -368
- package/dist/group-invite-CrbOabFL.cjs.map +0 -1
- package/dist/group-invite-Dz1Jmiky.d.cts.map +0 -1
- package/dist/group-invite-RPElq-fm.mjs +0 -338
- package/dist/group-invite-RPElq-fm.mjs.map +0 -1
- package/dist/group-invite-Wk9CIbHL.d.mts.map +0 -1
- package/dist/index-CcvTi5EA.d.cts.map +0 -1
- package/dist/index-DNCPeLNM.d.mts.map +0 -1
- package/dist/registry-FMU-ec5K.cjs.map +0 -1
- package/dist/registry-impl-BETn_lEO.d.mts.map +0 -1
- package/dist/registry-impl-C7w4awTv.cjs +0 -865
- package/dist/registry-impl-C7w4awTv.cjs.map +0 -1
- package/dist/registry-impl-CE76sTXQ.d.cts.map +0 -1
- package/dist/registry-impl-eYXVSPwM.mjs +0 -797
- package/dist/registry-impl-eYXVSPwM.mjs.map +0 -1
- package/dist/sign-2bOp18Fs.cjs +0 -4875
- package/dist/sign-2bOp18Fs.cjs.map +0 -1
- package/dist/sign-D8C3HJ4B.mjs +0 -4736
- package/dist/sign-D8C3HJ4B.mjs.map +0 -1
package/dist/frost/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/frost/index.ts"],"sourcesContent":["/**\n * Copyright © 2023-2026 Blockchain Commons, LLC\n * Copyright © 2025-2026 Parity Technologies\n *\n *\n * FROST cryptographic operations module.\n *\n * This module wraps the @frosts/ed25519 library to provide FROST\n * threshold signature operations for DKG and signing.\n *\n * @module\n */\n\nimport {\n Ed25519Sha512,\n Identifier,\n keys,\n serde,\n commitRound1,\n signRound2,\n aggregate,\n type Ed25519SigningNonces,\n type Ed25519SigningCommitments,\n type Ed25519SignatureShare,\n type Ed25519Signature,\n type KeyPackage,\n type PublicKeyPackage,\n type SigningShare,\n} from \"@frosts/ed25519\";\n\nimport { type SigningPackage, SigningPackageImpl, type RandomSource } from \"@frosts/core\";\n\n// Re-export types for convenience\nexport type {\n Ed25519SigningNonces,\n Ed25519SigningCommitments,\n Ed25519SignatureShare,\n Ed25519Signature,\n KeyPackage,\n PublicKeyPackage,\n RandomSource,\n};\n\nexport { Ed25519Sha512, Identifier, keys };\n\n// Type aliases for frost-hubert\nexport type FrostIdentifier = Identifier<typeof Ed25519Sha512>;\nexport type FrostKeyPackage = KeyPackage<typeof Ed25519Sha512>;\nexport type FrostPublicKeyPackage = PublicKeyPackage<typeof Ed25519Sha512>;\nexport type FrostSigningPackage = SigningPackage<typeof Ed25519Sha512>;\nexport type FrostSigningShare = SigningShare<typeof Ed25519Sha512>;\n\n// DKG round types - use the namespaced types from keys.dkg\nexport type DkgRound1Package = keys.dkg.round1.Package;\nexport type DkgRound1SecretPackage = keys.dkg.round1.SecretPackage;\nexport type DkgRound2Package = keys.dkg.round2.Package;\nexport type DkgRound2SecretPackage = keys.dkg.round2.SecretPackage;\n\n/**\n * Cryptographically secure random number generator using Web Crypto API.\n */\nexport class SecureRng implements RandomSource {\n fill(array: Uint8Array): void {\n globalThis.crypto.getRandomValues(array);\n }\n}\n\n/**\n * Create a new secure random number generator.\n */\nexport function createRng(): RandomSource {\n return new SecureRng();\n}\n\n/**\n * Create an identifier from a number (1-indexed participant ID).\n */\nexport function identifierFromU16(id: number): FrostIdentifier {\n return Identifier.fromU16(Ed25519Sha512, id);\n}\n\n/**\n * Serialize an identifier to bytes.\n */\nexport function serializeIdentifier(id: FrostIdentifier): Uint8Array {\n return id.serialize();\n}\n\n/**\n * Deserialize an identifier from bytes.\n */\nexport function deserializeIdentifier(bytes: Uint8Array): FrostIdentifier {\n return Identifier.deserialize(Ed25519Sha512, bytes);\n}\n\n/**\n * Convert an identifier to a hex string for use as a map key.\n */\nexport function identifierToHex(id: FrostIdentifier): string {\n return bytesToHex(id.serialize());\n}\n\n// =============================================================================\n// DKG Operations\n// =============================================================================\n\n/**\n * Execute DKG round 1 (part1) - Generate commitment and proof of knowledge.\n *\n * @param identifier - This participant's identifier\n * @param maxSigners - Total number of participants\n * @param minSigners - Threshold (minimum signers required)\n * @param rng - Random number generator\n * @returns Tuple of [SecretPackage, Package] where Package is broadcast to all\n */\nexport function dkgPart1(\n identifier: FrostIdentifier,\n maxSigners: number,\n minSigners: number,\n rng: RandomSource = createRng(),\n): [DkgRound1SecretPackage, DkgRound1Package] {\n return keys.dkg.part1(Ed25519Sha512, identifier, maxSigners, minSigners, rng);\n}\n\n/**\n * Execute DKG round 2 (part2) - Process round 1 packages and generate shares.\n *\n * @param secretPackage - The secret package from part1\n * @param round1Packages - Map of identifier hex to round1 packages from other participants\n * @returns Tuple of [Round2SecretPackage, Map of round2 packages to send]\n */\nexport function dkgPart2(\n secretPackage: DkgRound1SecretPackage,\n round1Packages: Map<string, DkgRound1Package>,\n): [DkgRound2SecretPackage, Map<string, DkgRound2Package>] {\n return keys.dkg.part2(Ed25519Sha512, secretPackage, round1Packages);\n}\n\n/**\n * Execute DKG round 3 (part3/finalize) - Compute final key package.\n *\n * @param round2SecretPackage - The secret package from part2\n * @param round1Packages - Map of identifier hex to round1 packages\n * @param round2Packages - Map of identifier hex to round2 packages received\n * @returns Promise of tuple [KeyPackage, PublicKeyPackage]\n */\nexport async function dkgPart3(\n round2SecretPackage: DkgRound2SecretPackage,\n round1Packages: Map<string, DkgRound1Package>,\n round2Packages: Map<string, DkgRound2Package>,\n): Promise<[FrostKeyPackage, FrostPublicKeyPackage]> {\n return keys.dkg.part3(Ed25519Sha512, round2SecretPackage, round1Packages, round2Packages);\n}\n\n// =============================================================================\n// Signing Operations\n// =============================================================================\n\n/**\n * Execute signing round 1 - Generate nonces and commitments.\n *\n * @param keyPackage - The participant's key package from DKG\n * @param rng - Random number generator\n * @returns Tuple of [SigningNonces, SigningCommitments]\n */\nexport function signingRound1(\n keyPackage: FrostKeyPackage,\n rng: RandomSource = createRng(),\n): [Ed25519SigningNonces, Ed25519SigningCommitments] {\n return commitRound1(keyPackage.signingShare, rng);\n}\n\n/**\n * Create a signing package from commitments and message.\n *\n * @param commitments - Map of identifier to signing commitments\n * @param message - The message to sign\n * @returns SigningPackage for round 2\n */\nexport function createSigningPackage(\n commitments: Map<FrostIdentifier, Ed25519SigningCommitments>,\n message: Uint8Array,\n): FrostSigningPackage {\n return new SigningPackageImpl(Ed25519Sha512, commitments, message);\n}\n\n/**\n * Execute signing round 2 - Generate signature share.\n *\n * @param signingPackage - The signing package with all commitments\n * @param nonces - This participant's nonces from round 1\n * @param keyPackage - This participant's key package\n * @returns Signature share\n */\nexport function signingRound2(\n signingPackage: FrostSigningPackage,\n nonces: Ed25519SigningNonces,\n keyPackage: FrostKeyPackage,\n): Ed25519SignatureShare {\n return signRound2(signingPackage, nonces, keyPackage);\n}\n\n/**\n * Aggregate signature shares into a final signature.\n *\n * @param signingPackage - The signing package used for round 2\n * @param signatureShares - Map of identifier to signature shares\n * @param publicKeyPackage - The group's public key package\n * @returns The aggregated signature\n */\nexport function aggregateSignatures(\n signingPackage: FrostSigningPackage,\n signatureShares: Map<FrostIdentifier, Ed25519SignatureShare>,\n publicKeyPackage: FrostPublicKeyPackage,\n): Ed25519Signature {\n return aggregate(signingPackage, signatureShares, publicKeyPackage);\n}\n\n// =============================================================================\n// Serialization Helpers - Using @frosts/ed25519 serde module\n// =============================================================================\n\n/**\n * Serialize a DKG round 1 package to JSON-compatible format.\n */\nexport function serializeDkgRound1Package(pkg: DkgRound1Package): SerializedDkgRound1Package {\n const json = serde.round1PackageToJson(pkg);\n return {\n commitment: {\n coefficients: json.commitment,\n },\n proofOfKnowledge: json.proof_of_knowledge,\n };\n}\n\n/**\n * Deserialize a DKG round 1 package from JSON format.\n */\nexport function deserializeDkgRound1Package(data: SerializedDkgRound1Package): DkgRound1Package {\n const json = {\n header: serde.DEFAULT_HEADER,\n commitment: data.commitment.coefficients,\n proof_of_knowledge: data.proofOfKnowledge,\n };\n return serde.round1PackageFromJson(json);\n}\n\n/**\n * Serialize a DKG round 2 package to JSON-compatible format.\n */\nexport function serializeDkgRound2Package(pkg: DkgRound2Package): SerializedDkgRound2Package {\n const json = serde.round2PackageToJson(pkg);\n return {\n signingShare: json.signing_share,\n };\n}\n\n/**\n * Deserialize a DKG round 2 package from JSON format.\n */\nexport function deserializeDkgRound2Package(data: SerializedDkgRound2Package): DkgRound2Package {\n const json = {\n header: serde.DEFAULT_HEADER,\n signing_share: data.signingShare,\n };\n return serde.round2PackageFromJson(json);\n}\n\n/**\n * Serialize a key package to JSON-compatible format.\n */\nexport function serializeKeyPackage(keyPackage: FrostKeyPackage): SerializedKeyPackage {\n const json = serde.keyPackageToJson(keyPackage);\n return {\n identifier: json.identifier,\n signingShare: json.signing_share,\n verifyingShare: json.verifying_share,\n verifyingKey: json.verifying_key,\n minSigners: json.min_signers,\n };\n}\n\n/**\n * Deserialize a key package from JSON format.\n */\nexport function deserializeKeyPackage(data: SerializedKeyPackage): FrostKeyPackage {\n const json = {\n header: serde.DEFAULT_HEADER,\n identifier: data.identifier,\n signing_share: data.signingShare,\n verifying_share: data.verifyingShare,\n verifying_key: data.verifyingKey,\n min_signers: data.minSigners,\n };\n return serde.keyPackageFromJson(json);\n}\n\n/**\n * Serialize a public key package to JSON-compatible format.\n */\nexport function serializePublicKeyPackage(pkg: FrostPublicKeyPackage): SerializedPublicKeyPackage {\n const json = serde.publicKeyPackageToJson(pkg);\n return {\n verifyingKey: json.verifying_key,\n verifyingShares: json.verifying_shares,\n // minSigners may be undefined in older packages\n ...(json.min_signers !== undefined ? { minSigners: json.min_signers } : {}),\n };\n}\n\n/**\n * Deserialize a public key package from JSON format.\n */\nexport function deserializePublicKeyPackage(\n data: SerializedPublicKeyPackage,\n): FrostPublicKeyPackage {\n const json = {\n header: serde.DEFAULT_HEADER,\n verifying_key: data.verifyingKey,\n verifying_shares: data.verifyingShares,\n min_signers: data.minSigners,\n };\n return serde.publicKeyPackageFromJson(json);\n}\n\n/**\n * Serialize signing nonces to JSON-compatible format.\n */\nexport function serializeSigningNonces(nonces: Ed25519SigningNonces): SerializedSigningNonces {\n // Access the internal properties of the nonces\n return {\n hiding: bytesToHex(nonces.hiding.serialize()),\n binding: bytesToHex(nonces.binding.serialize()),\n commitments: {\n hiding: bytesToHex(nonces.commitments.hiding.serialize()),\n binding: bytesToHex(nonces.commitments.binding.serialize()),\n },\n };\n}\n\n/**\n * Serialize signing commitments to JSON-compatible format.\n */\nexport function serializeSigningCommitments(\n commitments: Ed25519SigningCommitments,\n): SerializedSigningCommitments {\n const json = serde.signingCommitmentsToJson(commitments);\n return {\n hiding: json.hiding,\n binding: json.binding,\n };\n}\n\n/**\n * Deserialize signing commitments from JSON format.\n */\nexport function deserializeSigningCommitments(\n data: SerializedSigningCommitments,\n): Ed25519SigningCommitments {\n const json = {\n header: serde.DEFAULT_HEADER,\n hiding: data.hiding,\n binding: data.binding,\n };\n return serde.signingCommitmentsFromJson(json);\n}\n\n/**\n * Serialize a signature share to hex string.\n */\nexport function serializeSignatureShare(share: Ed25519SignatureShare): string {\n const json = serde.signatureShareToJson(share);\n return json.share;\n}\n\n/**\n * Deserialize a signature share from hex string.\n */\nexport function deserializeSignatureShare(hex: string): Ed25519SignatureShare {\n const json = {\n header: serde.DEFAULT_HEADER,\n share: hex,\n };\n return serde.signatureShareFromJson(json);\n}\n\n/**\n * Serialize a signature to bytes.\n */\nexport function serializeSignature(sig: Ed25519Signature): Uint8Array {\n return sig.serialize(Ed25519Sha512);\n}\n\n/**\n * Serialize a signature to hex string.\n */\nexport function serializeSignatureHex(sig: Ed25519Signature): string {\n return bytesToHex(sig.serialize(Ed25519Sha512));\n}\n\n// =============================================================================\n// Serialized Type Definitions\n// =============================================================================\n\nexport interface SerializedDkgRound1Package {\n commitment: {\n coefficients: string[]; // hex-encoded coefficient commitments\n };\n proofOfKnowledge: string; // hex-encoded proof of knowledge\n}\n\nexport interface SerializedDkgRound2Package {\n signingShare: string; // hex-encoded signing share\n}\n\nexport interface SerializedKeyPackage {\n identifier: string;\n signingShare: string;\n verifyingShare: string;\n verifyingKey: string;\n minSigners: number;\n}\n\nexport interface SerializedPublicKeyPackage {\n verifyingKey: string;\n verifyingShares: Record<string, string>; // identifier hex -> verifying share hex\n minSigners?: number;\n}\n\nexport interface SerializedSigningNonces {\n hiding: string;\n binding: string;\n commitments: {\n hiding: string;\n binding: string;\n };\n}\n\nexport interface SerializedSigningCommitments {\n hiding: string;\n binding: string;\n}\n\n// =============================================================================\n// Utility Functions - Re-export from serde\n// =============================================================================\n\n/**\n * Convert bytes to hex string.\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return serde.bytesToHex(bytes);\n}\n\n/**\n * Convert hex string to bytes.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n return serde.hexToBytes(hex);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/frost/index.ts"],"sourcesContent":["/**\n * Copyright © 2023-2026 Blockchain Commons, LLC\n * Copyright © 2025-2026 Parity Technologies\n *\n *\n * FROST cryptographic operations module.\n *\n * This module wraps the @frosts/ed25519 library to provide FROST\n * threshold signature operations for DKG and signing.\n *\n * @module\n */\n\nimport {\n Ed25519Sha512,\n Identifier,\n keys,\n serde,\n commitRound1,\n signRound2,\n aggregate,\n type Ed25519SigningNonces,\n type Ed25519SigningCommitments,\n type Ed25519SignatureShare,\n type Ed25519Signature,\n type KeyPackage,\n type PublicKeyPackage,\n type SigningShare,\n} from \"@frosts/ed25519\";\n\nimport { type SigningPackage, SigningPackageImpl, type RandomSource } from \"@frosts/core\";\n\n// Re-export types for convenience\nexport type {\n Ed25519SigningNonces,\n Ed25519SigningCommitments,\n Ed25519SignatureShare,\n Ed25519Signature,\n KeyPackage,\n PublicKeyPackage,\n RandomSource,\n};\n\nexport { Ed25519Sha512, Identifier, keys };\n\n// Type aliases for frost-hubert\nexport type FrostIdentifier = Identifier<typeof Ed25519Sha512>;\nexport type FrostKeyPackage = KeyPackage<typeof Ed25519Sha512>;\nexport type FrostPublicKeyPackage = PublicKeyPackage<typeof Ed25519Sha512>;\nexport type FrostSigningPackage = SigningPackage<typeof Ed25519Sha512>;\nexport type FrostSigningShare = SigningShare<typeof Ed25519Sha512>;\n\n// DKG round types - use the namespaced types from keys.dkg\nexport type DkgRound1Package = keys.dkg.round1.Package;\nexport type DkgRound1SecretPackage = keys.dkg.round1.SecretPackage;\nexport type DkgRound2Package = keys.dkg.round2.Package;\nexport type DkgRound2SecretPackage = keys.dkg.round2.SecretPackage;\n\n/**\n * Cryptographically secure random number generator using Web Crypto API.\n */\nexport class SecureRng implements RandomSource {\n fill(array: Uint8Array): void {\n globalThis.crypto.getRandomValues(array as Uint8Array<ArrayBuffer>);\n }\n}\n\n/**\n * Create a new secure random number generator.\n */\nexport function createRng(): RandomSource {\n return new SecureRng();\n}\n\n/**\n * Create an identifier from a number (1-indexed participant ID).\n */\nexport function identifierFromU16(id: number): FrostIdentifier {\n return Identifier.fromU16(Ed25519Sha512, id);\n}\n\n/**\n * Serialize an identifier to bytes.\n */\nexport function serializeIdentifier(id: FrostIdentifier): Uint8Array {\n return id.serialize();\n}\n\n/**\n * Deserialize an identifier from bytes.\n */\nexport function deserializeIdentifier(bytes: Uint8Array): FrostIdentifier {\n return Identifier.deserialize(Ed25519Sha512, bytes);\n}\n\n/**\n * Convert an identifier to a hex string for use as a map key.\n */\nexport function identifierToHex(id: FrostIdentifier): string {\n return bytesToHex(id.serialize());\n}\n\n// =============================================================================\n// DKG Operations\n// =============================================================================\n\n/**\n * Execute DKG round 1 (part1) - Generate commitment and proof of knowledge.\n *\n * @param identifier - This participant's identifier\n * @param maxSigners - Total number of participants\n * @param minSigners - Threshold (minimum signers required)\n * @param rng - Random number generator\n * @returns Tuple of [SecretPackage, Package] where Package is broadcast to all\n */\nexport function dkgPart1(\n identifier: FrostIdentifier,\n maxSigners: number,\n minSigners: number,\n rng: RandomSource = createRng(),\n): [DkgRound1SecretPackage, DkgRound1Package] {\n return keys.dkg.part1(Ed25519Sha512, identifier, maxSigners, minSigners, rng);\n}\n\n/**\n * Execute DKG round 2 (part2) - Process round 1 packages and generate shares.\n *\n * @param secretPackage - The secret package from part1\n * @param round1Packages - Map of identifier hex to round1 packages from other participants\n * @returns Tuple of [Round2SecretPackage, Map of round2 packages to send]\n */\nexport function dkgPart2(\n secretPackage: DkgRound1SecretPackage,\n round1Packages: Map<string, DkgRound1Package>,\n): [DkgRound2SecretPackage, Map<string, DkgRound2Package>] {\n return keys.dkg.part2(Ed25519Sha512, secretPackage, round1Packages);\n}\n\n/**\n * Execute DKG round 3 (part3/finalize) - Compute final key package.\n *\n * @param round2SecretPackage - The secret package from part2\n * @param round1Packages - Map of identifier hex to round1 packages\n * @param round2Packages - Map of identifier hex to round2 packages received\n * @returns Promise of tuple [KeyPackage, PublicKeyPackage]\n */\nexport async function dkgPart3(\n round2SecretPackage: DkgRound2SecretPackage,\n round1Packages: Map<string, DkgRound1Package>,\n round2Packages: Map<string, DkgRound2Package>,\n): Promise<[FrostKeyPackage, FrostPublicKeyPackage]> {\n return keys.dkg.part3(Ed25519Sha512, round2SecretPackage, round1Packages, round2Packages);\n}\n\n// =============================================================================\n// Signing Operations\n// =============================================================================\n\n/**\n * Execute signing round 1 - Generate nonces and commitments.\n *\n * @param keyPackage - The participant's key package from DKG\n * @param rng - Random number generator\n * @returns Tuple of [SigningNonces, SigningCommitments]\n */\nexport function signingRound1(\n keyPackage: FrostKeyPackage,\n rng: RandomSource = createRng(),\n): [Ed25519SigningNonces, Ed25519SigningCommitments] {\n return commitRound1(keyPackage.signingShare, rng);\n}\n\n/**\n * Create a signing package from commitments and message.\n *\n * @param commitments - Map of identifier to signing commitments\n * @param message - The message to sign\n * @returns SigningPackage for round 2\n */\nexport function createSigningPackage(\n commitments: Map<FrostIdentifier, Ed25519SigningCommitments>,\n message: Uint8Array,\n): FrostSigningPackage {\n return new SigningPackageImpl(Ed25519Sha512, commitments, message);\n}\n\n/**\n * Execute signing round 2 - Generate signature share.\n *\n * @param signingPackage - The signing package with all commitments\n * @param nonces - This participant's nonces from round 1\n * @param keyPackage - This participant's key package\n * @returns Signature share\n */\nexport function signingRound2(\n signingPackage: FrostSigningPackage,\n nonces: Ed25519SigningNonces,\n keyPackage: FrostKeyPackage,\n): Ed25519SignatureShare {\n return signRound2(signingPackage, nonces, keyPackage);\n}\n\n/**\n * Aggregate signature shares into a final signature.\n *\n * @param signingPackage - The signing package used for round 2\n * @param signatureShares - Map of identifier to signature shares\n * @param publicKeyPackage - The group's public key package\n * @returns The aggregated signature\n */\nexport function aggregateSignatures(\n signingPackage: FrostSigningPackage,\n signatureShares: Map<FrostIdentifier, Ed25519SignatureShare>,\n publicKeyPackage: FrostPublicKeyPackage,\n): Ed25519Signature {\n return aggregate(signingPackage, signatureShares, publicKeyPackage);\n}\n\n// =============================================================================\n// Serialization Helpers - Using @frosts/ed25519 serde module\n// =============================================================================\n\n/**\n * Serialize a DKG round 1 package to JSON-compatible format.\n */\nexport function serializeDkgRound1Package(pkg: DkgRound1Package): SerializedDkgRound1Package {\n const json = serde.round1PackageToJson(pkg);\n return {\n commitment: {\n coefficients: json.commitment,\n },\n proofOfKnowledge: json.proof_of_knowledge,\n };\n}\n\n/**\n * Deserialize a DKG round 1 package from JSON format.\n */\nexport function deserializeDkgRound1Package(data: SerializedDkgRound1Package): DkgRound1Package {\n const json = {\n header: serde.DEFAULT_HEADER,\n commitment: data.commitment.coefficients,\n proof_of_knowledge: data.proofOfKnowledge,\n };\n return serde.round1PackageFromJson(json);\n}\n\n/**\n * Serialize a DKG round 2 package to JSON-compatible format.\n */\nexport function serializeDkgRound2Package(pkg: DkgRound2Package): SerializedDkgRound2Package {\n const json = serde.round2PackageToJson(pkg);\n return {\n signingShare: json.signing_share,\n };\n}\n\n/**\n * Deserialize a DKG round 2 package from JSON format.\n */\nexport function deserializeDkgRound2Package(data: SerializedDkgRound2Package): DkgRound2Package {\n const json = {\n header: serde.DEFAULT_HEADER,\n signing_share: data.signingShare,\n };\n return serde.round2PackageFromJson(json);\n}\n\n/**\n * Serialize a key package to JSON-compatible format.\n */\nexport function serializeKeyPackage(keyPackage: FrostKeyPackage): SerializedKeyPackage {\n const json = serde.keyPackageToJson(keyPackage);\n return {\n identifier: json.identifier,\n signingShare: json.signing_share,\n verifyingShare: json.verifying_share,\n verifyingKey: json.verifying_key,\n minSigners: json.min_signers,\n };\n}\n\n/**\n * Deserialize a key package from JSON format.\n */\nexport function deserializeKeyPackage(data: SerializedKeyPackage): FrostKeyPackage {\n const json = {\n header: serde.DEFAULT_HEADER,\n identifier: data.identifier,\n signing_share: data.signingShare,\n verifying_share: data.verifyingShare,\n verifying_key: data.verifyingKey,\n min_signers: data.minSigners,\n };\n return serde.keyPackageFromJson(json);\n}\n\n/**\n * Serialize a public key package to JSON-compatible format.\n */\nexport function serializePublicKeyPackage(pkg: FrostPublicKeyPackage): SerializedPublicKeyPackage {\n const json = serde.publicKeyPackageToJson(pkg);\n return {\n verifyingKey: json.verifying_key,\n verifyingShares: json.verifying_shares,\n // minSigners may be undefined in older packages\n ...(json.min_signers !== undefined ? { minSigners: json.min_signers } : {}),\n };\n}\n\n/**\n * Deserialize a public key package from JSON format.\n */\nexport function deserializePublicKeyPackage(\n data: SerializedPublicKeyPackage,\n): FrostPublicKeyPackage {\n const json = {\n header: serde.DEFAULT_HEADER,\n verifying_key: data.verifyingKey,\n verifying_shares: data.verifyingShares,\n min_signers: data.minSigners,\n };\n return serde.publicKeyPackageFromJson(json);\n}\n\n/**\n * Serialize signing nonces to JSON-compatible format.\n */\nexport function serializeSigningNonces(nonces: Ed25519SigningNonces): SerializedSigningNonces {\n // Access the internal properties of the nonces\n return {\n hiding: bytesToHex(nonces.hiding.serialize()),\n binding: bytesToHex(nonces.binding.serialize()),\n commitments: {\n hiding: bytesToHex(nonces.commitments.hiding.serialize()),\n binding: bytesToHex(nonces.commitments.binding.serialize()),\n },\n };\n}\n\n/**\n * Serialize signing commitments to JSON-compatible format.\n */\nexport function serializeSigningCommitments(\n commitments: Ed25519SigningCommitments,\n): SerializedSigningCommitments {\n const json = serde.signingCommitmentsToJson(commitments);\n return {\n hiding: json.hiding,\n binding: json.binding,\n };\n}\n\n/**\n * Deserialize signing commitments from JSON format.\n */\nexport function deserializeSigningCommitments(\n data: SerializedSigningCommitments,\n): Ed25519SigningCommitments {\n const json = {\n header: serde.DEFAULT_HEADER,\n hiding: data.hiding,\n binding: data.binding,\n };\n return serde.signingCommitmentsFromJson(json);\n}\n\n/**\n * Serialize a signature share to hex string.\n */\nexport function serializeSignatureShare(share: Ed25519SignatureShare): string {\n const json = serde.signatureShareToJson(share);\n return json.share;\n}\n\n/**\n * Deserialize a signature share from hex string.\n */\nexport function deserializeSignatureShare(hex: string): Ed25519SignatureShare {\n const json = {\n header: serde.DEFAULT_HEADER,\n share: hex,\n };\n return serde.signatureShareFromJson(json);\n}\n\n/**\n * Serialize a signature to bytes.\n */\nexport function serializeSignature(sig: Ed25519Signature): Uint8Array {\n return sig.serialize(Ed25519Sha512);\n}\n\n/**\n * Serialize a signature to hex string.\n */\nexport function serializeSignatureHex(sig: Ed25519Signature): string {\n return bytesToHex(sig.serialize(Ed25519Sha512));\n}\n\n// =============================================================================\n// Serialized Type Definitions\n// =============================================================================\n\nexport interface SerializedDkgRound1Package {\n commitment: {\n coefficients: string[]; // hex-encoded coefficient commitments\n };\n proofOfKnowledge: string; // hex-encoded proof of knowledge\n}\n\nexport interface SerializedDkgRound2Package {\n signingShare: string; // hex-encoded signing share\n}\n\nexport interface SerializedKeyPackage {\n identifier: string;\n signingShare: string;\n verifyingShare: string;\n verifyingKey: string;\n minSigners: number;\n}\n\nexport interface SerializedPublicKeyPackage {\n verifyingKey: string;\n verifyingShares: Record<string, string>; // identifier hex -> verifying share hex\n minSigners?: number;\n}\n\nexport interface SerializedSigningNonces {\n hiding: string;\n binding: string;\n commitments: {\n hiding: string;\n binding: string;\n };\n}\n\nexport interface SerializedSigningCommitments {\n hiding: string;\n binding: string;\n}\n\n// =============================================================================\n// Utility Functions - Re-export from serde\n// =============================================================================\n\n/**\n * Convert bytes to hex string.\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return serde.bytesToHex(bytes);\n}\n\n/**\n * Convert hex string to bytes.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n return serde.hexToBytes(hex);\n}\n"],"mappings":"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"}
|
|
@@ -53,9 +53,32 @@ declare class DkgProposedParticipant {
|
|
|
53
53
|
responseArid(): ARID;
|
|
54
54
|
/**
|
|
55
55
|
* Compare participants by XID for sorting.
|
|
56
|
+
*
|
|
57
|
+
* Mirrors Rust `PartialOrd::partial_cmp` which uses
|
|
58
|
+
* `self.xid().cmp(&other.xid())` — i.e. the underlying 32-byte XID
|
|
59
|
+
* data is compared lexicographically (`Vec<u8>` ordering). The
|
|
60
|
+
* earlier port used `xid.toString().localeCompare(...)`, which (a)
|
|
61
|
+
* compares the UR-encoded base32-ish string, not the bytes, and (b)
|
|
62
|
+
* is locale-aware. Sorting on UR strings differs from the byte
|
|
63
|
+
* order whenever the underlying bytes contain values ≥ 0x80, so
|
|
64
|
+
* Rust and TS would assign different FROST identifiers to the same
|
|
65
|
+
* participant set — producing different secret shares.
|
|
56
66
|
*/
|
|
57
67
|
compareTo(other: DkgProposedParticipant): number;
|
|
58
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Lexicographic byte compare matching Rust's `Vec<u8>::cmp` /
|
|
71
|
+
* `XID::cmp`. Exported so the cmd-tree call sites (round1 / finalize)
|
|
72
|
+
* can use the same comparator when they sort deduplicated XID lists.
|
|
73
|
+
*
|
|
74
|
+
* `XID` is exactly 32 bytes so this only ever compares two equal-length
|
|
75
|
+
* inputs; the length-tiebreak branch mirrors the generic `Ord` impl on
|
|
76
|
+
* `Vec<u8>` and is included for correctness if ever applied to other
|
|
77
|
+
* byte sequences.
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
declare function compareXidBytes(a: Uint8Array, b: Uint8Array): number;
|
|
59
82
|
//#endregion
|
|
60
83
|
//#region src/dkg/group-invite.d.ts
|
|
61
84
|
/**
|
|
@@ -168,5 +191,5 @@ declare class DkgInvitation {
|
|
|
168
191
|
static fromInvite(invite: Envelope, now: Date, expectedSender: XIDDocument | undefined, recipient: XIDDocument): DkgInvitation;
|
|
169
192
|
}
|
|
170
193
|
//#endregion
|
|
171
|
-
export { declined as a, accepted as i, DkgInvitationResult as n, DkgProposedParticipant as o, DkgInvite as r, DkgInvitation as t };
|
|
172
|
-
//# sourceMappingURL=
|
|
194
|
+
export { declined as a, accepted as i, DkgInvitationResult as n, DkgProposedParticipant as o, DkgInvite as r, compareXidBytes as s, DkgInvitation as t };
|
|
195
|
+
//# sourceMappingURL=index-B3c-80VS.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-B3c-80VS.d.cts","names":[],"sources":["../src/dkg/proposed-participant.ts","../src/dkg/group-invite.ts"],"mappings":";;;;;;;;;;;cAsBa,sBAAA;EAAA,iBACM,SAAA;EAAA,iBACA,SAAA;EAAA,iBACA,SAAA;EAAA,iBACA,aAAA;EAAA,QAEV,WAAA,CAAA;EAiBuC;;;;;EAAA,OAAvC,MAAA,CAAO,QAAA,UAAkB,YAAA,EAAc,IAAA,GAAO,sBAAA;EAmBtC;;;;;EATf,GAAA,CAAA,GAAO,GAAA;EAqDP;;;;;EA5CA,WAAA,CAAA,GAAe,WAAA;EA6Dc;;;;;EApD7B,aAAA,CAAA;EAoD6C;;;;;EA3C7C,mBAAA,CAAA,GAAuB,QAAA;ECzDb;;;;;EDkEV,YAAA,CAAA,GAAgB,IAAA;EClE2D;;;AAK7E;;;;;AAOA;;;;;EDuEE,SAAA,CAAU,KAAA,EAAO,sBAAA;AAAA;;;;;;;;;;;;;iBAiBH,eAAA,CAAgB,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,UAAA;;;;;;;;KCpGtC,mBAAA;EAAwB,IAAA;AAAA;EAAuB,IAAA;EAAkB,MAAA;AAAA;;;;iBAK7D,QAAA,CAAA,GAAY,mBAAA;;;;iBAOZ,QAAA,CAAS,MAAA,WAAiB,mBAAA;;;;;;cAS7B,SAAA;EAAA,iBACM,UAAA;EAAA,iBACA,OAAA;EAAA,iBACA,QAAA;EAAA,iBACA,KAAA;EAAA,iBACA,WAAA;EAAA,iBACA,WAAA;EAAA,iBACA,QAAA;EAAA,iBACA,oBAAA;EAAA,QAEV,WAAA,CAAA;EDqEmD;;;;;EAAA,OC5CnD,MAAA,CACL,SAAA,EAAW,IAAA,EACX,MAAA,EAAQ,WAAA,EACR,OAAA,EAAS,IAAA,EACT,IAAA,EAAM,IAAA,EACN,UAAA,EAAY,IAAA,EACZ,UAAA,UACA,OAAA,UACA,YAAA,YACA,aAAA,EAAe,IAAA,KACd,SAAA;EAkCH,SAAA,CAAA,GAAa,IAAA;EAIb,MAAA,CAAA,GAAU,WAAA;EAIV,OAAA,CAAA,GAAW,IAAA;EAIX,IAAA,CAAA,GAAQ,IAAA;EAIR,UAAA,CAAA,GAAc,IAAA;EAId,UAAA,CAAA;EAIA,OAAA,CAAA;EAIA,YAAA,CAAA,GAAgB,sBAAA;EA3HF;;;;;EAoId,SAAA,CAAA,GAAa,aAAA;EA7HS;;;;AASxB;EAsJE,kBAAA,CAAA,GAAsB,QAAA;;;;;;EAqBtB,UAAA,CAAA,GAAc,QAAA;AAAA;;;;;;cAoBH,aAAA;EAAA,iBACM,aAAA;EAAA,iBACA,WAAA;EAAA,iBACA,OAAA;EAAA,iBACA,UAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,WAAA;EAAA,iBACA,QAAA;EAAA,iBACA,QAAA;EAAA,QAEV,WAAA,CAAA;EAoBP,YAAA,CAAA,GAAgB,IAAA;EAIhB,UAAA,CAAA,GAAc,IAAA;EAId,MAAA,CAAA,GAAU,WAAA;EAIV,SAAA,CAAA,GAAa,IAAA;EAIb,gBAAA,CAAA,GAAoB,QAAA;EAIpB,UAAA,CAAA;EAIA,OAAA,CAAA;EAIA,OAAA,CAAA,GAAW,IAAA;EArNT;;;;;EA8NF,UAAA,CAAW,QAAA,EAAU,mBAAA,EAAqB,SAAA,EAAW,WAAA,GAAc,cAAA;EA3NjE;;;;;EA2OF,UAAA,CAAW,QAAA,EAAU,mBAAA,EAAqB,SAAA,EAAW,WAAA,GAAc,QAAA;EAtOlD;;;;;EAAA,OAwPV,UAAA,CACL,MAAA,EAAQ,QAAA,EACR,GAAA,EAAK,IAAA,EACL,cAAA,EAAgB,WAAA,cAChB,SAAA,EAAW,WAAA,GACV,aAAA;AAAA"}
|
|
@@ -1,22 +1,112 @@
|
|
|
1
|
-
import { d as PendingRequests, i as Registry, l as GroupParticipant, o as ParticipantRecord, r as OwnerOutcome, s as OwnerRecord, t as AddOutcome, u as GroupRecord } from "./
|
|
2
|
-
import { t as DkgInvitation } from "./
|
|
1
|
+
import { d as PendingRequests, i as Registry, l as GroupParticipant, o as ParticipantRecord, r as OwnerOutcome, s as OwnerRecord, t as AddOutcome, u as GroupRecord } from "./index-DVbWyOs7.mjs";
|
|
2
|
+
import { t as DkgInvitation } from "./index-D3QTWkEm.mjs";
|
|
3
3
|
import { ARID, PrivateKeys, XID } from "@bcts/components";
|
|
4
4
|
import { Envelope, EnvelopeEncodableValue } from "@bcts/envelope";
|
|
5
|
-
import { XIDDocument } from "@bcts/xid";
|
|
6
5
|
import { SealedRequest } from "@bcts/gstp";
|
|
6
|
+
import { XIDDocument } from "@bcts/xid";
|
|
7
7
|
|
|
8
|
-
//#region src/cmd/common.d.ts
|
|
8
|
+
//#region src/cmd/dkg/common.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* Parse an ARID from a UR string.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors Rust `parse_arid_ur` (`cmd/common.rs:27-43`):
|
|
13
|
+
*
|
|
14
|
+
* 1. Trim and reject empty input.
|
|
15
|
+
* 2. Parse as a UR; require `ur_type` of `"arid"`.
|
|
16
|
+
* 3. Try `ARID::try_from(cbor)` (the tagged-CBOR form).
|
|
17
|
+
* 4. If that fails, fall back to interpreting the CBOR as a bare
|
|
18
|
+
* byte string and constructing the ARID from those bytes via
|
|
19
|
+
* `ARID::from_data_ref`.
|
|
20
|
+
*
|
|
21
|
+
* The earlier port only accepted the tagged form; this matches Rust
|
|
22
|
+
* by accepting the byte-string fallback too.
|
|
23
|
+
*/
|
|
24
|
+
declare function parseAridUr(urString: string): ARID;
|
|
25
|
+
/**
|
|
26
|
+
* Parse an envelope from a UR string.
|
|
27
|
+
*
|
|
28
|
+
* Port of `parse_envelope_ur()` from cmd/dkg/common.rs.
|
|
29
|
+
*/
|
|
30
|
+
declare function parseEnvelopeUr(urString: string): Envelope;
|
|
9
31
|
/**
|
|
10
|
-
*
|
|
11
|
-
* Copyright © 2025-2026 Parity Technologies
|
|
32
|
+
* Resolve the registry owner's XID document.
|
|
12
33
|
*
|
|
34
|
+
* The earlier port called this `resolveSender(registry)`, but its
|
|
35
|
+
* behaviour — "give me the owner" — has nothing in common with Rust's
|
|
36
|
+
* `resolve_sender(registry, input)` (which resolves an arbitrary
|
|
37
|
+
* named sender). This helper is renamed to its actual behaviour;
|
|
38
|
+
* the Rust-equivalent `resolveSender(registry, input)` lives below.
|
|
39
|
+
*/
|
|
40
|
+
declare function resolveOwnerXidDocument(registry: Registry): XIDDocument;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a sender XID document from the registry by UR or pet name.
|
|
13
43
|
*
|
|
14
|
-
*
|
|
44
|
+
* Mirrors Rust `resolve_sender(registry, input)`
|
|
45
|
+
* (`cmd/dkg/common.rs:76-94`):
|
|
15
46
|
*
|
|
16
|
-
*
|
|
47
|
+
* 1. Trim and reject empty input.
|
|
48
|
+
* 2. Try parsing the input as a `ur:xid`. If that succeeds, look it
|
|
49
|
+
* up via `registry.participant(xid)`; if no record is found,
|
|
50
|
+
* error with `Sender with XID {ur} not found`.
|
|
51
|
+
* 3. Otherwise look it up by pet name via
|
|
52
|
+
* `registry.participantByPetName(name)`; if no record is found,
|
|
53
|
+
* error with `Sender with pet name '{name}' not found`.
|
|
17
54
|
*
|
|
18
|
-
*
|
|
55
|
+
* Note Rust does NOT check the owner here — only the participants
|
|
56
|
+
* map. The earlier inline duplicate in `participant/round1.ts` did
|
|
57
|
+
* an extra owner-check fallback which is removed to match Rust.
|
|
19
58
|
*/
|
|
59
|
+
declare function resolveSender(registry: Registry, input: string): XIDDocument;
|
|
60
|
+
/**
|
|
61
|
+
* Resolve participant identifiers (XID URs or pet names) to records.
|
|
62
|
+
*
|
|
63
|
+
* Port of `resolve_participants()` from cmd/dkg/common.rs lines 29-74.
|
|
64
|
+
*/
|
|
65
|
+
declare function resolveParticipants(registry: Registry, inputs: string[]): [XID, ParticipantRecord][];
|
|
66
|
+
/**
|
|
67
|
+
* Get display name for sender from registry.
|
|
68
|
+
*
|
|
69
|
+
* Port of `resolve_sender_name()` from cmd/dkg/common.rs lines 96-116.
|
|
70
|
+
*/
|
|
71
|
+
declare function resolveSenderName(registry: Registry, sender: XIDDocument): string | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Build GroupParticipant[] from XIDDocuments using registry lookups.
|
|
74
|
+
*
|
|
75
|
+
* Port of `build_group_participants()` from cmd/dkg/common.rs lines 122-131.
|
|
76
|
+
*/
|
|
77
|
+
declare function buildGroupParticipants(registry: Registry, owner: OwnerRecord, participants: XIDDocument[]): GroupParticipant[];
|
|
78
|
+
/**
|
|
79
|
+
* Create a GroupParticipant from a XIDDocument, validating against the registry.
|
|
80
|
+
*
|
|
81
|
+
* Port of `group_participant_from_registry()` from cmd/dkg/common.rs lines 133-149.
|
|
82
|
+
*/
|
|
83
|
+
declare function groupParticipantFromRegistry(registry: Registry, owner: OwnerRecord, document: XIDDocument): GroupParticipant;
|
|
84
|
+
/**
|
|
85
|
+
* Format a participant name with owner marker if applicable.
|
|
86
|
+
*
|
|
87
|
+
* Port of `format_name_with_owner_marker()` from cmd/dkg/common.rs lines 155-157.
|
|
88
|
+
*/
|
|
89
|
+
declare function formatNameWithOwnerMarker(name: string, isOwner: boolean): string;
|
|
90
|
+
/**
|
|
91
|
+
* Get display names for participants, sorted by XID, with owner marked.
|
|
92
|
+
*
|
|
93
|
+
* Port of `participant_names_from_registry()` from cmd/dkg/common.rs lines 159-191.
|
|
94
|
+
*/
|
|
95
|
+
declare function participantNamesFromRegistry(registry: Registry, participants: XIDDocument[], ownerXid: XID, ownerPetName: string | undefined): string[];
|
|
96
|
+
/**
|
|
97
|
+
* Get the DKG state directory for a given registry path and group ID.
|
|
98
|
+
*
|
|
99
|
+
* Port of `dkg_state_dir()` from cmd/dkg/common.rs.
|
|
100
|
+
*/
|
|
101
|
+
declare function dkgStateDir(registryPath: string, groupIdHex: string): string;
|
|
102
|
+
/**
|
|
103
|
+
* Convert a verifying key bytes to a SigningPublicKey.
|
|
104
|
+
*
|
|
105
|
+
* Port of `signing_key_from_verifying()` from cmd/dkg/common.rs.
|
|
106
|
+
*/
|
|
107
|
+
declare function signingKeyFromVerifying(verifyingKeyBytes: Uint8Array): unknown;
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region src/cmd/common.d.ts
|
|
20
110
|
/**
|
|
21
111
|
* Get the group state directory for a given registry path and group ID.
|
|
22
112
|
*
|
|
@@ -224,74 +314,6 @@ declare function parallelSend(client: StorageClient, messages: [XID, ARID, Envel
|
|
|
224
314
|
*/
|
|
225
315
|
declare function checkAridExists(client: StorageClient, arid: ARID): Promise<boolean>;
|
|
226
316
|
//#endregion
|
|
227
|
-
//#region src/cmd/dkg/common.d.ts
|
|
228
|
-
/**
|
|
229
|
-
* Parse an ARID from a UR string.
|
|
230
|
-
*
|
|
231
|
-
* Port of `parse_arid_ur()` from cmd/dkg/common.rs.
|
|
232
|
-
*/
|
|
233
|
-
declare function parseAridUr(urString: string): ARID;
|
|
234
|
-
/**
|
|
235
|
-
* Parse an envelope from a UR string.
|
|
236
|
-
*
|
|
237
|
-
* Port of `parse_envelope_ur()` from cmd/dkg/common.rs.
|
|
238
|
-
*/
|
|
239
|
-
declare function parseEnvelopeUr(urString: string): Envelope;
|
|
240
|
-
/**
|
|
241
|
-
* Resolve the sender XID document from the registry.
|
|
242
|
-
*
|
|
243
|
-
* Port of `resolve_sender()` from cmd/dkg/common.rs.
|
|
244
|
-
*/
|
|
245
|
-
declare function resolveSender(registry: Registry): XIDDocument;
|
|
246
|
-
/**
|
|
247
|
-
* Resolve participant identifiers (XID URs or pet names) to records.
|
|
248
|
-
*
|
|
249
|
-
* Port of `resolve_participants()` from cmd/dkg/common.rs lines 29-74.
|
|
250
|
-
*/
|
|
251
|
-
declare function resolveParticipants(registry: Registry, inputs: string[]): [XID, ParticipantRecord][];
|
|
252
|
-
/**
|
|
253
|
-
* Get display name for sender from registry.
|
|
254
|
-
*
|
|
255
|
-
* Port of `resolve_sender_name()` from cmd/dkg/common.rs lines 96-116.
|
|
256
|
-
*/
|
|
257
|
-
declare function resolveSenderName(registry: Registry, sender: XIDDocument): string | undefined;
|
|
258
|
-
/**
|
|
259
|
-
* Build GroupParticipant[] from XIDDocuments using registry lookups.
|
|
260
|
-
*
|
|
261
|
-
* Port of `build_group_participants()` from cmd/dkg/common.rs lines 122-131.
|
|
262
|
-
*/
|
|
263
|
-
declare function buildGroupParticipants(registry: Registry, owner: OwnerRecord, participants: XIDDocument[]): GroupParticipant[];
|
|
264
|
-
/**
|
|
265
|
-
* Create a GroupParticipant from a XIDDocument, validating against the registry.
|
|
266
|
-
*
|
|
267
|
-
* Port of `group_participant_from_registry()` from cmd/dkg/common.rs lines 133-149.
|
|
268
|
-
*/
|
|
269
|
-
declare function groupParticipantFromRegistry(registry: Registry, owner: OwnerRecord, document: XIDDocument): GroupParticipant;
|
|
270
|
-
/**
|
|
271
|
-
* Format a participant name with owner marker if applicable.
|
|
272
|
-
*
|
|
273
|
-
* Port of `format_name_with_owner_marker()` from cmd/dkg/common.rs lines 155-157.
|
|
274
|
-
*/
|
|
275
|
-
declare function formatNameWithOwnerMarker(name: string, isOwner: boolean): string;
|
|
276
|
-
/**
|
|
277
|
-
* Get display names for participants, sorted by XID, with owner marked.
|
|
278
|
-
*
|
|
279
|
-
* Port of `participant_names_from_registry()` from cmd/dkg/common.rs lines 159-191.
|
|
280
|
-
*/
|
|
281
|
-
declare function participantNamesFromRegistry(registry: Registry, participants: XIDDocument[], ownerXid: XID, ownerPetName: string | undefined): string[];
|
|
282
|
-
/**
|
|
283
|
-
* Get the DKG state directory for a given registry path and group ID.
|
|
284
|
-
*
|
|
285
|
-
* Port of `dkg_state_dir()` from cmd/dkg/common.rs.
|
|
286
|
-
*/
|
|
287
|
-
declare function dkgStateDir(registryPath: string, groupIdHex: string): string;
|
|
288
|
-
/**
|
|
289
|
-
* Convert a verifying key bytes to a SigningPublicKey.
|
|
290
|
-
*
|
|
291
|
-
* Port of `signing_key_from_verifying()` from cmd/dkg/common.rs.
|
|
292
|
-
*/
|
|
293
|
-
declare function signingKeyFromVerifying(verifyingKeyBytes: Uint8Array): unknown;
|
|
294
|
-
//#endregion
|
|
295
317
|
//#region src/cmd/dkg/coordinator/invite.d.ts
|
|
296
318
|
/**
|
|
297
319
|
* Options for the DKG invite command.
|
|
@@ -612,7 +634,7 @@ declare namespace index_d_exports$5 {
|
|
|
612
634
|
export { DkgFinalizeOptions, DkgFinalizeResult, DkgReceiveOptions, DkgReceiveResult, DkgRound1Options, DkgRound1Result, DkgRound2Options, DkgRound2Result, InviteDetails, decodeInviteDetails, finalize$1 as finalize, receive$1 as receive, resolveInviteEnvelope, round1$2 as round1, round2$2 as round2 };
|
|
613
635
|
}
|
|
614
636
|
declare namespace index_d_exports$4 {
|
|
615
|
-
export { buildGroupParticipants, index_d_exports$6 as coordinator, dkgStateDir, formatNameWithOwnerMarker, groupParticipantFromRegistry, groupStateDir, parseAridUr, parseEnvelopeUr, index_d_exports$5 as participant, participantNamesFromRegistry, resolveParticipants, resolveSender, resolveSenderName, signingKeyFromVerifying };
|
|
637
|
+
export { buildGroupParticipants, index_d_exports$6 as coordinator, dkgStateDir, formatNameWithOwnerMarker, groupParticipantFromRegistry, groupStateDir, parseAridUr, parseEnvelopeUr, index_d_exports$5 as participant, participantNamesFromRegistry, resolveOwnerXidDocument, resolveParticipants, resolveSender, resolveSenderName, signingKeyFromVerifying };
|
|
616
638
|
}
|
|
617
639
|
//#endregion
|
|
618
640
|
//#region src/cmd/sign/common.d.ts
|
|
@@ -1098,5 +1120,5 @@ declare namespace index_d_exports {
|
|
|
1098
1120
|
*/
|
|
1099
1121
|
declare function participantsFilePath(registry: string | undefined, cwd: string): string;
|
|
1100
1122
|
//#endregion
|
|
1101
|
-
export { StorageClient as C, isVerbose as D, groupStateDir as E, setVerbose as O, putWithIndicator as S, createStorageClient as T, fetchStatusTimeout as _, CollectionResult as a, parallelSend as b, FetchStatus as c, directionEmoji as d, emptyCollectionResult as f, fetchStatusSuccess as g, fetchStatusRejected as h, checkAridExists as i, ParallelFetchConfig as l, fetchStatusPending as m, index_d_exports$1 as n, DEFAULT_TIMEOUT_SECONDS as o, fetchStatusError as p, index_d_exports$4 as r, Direction as s, index_d_exports as t, buildFetchRequests as u, parallelFetch as v, StorageSelection as w, getWithIndicator as x, parallelFetchConfigWithTimeout as y };
|
|
1102
|
-
//# sourceMappingURL=index-
|
|
1123
|
+
export { signingKeyFromVerifying as A, StorageClient as C, isVerbose as D, groupStateDir as E, setVerbose as O, putWithIndicator as S, createStorageClient as T, fetchStatusTimeout as _, CollectionResult as a, parallelSend as b, FetchStatus as c, directionEmoji as d, emptyCollectionResult as f, fetchStatusSuccess as g, fetchStatusRejected as h, checkAridExists as i, parseAridUr as k, ParallelFetchConfig as l, fetchStatusPending as m, index_d_exports$1 as n, DEFAULT_TIMEOUT_SECONDS as o, fetchStatusError as p, index_d_exports$4 as r, Direction as s, index_d_exports as t, buildFetchRequests as u, parallelFetch as v, StorageSelection as w, getWithIndicator as x, parallelFetchConfigWithTimeout as y };
|
|
1124
|
+
//# sourceMappingURL=index-BgbSGpxn.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BgbSGpxn.d.mts","names":[],"sources":["../src/cmd/dkg/common.ts","../src/cmd/common.ts","../src/cmd/storage.ts","../src/cmd/busy.ts","../src/cmd/parallel.ts","../src/cmd/check.ts","../src/cmd/dkg/coordinator/invite.ts","../src/cmd/dkg/coordinator/round1.ts","../src/cmd/dkg/coordinator/round2.ts","../src/cmd/dkg/coordinator/finalize.ts","../src/cmd/dkg/coordinator/index.ts","../src/cmd/dkg/participant/receive.ts","../src/cmd/dkg/participant/round1.ts","../src/cmd/dkg/participant/round2.ts","../src/cmd/dkg/participant/finalize.ts","../src/cmd/dkg/participant/index.ts","../src/cmd/dkg/index.ts","../src/cmd/sign/common.ts","../src/cmd/sign/coordinator/invite.ts","../src/cmd/sign/coordinator/round1.ts","../src/cmd/sign/coordinator/round2.ts","../src/cmd/sign/coordinator/index.ts","../src/cmd/sign/participant/receive.ts","../src/cmd/sign/participant/round1.ts","../src/cmd/sign/participant/round2.ts","../src/cmd/sign/participant/finalize.ts","../src/cmd/sign/participant/index.ts","../src/cmd/sign/index.ts","../src/cmd/registry/owner/set.ts","../src/cmd/registry/participant/add.ts","../src/cmd/registry/index.ts"],"mappings":"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"}
|
|
@@ -185,6 +185,13 @@ declare class OwnerRecord {
|
|
|
185
185
|
toJSON(): Record<string, unknown>;
|
|
186
186
|
/**
|
|
187
187
|
* Deserialize from JSON object.
|
|
188
|
+
*
|
|
189
|
+
* Mirrors Rust's `#[serde(deny_unknown_fields)]` derive on
|
|
190
|
+
* `OwnerRecord` (`owner_record.rs:13-17`) — any field not in
|
|
191
|
+
* `{xid_document, pet_name}` causes Rust's `serde_json::from_str`
|
|
192
|
+
* to error with `unknown field`, and we mirror that here so a
|
|
193
|
+
* registry file produced by a future Rust version with extra
|
|
194
|
+
* fields is rejected explicitly rather than silently lossy.
|
|
188
195
|
*/
|
|
189
196
|
static fromJSON(json: Record<string, unknown>): OwnerRecord;
|
|
190
197
|
}
|
|
@@ -255,6 +262,14 @@ declare class ParticipantRecord {
|
|
|
255
262
|
toJSON(): Record<string, unknown>;
|
|
256
263
|
/**
|
|
257
264
|
* Deserialize from JSON object.
|
|
265
|
+
*
|
|
266
|
+
* Mirrors Rust's `#[serde(deny_unknown_fields)]` derive on
|
|
267
|
+
* `ParticipantRecord` (`participant_record.rs:12-17`) — Rust's
|
|
268
|
+
* `serde_json::from_str` errors with `unknown field` for any
|
|
269
|
+
* field outside `{xid_document, pet_name}`. We mirror that
|
|
270
|
+
* behaviour so a registry file produced by a future Rust
|
|
271
|
+
* version with extra fields is rejected explicitly rather than
|
|
272
|
+
* silently lossy.
|
|
258
273
|
*/
|
|
259
274
|
static fromJSON(json: Record<string, unknown>): ParticipantRecord;
|
|
260
275
|
}
|
|
@@ -326,7 +341,27 @@ declare class Registry {
|
|
|
326
341
|
/**
|
|
327
342
|
* Add a participant.
|
|
328
343
|
*
|
|
329
|
-
*
|
|
344
|
+
* Mirrors Rust `Registry::add_participant`
|
|
345
|
+
* (`registry_impl.rs:83-124`):
|
|
346
|
+
*
|
|
347
|
+
* 1. If `record.pet_name()` is already used by some other XID,
|
|
348
|
+
* bail with `"Pet name '{name}' already used by another
|
|
349
|
+
* participant"`.
|
|
350
|
+
* 2. If `record.pet_name()` matches an existing record under the
|
|
351
|
+
* *same* XID and the public keys also match, return
|
|
352
|
+
* `AlreadyPresent`.
|
|
353
|
+
* 3. If the pet name matches the same XID but public keys don't,
|
|
354
|
+
* bail with `"Participant already exists with a different pet
|
|
355
|
+
* name"`.
|
|
356
|
+
* 4. Otherwise look up by XID. If present and public-keys + pet-name
|
|
357
|
+
* both match, return `AlreadyPresent`; if XID is present but
|
|
358
|
+
* anything differs, bail. If XID is new, insert and return
|
|
359
|
+
* `Inserted`.
|
|
360
|
+
*
|
|
361
|
+
* The earlier port short-circuited on `participants.has(xidUr)` and
|
|
362
|
+
* always returned `AlreadyPresent` — silently allowing re-adds with
|
|
363
|
+
* a different pet name or different public keys, which Rust
|
|
364
|
+
* correctly forbids.
|
|
330
365
|
*/
|
|
331
366
|
addParticipant(xid: XID, record: ParticipantRecord): AddOutcome;
|
|
332
367
|
/**
|
|
@@ -378,6 +413,15 @@ declare class Registry {
|
|
|
378
413
|
save(filePath: string): void;
|
|
379
414
|
/**
|
|
380
415
|
* Serialize to JSON object.
|
|
416
|
+
*
|
|
417
|
+
* Mirrors Rust `Registry`'s field declaration order
|
|
418
|
+
* (`registry_impl.rs:8-14` — `owner, participants, groups`). JSON
|
|
419
|
+
* object member order is not semantically significant, but
|
|
420
|
+
* `serde_json::to_string_pretty` emits keys in declaration order,
|
|
421
|
+
* so for byte-equal `registry.json` (used by the integration tests
|
|
422
|
+
* as a string assertion) the TS port must match Rust's order.
|
|
423
|
+
* Empty `owner` is omitted via `Option::None` skip in Rust; we
|
|
424
|
+
* reproduce that by only setting the key when the owner exists.
|
|
381
425
|
*/
|
|
382
426
|
toJSON(): Record<string, unknown>;
|
|
383
427
|
/**
|
|
@@ -393,4 +437,4 @@ declare class Registry {
|
|
|
393
437
|
declare function resolveRegistryPath(registryArg: string | undefined, cwd: string): string;
|
|
394
438
|
//#endregion
|
|
395
439
|
export { resolveRegistryPath as a, ContributionPaths as c, PendingRequests as d, Registry as i, GroupParticipant as l, GroupOutcome as n, ParticipantRecord as o, OwnerOutcome as r, OwnerRecord as s, AddOutcome as t, GroupRecord as u };
|
|
396
|
-
//# sourceMappingURL=
|
|
440
|
+
//# sourceMappingURL=index-C8QeHNwa.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-C8QeHNwa.d.cts","names":[],"sources":["../src/registry/group-record.ts","../src/registry/owner-record.ts","../src/registry/participant-record.ts","../src/registry/registry-impl.ts"],"mappings":"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"}
|
|
@@ -53,9 +53,32 @@ declare class DkgProposedParticipant {
|
|
|
53
53
|
responseArid(): ARID;
|
|
54
54
|
/**
|
|
55
55
|
* Compare participants by XID for sorting.
|
|
56
|
+
*
|
|
57
|
+
* Mirrors Rust `PartialOrd::partial_cmp` which uses
|
|
58
|
+
* `self.xid().cmp(&other.xid())` — i.e. the underlying 32-byte XID
|
|
59
|
+
* data is compared lexicographically (`Vec<u8>` ordering). The
|
|
60
|
+
* earlier port used `xid.toString().localeCompare(...)`, which (a)
|
|
61
|
+
* compares the UR-encoded base32-ish string, not the bytes, and (b)
|
|
62
|
+
* is locale-aware. Sorting on UR strings differs from the byte
|
|
63
|
+
* order whenever the underlying bytes contain values ≥ 0x80, so
|
|
64
|
+
* Rust and TS would assign different FROST identifiers to the same
|
|
65
|
+
* participant set — producing different secret shares.
|
|
56
66
|
*/
|
|
57
67
|
compareTo(other: DkgProposedParticipant): number;
|
|
58
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Lexicographic byte compare matching Rust's `Vec<u8>::cmp` /
|
|
71
|
+
* `XID::cmp`. Exported so the cmd-tree call sites (round1 / finalize)
|
|
72
|
+
* can use the same comparator when they sort deduplicated XID lists.
|
|
73
|
+
*
|
|
74
|
+
* `XID` is exactly 32 bytes so this only ever compares two equal-length
|
|
75
|
+
* inputs; the length-tiebreak branch mirrors the generic `Ord` impl on
|
|
76
|
+
* `Vec<u8>` and is included for correctness if ever applied to other
|
|
77
|
+
* byte sequences.
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
declare function compareXidBytes(a: Uint8Array, b: Uint8Array): number;
|
|
59
82
|
//#endregion
|
|
60
83
|
//#region src/dkg/group-invite.d.ts
|
|
61
84
|
/**
|
|
@@ -168,5 +191,5 @@ declare class DkgInvitation {
|
|
|
168
191
|
static fromInvite(invite: Envelope, now: Date, expectedSender: XIDDocument | undefined, recipient: XIDDocument): DkgInvitation;
|
|
169
192
|
}
|
|
170
193
|
//#endregion
|
|
171
|
-
export { declined as a, accepted as i, DkgInvitationResult as n, DkgProposedParticipant as o, DkgInvite as r, DkgInvitation as t };
|
|
172
|
-
//# sourceMappingURL=
|
|
194
|
+
export { declined as a, accepted as i, DkgInvitationResult as n, DkgProposedParticipant as o, DkgInvite as r, compareXidBytes as s, DkgInvitation as t };
|
|
195
|
+
//# sourceMappingURL=index-D3QTWkEm.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D3QTWkEm.d.mts","names":[],"sources":["../src/dkg/proposed-participant.ts","../src/dkg/group-invite.ts"],"mappings":";;;;;;;;;;;cAsBa,sBAAA;EAAA,iBACM,SAAA;EAAA,iBACA,SAAA;EAAA,iBACA,SAAA;EAAA,iBACA,aAAA;EAAA,QAEV,WAAA,CAAA;EAiBuC;;;;;EAAA,OAAvC,MAAA,CAAO,QAAA,UAAkB,YAAA,EAAc,IAAA,GAAO,sBAAA;EAmBtC;;;;;EATf,GAAA,CAAA,GAAO,GAAA;EAqDP;;;;;EA5CA,WAAA,CAAA,GAAe,WAAA;EA6Dc;;;;;EApD7B,aAAA,CAAA;EAoD6C;;;;;EA3C7C,mBAAA,CAAA,GAAuB,QAAA;ECzDb;;;;;EDkEV,YAAA,CAAA,GAAgB,IAAA;EClE2D;;;AAK7E;;;;;AAOA;;;;;EDuEE,SAAA,CAAU,KAAA,EAAO,sBAAA;AAAA;;;;;;;;;;;;;iBAiBH,eAAA,CAAgB,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,UAAA;;;;;;;;KCpGtC,mBAAA;EAAwB,IAAA;AAAA;EAAuB,IAAA;EAAkB,MAAA;AAAA;;;;iBAK7D,QAAA,CAAA,GAAY,mBAAA;;;;iBAOZ,QAAA,CAAS,MAAA,WAAiB,mBAAA;;;;;;cAS7B,SAAA;EAAA,iBACM,UAAA;EAAA,iBACA,OAAA;EAAA,iBACA,QAAA;EAAA,iBACA,KAAA;EAAA,iBACA,WAAA;EAAA,iBACA,WAAA;EAAA,iBACA,QAAA;EAAA,iBACA,oBAAA;EAAA,QAEV,WAAA,CAAA;EDqEmD;;;;;EAAA,OC5CnD,MAAA,CACL,SAAA,EAAW,IAAA,EACX,MAAA,EAAQ,WAAA,EACR,OAAA,EAAS,IAAA,EACT,IAAA,EAAM,IAAA,EACN,UAAA,EAAY,IAAA,EACZ,UAAA,UACA,OAAA,UACA,YAAA,YACA,aAAA,EAAe,IAAA,KACd,SAAA;EAkCH,SAAA,CAAA,GAAa,IAAA;EAIb,MAAA,CAAA,GAAU,WAAA;EAIV,OAAA,CAAA,GAAW,IAAA;EAIX,IAAA,CAAA,GAAQ,IAAA;EAIR,UAAA,CAAA,GAAc,IAAA;EAId,UAAA,CAAA;EAIA,OAAA,CAAA;EAIA,YAAA,CAAA,GAAgB,sBAAA;EA3HF;;;;;EAoId,SAAA,CAAA,GAAa,aAAA;EA7HS;;;;AASxB;EAsJE,kBAAA,CAAA,GAAsB,QAAA;;;;;;EAqBtB,UAAA,CAAA,GAAc,QAAA;AAAA;;;;;;cAoBH,aAAA;EAAA,iBACM,aAAA;EAAA,iBACA,WAAA;EAAA,iBACA,OAAA;EAAA,iBACA,UAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,WAAA;EAAA,iBACA,QAAA;EAAA,iBACA,QAAA;EAAA,QAEV,WAAA,CAAA;EAoBP,YAAA,CAAA,GAAgB,IAAA;EAIhB,UAAA,CAAA,GAAc,IAAA;EAId,MAAA,CAAA,GAAU,WAAA;EAIV,SAAA,CAAA,GAAa,IAAA;EAIb,gBAAA,CAAA,GAAoB,QAAA;EAIpB,UAAA,CAAA;EAIA,OAAA,CAAA;EAIA,OAAA,CAAA,GAAW,IAAA;EArNT;;;;;EA8NF,UAAA,CAAW,QAAA,EAAU,mBAAA,EAAqB,SAAA,EAAW,WAAA,GAAc,cAAA;EA3NjE;;;;;EA2OF,UAAA,CAAW,QAAA,EAAU,mBAAA,EAAqB,SAAA,EAAW,WAAA,GAAc,QAAA;EAtOlD;;;;;EAAA,OAwPV,UAAA,CACL,MAAA,EAAQ,QAAA,EACR,GAAA,EAAK,IAAA,EACL,cAAA,EAAgB,WAAA,cAChB,SAAA,EAAW,WAAA,GACV,aAAA;AAAA"}
|
|
@@ -185,6 +185,13 @@ declare class OwnerRecord {
|
|
|
185
185
|
toJSON(): Record<string, unknown>;
|
|
186
186
|
/**
|
|
187
187
|
* Deserialize from JSON object.
|
|
188
|
+
*
|
|
189
|
+
* Mirrors Rust's `#[serde(deny_unknown_fields)]` derive on
|
|
190
|
+
* `OwnerRecord` (`owner_record.rs:13-17`) — any field not in
|
|
191
|
+
* `{xid_document, pet_name}` causes Rust's `serde_json::from_str`
|
|
192
|
+
* to error with `unknown field`, and we mirror that here so a
|
|
193
|
+
* registry file produced by a future Rust version with extra
|
|
194
|
+
* fields is rejected explicitly rather than silently lossy.
|
|
188
195
|
*/
|
|
189
196
|
static fromJSON(json: Record<string, unknown>): OwnerRecord;
|
|
190
197
|
}
|
|
@@ -255,6 +262,14 @@ declare class ParticipantRecord {
|
|
|
255
262
|
toJSON(): Record<string, unknown>;
|
|
256
263
|
/**
|
|
257
264
|
* Deserialize from JSON object.
|
|
265
|
+
*
|
|
266
|
+
* Mirrors Rust's `#[serde(deny_unknown_fields)]` derive on
|
|
267
|
+
* `ParticipantRecord` (`participant_record.rs:12-17`) — Rust's
|
|
268
|
+
* `serde_json::from_str` errors with `unknown field` for any
|
|
269
|
+
* field outside `{xid_document, pet_name}`. We mirror that
|
|
270
|
+
* behaviour so a registry file produced by a future Rust
|
|
271
|
+
* version with extra fields is rejected explicitly rather than
|
|
272
|
+
* silently lossy.
|
|
258
273
|
*/
|
|
259
274
|
static fromJSON(json: Record<string, unknown>): ParticipantRecord;
|
|
260
275
|
}
|
|
@@ -326,7 +341,27 @@ declare class Registry {
|
|
|
326
341
|
/**
|
|
327
342
|
* Add a participant.
|
|
328
343
|
*
|
|
329
|
-
*
|
|
344
|
+
* Mirrors Rust `Registry::add_participant`
|
|
345
|
+
* (`registry_impl.rs:83-124`):
|
|
346
|
+
*
|
|
347
|
+
* 1. If `record.pet_name()` is already used by some other XID,
|
|
348
|
+
* bail with `"Pet name '{name}' already used by another
|
|
349
|
+
* participant"`.
|
|
350
|
+
* 2. If `record.pet_name()` matches an existing record under the
|
|
351
|
+
* *same* XID and the public keys also match, return
|
|
352
|
+
* `AlreadyPresent`.
|
|
353
|
+
* 3. If the pet name matches the same XID but public keys don't,
|
|
354
|
+
* bail with `"Participant already exists with a different pet
|
|
355
|
+
* name"`.
|
|
356
|
+
* 4. Otherwise look up by XID. If present and public-keys + pet-name
|
|
357
|
+
* both match, return `AlreadyPresent`; if XID is present but
|
|
358
|
+
* anything differs, bail. If XID is new, insert and return
|
|
359
|
+
* `Inserted`.
|
|
360
|
+
*
|
|
361
|
+
* The earlier port short-circuited on `participants.has(xidUr)` and
|
|
362
|
+
* always returned `AlreadyPresent` — silently allowing re-adds with
|
|
363
|
+
* a different pet name or different public keys, which Rust
|
|
364
|
+
* correctly forbids.
|
|
330
365
|
*/
|
|
331
366
|
addParticipant(xid: XID, record: ParticipantRecord): AddOutcome;
|
|
332
367
|
/**
|
|
@@ -378,6 +413,15 @@ declare class Registry {
|
|
|
378
413
|
save(filePath: string): void;
|
|
379
414
|
/**
|
|
380
415
|
* Serialize to JSON object.
|
|
416
|
+
*
|
|
417
|
+
* Mirrors Rust `Registry`'s field declaration order
|
|
418
|
+
* (`registry_impl.rs:8-14` — `owner, participants, groups`). JSON
|
|
419
|
+
* object member order is not semantically significant, but
|
|
420
|
+
* `serde_json::to_string_pretty` emits keys in declaration order,
|
|
421
|
+
* so for byte-equal `registry.json` (used by the integration tests
|
|
422
|
+
* as a string assertion) the TS port must match Rust's order.
|
|
423
|
+
* Empty `owner` is omitted via `Option::None` skip in Rust; we
|
|
424
|
+
* reproduce that by only setting the key when the owner exists.
|
|
381
425
|
*/
|
|
382
426
|
toJSON(): Record<string, unknown>;
|
|
383
427
|
/**
|
|
@@ -393,4 +437,4 @@ declare class Registry {
|
|
|
393
437
|
declare function resolveRegistryPath(registryArg: string | undefined, cwd: string): string;
|
|
394
438
|
//#endregion
|
|
395
439
|
export { resolveRegistryPath as a, ContributionPaths as c, PendingRequests as d, Registry as i, GroupParticipant as l, GroupOutcome as n, ParticipantRecord as o, OwnerOutcome as r, OwnerRecord as s, AddOutcome as t, GroupRecord as u };
|
|
396
|
-
//# sourceMappingURL=
|
|
440
|
+
//# sourceMappingURL=index-DVbWyOs7.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DVbWyOs7.d.mts","names":[],"sources":["../src/registry/group-record.ts","../src/registry/owner-record.ts","../src/registry/participant-record.ts","../src/registry/registry-impl.ts"],"mappings":"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"}
|