<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    -----BEGIN PGP SIGNED MESSAGE-----<br>
    Hash: SHA1<br>
    <br>
    Hoi,<br>
    <br>
    Below you can find the analysis of xmpp-client for the Attentive
    otter project, written by dgoulet, nickm, arlo, asn and myself.<br>
    <br>
    All the best,<br>
    Jurre<br>
    <br>
    - --------<br>
    <br>
    Intro<br>
    <br>
    xmpp-client is a simple XMPP client written in pure Go with OTRv2
    support. It's a terminal program but doesn't have a GUI or a UI like
    GTK  or ncurses. The software should be considered in an alpha
    state.<br>
    <br>
    *Is traffic send over Tor?*<br>
    Yes, xmpp-client has support for sending all traffic over Tor, this 
    includes connecting to onion's. When you connect to jabber.ccc.de or
    the riseup.net jabber service, you are automatically connected over
    Tor through their onion address (hidden service), if Tor is running.
    SRC lookups are not proxied.<br>
    <br>
    *Chat network(s) support*<br>
    Only basic XMPP support, no extensions are implemented (XEP -
    <a class="moz-txt-link-freetext" href="http://xmpp.org/xmpp-protocols/xmpp-extensions/">http://xmpp.org/xmpp-protocols/xmpp-extensions/</a>).<br>
    <br>
    *How trivial is extending XMPP-Client to different protocols?*<br>
    This code base is only for XMPP and seems quite hardcoded for that.<br>
    Section "Instant Messaging" -
    <a class="moz-txt-link-freetext" href="https://code.google.com/p/go-wiki/wiki/Projects#Networking">https://code.google.com/p/go-wiki/wiki/Projects#Networking</a><br>
    <br>
    * XMPP in Go - <a class="moz-txt-link-freetext" href="https://github.com/mattn/go-xmpp">https://github.com/mattn/go-xmpp</a><br>
    * IRC in Go - <a class="moz-txt-link-freetext" href="https://github.com/husio/go-irc">https://github.com/husio/go-irc</a><br>
    <br>
    * Various Go bindings - <a class="moz-txt-link-freetext" href="http://go-lang.cat-v.org/library-bindings">http://go-lang.cat-v.org/library-bindings</a><br>
    <br>
    *OTR*<br>
    OTR support comes from the Go crypto package:
    <a class="moz-txt-link-freetext" href="https://code.google.com/p/go.crypto/">https://code.google.com/p/go.crypto/</a><br>
    This library only has support for OTRv2 and not the latest OTRv3 
    specification. If we want to be resistant to several attacks[1]  on
    the OTR protocol, we need to reimplement the OTR protocol and update
    it to the latest version or, we use Cgo, which binds into libotr.
    (Open questions: OTR by default?, )<br>
    <br>
    [1]
<a class="moz-txt-link-freetext" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.165.7945&rep=rep1&type=pdf">http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.165.7945&rep=rep1&type=pdf</a><br>
    <br>
    *What languages are supported?*<br>
    Currently, there is only support for English, extending the client 
    with other languages is rather trivial like Farsi, French, Spanish
    and  Arabic.<br>
    <br>
    *_Graphical interface_*<br>
    <br>
    A graphical interface needs to be implemented for the client.
    However, there is only a limited amount of graphical interfaces
    available, all are far from stable to use. The best bet for now is
    Go-GTKand extend it and let fixes go upstream. Another thing we
    could  do is implement or extend an existing minimal implementation
    of a QT library. This means however, that we would need to maintain
    an extra "third party" UI library, which isn't Tor's core
    "business".<br>
    <br>
    * QT: <a class="moz-txt-link-freetext" href="https://github.com/visualfc/go-ui">https://github.com/visualfc/go-ui</a><br>
    * GTK: <a class="moz-txt-link-freetext" href="http://mattn.github.io/go-gtk/">http://mattn.github.io/go-gtk/</a><br>
    * Webkit: <a class="moz-txt-link-freetext" href="https://github.com/mattn/go-webkit">https://github.com/mattn/go-webkit</a><br>
    <br>
    *_Operating System Support_*<br>
    <br>
    *Windows*<br>
    * MSI package support - <a class="moz-txt-link-freetext" href="http://golang.org/doc/install#windows">http://golang.org/doc/install#windows</a><br>
    <br>
    *Mac OS X*<br>
    * Package exists for Go - <a class="moz-txt-link-freetext" href="http://golang.org/doc/install#osx">http://golang.org/doc/install#osx</a><br>
    <br>
    *Linux*<br>
    Packaged in most distributions.<br>
    <br>
    *_Build & build automation_*<br>
    <br>
    *Cross-platform*<br>
    Go compiles into a static binary. Next to that, Go has the
    possibility to build cross-platform binaries.<br>
    <br>
    *Deterministic builds*<br>
    Some hacking needs to be involved and having a deterministic binary
    for Go might prove more difficult. I'm unsure whether this is going
    to  be easily implemented (more research needed)<br>
    <br>
    *Browser extention*<br>
    Of what I can understand with Xullauncher, we can start any type of
    applications shipped in the "TBB sandbox" in a specific path. With
    xmpp-client, it would require a Go version that is shipped with the
    TBB and every other library we use (i.e. crypto.otr). (Not 100% sure
    here...). A fat binary is an option here also (Go + otr +
    xmpp-client).<br>
    <br>
    *Control mechanism*<br>
    A control mechanism needs to be implemented so xmpp-client can
    interact with Firefox in some way or the other.<br>
    <br>
    *_Hardening_*<br>
    <br>
    *Building with hardenend compiler flags*<br>
    Hardening is possible by using gccgo, which is a frontend to the GCC
    gnu compiler.<br>
    <br>
      * <a class="moz-txt-link-freetext" href="http://golang.org/doc/install/gccgo">http://golang.org/doc/install/gccgo</a><br>
    <br>
    <br>
    *Sandboxing*<br>
    * There is an existing AppArmor profile for xmpp-client for Ubuntu
    11.04+<br>
    * There isn't a Seatbelt OSX sandbox profile.<br>
    * There isn't a way to sandbox in windows.<br>
    <br>
    - -- <br>
    Developer at <a class="moz-txt-link-freetext" href="https://www.useotrproject.org/">https://www.useotrproject.org/</a><br>
    -----BEGIN PGP SIGNATURE-----<br>
    Version: GnuPG v1.4.12 (GNU/Linux)<br>
    <br>
    iQEcBAEBAgAGBQJSUu2kAAoJELc5KWfqgB0CnNAH/2ZpvUgB/enkgMZ7tH4q1cj7<br>
    w0S9N5bRD21JSYHpd9ZhvMOIHUOVOm8fothUvB1HVFwLhTMqsnqB5vtOPe117WYX<br>
    WDp9rwicKz110r1dyEDcDhkGnI0OKJ5trDDalmmFaeFaP7gTwedee8lNRBdV+bPs<br>
    tEqSGIxtNbY7WUpDZvTUBxkqZjAgWsag4K+fcn3ZA0m1vUmyWpyV+xYXCvjJH6fo<br>
    oDVirvXpQibQxZWSLnRceq7otNXI1TdZL60KiipPJNDyfi5g5d3pToo3CU61wJgF<br>
    0KtvtzYnG5l476aJhd1hCdfO7Ni3NoZ1dheqPsRGcmNp/kICqbRYnc9MDqiCpEM=<br>
    =e6xQ<br>
    -----END PGP SIGNATURE-----<br>
    <br>
  </body>
</html>