noosphere_roast_client library

Classes

AggregateKeyInfo
Contains the group details and public shares used to aggregate a signature from shares.
ApiRequestInterface
AuthChallenge
Client
A high-level abstraction of a FROST participant client with the server API. ClientEvents are passed to the events stream.
ClientConfig
ClientEvent
Events that are specific to the high-level Client class.
ClientStorageInterface
These methods need to be implemented for permanent storage of key information.
CompletedSignaturesRequest
Provides details of completed signatures upon login
DetailsEvent<T extends Signable>
DkgAck
A participant acknowledges that they have details for the groupKey if accepted is true.
DkgAckEvent
Sent when a participant has provided one or more SignedDkgAcks.
DkgAckRequest
Request for ACKs for all participant ids for a single key given by the groupPublicKey. Equal when the groupPublicKey is the same.
DkgAckRequestEvent
Sent when the server asks for the SignedDkgAck of participants by a DkgAckRequest for one or more keys. If the receiver owns one or more of these ACKs, they should be provided to the server via ApiRequestInterface.sendDkgAcks.
DkgCommitmentEvent
A commitment from the participant for the DKG given by name. When all of these have been received, a DkgCommitmentSet can be generated and round 2 can be commenced.
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.
DkgEncryptedSecret
DkgInProgress
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.
DkgRejectEvent
Event given when a participant rejects a DKG.
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().
DkgRound2ShareEvent
The data from a given participant for the second round of the DKG.
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.
EmptySignatureMetadata
Event
Expirable
ExpirableAuthChallengeResponse
Expiry
FinalExpirable
An implementation of Expirable that merely provides the expiry and nothing else.
FrostKeyWithDetails
GroupConfig
Configuation for participants in a FROST singing group which can represent multiple FROST keys for a given set of participants whereby each participant has an Identifier and associated cl.ECCompressedPublicKey.
GroupKeyInfo
Contains information of a FROST key required for all participants and the coordinator. This includes the group public key and the threshold number.
GrpcClientApi
Provides the client API via a connection to a gRPC server. A grpc.GrpcError may be thrown if there is an connection issue with the server.
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.
InMemoryClientStorage
An in-memory storage solution for the ClientStorageInterface. This is used by the tests and example but real applications would benefit from persistant storage.
KeepaliveEvent
The only purpose of this event is to keep middleware alive, that may otherwise close in the absence of frequent events.
KeyInfo
KeyToComplete
LoginCompleteResponse
Provides the participant with a SessionID and information about the current state of signing and DKG requests.
MapReader
Reads a map from YAML
NewDkgDetails
Details of DKG requested by a participant. This is signed by the participant and sent to the other participants.
NewDkgEvent
Signed details of a new DKG and the Identifier of the creator that signed the details. Participants should send their public commitments if they approve of the DKG or call ApiRequestInterface.rejectDkg.
OnetimeNumber
Cryptographically secure onetime number of 16 bytes used for ids, challenges etc.
ParticipantKeyInfo
Contains all details for a given participant, including the group key, threshold, public shares and private share.
ParticipantStatusClientEvent
Provided when a participant logs in or logs out.
ParticipantStatusEvent
Gives an event when a participant logs in or logs out.
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
RejectedDkgClientEvent
When a DKG has been rejected and therefore removed. The DKG details are provided as the DKG is removed from the Client object.
RustObjectWrapper<T extends RustOpaqueInterface>
SessionID
SignableHash
A 32-byte hash used directly for a signature
SignatureAggregation
Allows the coordinator to aggregate signature shares taken from selected participants.
SignatureMetadata
SignatureNewRoundsEvent
Provides the SigningCommitmentSets when new ROAST rounds are initiated.
SignatureNewRoundsResponse
Provides the SigningCommitmentSets when new ROAST rounds are initiated.
SignatureReply
A ROAST reply for a single signature at the position sigI in a request.
SignatureRoundStart
SignaturesCompleteClientEvent
Provided when a signatures request was completed sucessfully. This will be provided upon login for signatures the client may have missed.
SignaturesCompleteEvent
Provides the final signatures for a request once ROAST has completed for all of them.
SignaturesCompleteResponse
Provides all of the final signatures when ROAST is complete.
SignaturesExpiryClientEvent
Provided when the signatures request has expired.
SignaturesFailureClientEvent
Provided when the signatures request has failed.
SignaturesFailureEvent
Produced when there are not enough signers to complete the signatures request due to rejections or malicious signers.
SignatureShare
The signature share to be sent to the aggregator/coordinator over an authenticated channel.
SignaturesNonces
SignaturesRequest
SignaturesRequestClientEvent
Provided when there is a new signatures request.
SignaturesRequestDetails
Details of requested required signatures
SignaturesRequestEvent
Sent when there is a new request for a signature.
SignaturesRequestId
16-byte ID for a SignaturesRequestDetails that implements equality comparison
SignaturesResponse
SignDetails
Signed<T extends Signable>
SignedDkgAck
A signed DkgAck and the signer. These are equal when the signer and group key are the same.
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.
SingleSignatureDetails
Details for a single signature in a signatures request.
UnknownSignatureMetadata
UpdatedDkgClientEvent
Provided when a DKG has updated its progress or when there is a new DKG request. The DKG may have been replaced.
WritableRustObjectWrapper<T extends RustOpaqueInterface>

Enums

DkgFault
DkgStage
KeyPurpose
The reason the private key is being requested
SignaturesRequestStatus
If waiting the request hasn't received a response by the client, otherwise it has been accepted or rejected by the client.

Mixins

BytesMappable<T>
MapWritable
Objects that use this mixin provide a Map via map() that represents the object which subsequently is used to output YAML via yaml.
Signable

Functions

getHiddenClientStateForTestsDoNotUse(Client client) → ClientState
CONSUMERS OF THIS LIBRARY SHOULD AVOID THIS
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
InvalidRequest
Errors to be thrown when an API method is called where the request cannot be satisfied due to an invalid request.
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
MapReaderException
ServerMisbehaviour
An exception thrown when the server misbehaves
UseAfterFree