frosty library

Classes

AggregateKeyInfo
Contains the group details and public shares used to aggregate a signature from shares.
DkgCommitmentSet
Holds the list of public commitments associated with each identifier. These must be the same across all participants. Each participant should verify that all other participants have the same set by receiving a signed hash of commitments from each participant and verifying that they are the same.
DkgPart1
The first step to generate a distributed FROST key. This contains a secret and a public commitment, the latter of which is to be shared between all other participants.
DkgPart2
The second step to generate a distributed FROST key. This provides the secrets that must be shared to the participants of each given identifier without revealing them to anyone else. Authentication and encryption must be used to share the secrets.
DkgPart3
The third and final part of the DKG. This provides the participantInfo which allows the participant to produce signature shares.
DkgPublicCommitment
This class represents information that should be shared to other participants after the first round of the distributed key generation. Participants must ensure that all other participants have the same set of commitments before the DKG can be completed.
DkgRound1Secret
The secret from part 1 of the DKG that is to be kept for part 2. After part 2 this can be disposed with dispose().
DkgRound2Secret
The secret from part 2 that is to be held until part 3. After part 3 this can be disposed of with dispose().
DkgShareToGive
A secret share that is to be shared to another participant or a secret share that was shared from another participant.
ECCiphertext
Provides an authenticated ciphertext with asymmetric ECC encryption/decryption.
GroupKeyInfo
Contains information of a FROST key required for all participants and the coordinator. This includes the group public key and the threshold number.
HDAggregateKeyInfo
HDDerivableInfo
HDGroupKeyInfo
HDKeyInfo
Information in addition to the FROST key required for BIP32 derivation
HDParticipantKeyInfo
HDSigningKeyInfo
Identifier
The ID of a participant in a threshold signing group.
KeyInfo
ParticipantKeyInfo
Contains all details for a given participant, including the group key, threshold, public shares and private share.
PrivateKeyInfo
Contains the private share required for a participant to submit signature shares for a FROST key.
PublicSharesKeyInfo
Contains the public shares for a FROST shared key
RustObjectWrapper<T extends RustOpaqueInterface>
SignatureAggregation
Allows the coordinator to aggregate signature shares taken from selected participants.
SignatureShare
The signature share to be sent to the aggregator/coordinator over an authenticated channel.
SignDetails
SigningCommitment
The commitment to the signature nonce to be used for signing. This should be shared with the signature aggregator.
SigningCommitmentSet
Holds the public commitments for signature nonces from signing participants as collected by the coordinator and to be shared with each signing participant.
SigningKeyInfo
Contains details required specifically for providing a signature share. This contains the GroupKeyInfo and PrivateKeyInfo but excludes the public shares which aren't needed.
SigningNonces
The nonces share for signatures, to be kept by the signing participant.
SignPart1
The first stage of the signing process where each signing participant generates nonces and a commitment to those nonces. The commitment is to be shared to the signature aggregator with authentication to start the signing process.
SignPart2
Generates the signature share to share with the signature aggregator/coordinator.
WritableRustObjectWrapper<T extends RustOpaqueInterface>

Functions

loadFrosty() Future<void>
verifySignatureShare({required SigningCommitmentSet commitments, required SignDetails details, required Identifier id, required SignatureShare share, required ECCompressedPublicKey publicShare, required ECCompressedPublicKey groupKey}) bool

Exceptions / Errors

InvalidAggregation
Thrown when the signature shares cannot be aggregated into a valid signature and this is not due to an identifiably incorrect signature share (use InvalidAggregationShare).
InvalidAggregationShare
Thrown when a participant provided an invalid share. The participant is identified with culprit.
InvalidIdentifier
Thrown when a valid identifier cannot be created
InvalidKeyInfo
Thrown if the FROST key information is not valid
InvalidPart2
Thrown when data provided into part 2 is not valid
InvalidPart2ProofOfKnowledge
Thrown when a participant does not provide a valid commitment proof-of-knowledge. culprit contains the identifier of the participant with the invalid commitment. There may be other participants with invalid proof-of-knowledge but only one of them is provided.
InvalidPart3
Thrown when data provided into part 3 is not valid
InvalidPublicCommitment
Thrown when bytes are not a valid public commitment
InvalidShareToGive
Thrown when bytes are not a valid shared secret
InvalidSignatureShare
Thrown when bytes are not a valid signature share
InvalidSignDetails
Thrown when the message or MAST hash details are invalid
InvalidSigningCommitment
Thrown when bytes are not a valid signing commitment
InvalidSigningNonces
Thrown when bytes are not valid signing nonces
InvalidSignPart2
Thrown when data provided into part 2 of the sign process is not valid
UseAfterFree