This project follows semantic versioning.
Possible log types:
[added]
for new features.[changed]
for changes in existing functionality.[deprecated]
for once-stable features removed in upcoming releases.[removed]
for deprecated features removed in this release.[fixed]
for any bug fixes.[security]
to invite users to upgrade in case of vulnerabilities.
- [fixed] Change exported CloseCode from const enum to class (#138)
- [fixed] Prevent client reuse (#123)
- [fixed] Validate length of server public key hexstring (#122)
- [removed] Removed the polyfilled ES5 bundle from the distribution files
- [fixed] Avoid protocol errors when handling 'new-initiator' and 'new-responder' messages
- [fixed] Signature of
KeyStore
's constructor was incorrect
- [fixed] Actually expose all exception classes
- [added] Expose all exception classes
- [changed] Use
Uint8Array
instead ofArrayBuffer
in the public API - [removed] Removed obsolete methods
Cookie.asArrayBuffer
andCookie.fromArrayBuffer
- [fixed] Exposed
Log.level
attribute
- [fixed] Exposed
Log
class
- [added] Add possibility to unbind all events when disconnecting
- [added] Introduce log level to builder
- [fixed] Updated type declarations
- [added] Allow clearing all event handlers at once (#106)
- [added] Expose encrypt/decrypt methods on signaling instance (#105)
- [security] Fix bug in CSN calculation (#103)
- [fixed] Add
SaltyRTC.getCurrentPeerCsn
to type declarations
Security Fix
Apparently JavaScript treats all operands in bitwise operations as 32 bit
signed integers. This results in (1 << 32)
being equal to 1
. This means
that previously the calculation of the combined sequence number would be
incorrect if the overflow number is larger than 0.
In theory this is a security issue, however it may only be a problem in the
real world if you send more than 4'294'967'295 messages with the same
connection, which is quite unlikely. However, we definitely recommend upgrading
to the latest version of @saltyrtc/client
.
- [added] Introduce method to extract current CSN
- [changed] Replace thrown strings with exceptions (#97)
- [changed] Crypto performance improvements (#99)
- [changed] Upgrade npm dependencies (#100)
- [added] Emit 'no-shared-task' event when no shared task could be found (#93)
- [fixed] Handle disconnected messages during peer handshake
- [changed] 'disconnected' messages are now emitted as events to the user, not as callback to the task (#92)
- [fixed] Fix processing of 'disconnected' messages
- [fixed] Accept server messages during/after peer handshake
- [fixed] If message nonce has an invalid source, discard it
- [fixed] SaltyRTC.authTokenHex: Add null checks
- [added] Support for 'disconnected' messages (#89)
- [changed]
Task
interface: AddonDisconnected
method (#90) - [changed] Only pass task messages to task if supported
- [changed] Add tslint to the codebase (#88)
- [changed] Upgrade TypeScript to 2.7, make some types more specific
- [removed] Remove deprecated
InternalError
function
- [fixed] Fix type signature in SaltyRTC.asResponder
- [changed] Upgrade tweetnacl to 1.0.0
- [changed] Move npmjs.org package to organization (it's now called
@saltyrtc/client
, notsaltyrtc-client
) - [changed] Update docs
- [changed] Updated logging format
This release can be considered a release candidate for 1.0.0.
- [changed] Change subprotocol to
v1.saltyrtc.org
(#59) - [changed] The
KeyStore
class constructor now only requires the private key, not both the public and private key (#73) - [added] Add new close code: 3007 Invalid Key (#58)
- [added] Add support for multiple server permanent keys (#58)
- [changed] Better error logs in the case of signaling errors (#78)
- [changed] Make tweetnacl / msgpack-lite peer dependencies
- [added] Implement dynamic server endpoints (#70)
- [fixed] Never explicitly close WebSocket with 1002 (#75)
- [fixed] Send close message on disconnect in task state (#68)
- [fixed] Catch nonce validation errors
- [fixed] Only re-throw top level exceptions if unhandled
- [fixed] Don't use decryptFromPeer method in onSignalingMessage
- [changed] Remove restart message handling (#69)
- [added] Implement support for application messages (#61)
- [fixed] Set state to "closing" when starting disconnect
- [fixed] Fix inverted condition when handling signaling errors
- [added] Support passing server public key to SaltyRTCBuilder (#59)
- [added] Implement support for send-error messages (#14)
- [added] Drop inactive responders (#55)
- [fixed] Always emit connection-closed event on websocket close
- [fixed] Properly handle protocol/signaling errors (#53)
- [fixed] Don't allow calling both
.initiatorInfo
and.asInitiator
onSaltyRTCBuilder
- [fixed] Send signaling messages to the task without encrypting (#58)
- [fixed] Close websocket after handshake (#57)
- [added] The
KeyStore
andSaltyRTCBuilder
interfaces now accept hex strings as keys - [added] The
SaltyRTCBuilder
now supports thewithPingInterval(...)
method - [added] Notify client on all disconnects
- [changed] The connection-closed event now has the reason code as payload
- [changed] Many refactorings
- [added] Add HandoverState helper class
- [fixed] Check peer handover state when receiving ws message
- [fixed] Extend type declarations with missing static types
- [changed] Change iife dist namespace to
saltyrtcClient
- [fixed] Fix filename of polyfilled dist file
- [fixed] Use interface types for KeyStore and AuthToken
- [fixed] Fix path to ES6 polyfill
- [fixed] Use interface types in SaltyRTCBuilder
- [changed] Move type declarations to root directory
- [fixed] Fix sending of signaling messages after handshake
- [added] Expose close codes and exceptions
- [added] Make saltyrtc.messages.TaskMessage an open interface
- [changed] Rename saltyrtc/ directory to src/
- [added] Add "typings" field to package.json
- [changed] Make polyfills in ES5 distribution optional
- [changed] Build ES2015 version as ES module, not as IIFE
- [changed] Improved packaging
- [changed] Internal cleanup
- [fixed] Fix exposed classes in
main.ts
- [added] Create
CombinedSequencePair
class
- [added] Expose
Cookie
andCookiePair
classes - [added] Expose
CombinedSequence
class
- [added] Expose
EventRegistry
class
- Initial release