.NET libraries for windows/windows phone/mono for XMPP, TLS, RTP, STUN, SOCKS and more.
Current Features - Beta
- XMPP client libraries for windows and windows phone 7
- TLS/SSL library working on windows phone 7 (RSA 128 only)
- XMPP clients for windows/phone - Tested against openfire, jabber.org and google talk
- IBB and SOCKS5 bytestream file transfer
- Screen capture/Send
- Personal Presence
- SOCKS4/5 proxy support
- geoloc personal presence support on windows phone
- Audio conferencing (windows and mono only) UDP RTP/ICE
- IMFMediaSource managed c++ video capture library
- IMFSinkWriter managed c++ video utility library
- DirectSound render playback
- Managed DMO narrowband audio/kinect capture with AEC
- SOCKS4/5 server (connect only right now) functionality
- STUN library (client binding requests and ICE responses.. no TURN messages)
- RTP stream object and audio parser/examples using G.711 and speex using the NSpeex library
- Jingle Video support, Google talk audio support
- Android client using monodroid (working under ICS with audio, will be released under a different project)
The intial goal of this project was to transfer some of my homebrewed home automation audio/video streaming projects to windows phone. XMPP seemed like the ideal protocol for control since it wasn't limited to a given network
like UPNP/Bonjour. This led to the development of an XMPP library and the challenges of making a relatively simple protocol work on windows phone.
The windows phone API is severely crippled, and as I ported the library I discovered I had to write a TLS stack (quite challenging), deal with serialization features not working, and of course handle phone limitations. The result, though, provides
a way to communicate with XMPP devices on the phone and in windows. Two user interfaces were created in this project as examples. They are only meant to be examples and still need a bit of work, but I use them daily and plan on publishing the phone
application in the market soon.
These libraries are a mixture of many things I've put together over the years, and because of this, aren't yet as smoothly integrated as I would like, In addition there are others that have not been added yet, so stay tuned.
- The mono project - I had to use their AES code because you can't disable padding options in the windows phone class. I thought I had it working before using this code, but the connection would die when a packet came in with a certain length.
- http://hmacmd5.codeplex.com. There are lots of MD5 and HMAC implementations that I could have used, but this already worked on windows phone and worked great.
- http://nspeex.codeplex.com. Haven't really implemented this yet, but plan on using it for my audio since I have to abandon the c++ codecs I use to work on windows phone. Tested it and it works and is
really easy to use.
- Kishort.X509.Parser. This ASN.1 certificate parser was vital for extracting the RSA public key parameters from the server certificate. I can't seem to find where I got this from. If I do I'll post the link.