]> the.earth.li Git - onak.git/log
onak.git
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.

11 years agoAdd initial wotsap file generation tool
Jonathan McDowell [Mon, 30 Sep 2013 14:18:31 +0000 (15:18 +0100)]
Add initial wotsap file generation tool

Wotsap (http://www.lysator.liu.se/~jc/wotsap/) is a web of trust
statistics and pathfinding tool. It takes a set of preformatted key
data covering the primary UID and signatures on each key.

This commit adds a tool which will generate the file data required for
wotsap. These files still need ar/bzip2 run against them in order to
be fed into wotsap, but are generated from the live keyring data.

11 years agoAdd support for checking RIPEMD160 signatures
Jonathan McDowell [Mon, 30 Sep 2013 11:50:01 +0000 (12:50 +0100)]
Add support for checking RIPEMD160 signatures

Sufficiently recent versions of nettle have support for RIPEMD160 and
there are various keys in the wild that use this algorithm, so add an
autoconf check for the nettle support and use it if it's available.

11 years agoAdd -c option to maxpath / sixdegrees to specify config file
Jonathan McDowell [Mon, 30 Sep 2013 11:22:59 +0000 (12:22 +0100)]
Add -c option to maxpath / sixdegrees to specify config file

maxpath + sixdegrees weren't allowing a config file to be specified
in the same fashion as onak. Add the -c option so they do so, which
helps when using these tools in a non-system install setup.

11 years agoFix PostgreSQL backend compilation
Jonathan McDowell [Sun, 29 Sep 2013 21:51:18 +0000 (22:51 +0100)]
Fix PostgreSQL backend compilation

This got missed with the changes to get_keyid.

11 years agoUse OPENPGP_PACKET_COMMENT in parse_keys instead of raw constant
Jonathan McDowell [Sun, 29 Sep 2013 21:35:44 +0000 (22:35 +0100)]
Use OPENPGP_PACKET_COMMENT in parse_keys instead of raw constant

11 years agoAdd ctags/cscope files to .gitignore + clean rule
Jonathan McDowell [Sun, 29 Sep 2013 21:19:26 +0000 (22:19 +0100)]
Add ctags/cscope files to .gitignore + clean rule

11 years agoPrevent read_openpgp_stream from returning empty packets
Jonathan McDowell [Sun, 29 Sep 2013 21:12:21 +0000 (22:12 +0100)]
Prevent read_openpgp_stream from returning empty packets

If read_openpgp_stream got an invalid packet that had a semi valid
header it could potentially return an empty package, which would
confuse splitkeys. Cleanup the final package returned if it turns
out we didn't have valid data for it.

Fixes Debian bug #716350

11 years agoOnly seed initial Debian package database if key file is available.
Jonathan McDowell [Sun, 29 Sep 2013 20:30:06 +0000 (21:30 +0100)]
Only seed initial Debian package database if key file is available.

If the Debian package detected no keyring database on installation it
would seed the database with my key, from
/usr/share/doc/onak/noodles.key.gz. This is against Debian policy 12.3 -
packages cannot require files from /usr/share/doc/ to function. Only
seed the database if the file exists, avoiding issues installing when
skipping /usr/share/doc/

Fixes Debian bug #710665.

12 years agoMove stats_key structure to stats.h
Jonathan McDowell [Sat, 25 Aug 2012 04:52:20 +0000 (21:52 -0700)]
Move stats_key structure to stats.h

It still ends up pulled into the core objects by mem.c / hash.c,
but we no longer pollute keystructs.h

12 years agoRemove dependency on onak-conf and logthing for splitkeys
Jonathan McDowell [Mon, 30 Jul 2012 01:36:11 +0000 (18:36 -0700)]
Remove dependency on onak-conf and logthing for splitkeys

No need for this to pull either the overall onak config or logthing in.

12 years agoAdd missing onak.h from last changeset
Jonathan McDowell [Wed, 25 Jul 2012 05:27:05 +0000 (22:27 -0700)]
Add missing onak.h from last changeset

12 years agoStart pulling non-library material out of core source files
Jonathan McDowell [Wed, 25 Jul 2012 04:44:51 +0000 (21:44 -0700)]
Start pulling non-library material out of core source files

As part of moving towards a libonak start pulling things that are related
to the onak keyserver out of the core PGP related source files. Start
with logthing, our logging framework, instead moving towards an onak_status_t
enum to allow up to bubble up errors to the caller.

12 years agoAdd some more OpenPGP related constants
Jonathan McDowell [Fri, 20 Jul 2012 03:18:24 +0000 (20:18 -0700)]
Add some more OpenPGP related constants

Extra packet types, the compression types and the symmetric algorithms.

12 years agoFix the size of the hash array when checking sig hashes
Jonathan McDowell [Sat, 14 Jul 2012 19:20:27 +0000 (13:20 -0600)]
Fix the size of the hash array when checking sig hashes

It was only 20 bytes - big enough for SHA1, but not when the larger
SHA2 hashes are available in nettle. This allows up to SHA512.

12 years agoMove .bzrignore to .gitignore
Jonathan McDowell [Sat, 14 Jul 2012 19:14:09 +0000 (13:14 -0600)]
Move .bzrignore to .gitignore

12 years agoAdd initial Doxygen support
Jonathan McDowell [Sat, 14 Jul 2012 18:44:35 +0000 (12:44 -0600)]
Add initial Doxygen support

Massage the existing function/structure comments into something that
Doxygen likes, and document a few additional bits and pieces that
Doxygen was complaining about.

12 years agoDon't reject sig hashes we don't have support for.
Jonathan McDowell [Fri, 13 Jul 2012 17:25:12 +0000 (11:25 -0600)]
Don't reject sig hashes we don't have support for.

  We should err on the side of caution when we can't verify a sighash
  because we don't have that algorithm compiled in, and allow it.

12 years agoAdd checking for signature hashes
Jonathan McDowell [Fri, 13 Jul 2012 00:11:11 +0000 (18:11 -0600)]
Add checking for signature hashes

  Signatures include the first 2 octets of the hash the signature is
  over. Checking this matches what we expect is an easy way to drop
  corrupt or incorrect signatures. It doesn't provide any cryptographic
  verification but is a useful sanity check when accepting keys.

12 years agoDump all the stripped keys at the end, rather than one at a time
Jonathan McDowell [Thu, 12 Jul 2012 18:24:01 +0000 (12:24 -0600)]
Dump all the stripped keys at the end, rather than one at a time

  We don't need to dump everything as we go, and will end up dumping
  more than we intend (as we'll dump all of the keys still to go).

12 years agoAdd libnettle autoconf checks for SHA224, SHA384 & SHA512.
Jonathan McDowell [Wed, 11 Jul 2012 00:13:57 +0000 (18:13 -0600)]
Add libnettle autoconf checks for SHA224, SHA384 & SHA512.

12 years agoSwitch to source format 3.0 (quilt) for Debian packaging.
Jonathan McDowell [Mon, 25 Jun 2012 21:18:03 +0000 (22:18 +0100)]
Switch to source format 3.0 (quilt) for Debian packaging.

12 years agoCleanup hashquery.o on make clean
Jonathan McDowell [Wed, 25 Apr 2012 04:59:45 +0000 (21:59 -0700)]
Cleanup hashquery.o on make clean

12 years agoBuild Debian version number to indicate bzr build
Jonathan McDowell [Wed, 25 Apr 2012 04:54:58 +0000 (21:54 -0700)]
Build Debian version number to indicate bzr build

12 years ago0.4.1 release onak-0.4.1
Jonathan McDowell [Wed, 25 Apr 2012 04:30:22 +0000 (21:30 -0700)]
0.4.1 release

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

12 years agoAvoid race condition when receiving incoming mails
Jonathan McDowell [Wed, 25 Apr 2012 04:15:38 +0000 (21:15 -0700)]
Avoid race condition when receiving incoming mails

  There's a race condition between us starting to accept a new incoming
  mail and taking the lock to start processing it; a second copy of
  onak-mail may come in and start to process the incomplete mail we're
  in the process of receiving. Receive to a tmp file and rename to .onak
  after we've received everything.

  Fixes Debian bug #650557. Thanks to Helmut Grohne <helmut@subdivi.de>

12 years agoFix deletion of skshash in DB4 backend
Jonathan McDowell [Wed, 11 Apr 2012 05:27:02 +0000 (06:27 +0100)]
Fix deletion of skshash in DB4 backend

  We need to delete the skshash while we still have the publickey
  structure, so we can calculate the hash to free.

12 years agoFix deletion error logging for DB4 backend
Jonathan McDowell [Wed, 11 Apr 2012 05:11:32 +0000 (22:11 -0700)]
Fix deletion error logging for DB4 backend

  The change to include the keyid failed to remove some commas on the
  format string, meaning the output was even less useful.

12 years agoInstall /pks/hashquery in Debian packaging
Jonathan McDowell [Mon, 2 Apr 2012 21:19:15 +0000 (14:19 -0700)]
Install /pks/hashquery in Debian packaging

12 years agoAdd keyid to DB4 backend deletion error messages
Jonathan McDowell [Mon, 2 Apr 2012 17:50:21 +0000 (10:50 -0700)]
Add keyid to DB4 backend deletion error messages

  We display an error when we fail to delete an entry from the worddb or
  similar, but weren't including the keyid so this wasn't very useful.

12 years agoAdd missing initialisation of DB4 cursor for skshash when deleting key
Jonathan McDowell [Mon, 2 Apr 2012 00:24:18 +0000 (17:24 -0700)]
Add missing initialisation of DB4 cursor for skshash when deleting key

  We were trying to use the id32db cursor which had already been closed.

12 years agoDrop HISTORY file in /usr/share/doc; it's already present as changelog.gz
Jonathan McDowell [Sun, 1 Apr 2012 22:21:10 +0000 (15:21 -0700)]
Drop HISTORY file in /usr/share/doc; it's already present as changelog.gz

  Debian packaging cleanup.

12 years agoAllow retrieval of key by full fingerprint
Jonathan McDowell [Sun, 1 Apr 2012 22:02:24 +0000 (15:02 -0700)]
Allow retrieval of key by full fingerprint

  GPG 1.4.12 switches to using the full fingerprint of a key when requesting
  a refresh (commit 6fe25e5602fabe92c68e5ba30e4777221e8612df). We were only
  supporting retrieval by 32 or 64 bit key ID. Detect when we're passed a
  fingerprint and truncate it to the last 64 bits so we can look it up.
  In the future we probably want to extend to being able to do lookups by
  full fingerprint.

12 years agoAlways put a leading 0x on keyids in HTML output links
Jonathan McDowell [Sun, 1 Apr 2012 21:27:11 +0000 (14:27 -0700)]
Always put a leading 0x on keyids in HTML output links

  We didn't always put a leading 0x when outputting URLs as part of
  an index, which confuses some clients that try to autoparse returned
  key IDs.

12 years agoFix display of SHA-1 fingerprints
Jonathan McDowell [Sun, 1 Apr 2012 21:09:12 +0000 (14:09 -0700)]
Fix display of SHA-1 fingerprints

  SHA-1 fingerprints have a double space in the middle and we were
  putting the extra space in the wrong place.

13 years agoAdd AC_PROG_CC_C99 to configure.ac
Jonathan McDowell [Sun, 27 Nov 2011 22:45:44 +0000 (14:45 -0800)]
Add AC_PROG_CC_C99 to configure.ac

  We aim to compile cleanly under C99, so get autoconf to give us the
  appropriate compiler flags to enable it by default.

13 years agoUse nettle for hashing when available rather than internal MD5/SHA1 routines
Jonathan McDowell [Tue, 18 Oct 2011 14:20:43 +0000 (07:20 -0700)]
Use nettle for hashing when available rather than internal MD5/SHA1 routines

  Change the internal MD5/SHA1 routines to match nettle's name and
  calling convention and add suitable autoconf bits to auto-select
  nettle if it's available, otherwise fall back to the internal
  routines as usual.

  Not so much of an issue for MD5/SHA1 (though we might end up with
  more optimised routines in some instances), but allows easier use
  of other hashing/crypto functions in the future.

13 years agoUse C99 uint32_t rather than u_int32_t
Jonathan McDowell [Tue, 18 Oct 2011 05:02:44 +0000 (22:02 -0700)]
Use C99 uint32_t rather than u_int32_t

13 years agoClean up "set but not used" GCC warnings
Jonathan McDowell [Tue, 18 Oct 2011 04:53:03 +0000 (21:53 -0700)]
Clean up "set but not used" GCC warnings

  GCC 4.6 now errors when a variable is set but not used; clean up
  instances of this to fix compilation.

13 years agoExport find_packet from merge.c
Jonathan McDowell [Sat, 7 May 2011 04:59:03 +0000 (21:59 -0700)]
Export find_packet from merge.c

  Add find_packet to merge.h so it can be used in other components.

13 years agoAdd some more subpacket types to the list to ignore
Jonathan McDowell [Mon, 2 May 2011 02:15:41 +0000 (19:15 -0700)]
Add some more subpacket types to the list to ignore

  There are various signature subpacket types we know about, but have
  no need to decode (or it doesn't make sense to decode if we're not
  checking that the signature is valid). Add some more to prevent
  warnings when adding keys that have these subpackets present.

13 years agoClean up file header copyrights
Jonathan McDowell [Sun, 1 May 2011 02:55:05 +0000 (19:55 -0700)]
Clean up file header copyrights

  Project Purple isn't a legal entity; credit primary author of files
  and include a minimal GPL 2 header in each file rather than relying
  on the copy of LICENCE shipped with everything else.

13 years agoDefine OpenPGP constants and use them rather than magic numbers
Jonathan McDowell [Sun, 1 May 2011 00:49:57 +0000 (17:49 -0700)]
Define OpenPGP constants and use them rather than magic numbers

  Take the set of OpenPGP constants from RFC4880 that we're using
  and produce some #defines, to try and make the code a bit clearer.

13 years agoRemove my name from the lookup/gpgwww trailers.
Jonathan McDowell [Sat, 30 Apr 2011 04:13:31 +0000 (21:13 -0700)]
Remove my name from the lookup/gpgwww trailers.

  No reason for my name to be there; the onak name + VERSION is more
  appropriate.

13 years agoAdd a test for key fetching by SKS hash
Jonathan McDowell [Mon, 25 Apr 2011 04:56:36 +0000 (21:56 -0700)]
Add a test for key fetching by SKS hash

  New test to check we can correctly retrieve a key by SKS hash using
  the onak CLI tool.

13 years agoAdd /pks/hashquery
Jonathan McDowell [Mon, 25 Apr 2011 04:49:32 +0000 (21:49 -0700)]
Add /pks/hashquery

  Add /pks/hashquery - an implementation of the SKS hash retrieval
  portion of the gossip protocol.

  hashquery takes a marshalled array of SKS hashes to retrieve and
  returns a marshalled array of the keys requested.

  (The marshalling functions essentially take the hash/key structures
   and flatten them to a byte stream with a preceding network order
   32 bit size value.)

13 years agoAdd a dependency on CORE_OBJS to the dynamic backends
Jonathan McDowell [Mon, 25 Apr 2011 04:03:30 +0000 (21:03 -0700)]
Add a dependency on CORE_OBJS to the dynamic backends

  If these change we need to relink or unexpected things happen.

13 years agoAdd support for displaying/retrieving by SKS hash to lookup and onak CLI
Jonathan McDowell [Mon, 25 Apr 2011 03:50:40 +0000 (20:50 -0700)]
Add support for displaying/retrieving by SKS hash to lookup and onak CLI

  Now we are storing the SKS hash details of a key add the ability to
  display the hash in /pks/lookup and retrieve it via the new hget
  function. This should be compatible with the way in which SKS extends
  lookup to support its hashes.

  Also add hget to the onak CLI tool and the -s option for showing the
  SKS hash of keys.

13 years agoAdd support for key retrieval by SKS hash
Jonathan McDowell [Mon, 25 Apr 2011 03:11:42 +0000 (20:11 -0700)]
Add support for key retrieval by SKS hash

  Add a new backend DB function fetch_key_skshash and implement it
  for the fs/db4/keyd & dynamic backends. This allows us to retrieve
  a key using the SKS hash, which will be necessary to implement the
  gossip protocol.

13 years agoAdd support for calculating SKS style key hashes
Jonathan McDowell [Mon, 25 Apr 2011 02:06:06 +0000 (19:06 -0700)]
Add support for calculating SKS style key hashes

  SKS uses an MD5 hash over the sorted packets from a key as a token
  for its gossip protocol. Add support for calculating this hash and a
  structure for passing it around within onak.

13 years agoMake compare_packet follow memcmp semantics and export to other modules
Jonathan McDowell [Mon, 25 Apr 2011 01:47:24 +0000 (18:47 -0700)]
Make compare_packet follow memcmp semantics and export to other modules

  compare_packet is potentially useful elsewhere, but rather than a
  true/false comparison provide -1/0/1 for less than/equal/greater
  than, as memcmp does.