chiark / gitweb /
tripe
2 years agoserver/keymgmt.c: Detect if a private keys records a wrong public key.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keymgmt.c: Detect if a private keys records a wrong public key.

2 years agoserver/: Replace the Diffie--Hellman group abstraction.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/: Replace the Diffie--Hellman group abstraction.

Downside: this basically involves duplicating Catacomb's `group'
implementation.

Upside: I've been able to improve a few things.  Most notably, this new
abstraction covers scalars as well as group elements, which extends the
possibilities.  Because the new abstraction takes over responsibility
for tracing and reporting, I've been able to make group-specific
improvements.

More subtly, I've also introduced an additional group-element encoding
format.  Previously, there was the `buffer format' (a sequence of
length-prefixed items) and the `raw format' (a binary blob with a known
length, used in encrypted messages).  But there's an additional source
of length leakage for secret values, which is in hashing: so I've
introduced a new `hash format', which currently works the same as
`buffer' for compatibility's sake, but could later be switched -- say,
by a key attribute -- to work like `raw'.

I've also passed the key file and object through to the DH operations,
so that they can pick up additional attributes from the key.  Nothing
takes advantage of this yet, though.

2 years agoserver/: Make bulk crypto transforms responsible for algorithm selection.
Mark Wooding [Wed, 19 Apr 2017 19:41:18 +0000 (20:41 +0100)]
server/: Make bulk crypto transforms responsible for algorithm selection.

Move all of the logic around processing symmetric algorithm selections
into the `bulkcrypto' transforms.  There are now three associated object
types:

  * an algorithm selection, which ends up attached to a peer key;

  * an encryption context, which actually performs the bulk transform on
    packets; and

  * a challenge context, which can issue and verify challenge tags.

The important improvement here is that now we can add new bulk crypto
transforms which are parametrized in different ways.

2 years agoserver/bulkcrypto.c: Abstract out MAC-failure tracing.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/bulkcrypto.c: Abstract out MAC-failure tracing.

2 years agoserver/admin.c: Export `a_info'.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/admin.c: Export `a_info'.

We shall have need of this soon.

2 years agoserver/: Rename `bulkcrypto' structure to `bulkops'.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/: Rename `bulkcrypto' structure to `bulkops'.

We shall want a structure to collect up a bulk transform's state later.
No functional change.  Basically

sed -i s/bulkcrypto/bulkops/g server/*.[ch]

and some reformatting.

2 years agoserver/tripe.h: Don't say `struct bulkcrypto' where we don't have to.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/tripe.h: Don't say `struct bulkcrypto' where we don't have to.

2 years agokeys/tripe-keys.in: Add an option to control the bulk transform.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
keys/tripe-keys.in: Add an option to control the bulk transform.

The default is `iiv', because we don't have the compatibility
constraints that the main server has.

Also, fix the `mtu' command, which has been wrong about the `iiv'
overhead for a while.

2 years agokeys/: Support the EdDSA signature schemes from catcrypt(1).
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/: Support the EdDSA signature schemes from catcrypt(1).

2 years agokeys/tripe-keys.conf.5.in, server/tripe.8.in: Contemplate more group types.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/tripe-keys.conf.5.in, server/tripe.8.in: Contemplate more group types.

Rather than listing the group types in prose as if there will never be
any more, list them out one by one.

2 years agoserver/tripe.8.in: Fix formatting mistake.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/tripe.8.in: Fix formatting mistake.

2 years agoserver/tests.at: Preserve output in `server communication' tests.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/tests.at: Preserve output in `server communication' tests.

The test runs with multiple sets of party keys, and used to delete the
party directories before each run, leaving only the output from the
last.  Instead, rename the party directories when we're done.

(I'd just create the directories with the right names in advance, but
the script uses the directory names as parts of shell variable names,
and I don't want to make the directory names ugly to allow that.)

2 years agokeys/tripe-keys.in, keys/tripe-keys.conf.5.in: Allow setting attributes.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
keys/tripe-keys.in, keys/tripe-keys.conf.5.in: Allow setting attributes.

Add `master-attrs' and `kx-attrs' options to allow setting arbitrary
attributes on keys.

2 years agokeys/tripe-keys.in: Provide `kx-genalg' and `kx-param-genalg' options.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/tripe-keys.in: Provide `kx-genalg' and `kx-param-genalg' options.

Not all `tripe' key exchange groups G necessarily have `key'
key-generation algorithms named `G' and `G-param' corresponding to them;
it's just a coincidence that they do at the moment.

2 years agokeys/tripe-keys.conf.5.in: Inhibit page breaks in tables.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/tripe-keys.conf.5.in: Inhibit page breaks in tables.

Unfortunately I have to guess at the length of the tables and associated
text, but it seems to work OK.

2 years agokeys/tripe-keys.conf.5.in: Document correct default cipher.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/tripe-keys.conf.5.in: Document correct default cipher.

The default changed in 2009.

2 years agouslip/uslip.c: Shut the server down on `SIGTERM'.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
uslip/uslip.c: Shut the server down on `SIGTERM'.

The tripe(8) server sends `SIGTERM' to its SLIP tunnel helpers when it
shuts down interfaces.  This causes us to leave behind dead Unix-domain
sockets, which is bad.  Catch `SIGTERM' so that we can clean up
properly -- and so that we can let clients pick up any remaining packets
we might still have queued.

2 years agouslip/uslip.c: Abstract out the server's EOF-on-stdin behaviour.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
uslip/uslip.c: Abstract out the server's EOF-on-stdin behaviour.

2 years agouslip/uslip.c: Make `make_pkqnode' be const-correct.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
uslip/uslip.c: Make `make_pkqnode' be const-correct.

2 years agouslip/uslip.c: Consistently name ignored closure pointers `hunoz'.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
uslip/uslip.c: Consistently name ignored closure pointers `hunoz'.

2 years agouslip/uslip.c: Be consistent about `VERB_NOUN' function naming.
Mark Wooding [Mon, 17 Apr 2017 23:39:24 +0000 (00:39 +0100)]
uslip/uslip.c: Be consistent about `VERB_NOUN' function naming.

2 years agoserver/keymgmt.c: Add missing comma causing poor error formatting.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keymgmt.c: Add missing comma causing poor error formatting.

2 years agoserver/keymgmt.c: Don't leak `kdata' objects.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keymgmt.c: Don't leak `kdata' objects.

2 years agoserver/keyexch.c: Don't copy group elements when registering a challenge.
Mark Wooding [Wed, 19 Apr 2017 20:02:24 +0000 (21:02 +0100)]
server/keyexch.c: Don't copy group elements when registering a challenge.

Instead, just remember that ownership has been transferred.  For `c', we
don't use the original variable any more, so we can just mark it null;
but `r' gets reused, so allocate a fresh place for it.

This is the only use of `G_COPY' in the program.

2 years agoserver/keyexch.c: Fix error handling around `mpmask' and `mpunmask'.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keyexch.c: Fix error handling around `mpmask' and `mpunmask'.

The return value from `mpmask' wasn't being used, and callers expected a
broken buffer on failure, so that's the official story now.

The return value from `mpunmask' was advertised properly, but not
checked, so fix that.

2 years agoserver/keyexch.c: Check that all of the algorithms match when setting up.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keyexch.c: Check that all of the algorithms match when setting up.

For some reason, we used only to check that the actual groups matched
and ignored the bulk crypto options.  Check everything now.

2 years agoserver/keyexch.c: Pass correct peer pointer when reporting group mismatch.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keyexch.c: Pass correct peer pointer when reporting group mismatch.

2 years agocommon/util.c, server/admin.c: Ensure null-termination of result strings.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
common/util.c, server/admin.c: Ensure null-termination of result strings.

`dstr_putc' has a sharp edge here.  Apparently I wasn't careful enough.

2 years agoserver/keymgmt.c: Fix typo.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
server/keymgmt.c: Fix typo.

2 years agoMakefile.am: Some reformatting.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
Makefile.am: Some reformatting.

2 years agovars.am: Some reformatting.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
vars.am: Some reformatting.

2 years agoconfigure.ac, debian/: Overhaul Wireshark plugin build machinery.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
configure.ac, debian/: Overhaul Wireshark plugin build machinery.

  * Depend on the a newish version of Wireshark because I couldn't find
    out where the API changes happened.

  * It seems that Wireshark actually does provide a `pkg-config'
    dropping now, so I can use it rather than complaining about how it's
    not there.

2 years agokeys/tripe-keys.in: Remove unrecognized files from `base-dir'.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/tripe-keys.in: Remove unrecognized files from `base-dir'.

In a sensible system, these turn out to be mostly signature files made
by old versions of the master key which don't exist any more.

You might want to think about making `upload-hook' delete the
corresponding files at the file server.

2 years agokeys/tripe-keys.8.in: `tripe-keys upload' can really upload things.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
keys/tripe-keys.8.in: `tripe-keys upload' can really upload things.

Mention the `upload-hook' configuration knob rather than the comment
about how it can't be done.

2 years agowireshark/packet-tripe.c: Catch up with Wireshark API changes.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
wireshark/packet-tripe.c: Catch up with Wireshark API changes.

  * Apparently `check_col' is now just dead, and its functionality
    included in the various `col_set_mumble' functions.

  * It seems that `dissector_add' has turned into `dissector_add_uint',
    and a number of other functions, for different field types, have
    been added.

This isn't well tested.

2 years agoUse new Catacomb `rand_quick' to gather entropy from other fast sources.
Mark Wooding [Sat, 4 Jun 2016 15:39:48 +0000 (16:39 +0100)]
Use new Catacomb `rand_quick' to gather entropy from other fast sources.

This requires a very shiny Catcomb.  I can make the dependency softer if
necessary.

2 years agoserver/: Rename `TIMER' to `QUICKRAND'.
Mark Wooding [Sat, 4 Jun 2016 15:31:10 +0000 (16:31 +0100)]
server/: Rename `TIMER' to `QUICKRAND'.

The purpose of the `TIMER' is to feed the entropy a small quantity of
entropy on a regular basis.  Encoding the implementation in the name was
an error which this commit fixes.

3 years agoserver/tripe.8.in: Fix misformatting.
Mark Wooding [Sat, 14 May 2016 10:08:35 +0000 (11:08 +0100)]
server/tripe.8.in: Fix misformatting.

3 years agoRelease 1.0.0pre18. 1.0.0pre18
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
Release 1.0.0pre18.

3 years agodebian/control: Fix the dependencies.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
debian/control: Fix the dependencies.

  * Fix up the Build-Depends.  The Python requirements for the
    architecture-independent packages are quite heavy, so split out
    Build-Depends-Indep.

  * Add detailed version information to the various build and runtime
    dependencies.

  * Observe that `tripe-keys' depends on curl(1) to run, so we need it
    at build time for testing, and the `tripe-keys' package needs it at
    runtime.

3 years agodebian/source/format: Apparently you're meant to have one of these now.
Mark Wooding [Fri, 19 Feb 2016 19:51:19 +0000 (19:51 +0000)]
debian/source/format: Apparently you're meant to have one of these now.

3 years agoconfigure.ac, Makefile.am: More subsetting based on module availability.
Mark Wooding [Sat, 20 Feb 2016 17:17:51 +0000 (17:17 +0000)]
configure.ac, Makefile.am: More subsetting based on module availability.

Also check the mLib and CDB modules.

3 years agotripe-service.7: Move manual page to server/.
Mark Wooding [Sun, 24 Apr 2016 22:30:30 +0000 (23:30 +0100)]
tripe-service.7: Move manual page to server/.

The stuff in svc/ isn't always built, but the manpage should always
exist because it describes general conventions.

3 years agoserver/admin.c (a_vformat): Fix uses of `va_arg' to dereference `ap'.
Mark Wooding [Fri, 19 Feb 2016 22:31:20 +0000 (22:31 +0000)]
server/admin.c (a_vformat): Fix uses of `va_arg' to dereference `ap'.

This is the missing half of the earlier patch; without it, we get
instant crashes on i386 (but, oddly, no warnings anywhere).

3 years agoserver/admin.c: Pass captured `va_list' consistently by reference.
Mark Wooding [Fri, 19 Feb 2016 21:42:57 +0000 (21:42 +0000)]
server/admin.c: Pass captured `va_list' consistently by reference.

On amd64, they're secretly arrays, and once one's decayed into a
pointer to a strange thing, there's no getting it back again.

3 years agoPortability: Use `socklen_t' throughout, if available.
Mark Wooding [Fri, 19 Feb 2016 21:41:04 +0000 (21:41 +0000)]
Portability: Use `socklen_t' throughout, if available.

Silly amd64 people, not using `size_t'.

3 years agoserver/tests.at (AWAIT_KXDONE): Ignore warnings and trace.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at (AWAIT_KXDONE): Ignore warnings and trace.

If the waiting loop receive a message it doesn't understand, it bails
and the rest of the test continues, usually before the peers have
actually completed their key exchange.

3 years agoserver/tests.at (AWAIT_KXDONE): Ignore the correct server messages.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at (AWAIT_KXDONE): Ignore the correct server messages.

The old code told arranged for both peers to ignore complains about
unexpected packets from the /first/ peer, with the predictable result
that the first peer complains about unexpected packets from the second
and the test fails spuriously.

3 years agoserver/tests.at (server retry): Use the new `WITH_STRACE' macro.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at (server retry): Use the new `WITH_STRACE' macro.

Now we don't necessarily need strace(1) installed at build time.

It's now the responsibility of `WITH_STRACE' to clear away the strace(1)
process if there is one.  There's now too much process hierarchy in
between the wait and the child for us to wait on the proxy process
itself.  It doesn't really matter much, fortunately.

3 years agoserver/tests.at: Make the strace options better.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at: Make the strace options better.

  * `-ff' to split the traces for different processes out into separate
    files.  This is mostly good because it removes the confusing
    interleaving of blocking system calls issued from concurrently
    running processes.

  * `-tt' to print high-resolution timestamps on each line, for
    correlating the traces now they've been separated.

  * `-v' to print out full dumps of environments and other such things.

  * `-s1024' to print the whole of longish strings.

3 years agoserver/tests.at (TRIPE): Set command-line trace options from environment.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at (TRIPE): Set command-line trace options from environment.

If you set `TRIPE_TEST_TRACEOPTS' then tracing is turned on with the
appropriate options.  The obvious value is `A'.

3 years agoserver/tests.at (WITH_TRIPEX): Strip early tracing from the stderr file.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at (WITH_TRIPEX): Strip early tracing from the stderr file.

So we end up with a `...full' version.

3 years agoserver/tests.at (WITH_STRACE): Factor out the strace(1) machinery.
Mark Wooding [Fri, 19 Feb 2016 21:49:33 +0000 (21:49 +0000)]
server/tests.at (WITH_STRACE): Factor out the strace(1) machinery.

There's very little noticeable difference in the behaviour: the (usually
empty) directory created for strace(1) to scribble its corefile has a
different name.  The new macro takes care of running the caller's
command in the correct directory, so the (only, currently) call site
doesn't need to worry about that any more.

3 years agopriv/helper.c (lose): Tag as NORETURN.
Mark Wooding [Mon, 1 Jun 2015 17:17:44 +0000 (18:17 +0100)]
priv/helper.c (lose): Tag as NORETURN.

3 years agoserver/keyexch.c: Always quote the peer name in `KXSTART' notifications.
Mark Wooding [Wed, 27 May 2015 18:43:07 +0000 (19:43 +0100)]
server/keyexch.c: Always quote the peer name in `KXSTART' notifications.

I missed the separate notification which is issued when a corked
exchange is uncorked.

4 years agoRelease 1.0.0pre17.1. 1.0.0pre17.1
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
Release 1.0.0pre17.1.

4 years agoserver/tests.at (AWAIT_KXDONE): More warning suppressions.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
server/tests.at (AWAIT_KXDONE): More warning suppressions.

Slow hosts (e.g., Scratchbox, under emulation) can trigger warnings in
both directions, and also `unexpected-challenge', depending on how far
the key exchange has progressed by the time the other end gets the
`FORCEKX' command.

4 years agoserver/tests.at (AWAIT_KXDONE): Deliver POP to the correct place.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
server/tests.at (AWAIT_KXDONE): Deliver POP to the correct place.

In fact, BNAME and BDIR are always the same in the current test script
-- the silly games are always played with ANAME and ADIR -- but that's
just luck.

4 years agoRelease 1.0.0pre17. 1.0.0pre17
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
Release 1.0.0pre17.

4 years agoclient/tripectl.c: New option `-W' to set `WATCH' list.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
client/tripectl.c: New option `-W' to set `WATCH' list.

4 years agobuild, debian: Add a suffix to the main TrIPE-specific manpages.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
build, debian: Add a suffix to the main TrIPE-specific manpages.

This keeps the service documentation, in particular, out of the general
namespace where things might conflict with it.

The general-purpose utilities `pkstream' and `pathmtu' are not affected
by this change.

4 years agosvc/connect.in (cmd_kick): Call the right function.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
svc/connect.in (cmd_kick): Call the right function.

4 years agocontrib/sshsvc.conf: Include configuration file for `sshsvc-mkauthkeys'.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
contrib/sshsvc.conf: Include configuration file for `sshsvc-mkauthkeys'.

4 years agocontrib/knock.in: Can now be called from an ordinary shell.
Mark Wooding [Fri, 24 Apr 2015 09:11:23 +0000 (10:11 +0100)]
contrib/knock.in: Can now be called from an ordinary shell.

The script can now pick up information from environment variables rather
than the forced command, which makes the `tripe' user much more sane.
This also fits a little better with `sshsvc-mkauthkeys'.

4 years agopeerdb/peers.in, svc/connect.8.in: Tweak dead-peer-detection parameters.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
peerdb/peers.in, svc/connect.8.in: Tweak dead-peer-detection parameters.

They're now different between dynamic and passive peers.  The manual
explains why they're set the way they are and provides some vaguely
useful commentary.

Also rearrange the other parameters a bit, now that we have multiple
inheritance.

4 years agopeerdb/tripe-newpeers.in, peerdb/peers.in.5.in: Multiple inheritance.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
peerdb/tripe-newpeers.in, peerdb/peers.in.5.in: Multiple inheritance.

Allow a section to `@inherit' from more than one other section.  All
traversals of the inheritance dag which find a value must report the
same one.  Cycles are diagnosed when they're encountered, but not
otherwise.

4 years agopeerdb/tripe-newpeers.in: Sort the output so that testing is easier.
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
peerdb/tripe-newpeers.in: Sort the output so that testing is easier.

4 years agosvc/conntrack.8.in: Fix the manpage heading!
Mark Wooding [Sat, 2 May 2015 16:05:20 +0000 (17:05 +0100)]
svc/conntrack.8.in: Fix the manpage heading!

4 years agopeerdb/peers.in.5.in: The magic is spelled `@inherit', not `@inherits'.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
peerdb/peers.in.5.in: The magic is spelled `@inherit', not `@inherits'.

4 years agoRelease 1.0.0pre16.2. 1.0.0pre16.2
Mark Wooding [Sat, 14 Mar 2015 19:37:30 +0000 (19:37 +0000)]
Release 1.0.0pre16.2.

4 years agosrc/tripe-ifup.in: Hack IPv6 up on VPN interfaces.
Mark Wooding [Sat, 14 Mar 2015 19:03:00 +0000 (19:03 +0000)]
src/tripe-ifup.in: Hack IPv6 up on VPN interfaces.

It seems that some devices try to turn off IPv6 on all interfaces if
they can't figure out a route.  But we know how to take care of
ourselves, and we want IPv6 over our VPN even if we can't do it
globally.

I'm thinking specifically of ConnMan on Jolla phones here, but there are
probably others.

4 years agosvc/tripe-ifup.in: Better error handling.
Mark Wooding [Sat, 14 Mar 2015 14:39:42 +0000 (14:39 +0000)]
svc/tripe-ifup.in: Better error handling.

Don't give up as soon as a network configuration command fails.  That
tends to leave the device's routing in a hopelessly broken state.
Instead, catch errors, report them via the server, and issue a slightly
different notification on completion.

4 years agosvc/tripe-ifup.in: Trim prefix length from IPv6 address used as gateway.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
svc/tripe-ifup.in: Trim prefix length from IPv6 address used as gateway.

Because IPv6 doesn't deal with point-to-point connections well, it's
common to use little networks.  But then the user needs to associate a
prefix length with the address, and we have to strip it off when adding
routes which use the address as a gateway.

4 years agoRelease 1.0.0pre16.1. 1.0.0pre16.1
Mark Wooding [Tue, 17 Feb 2015 21:34:14 +0000 (21:34 +0000)]
Release 1.0.0pre16.1.

4 years agoserver/keymgmt.c (km_samealgsp): Make sure the bulk transforms match.
Mark Wooding [Tue, 17 Feb 2015 21:20:12 +0000 (21:20 +0000)]
server/keymgmt.c (km_samealgsp): Make sure the bulk transforms match.

Getting this wrong would cause a communication failure which is
annoyingly difficult to debug.

4 years agoserver/tripe-admin.5.in: No, DAEMON doesn't issue a warning.
Mark Wooding [Tue, 17 Feb 2015 21:10:00 +0000 (21:10 +0000)]
server/tripe-admin.5.in: No, DAEMON doesn't issue a warning.

4 years agoRelease 1.0.0pre16. 1.0.0pre16
Mark Wooding [Sun, 20 Jul 2014 13:53:18 +0000 (14:53 +0100)]
Release 1.0.0pre16.

4 years agodebian/control: Build-Depends on mLib 2.2.2, for dstr_putf `%.*s' fix.
Mark Wooding [Sun, 20 Jul 2014 13:53:18 +0000 (14:53 +0100)]
debian/control: Build-Depends on mLib 2.2.2, for dstr_putf `%.*s' fix.

Otherwise the server segfaults on an `ALGS' admin request.  This causes
a failure in the test suite.

4 years agokeys/tripe-keys.in: Compare configuration files properly when updating.
Mark Wooding [Sun, 20 Jul 2014 13:53:18 +0000 (14:53 +0100)]
keys/tripe-keys.in: Compare configuration files properly when updating.

For some stupid reason, Python's `filecmp' module defaults to comparing
files using stat(2) rather then actually reading them.  I must have been
having a stupid day when I read the documentation because it didn't
occur to me that it could be that deranged.  But apparently it is, so we
must set `thip, crinkle, and spoit' to `no'.

It compares files too?

4 years agocontrib/, vars.am: systemd service definitions.
Mark Wooding [Sun, 20 Jul 2014 13:53:18 +0000 (14:53 +0100)]
contrib/, vars.am: systemd service definitions.

4 years agoImprove server logging.
Mark Wooding [Sun, 20 Jul 2014 13:52:26 +0000 (14:52 +0100)]
Improve server logging.

  * The client can now log to stdout or stderr easily.  Annoyingly,
    `-f/dev/stderr' doesn't work if running privilege-separated, so
    provide some handy magic tokens.

  * The init scripts now have configuration for writing to syslog.

4 years agoinit/tripe-init.in, contrib/tripe-upstart.in: Reformat startup rune.
Mark Wooding [Sun, 20 Jul 2014 13:51:15 +0000 (14:51 +0100)]
init/tripe-init.in, contrib/tripe-upstart.in: Reformat startup rune.

  * The old ${var+-O}${var} rune was kind of pointless: rewrite it as
    ${var+-O$var} instead.

  * Remove other pointless braces.

  * Group the addr/port and user/group options together.

4 years agosvc/connect.in: Only check the configuration database once a minute.
Mark Wooding [Sun, 20 Jul 2014 12:50:28 +0000 (13:50 +0100)]
svc/connect.in: Only check the configuration database once a minute.

I think this is quite often enough, and more is likely to drain the
battery of mobile devices unacceptably.

4 years agosvc/conntrack.in: Monitor class for ConnMan.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
svc/conntrack.in: Monitor class for ConnMan.

As used in Sailfish.

4 years agoserver/tests.at: Don't run strace(1) unconditionally.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
server/tests.at: Don't run strace(1) unconditionally.

It slows things down, might not be available, and doesn't work in
Scratchbox (because QEmu doesn't implement ptrace(2)).

4 years agosvc/conntrack.in: Update NetworkManager protocol handling.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
svc/conntrack.in: Update NetworkManager protocol handling.

All of the state codes have changed because XDG.

4 years agosvc/conntrack.in (straddr): Handle `None' as a packed address.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
svc/conntrack.in (straddr): Handle `None' as a packed address.

4 years agomon/tripemon.in: Add per-peer key selection and mobile options.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: Add per-peer key selection and mobile options.

4 years agomon/tripemon.in: Show per-peer crypto details in peer info sheet.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: Show per-peer crypto details in peer info sheet.

4 years agomon/tripemon.in: New `TrivialWindow' class: dismiss with Escape.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: New `TrivialWindow' class: dismiss with Escape.

Now it's easier to dismiss all of those random little dialogues.

4 years agomon/tripemon.in: Support the new-style bindings for Gtk and friends.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: Support the new-style bindings for Gtk and friends.

This is a fair amount of tedious work, especially if we want to keep
compatibility with the old versions of things.

Highlights:

  * There are separate modules now for GLib and GObject, as in the
    underlying C libraries; the old Python bindings merged the two
    together.

  * Gtk enumerations and flags now live in their own classes, so we dig
    them out for compatibility.

  * Because the new bindings are dynamically generated from
    introspection data, they don't make allowances for (say) `raise'
    being a Python reserved word.

  * Some functions which used to have default arguments no longer do, so
    we have to call them the hard way.

4 years agomon/tripemon.in: Highlight entry background when contents are invalid.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: Highlight entry background when contents are invalid.

This shows up much better than the foreground.

4 years agomon/tripemon.in: Remove spurious argument.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: Remove spurious argument.

Not sure how this passed even cursory testing.

4 years agomon/tripemon.in: `connect' service's `list' command is now `list-active'.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
mon/tripemon.in: `connect' service's `list' command is now `list-active'.

4 years agomon/tripemon.in: Whitespace fixing.
Mark Wooding [Sat, 19 Jul 2014 00:59:26 +0000 (01:59 +0100)]
mon/tripemon.in: Whitespace fixing.

4 years agoserver/: New `implicit-IV' transform (`iiv').
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
server/: New `implicit-IV' transform (`iiv').

The new transform has two advantages over the existing `v0' transform:

  * it doesn't need to transmit an explicit IV, so it adds less overhead
    to messages being sent; and

  * it's entirely deterministic, getting variation from the input
    sequence number rather than randomness, which (a) improves
    performance a bit by not exercising the cryptographic random number
    generator, and (b) eliminates a kleptographic channel.

This change triggers a bug in mLib 2.2.1 and earlier: `dstr_putf'
doesn't handle `%.*s' correctly.

4 years agoserver/: Prepare an interface for multiple bulk-crypto transforms.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
server/: Prepare an interface for multiple bulk-crypto transforms.

The current bulk-crypto transform is rather old-fashioned (though in
most formal senses secure).  It is neither as efficient as it could
be (in terms of overhead); nor does it provide privacy properties which
are as good as I'd like.  So it would be good to be able to replace it
with something better.

There's now a table of named transforms.  It only has one entry, `v0',
which is compatible with previous versions, but we now have all of the
machinery necessary to add new transforms later.

There are also some minor improvements to the tracing of cryptographic
details (notably: reporting the types of messages being encrypted and
decrypted); and an interface change for @ks_encrypt@ and @ks_decrypt@,
which are now allowed to corrupt @buf_u@ in the course of their
operation.

4 years agoserver/tripe-admin.5.in: Remove spurious punctuation.
Mark Wooding [Sat, 24 May 2014 13:00:03 +0000 (14:00 +0100)]
server/tripe-admin.5.in: Remove spurious punctuation.

4 years ago.gitattributes: New file; highlight bad whitespace properly in Python.
Mark Wooding [Sun, 20 Jul 2014 00:37:54 +0000 (01:37 +0100)]
.gitattributes: New file; highlight bad whitespace properly in Python.

4 years agopeerdb/tripe-newpeers.in: Don't start duplicate resolver queries.
Mark Wooding [Sat, 19 Jul 2014 16:22:37 +0000 (17:22 +0100)]
peerdb/tripe-newpeers.in: Don't start duplicate resolver queries.

Resolver queries are indexed by query domain name.  Previously, if we
find another place which wants the same name resolved, we'd overwrite
the existing query with the new one, which causes the old one to be
cancelled (despite it possibly having made progress).

(This also avoids tickling a bug in mLib's handling of aborted queries,
fixed separately.)