Skip to main content

Module inprocess

Module inprocess 

Source
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 opaque Gg18Share::to_bytes() encoding for party i (71 bytes: magic[4] | version[1] | x_i[32] | X[33] | idx[1]).
  • public_key is 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§

KeygenOutput
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_count parties at threshold threshold.
sign
Drive a GG18 signing session in-process using share_blobs (each a Gg18Share::to_bytes() blob from a previous keygen) at threshold threshold. 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.