Xoxa: normalising XML

The Xoxa library, and application, implements an alternative digital signature mechanism for XML.

The library exists in both a Java and a C version, and in each case there is a command-line tool which can demonstrate the library in action. These are maintained together but are otherwise independent of each other.

Still rather preliminary (ie, regard it as a beta; some aspects of the behaviour might change).

The source is at Bitbucket; the project page is at https://nxg.me.uk/dist/xoxa/; the algorithm is discussed at greater length in a paper on arXiv: arXiv:1505.04437.

The Java implementation

To build, you need Maven and Java:

% cd java
% mvn clean compile assembly:single
% java -jar target/xoxa-???-jar-with-dependencies.jar --help

To test,

% mvn test

(you may need to set -Dgpg.binary=.../bin/gpg2, if the gpg binary isn't in the path, or isn't called 'gpg')

There is a Makefile, but this is for convenience, and simply calls mvn to do the actual build. The commands make and make check will work. The distribution is done purely by the Makefile.

The source is in java/src/main/, and there are tests in test/ and in java/src/test/.

The C implementation

Requires Expat and OpenSSL (on OS X, the build will use the system crypto library by default, but can be required to use OpenSSL by a configuration option).

% cd c
% ./configure
% make

You can if necessary indicate the location of the OpenSSL and Expat libraries with --with-openssl=path and --with-expat=path, respectively.

To test,

% make check

The C version builds on OS X (llvm), OpenBSD (gcc, and with MALLOC_OPTIONS=AFGJ), at least, and it should be more broadly portable.

Source code and licence information

The source code is available at https://bitbucket.org/nxg/xoxa.

Xoxa is Copyright 2013, 2014 Norman Gray, and is released under the terms of the BSD 2-clause licence (see the file LICENCE for text).

The distribution includes the lcut unit-testing framework, which is Copyright 2005–2010 Tony Bai, and released under the terms of the Apache Licence, Version 2.0.

The name

Xoxa is a Zulu word and affix meaning to chat or discuss; it therefore seems appropriate for a library intended to support reliable conversations via XML. See http://isizulu.net/p11n/sounds/xoxa.mp3.

Norman Gray