]> the.earth.li Git - onak.git/log
onak.git
8 years agoAdd "dumpconfig" command to onak to aide configuration file migration
Jonathan McDowell [Tue, 7 Jun 2016 12:59:56 +0000 (13:59 +0100)]
Add "dumpconfig" command to onak to aide configuration file migration

onak is capable of parsing both old and new style configuration files,
but future improvements will only be added to the new style. To aide
users in the migration to the new format add a "dumpconfig" option to
the onak binary which will dump the current configuration in new format.

8 years agoAdd getlogthreshold() to obtain current log level setting
Jonathan McDowell [Tue, 7 Jun 2016 12:49:59 +0000 (13:49 +0100)]
Add getlogthreshold() to obtain current log level setting

8 years agoChange config format to a cleaner .ini style
Jonathan McDowell [Tue, 7 Jun 2016 11:23:18 +0000 (12:23 +0100)]
Change config format to a cleaner .ini style

onak's config file format grew from the pksd config style. pksd is long
obsolete and there are a number of features it would be nice to support
in onak which this config format makes hard to support cleanly. Move to
a .ini style config file, with [section] and name=value definitions. The
old format is still supported and at present an old style config is
searched for first to ensure smooth upgrades, but any new config options
will only be supported by the new style.

Additionally add tests against both old + new config styles for all
backends.

8 years agoImprove memory clean-up on exit
Jonathan McDowell [Tue, 7 Jun 2016 10:37:37 +0000 (11:37 +0100)]
Improve memory clean-up on exit

onak + wotsap were failing to free the memory allocated for the config
file name if it was passed on the command line, and the config structure
cleanups failed to free any configured sock_dir or the actual DB
backend config structure. All of this gets cleaned up by normal program
exit (which is when we do our clean-up anyway), but fix it anyway.

8 years agoPass config file name into test scripts
Jonathan McDowell [Tue, 7 Jun 2016 10:09:32 +0000 (11:09 +0100)]
Pass config file name into test scripts

Rather than having each test script hard code the config file that
should be use, have the top level runtests script pass the filename
to use as the config in as a command line parameter.

8 years agoPull config line parsing out to its own function
Jonathan McDowell [Tue, 7 Jun 2016 08:36:33 +0000 (09:36 +0100)]
Pull config line parsing out to its own function

The indentation in the config file reading function is horrible, so
pull the actual parsing of the line out to its own function simplifying
the loop to primarily be about reading each line and trimming white
space.

8 years agoParse pks_bin_dir / mail_dir in the C config handling
Jonathan McDowell [Tue, 7 Jun 2016 07:37:07 +0000 (08:37 +0100)]
Parse pks_bin_dir / mail_dir in the C config handling

pks_bin_dir and mail_dir are only used by the Perl that handles
incoming keyserver email, but parse them in the C code rather than
just ignoring them. This helps pave the way for some config file format
changes and tightening up the parsing to complain about unused options.

8 years agoFix compilation breakage introduced in last commit
Jonathan McDowell [Mon, 6 Jun 2016 22:03:11 +0000 (23:03 +0100)]
Fix compilation breakage introduced in last commit

An unrelated change sneaked in as part of the proper splitting out of
backend database configuration - configuration initialisation for not
yet present config options. Remove them.

8 years agoProperly isolate database backend configuration
Jonathan McDowell [Mon, 6 Jun 2016 20:54:42 +0000 (21:54 +0100)]
Properly isolate database backend configuration

While database backends have had private context for some time they've
all been using the same configuration details from the global config
structure. Create a new DB specific config structure and initialise
a single instance from the config file. Also modify the DB backend
initialise functions to take this config structure as a parameter.
This will allow in the future for multiple different backends (whether
the same type or different) to be included at the same time.

8 years agoSwitch to C99 struct initialisation for default configuration
Jonathan McDowell [Mon, 6 Jun 2016 19:19:17 +0000 (20:19 +0100)]
Switch to C99 struct initialisation for default configuration

Inbound changes to the configuration file handling will change the
config structure around. Switch to using C99 style initialisation, which
is much clearer to read and reduces the risk of assigning values to the
wrong configuration variable.

8 years agoSwitch to using mail_dir for incoming mail lock file
Jonathan McDowell [Sun, 5 Jun 2016 20:28:58 +0000 (21:28 +0100)]
Switch to using mail_dir for incoming mail lock file

Rather than using the db_dir for the lock file to prevent multiple
onak-mail instances processing incoming requests at the same time, use
the mail_dir file where the incoming messages are spooled anyway. This
is cleaner and will cope with the potential for multiple DB backends to
be in play in the future.

8 years agoRemove Ross Burton from Uploaders
Jonathan McDowell [Sun, 17 Jan 2016 14:14:21 +0000 (14:14 +0000)]
Remove Ross Burton from Uploaders

Ross requested to be removed from Uploaders due to a lack of
time/inclination to work on onak maintainership.

9 years ago0.4.6 release onak-0.4.6
Jonathan McDowell [Tue, 25 Aug 2015 15:19:14 +0000 (16:19 +0100)]
0.4.6 release

Release; update version string in configure.ac, README, Doxyfile.
Update HISTORY and debian/changelog.

9 years agoFix stupid sock_dir bug
Jonathan McDowell [Tue, 25 Aug 2015 15:46:30 +0000 (16:46 +0100)]
Fix stupid sock_dir bug

I forgot to actually parse the sock_dir info from the config file. Do
so.

9 years agoSupport --runstatedir with autoconf 2.70+
Jonathan McDowell [Tue, 25 Aug 2015 14:22:24 +0000 (15:22 +0100)]
Support --runstatedir with autoconf 2.70+

Rather than putting our socket in $localstatedir/run use $runstatedir
which is support by the Debian package autoconf 2.69-9 and will be in
autoconf 2.70. Fall back to $localstatedir/run when an older version
of autoconf is used.

9 years agoAdd config option to specify keyd socket directory
Jonathan McDowell [Fri, 21 Aug 2015 10:44:22 +0000 (12:44 +0200)]
Add config option to specify keyd socket directory

keyd was stashing its Unix domain socket in the DB directory, which
is contrary to convention. Add a sock_dir config option and default it
to ${prefix}/var/run in the sample config file.

9 years agoUpdate version.h when source files change
Jonathan McDowell [Thu, 20 Aug 2015 12:22:25 +0000 (14:22 +0200)]
Update version.h when source files change

Make $(SRCS) a Makefile dependency for version.h so once any of the
source files change we can update our version to reflect this fact.

9 years agoUpdate debian/watch file to deal with non-gz compressed tarballs
Jonathan McDowell [Thu, 20 Aug 2015 10:43:01 +0000 (12:43 +0200)]
Update debian/watch file to deal with non-gz compressed tarballs

9 years agoAdd git commit details to non-release builds
Jonathan McDowell [Thu, 20 Aug 2015 10:30:52 +0000 (12:30 +0200)]
Add git commit details to non-release builds

The previous bzr version info is long unused, so replace with
'git describe' to embed the git version status in builds from git.

9 years agoAdd Curve25519 ECC OID details
Jonathan McDowell [Sat, 15 Aug 2015 09:28:31 +0000 (10:28 +0100)]
Add Curve25519 ECC OID details

9 years agoFix keysize for Ed25519 to 255 bits
Jonathan McDowell [Sat, 15 Aug 2015 09:24:58 +0000 (10:24 +0100)]
Fix keysize for Ed25519 to 255 bits

9 years agoAdd support for displaying EDDSA keys
Jonathan McDowell [Sat, 15 Aug 2015 09:23:54 +0000 (10:23 +0100)]
Add support for displaying EDDSA keys

EDDSA is not yet formally defined, but understood by GnuPG 2.1 and
has been seen in the wild. Key size is defined by the OID as for
ECDH/ECDSA keys.

9 years agoAdd de-duplication of subkeys on a key
Jonathan McDowell [Fri, 14 Aug 2015 17:19:15 +0000 (18:19 +0100)]
Add de-duplication of subkeys on a key

GnuPG will incorrectly add a pre-existing subkey that it doesn't
understand (e.g. ECC) to a key. This results in keys with a large
number of identical subkeys. Avoid this by detecting such keys and
de-duplicating the identical subkeys.

(gnupg bug report at https://bugs.gnupg.org/gnupg/issue1962)

9 years agoRe-order linking for backend plugins to cope with ld --as-needed
Jonathan McDowell [Sun, 17 May 2015 20:11:04 +0000 (21:11 +0100)]
Re-order linking for backend plugins to cope with ld --as-needed

The shared libraries for DB4/curl/PostgreSQL should all come after the
object file that uses them so that ld --as-needed can correctly pick up
the required linkage.

Fixes Debian bug #772433

9 years agoAdd additional ECC OIDs
Jonathan McDowell [Thu, 5 Mar 2015 15:27:14 +0000 (15:27 +0000)]
Add additional ECC OIDs

In addition to the 3 NIST curves add Ed25519, the 3 brainpool curves and
secp256k1 (as used in Bitcoin).

10 years agoDon't build-depend on Debian systemd dev packages for non-Linux architectures
Jonathan McDowell [Sun, 5 Oct 2014 13:43:11 +0000 (14:43 +0100)]
Don't build-depend on Debian systemd dev packages for non-Linux architectures

Later versions of systemd aren't build on FreeBSD etc so the Debian build
was failing due to an unmet build-dep on libsystemd-dev; limit this
requirement to Linux archs.

Fixes Debian bug #763924. Thanks to Pino Toscano <pino@debian.org>

10 years ago0.4.5 release onak-0.4.5
Jonathan McDowell [Fri, 3 Oct 2014 16:30:51 +0000 (17:30 +0100)]
0.4.5 release

Release; update version string in configure.ac, README, Doxyfile.
Update HISTORY and debian/changelog.

10 years agoCheck for sd_listen_fds in libsystemd as well as libsystemd-daemon
Jonathan McDowell [Wed, 1 Oct 2014 08:37:56 +0000 (09:37 +0100)]
Check for sd_listen_fds in libsystemd as well as libsystemd-daemon

Upstream systemd has moved the sd_listen_fds function from
libsystemd-daemon into a combined libsystemd. For Debian this change
happens in the 214-1 package. Make the autoconf script look in both
and change the Debian build-deps to look for either suitably
recent libsystemd-dev or fall back to libsystemd-daemon-dev (to aid
backports).

10 years ago0.4.4 release onak-0.4.4
Jonathan McDowell [Tue, 30 Sep 2014 21:38:04 +0000 (22:38 +0100)]
0.4.4 release

Release; update version string in configure.ac, README, Doxyfile.
Update HISTORY and debian/changelog.

10 years agoUse strtouq to parse keyid instead of strtoul
Jonathan McDowell [Tue, 30 Sep 2014 21:34:21 +0000 (22:34 +0100)]
Use strtouq to parse keyid instead of strtoul

The use of strtoul to parse the key ID breaks parsing 64 bit key IDs
on 32 bit platforms. Use strtouq instead, which is defined as returning
a 64 bit rather than being dependant on the length of "unsigned long".

10 years ago0.4.3 release onak-0.4.3
Jonathan McDowell [Tue, 30 Sep 2014 09:10:03 +0000 (10:10 +0100)]
0.4.3 release

Release; update version string in configure.ac, README, Doxyfile.
Update HISTORY and debian/changelog.

10 years agoBump Debian Standards-Version to 3.9.6.0
Jonathan McDowell [Tue, 30 Sep 2014 08:59:35 +0000 (09:59 +0100)]
Bump Debian Standards-Version to 3.9.6.0

No changes.

10 years agoAdd dependency on dh-systemd to Debian packaging
Jonathan McDowell [Tue, 30 Sep 2014 08:52:01 +0000 (09:52 +0100)]
Add dependency on dh-systemd to Debian packaging

10 years agoDon't ignore errors in newly added Debian prerm script
Jonathan McDowell [Tue, 30 Sep 2014 08:51:10 +0000 (09:51 +0100)]
Don't ignore errors in newly added Debian prerm script

10 years agoEnable use of systemd + socket activation support for Debian package
Jonathan McDowell [Mon, 29 Sep 2014 20:57:08 +0000 (21:57 +0100)]
Enable use of systemd + socket activation support for Debian package

Now that onak supports systemd socket activation add the appropriate
systemd service files to enable this on Debian installs. In the longer
term I'd like this to be generic for any distro; patches from people
experienced with them most welcome.

10 years agoAdd keyd support for systemd socket activation
Jonathan McDowell [Tue, 23 Sep 2014 21:41:38 +0000 (22:41 +0100)]
Add keyd support for systemd socket activation

If we have libsystemd-daemon available then enable support for
systemd socket activation of keyd. Even if this support is compiled
in we will fall back to the old behaviour of setting up our own
listening Unix domain socket if systemd is not in use.

10 years agoFix issue with pre-seeding key database on Debian install
Jonathan McDowell [Tue, 23 Sep 2014 15:59:34 +0000 (16:59 +0100)]
Fix issue with pre-seeding key database on Debian install

The test for my key didn't include the .gz file extension, so the
key database wasn't getting created upon initial install.

10 years agoUse generic rule for rebuilding .in files
Jonathan McDowell [Tue, 23 Sep 2014 14:42:44 +0000 (15:42 +0100)]
Use generic rule for rebuilding .in files

Rather than a specific Makefile rule for each .in file use a generic
approach so we can easily add more if necessary.

10 years agoUse common function for command sending in keyd client code
Jonathan McDowell [Tue, 22 Jul 2014 13:48:46 +0000 (14:48 +0100)]
Use common function for command sending in keyd client code

Rather than duplicating the checks for writing ok and getting a non
error response use a common function for sending commands to keyd from
the DB backend client code.

10 years agoGuard max lock setting with error check
Jonathan McDowell [Tue, 22 Jul 2014 12:01:14 +0000 (13:01 +0100)]
Guard max lock setting with error check

We weren't checking for an error before setting the DB4 maxlocks
parameter, which could cause a NULL dereference in the error path.

10 years agoCleanup key array logic to make llvm scan-build happier
Jonathan McDowell [Tue, 22 Jul 2014 11:59:32 +0000 (12:59 +0100)]
Cleanup key array logic to make llvm scan-build happier

We can't have the size != 0 without keys != NULL, but the fact we
checked one at the start and the other later was confusing the static
checks from scan-build. Use size in both places; it keeps scan-build
happy and make the code a little easier to read.

10 years agoFix keyd memory leak on error reading client provided search text
Jonathan McDowell [Tue, 22 Jul 2014 11:53:40 +0000 (12:53 +0100)]
Fix keyd memory leak on error reading client provided search text

10 years agoBail out if we can't change to the DB directory for the FS backend
Jonathan McDowell [Tue, 22 Jul 2014 11:42:35 +0000 (12:42 +0100)]
Bail out if we can't change to the DB directory for the FS backend

10 years agoBail out if we get errors reading the config file
Jonathan McDowell [Tue, 22 Jul 2014 11:38:33 +0000 (12:38 +0100)]
Bail out if we get errors reading the config file

10 years agoMake keyd more robust in the face of socket errors
Jonathan McDowell [Mon, 6 Jan 2014 19:48:59 +0000 (11:48 -0800)]
Make keyd more robust in the face of socket errors

We were mostly ignoring errors back from reads or writes to the keyd
socket. Check that we've read/written as many bytes as we expect and
pull some of this out to common functions for sending keys/replies.

10 years agoMake keyd internal functions static
Jonathan McDowell [Mon, 6 Jan 2014 19:02:37 +0000 (11:02 -0800)]
Make keyd internal functions static

Nothing else links to keyd.o, but these functions are internal so mark
them static.

10 years agoAdd error checking when trying to daemonize in keyd
Jonathan McDowell [Mon, 6 Jan 2014 18:58:11 +0000 (10:58 -0800)]
Add error checking when trying to daemonize in keyd

We weren't checking the return from freopen, which causes warnings when
compiling with -D_FORTIFY_SOURCE=2. Do so, and also for the setsid().

10 years agoCheck return value when writing PID to DB4 upgrade lock file
Jonathan McDowell [Sun, 5 Jan 2014 17:50:55 +0000 (17:50 +0000)]
Check return value when writing PID to DB4 upgrade lock file

When writing our PID to the lock file for upgrading the DB4 version
we didn't check it was actually successful. This doesn't matter in
general (because it's the existence or not of the file we care about)
but catch it and error out appropriate anyway.

10 years agoFix issue with looking up keys by fingerprint via HKP interface
Jonathan McDowell [Sun, 5 Jan 2014 17:44:47 +0000 (09:44 -0800)]
Fix issue with looking up keys by fingerprint via HKP interface

The index variable for the current parameter was being reused to parse
the fingerprint, resulting in attempting to free an unallocated piece of
memory and crashing. Use a different loop variable instead.

10 years agoAdd a reindex command to the onak tool
Jonathan McDowell [Tue, 24 Dec 2013 17:28:04 +0000 (17:28 +0000)]
Add a reindex command to the onak tool

With the changes to the backends to store keys using the full fingerprints
it can be useful to force a key to be re-indexed and thus transitioned to
a fingerprint rather than 64 bit key id index. Ideally we'd want to be
able to do this across the entire backend, but that's a bit heavyweight for
a full keyserver so add the ability to do it for a single key to start with.

10 years agoCheck that signature data lengths do not exceed the available data
Jonathan McDowell [Thu, 28 Nov 2013 21:30:06 +0000 (13:30 -0800)]
Check that signature data lengths do not exceed the available data

Some signatures have been witnessed on the keyserver network where the
hashed data lengths reported exceed the size of the overall packet. It
is assumed these are the results of some corruption somewhere, so if
they're detected don't try to parse any further (and drop them if we're
doing signature checking).

11 years agoDon't end an existing transaction if trying to delete a non-existent key
Jonathan McDowell [Wed, 20 Nov 2013 02:44:39 +0000 (18:44 -0800)]
Don't end an existing transaction if trying to delete a non-existent key

The DB4 key deletion routine would always exit the current transaction
if the key wasn't found, even if it had been called by another function
which had entered the transaction. Only do so if the deletion routine
itself is what caused the transaction to be started.

11 years agoAnother deletion fix of 64 bit keys in DB4 backend
Jonathan McDowell [Tue, 19 Nov 2013 05:44:46 +0000 (21:44 -0800)]
Another deletion fix of 64 bit keys in DB4 backend

We weren't deleting the actual key data when a key had been correctly
stored using its fingerprint.

11 years agoCode cleanups
Jonathan McDowell [Tue, 19 Nov 2013 05:34:48 +0000 (21:34 -0800)]
Code cleanups

Unused return values + unnecessary setting of variable.

11 years agoFix deletion of 64 bit keys in DB4 backend
Jonathan McDowell [Thu, 14 Nov 2013 05:39:14 +0000 (21:39 -0800)]
Fix deletion of 64 bit keys in DB4 backend

We were using the cursor from the id32db instead of the one for the
id64db.

11 years agoUse fingerprints as key index in DB4 backend
Jonathan McDowell [Wed, 13 Nov 2013 03:10:49 +0000 (19:10 -0800)]
Use fingerprints as key index in DB4 backend

Up until now the DB4 backend has used the 64 bit key ID as the index
into the key database. The fingerprint has always been a better idea
and it's easy to create a v3 key that causes a collision, so switch to
using the fingerprint in the DB4 backend.

These changes to not require an upgrade to an existing DB4 setup; keys
will get transitioned to the new storage method as they are updated in
the keyserver.

11 years agoAdd some more subpacket types to key decoder
Jonathan McDowell [Tue, 12 Nov 2013 05:46:16 +0000 (21:46 -0800)]
Add some more subpacket types to key decoder

Observed in keys sent to the keyserver and taken from either RFC 4880
or the source of various older PGP implementations. Some of these are
legacy but we can identify and ignore them.

11 years agoSwitch keysubkeys to returning an array of fingerprints instead of IDs
Jonathan McDowell [Sun, 10 Nov 2013 04:14:26 +0000 (20:14 -0800)]
Switch keysubkeys to returning an array of fingerprints instead of IDs

No functional change at present because the users only currently use the
64 bit key ID, so add a helper function fingerprint2keyid as well (which
only works for v4 keys, but v3 keys can't have subkeys).

11 years agoFix subkey retrieval with fs backend
Jonathan McDowell [Sun, 10 Nov 2013 01:21:42 +0000 (17:21 -0800)]
Fix subkey retrieval with fs backend

Fix retrieving keys by the 64 bit key id from one of their subkeys.

11 years agoAdd tests for retrieving by sub key ID
Jonathan McDowell [Sun, 10 Nov 2013 00:16:00 +0000 (16:16 -0800)]
Add tests for retrieving by sub key ID

2 tests for retrieving a key by a short 32 bit key id of a subkey and
the full 64 bit sub key id.

11 years agoIntroduce and use a structure to hold OpenPGP fingerprints
Jonathan McDowell [Sat, 9 Nov 2013 20:29:15 +0000 (12:29 -0800)]
Introduce and use a structure to hold OpenPGP fingerprints

Fingerprint lengths can be 16 bytes (for v3 keys) or 20 bytes (for v4
keys). Rather than passing around a size and fingerprint buffer separately
use a structure to hold both pieces of information and just pass that
around.

11 years agoUse full key id in key id retrieval test + add separate short key id test
Jonathan McDowell [Sat, 9 Nov 2013 19:17:21 +0000 (11:17 -0800)]
Use full key id in key id retrieval test + add separate short key id test

11 years agoFix issues found by llvm scan-build static analysis
Jonathan McDowell [Sat, 9 Nov 2013 16:34:08 +0000 (08:34 -0800)]
Fix issues found by llvm scan-build static analysis

A mixture of fixes: some variables set but never used (fix by either
removing or correctly checking error codes), some unlikely but possible
memory leaks, some invalid casting.

11 years agoUse dynamic context for all backend databases
Jonathan McDowell [Sat, 9 Nov 2013 07:02:45 +0000 (23:02 -0800)]
Use dynamic context for all backend databases

Rather than defining a static set of database functions use a well
known initialisation function for each database backend that then
returns a database context structure. This structure contains function
pointers for all of the functions previously held in dbstructs as well
as a private instance context pointer.

For the moment this doesn't provide any change to behaviour, but it
provides the initial preparation for allowing multiple database instance
(whether of the same or differing types) to be used at the same time.

11 years agoSkip signature hash verification for X509 signatures
Jonathan McDowell [Tue, 5 Nov 2013 05:57:49 +0000 (21:57 -0800)]
Skip signature hash verification for X509 signatures

X509 signatures don't have a valid hash checksum and can't be easily
verified without full X509 support. Skip them in check_packet_sighash
entirely.

11 years agoAdd SHA1x hash support
Jonathan McDowell [Tue, 5 Nov 2013 04:52:38 +0000 (20:52 -0800)]
Add SHA1x hash support

A hash variant that uses 8 SHA-1 instances and results in a double width
hash (320 bits instead of SHA-1's 160 bits). This was used in older
versions of PGP and there are quite a few keys on the keyservers with
signatures using it. Added mainly to enable the sig hash checking
routine to do some sanity checking on these signatures.

11 years agoRemove DB2 backend
Jonathan McDowell [Tue, 5 Nov 2013 03:13:39 +0000 (19:13 -0800)]
Remove DB2 backend

This was originally for pulling keys from an old pksd keyserver setup.
The code has bit-rotted and no one should have been running pksd for
years now, so just remove the backend entirely. DB4 has been the best
choice for onak backend for some time now.

11 years agoRemove trailing newline on sigcheck debug output
Jonathan McDowell [Tue, 5 Nov 2013 03:05:20 +0000 (19:05 -0800)]
Remove trailing newline on sigcheck debug output

11 years agoChange SHA_DIGEST_LENGTH to SHA1_DIGEST_SIZE to match nettle
Jonathan McDowell [Tue, 5 Nov 2013 03:04:51 +0000 (19:04 -0800)]
Change SHA_DIGEST_LENGTH to SHA1_DIGEST_SIZE to match nettle

11 years agoExtend database backends to support fetching by key fingerprint
Jonathan McDowell [Tue, 5 Nov 2013 00:56:31 +0000 (16:56 -0800)]
Extend database backends to support fetching by key fingerprint

Up until now the database backends have supported fetching a specific
key only by 64 bit key id. We should really have been using the
fingerprint where possible. Add a new backend function, fetch_key_fp,
to allow us to fetch using the fingerprint, and a generic implementation
that just truncates the fingerprint to get the 64 bit key id (valid for
v4 only). The HKP, keyd and dynamic backends gain full passthrough
support for retrieval by fingerprint with this commit.

11 years agoAdd support for displaying ECDH/ECDSA key sizes
Jonathan McDowell [Mon, 4 Nov 2013 07:09:12 +0000 (23:09 -0800)]
Add support for displaying ECDH/ECDSA key sizes

The key size of an elliptic curve key is given by the OID defining the
curve. Add support for understanding the OIDs listed in RFC6637 (256,
384 + 521 bits).

11 years agoAdd support for displaying EC/ECDSA key types
Jonathan McDowell [Mon, 4 Nov 2013 00:41:13 +0000 (16:41 -0800)]
Add support for displaying EC/ECDSA key types

Switch to a common pkalgo to char function and include the EC/ECDSA
key types (e/E) in it.

11 years agoAdd example v3 Elgamal key
Jonathan McDowell [Sun, 3 Nov 2013 20:58:27 +0000 (12:58 -0800)]
Add example v3 Elgamal key

11 years agoFix signature hash checking for RIPEMD-160
Jonathan McDowell [Sun, 3 Nov 2013 19:36:11 +0000 (11:36 -0800)]
Fix signature hash checking for RIPEMD-160

There was a missing break statement in the RIPEMD-160 case that resulted
in us miscalculating the signature hash for a signature using RIPEMD-160.

11 years agoAdd support for old Elgamal v3 key IDs
Jonathan McDowell [Sun, 3 Nov 2013 01:22:33 +0000 (18:22 -0700)]
Add support for old Elgamal v3 key IDs

Old versions of GnuPG put Elgamal (type 16) keys inside v3 packets.
The method of getting the keyid for these keys was via a RIPE MD160
hash approach similar to the SHA-1 approach used in v4. While nothing
supports this these days there are keys in the public keyserver
network that contain this sort of data and if we don't parse the keyid
correctly we can't show things like self-sigs.

11 years agoDon't store a key if we can't get the keyid
Jonathan McDowell [Sat, 2 Nov 2013 05:00:25 +0000 (22:00 -0700)]
Don't store a key if we can't get the keyid

If the get_keyid call fails for a key then we shouldn't be storing it,
so don't.

11 years agoAdd a subkey ID mapping DB for DB4 backend
Jonathan McDowell [Sat, 2 Nov 2013 04:58:02 +0000 (21:58 -0700)]
Add a subkey ID mapping DB for DB4 backend

With the increased use of signature subkeys and the fact long
keyids are being used to do HKP lookups we need to store a mapping
of the subkey long keyids to primary key ids. Previously the fact
we did this for the 32 bit subkey id was enough. Add a new DB for
the DB4 backend that can map the 64 bit subkey ID to the 64 bit
primary key ID.

11 years agoCheck that libcurl supports SSL if using HKPS with HKP backend
Jonathan McDowell [Sat, 2 Nov 2013 04:51:09 +0000 (21:51 -0700)]
Check that libcurl supports SSL if using HKPS with HKP backend

Use CURL's runtime feature checking to ensure that we have support
for SSL before trying to use a HKPS (HTTPS) remote keyserver with
the HKP keydb backend.

11 years agoInclude keyid when logging signature checking errors
Jonathan McDowell [Sat, 2 Nov 2013 04:31:43 +0000 (21:31 -0700)]
Include keyid when logging signature checking errors

Having information on an unknown signature hash or version is much
more useful if we know what key it's associated with.

11 years agoTry to use a user specific configuration file if available
Jonathan McDowell [Sat, 2 Nov 2013 04:15:04 +0000 (21:15 -0700)]
Try to use a user specific configuration file if available

Try looking for $XDG_CONFIG_HOME/onak.conf (or $HOME/.config/onak.conf
if $XDG_CONFIG_HOME is not set) before looking for the system wide
config file. This allows users to use their own config file without
having to always use the -c option to provide it.

11 years agoFix memory leaks found using valgrind
Jonathan McDowell [Sat, 2 Nov 2013 03:59:51 +0000 (20:59 -0700)]
Fix memory leaks found using valgrind

A harmless failure to cleanup the config structure before exiting
keydctl and a more major (small, but key runs for a long period of
time) leak of the search string for fetching a key by text string
in keyd.

11 years agoAdd some more algorithm constants to openpgp.h
Jonathan McDowell [Sat, 2 Nov 2013 03:56:41 +0000 (20:56 -0700)]
Add some more algorithm constants to openpgp.h

Some from RFC2440 (MD2/SHA1X), some from GnuPG (CAMELLIA).

11 years agoMake wotsap ignore revoked keys
Jonathan McDowell [Wed, 9 Oct 2013 16:35:29 +0000 (17:35 +0100)]
Make wotsap ignore revoked keys

wotsap wasn't paying attention to keys that were revoked, leading to them
being included in the output key/signature lists. Force the load of a key
before colouring it so we can ignore it if it's revoked.

11 years agoEnhance HKP backend URL parsing
Jonathan McDowell [Wed, 9 Oct 2013 16:10:00 +0000 (17:10 +0100)]
Enhance HKP backend URL parsing

The initial commit of the HKP backend just took a hostname as the "db_dir"
parameter. Extend this to cope with an http:// or hkp:// style URL, allowing
the port to be specified as well.

11 years agoRemove now obsolete SYMBOL_CACHE_SIZE directive from Doxygen config
Jonathan McDowell [Wed, 9 Oct 2013 11:30:44 +0000 (12:30 +0100)]
Remove now obsolete SYMBOL_CACHE_SIZE directive from Doxygen config

11 years agoClean up use of K&R style function definitions in md5.c
Jonathan McDowell [Wed, 9 Oct 2013 11:15:56 +0000 (12:15 +0100)]
Clean up use of K&R style function definitions in md5.c

md5_process_block / md5_read_ctx had K&R style function definitions.
Clean them up to use ANSI C style like the rest of the code (including
other functions in that file). Spotted by Doxygen.

11 years agoSwitch keyd to allow multiple clients to be served at once
Jonathan McDowell [Wed, 9 Oct 2013 10:46:42 +0000 (11:46 +0100)]
Switch keyd to allow multiple clients to be served at once

keyd was only accepting a single connection at a time and dealing with
all the requests from it before accepting the next client. This causes
delays in regular HKP processing while running something like wotsap on
a live keyserver.

Most of the pieces were already in place to deal with a per request select
based processing loop, so this commit switches to that model. A better
solution in the future may be to consider the use of libevent or libev,
but at present this enables the use of long runs stats programs while
still being able to service HKP requests in reasonable time.

11 years agoBump debhelper compat level to 9
Jonathan McDowell [Sun, 6 Oct 2013 17:05:20 +0000 (18:05 +0100)]
Bump debhelper compat level to 9

11 years agoAlter version number to indicate git build
Jonathan McDowell [Sun, 6 Oct 2013 12:19:19 +0000 (13:19 +0100)]
Alter version number to indicate git build

11 years agoUse dh-autoreconf to rebuild autoconf artifacts
Jonathan McDowell [Sun, 6 Oct 2013 12:15:39 +0000 (13:15 +0100)]
Use dh-autoreconf to rebuild autoconf artifacts

11 years agoMerge branch 'switch-to-debhelper' of git://git.sommitrealweird.co.uk/onak
Jonathan McDowell [Sun, 6 Oct 2013 11:41:18 +0000 (12:41 +0100)]
Merge branch 'switch-to-debhelper' of git://git.sommitrealweird.co.uk/onak

11 years agoAdd aclocal.m4 to .gitignore
Jonathan McDowell [Wed, 2 Oct 2013 10:34:23 +0000 (11:34 +0100)]
Add aclocal.m4 to .gitignore

11 years agoSet the user agent to onak/<version> for HKP backend
Jonathan McDowell [Tue, 1 Oct 2013 16:08:38 +0000 (17:08 +0100)]
Set the user agent to onak/<version> for HKP backend

11 years agoFix reference to onak binary to keydctl in keydctl help output
Jonathan McDowell [Tue, 1 Oct 2013 15:33:06 +0000 (16:33 +0100)]
Fix reference to onak binary to keydctl in keydctl help output

11 years agoSwitch debian build system to dh
Brett Parker [Tue, 1 Oct 2013 11:30:52 +0000 (12:30 +0100)]
Switch debian build system to dh

11 years ago0.4.2 release onak-0.4.2
Jonathan McDowell [Tue, 1 Oct 2013 11:09:01 +0000 (12:09 +0100)]
0.4.2 release

Release; update version string in configure.ac, README, Doxyfile.
Update HISTORY and debian/changelog.

11 years agoUpdate Debian Vcs-* fields to point to git repository
Jonathan McDowell [Tue, 1 Oct 2013 10:42:22 +0000 (11:42 +0100)]
Update Debian Vcs-* fields to point to git repository

11 years agoUpdate Debian packaging standards version to 3.9.4
Jonathan McDowell [Tue, 1 Oct 2013 10:32:18 +0000 (11:32 +0100)]
Update Debian packaging standards version to 3.9.4

No changes other than bumping the date in the copyright file to be current.

11 years agoUse LDFLAGS when building backend shared objects
Jonathan McDowell [Tue, 1 Oct 2013 10:29:12 +0000 (11:29 +0100)]
Use LDFLAGS when building backend shared objects

The LDFLAGS weren't being passed when linking the backend shared
objects; fix that so things like the hardening flags Debian adds
get uses correctly.

11 years agoAdd HKP database backend
Jonathan McDowell [Mon, 30 Sep 2013 16:31:03 +0000 (17:31 +0100)]
Add HKP database backend

A potential use case of onak is as a proxy server. Add an HKP backend
that uses libcurl to make requests to a remote keyserver to fetch, search
or store keys. The "db_dir" configuration parameter becomes the base
host name for the remote keyserver e.g.:

db_backend hkp
db_dir the.earth.li

In the future the addition of the ability to stack database backends
should allow this to be used to turn onak into a caching keyserver.