- Adds the ability to transmit OSC messages using encryption. (NOTE: this is F53OSC-specific, not based on the OSC spec.) The core of the encryption is written in Swift using CryptoKit, including P521 public/private keys, HKDF derived symmetric keys, and ChaChaPoly symmetric encryption.
- Adds an encryption handshake protocol transmitted over an F53OSC control message channel (starting with
!
instead of/
to differentiate it from OSC messages). - Adds an encrypted message type, which consists of encrypted OSC message data prefixed by a
#
character.
- Adds an encryption handshake protocol transmitted over an F53OSC control message channel (starting with
- Clients wishing to support encryption must first generate a key pair using the
generateKeyPair
method ofF53OSCEncrypt
and then callconnectEncryptedWithKeyPair:
on theirF53OSCClient
. - Servers wishing to support encryption must first generate a key pair using the
generateKeyPair
method ofF53OSCEncrypt
and then callsetKeyPair:
on theirF53OSCServer
. - Additionally, both servers and clients can check the
encrypter.publicKey
property of anF53OSCSocket
to verify the identity of a peer if they wish to do so.
- Adds support for optionally enabling IPv6 support for sockets. NOTE: IPv6 support is experimental and is now disabled by default on both of the internal sockets.
- Adds a
tcpTimeout
property to configure an optional timeout for waiting to receive TCP data to read. Any negative value means "no timeout". The default is-1
. - Adds an optional delegate method
client:didReadData:
to notify about the progression of how much data has been read for the current incoming message.
- Fixes
+messageWithString:
to handle quotation mark characters“
(U+201C) and”
(U+201D) as plain quotation marks"
(U+0022) for better compatibility with certain text editors that automatically format with "smart" quotation marks. #37 - Fixes
+messageWithString:
to fail parsing and returnnil
if quoted string arguments are not separated by spaces.
- Adds a
tcpDataFraming
property to allow optionally disabling SLIP framing when sending non-OSC data over TCP. - Fixes the inability to send large packets by removing the timeout when writing data.
- F53OSC.xcodeproj is updated for Xcode 13.
- Requires Swift 5.
- Requires minimum deployment target of macOS 11, iOS 14, or tvOS 14.
- Adds a new class
F53OSCBrowser
to facilitate Bonjour client discovery. - Adds support for optionally enabling IPv6 support for clients and sockets. NOTE: IPv6 support is experimental and is disabled by default.
- Changes
+[F53OSCServer predicateForAttribute:matchingOSCPattern:]
to return a FALSE predicate when passed a malformed OSC pattern rather than returningnil
. - Several changes to protocols and delegates, namely the protocol
F53OSCServer
is removed in favor of a newF53OSCServerDelegate
protocol. - Adds tests to validate OSC wildcard patterns and predicates.
- Adds support for testing arbitrary locales with the number formatter used in
+[F53OSCMessage messageWithString:]
via an optional NSUserDefaults keycom.figure53.f53osc.testingLocaleIdentifier
. - Updates header comments to reflect correct author name.
- F53OSC.xcodeproj is updated for Xcode 12.
- Adds support for OSC 1.1 type tags
T
,F
,N
, andI
. #23 - Fixes a bug that prevented OSC range patterns from being handled correctly, e.g.
[A-Z]
. - Fixes a bug that caused the OSC wildcard
?
to incorrectly match on a two-character string ending in "1". - Fixes a bug when handing an incoming
F53OSCMessage
that caused incorrect parsing of arguments that follow a "Blob" type argument. - Updates
F53OSCClient
andF53OSCMessage
with support for NSSecureCoding. - Updates CocoaAsyncSocket library files
GCDAsyncSocket.h/m
andGCDAsyncUdpSocket.h/m
to version 7.6.4. - Adds build targets for compiling a standalone
F53OSC.framework
bundle. - Reorganizes the project structure (with a eye toward adding Swift Package Manager support sometime in the future).
- Requires Xcode 10.3 or later.
- Starting point for semantic versioning.
- Adds F53OSC.podspec.