Expand description
In-process synchronous driver for GG18 DKG and signing.
Thin wrapper over confium_tc::inprocess that names the GG18
schemes and pulls the joint public key out of the first share. All
multi-round routing logic lives in the framework driver; this module
is intentionally short.
§Output wire format
keygen returns (shares, public_key) where:
shares[i]is the opaqueGg18Share::to_bytes()encoding for partyi(71 bytes: magic[4] | version[1] | x_i[32] | X[33] | idx[1]).public_keyis the 33-byte SEC1 compressed encoding of the joint P-256 point.
sign returns a 64-byte r || s ECDSA signature. Verify it with
the [p256::ecdsa] crate’s VerifyingKey::verify.
§Security note
The underlying GG18 crate’s MtA sub-round is a simplified in-clear
stub. This driver inherits that property. See
crate::mta for the gap.
Structs§
- Keygen
Output - Outcome of a single GG18 DKG run: N share blobs plus the joint public key.
Functions§
- decode_
public_ key - Decode a 33-byte SEC1 compressed P-256 point. Public so bindings can verify the DKG-produced joint public key out-of-band.
- keygen
- Drive the GG18 DKG in-process for
party_countparties at thresholdthreshold. - sign
- Drive a GG18 signing session in-process using
share_blobs(each aGg18Share::to_bytes()blob from a previouskeygen) at thresholdthreshold. Returns the 64-byte(r, s)ECDSA signature. - sign_
batch - Sign N messages against the same joint key without re-running DKG.
See [
confium_tc_cmp20::inprocess::sign_batch] for performance notes.