Node Communication:
- Added support for node communication over Redis
- Added support for load balancing when using AMQP for node communication
Node Configuration:
- Added configuration for Redis communication
- Added DynamicQueues parameter to AMQP configuration
Client API:
- Go SDKv2: Add util method to compute public key from private key
- Go SDKv2: Added static tsmutils.ShamirRecombine() method
Patch changes (no effect on compatibility):
- Improved error handling for Go SDKv2 tsmutils.ShamirSecretShare() method
Mobile frameworks have been built using golang.org/x/mobile v0.0.0-20240404231514-09dbf07665ed
Client API:
- Java/C/Node.JS: Removed embedded nodes from clients
- Java/C SDKv2: Added EC package for various EC related operations
- Mobile SDKv1: Added RecoverKeyEdDSA for ERS
Patch changes (no effect on compatibility):
- Reduced size of mobile libraries, build with newer gomobile to avoid XCode 15.3 framework error.
Build with golang.org/x/mobile v0.0.0-20240404231514-09dbf07665ed
Node Communication:
- Multi-instance optimizations. This breaks compatibility with older multi-instance versions.
Node Configuration:
- Log configuration parser moved to viper and internal go-toml upgraded to go-toml/v2. Configuration now uses a custom Duration struct for proper unmarshalling
- Configuration parser moved from go-toml to viper, allowing multiple configuration files to be parsed as one and overriding configuration values with environment variables
Client API:
- Node.js SDKv2
- C SDKv2: Removed a output parameter from sign that was never used.
Patch changes (no effect on compatibility):
- Fixed a bug in the s3 audit logger location
- Upgraded to Go 1.22.0 (<https://go.dev/doc/devel/release#go1.22.minor>)
- Added cosign to pipeline, signing our docker images pushed to the ECR and Nexus registries.
- Fixed an issue with empty structs in configuration
- Fixed some memory issues that could appear when running under high load in C and Java SDKs.
- Fix README example for gitlab.com/Blockdaemon/go-tsm-sdkv2
Patch changes (no effect on compatibility):
- Fixed error that caused problems, when running lots of requests using libtsmclient, and dependent SDKs (nodejs, Java JNI/JCE)
Node Communication:
- Added BIP-340 signature support to SEPD19S
Client API:
- C and Java SDKv2: Added methods for TsmUtils utility methods from the Go SDK.
- OIDC Access Token Authentication: Added the posibility to use static public key
- C and Java SDKv2: Added Embedded client with encryptor and configuration with OIDC authentication
- Java SDKv2: Changed names on SessionConfig creation to align with Go SDK, and changed Embedded Client creation to match Go.
- Go SDKv2: Generalized EdDSA to other schnorr variants. Renamed all EdDSA methods in SDKv2 to Schnorr and added support for BIP-340 signatures
Client Communication:
- EdDSA signatures are now identified as Schnorr signatures
Patch changes (no effect on compatibility):
- Added build tag to Go mobile, to fix error introduced in Go 1.20
- Upgraded to Go 1.21.6 (<https://go.dev/doc/devel/release#go1.21.minor>)
- When API keys are enabled, create the applications on startup instead of on demand
Client API:
- Go SDKv2: OIDC Access token authentication
- Go SDKv2: GenerateECDSAKeyPair() now returns pointer
Patch changes (no effect on compatibility):
- Fixed migration from versions prior to 55.0.0 with BIP-32 hard derived keys in the database
- Android and iOS SDKv2: Added TSM utilities (tsmutils)
Patch changes (no effect on compatibility):
- Fixed security issue with DKLS19
- Fix bug in tsmcli preventing it from working with a single MCP node
- Go SDKv1: Un-deprecate keyClient.Delete()
Client API:
- Java SDKv2: Added JNA based Java SDK for SDKv2
- C SDKv2: Changed Session Config to take a map like the Go SDK and added the broadcast API
Patch changes (no effect on compatibility):
- Print log configuration when starting nodes
- Added logging on error for the C SDKv2
- Trailing slash in issuer URL is now removed before validating
- libtsmclient, Node.js SDK, Java SDK now logs sessionID for EdDSA and ECDSA that takes sessionID as input.
Node Configuration:
- Port option has been removed from the multiinstance configuration.
Node Communication:
- Multi-instance optimizations. This breaks compatibility with older multi-instance versions.