EdDSA

Three-party EdDSA over Ed25519 — Solana, Stellar, and other Ed25519 chains.

Construct a session with trioInitiator and drive it through TrioSession, which adds keyshare recovery on top of the shared operations (pre-signatures and hardened derivation are ECDSA-only). The stateless helpers inherited from SilentShard operate on Ed25519 keyshares.

Types

Link copied to clipboard

Internal test key provider for testing purposes ONLY. Never use in production. See MessageSigner for secure implementations.

Properties

Link copied to clipboard
open override val tss: EdDSA

The process-shared TSS instance backing the stateless helpers (getKeyshareKeyId, getKeysharePublicKey, deriveChildPublicKey, generateEncryptionDecryptionKeyPair). Sessions get their own instance via newSessionTss.

Functions

Link copied to clipboard
open suspend fun deriveChildPublicKey(keyshare: ByteArray, derivationPath: String): Result<ByteArray>

Derives a child public key via BIP32 hierarchical-deterministic derivation, producing many addresses from one keyshare. Runs locally.

Link copied to clipboard

Generates a keypair used to encrypt keyshare-backup material.

Link copied to clipboard
open suspend fun getKeyshareKeyId(keyshare: ByteArray): Result<ByteArray>

Computes the keyId of a keyshare — a deterministic identifier derived from its public key. This is the same value TrioSession.keygen and TrioSession.import return. Runs locally.

Link copied to clipboard
open suspend fun getKeysharePublicKey(keyshare: ByteArray): Result<ByteArray>

Extracts the public key from a keyshare, for deriving addresses or verifying signatures. Runs locally.

Link copied to clipboard
open override fun newSessionTss(): TSS

Construct a fresh per-session TSS instance — used by the trioInitiator(...) factories so each session owns its own native-handle tracking list. The process-singleton tss is kept for stateless utilities (getKeyshareKeyId etc.); sharing it for sessions would mean the library's allocation list grows monotonically and concurrent sessions race on it.

Link copied to clipboard
open fun trioInitiator(messageSigner: MessageSigner, cloudVerifyingKey: String, networkClient: SilentShardWebsocketClient<TrioNetworkAction>, storageClient: StorageClient): TrioSession

Creates an initiating TrioSession over the default WebSocket transport, reusing a SilentShardWebsocketClient you construct and own — for example to share one client across sessions and com.silencelaboratories.silentshard.network.NetworkClient.close it yourself.

open fun trioInitiator(messageSigner: MessageSigner, cloudVerifyingKey: String, websocketConfig: WebsocketConfig, storageClient: StorageClient): TrioSession

Creates a TrioSession as the initiating party, over the default WebSocket transport. The recommended entry point for most integrations.

open fun trioInitiator(messageSigner: MessageSigner, cloudVerifyingKey: String, storageClient: StorageClient, networkClient: NetworkClient, actionProvider: TrioNetworkActionProvider): TrioSession

Creates an initiating TrioSession over a custom transport.