Frequently Asked Questions
TrustWeave is produced by Geoknoesis LLC (www.geoknoesis.com). This FAQ highlights the questions developers ask most often when wiring the SDK into real systems.
How do I run the quick-start sample?
Purpose: Verify your toolchain and observe the issuance → verification → anchoring loop end to end. Command: Run the Gradle helper task; it bootstraps in-memory services so no external dependencies are required.
1
./gradlew :TrustWeave-examples:runQuickStartSample
Result: A credential is issued, verified with full error handling, and anchored via the in-memory blockchain client—use the output as a baseline for your own experiments.
How do I add a new DID method?
Overview: Implement the DID interface, register it, and point call sites at the new method name—no global singletons required.
- Implement
DidMethod(and optionallyDidMethodProviderif you want SPI auto-discovery). - Register it with
DidMethodRegistrywhile building yourTrustWeaveConfig. - Update wallets or services that create DIDs so they pass the new method identifier.
See DIDs and Wallet API – DidManagement for code samples that show the typed option builders involved.
What licence applies to TrustWeave?
TrustWeave uses a dual licence:
- Non-commercial / education: open-source licence.
- Commercial deployments: Geoknoesis commercial licence.
Details and contact paths live in the Licensing Overview.
How do I test without a blockchain or external KMS?
Use TrustWeave-testkit. It ships in-memory DID methods, KMS, and blockchain anchor clients that mirror the production interfaces. Because everything stays in process, your unit tests and CI runs remain deterministic and fast.
Where can I find API signatures and parameters?
- Wallet API Reference — wallet capabilities, typed option builders, and extension helpers.
- Credential Service API Reference — issuer/verifier SPI contracts and factory options.
- Module guides under
docs/modules/summarise additional utilities exposed by each artifact.
How do I enforce stricter verification policies?
Configure CredentialVerificationOptions (see Verification Policies). You can enable expiration checks, proof-purpose enforcement, anchoring requirements, revocation lookups, and domain/audience validation—all while receiving a structured CredentialVerificationResult.
How do I handle errors in TrustWeave?
All TrustWeave methods throw TrustWeaveException exceptions on failure. Always wrap operations in try-catch blocks:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import com.trustweave.trust.TrustWeave
import com.trustweave.core.exception.TrustWeaveException
val trustWeave = TrustWeave.build {
keys { provider("inMemory"); algorithm("Ed25519") }
did { method("key") { algorithm("Ed25519") } }
}
try {
val did = trustWeave.createDid { method("key") }
println("Created: $did")
} catch (error: TrustWeaveException) {
when (error) {
is DidException.DidMethodNotRegistered -> {
println("Method not registered: ${error.method}")
println("Available methods: ${error.availableMethods}")
}
else -> println("Error: ${error.message}")
}
}
Note: Some lower-level APIs return Result<T> directly. Check the method signature for each operation.
See Error Handling for detailed error handling patterns and API Patterns for correct API usage.
Where do I log issues or request features?
Open an issue in the GitHub repository or contact Geoknoesis LLC via www.geoknoesis.com. When contributing code or docs, follow the workflow outlined in the Contributing Guide.