Skip to content

Releases: hockeypuck/hockeypuck

2.3

01 Dec 09:47
2.3
101c61c

Choose a tag to compare

Hockeypuck 2.3 is recommended for all users. There are no breaking changes between the 2.2 and 2.3 branches, and SKS sync is supported between 2.2 and 2.3 peers.

The 2.3 release adds support for online reindexing of the database schema, and offline dump-less reloading of the dataset. Reindexing is enabled by default, and will ensure that the schema is always updated to the latest version. Offline dump-less reload is implemented by a separate utility, hockeypuck-reload - see https://hockeypuck.io/upgrading.html#TOC_1.2. for instructions.

Due to changes in the database schema, it is strongly recommended to upgrade to 2.3 as soon as possible. Hockeypuck 2.4 will be released in early 2026, and will require the new schema to support RFC9580 and HKPv2.

2.3 also adds support for PKS-over-email and PKS-over-HTTP unidirectional sync. This is not enabled by default - see https://hockeypuck.io/configuration.html#TOC_1.3.3. for configuration details.

Hockeypuck 2.3 development is kindly supported by NGI Zero Core

🚀 Features & Enhancements

🐛 Bug Fixes

🔧 Maintenance

New contributors

Full changelog: 2.2.4...2.3

2.2.4

29 Jun 22:47
2.2.4
07c225b

Choose a tag to compare

This is a final bugfix rollup release for branch-2.2.

  • Bump google.golang.org/protobuf from 1.31.0 to 1.33.0 in /src/hockeypuck @dependabot (#380)
  • Bump github.com/justinas/nosurf from 0.0.0-20190416172904-05988550ea18 to 1.1.1 in /src/hockeypuck @dependabot (#379)
  • Bump golang.org/x/crypto from 0.17.0 to 0.31.0 in /src/hockeypuck @dependabot (#377)
  • Build multi-archi docker image @VanRoy (#375)
  • Add some configurable variables to stats page @AstroProfundis (#373)

🐛 Bug Fixes

New Contributors

Full changelog: 2.2.3...2.2.4

2.2.3

05 Feb 11:32
2.2.3
871d516

Choose a tag to compare

This is a bugfix release to fix several minor issues and tidy up the docker-compose deployment scripts.
Note however that there is one cosmetic breaking change IFF custom templates are being used.

BREAKING CHANGE

If you have a custom index template, you should remove any use of the BitLength field from key or subkey listings.
The resolution to #352 includes the bit length in the Algorithm.Name field for algorithms where bit length is meaningful.
Any existing templates will therefore display an extra bit length field.
(See commit 92fa0c9 for the corresponding change in the standard index template)

🚀 Features & Enhancements

🐛 Bug Fixes

🔧 Maintenance

New Contributors

Full Changelog: 2.2.2...2.2.3

2.2.2

06 Oct 22:46
2.2.2
c4c3bc6

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 2.2.1...2.2.2

2.2.1

17 Jun 22:36
57f6fe8

Choose a tag to compare

This is a bugfix release to address two issues in the machine-readable index format.

Bugfixes

Housekeeping

2.2

21 May 18:26
2.2
f4d5707

Choose a tag to compare

2.2

Features

  • Fully stable SKS recon using aggressive normalisation (#198)
  • Improved multithreading safety (#170)
  • Deletion of personal data from hard-revoked keys (#250)
  • Admin deletion of keys via signed submissions
  • Detached revocation certificate support (#281)

Bugfixes

  • Missing direct key signature validation (#199)
  • Missing subkeys with v3 sbinds (#205)
  • Missing CORS headers (#226)
  • HTTPS binding errors (#295)
  • Several cosmetic improvements (#257 #289 #291 ...)

Deprecations

  • SKS-keyserver recon compatibility
  • UAT image packets
  • User deletion and replacement of keys via /pks/delete and /pks/replace endpoints

2.1.2

21 Dec 10:12
db0a441

Choose a tag to compare

Bugs closed

#286 Block abusive scraping in haproxy

Other enhancements

#257 Display key version in index view
Bump snapcraft go version

2.1.1

23 Nov 12:26
d2753ae

Choose a tag to compare

Enhancements in 2.1.1

Sync improvements

  • AIMD adaptive request size
  • Retry limits
  • LRU seen-cache
  • Weighted peers
  • Ability to disable sync
  • Deduplication and length limits in responses

Front end Improvements

  • Rate-limiting HAProxy
  • JS and CSS optimisation
  • Fingerprint search without leading 0x
  • Support for http virtual hosts

Backend improvements

  • Bulk insertion to DB
  • Key search and deletion helper scripts
  • Log privacy options
  • Improved thread safety
  • Data normalisation

Deployment improvements

  • Automatic population of build version from git describe
  • Simplification of docker-compose/standalone deployment
  • Improved systemd script
  • Support for non-letsencrypt ACME services
  • Key deletion helper script
  • Support go templating in configuration file
  • Pin to go v1.18

Bugs closed

#95 - Dockerfile build failure
#100 - Missing signatures in UI
#129 - Bad handling of UIDs containing hyphens
#131 - Slow loading of keydumps
#140 - Incorrect display of expiry dates
#160 - Keyword search for bare email UIDs
#187 - Missing UIDs on keys created by openpgp-php
#192 - Missing UID/UAT revocations
#194 - Mac GPG Suite incompatibility
#196 - Inconsistent hashes in UI
#197 - Missing self-sigs on revoked UIDs
#200 - Missing stats history
#205 - Validation of v3 sbinds over v4 subkeys
#212 - Improved error messages
#226 - CORS headers
#260 - Missing content-disposition header

2.1.0

10 Dec 05:35
2.1.0

Choose a tag to compare

New features in 2.1.0

Full ECC support with ProtonMail's openpgp fork.

All ECC algorithms supported by GnuPG 2.x are now supported by Hockeypuck, courtesy of ProtonMail's improvements to the go.crypto/openpgp package.

Reduced memory footprint

Some conflux improvements to reduce memory footprint. Content blocking also makes a huge difference in memory consumption.

Content blocking options

Content length limits

Configurable limits on overall key and packet lengths. These are now the defaults:

[hockeypuck.openpgp]
maxKeyLength=1048576
maxPacketLength=8192

With these settings, it is possible to run Hockeypuck on an e2-small in Google Cloud (2GB ram, 2 vCPU). Most legitimate content falls below these limits, except a few vandalized keys. See "Authenticated Key Management" below for how to remove signature spam from your keys in 2.1.0 if you've been a target.

Blacklisting

A primary key fingerprint blacklist can be used to block specific keys. For example, these keys seem to have been created without any purpose but to waste keyserver resources:

[hockeypuck.openpgp]
blacklist=[
  "2790943722612cf8d9c2db9213de25eed1bb5151",
  "a490d0f4d311a4153e2bb7cadbb802b258acd84f",
  "5c738727ee58786a777c4f1db5aa3fa3486ed7ad",
  "33d51b5621953173ab74b521bdca9f8e3a6c1785",
]

This feature can also be a useful tool to deal with GDPR "right to be forgotten" type requests. The blacklist will prevent keys from getting re-submitted or re-synced back to the keyserver once they are deleted from the postgres database.

Authenticated Key Management

See HIP-1 for a detailed design spec and examples of usage. Basically, you can replace or delete the contents of your key on the keyserver with new endpoints, /pks/replace and /pks/delete. These endpoints require that you sign the uploaded key material in the request to prove you own the private key for it.

/pks/replace replaces the entire key contents on the keyserver with your copy, removing any missing signatures in the process. This allows someone with a vandalized key containing a large amount of spam to still push updates to their key. It is necessary if the key has been spammed to exceed the keyserver's maximum length limit.

/pks/delete allows deleting your own key contents from the keyserver.

Specialized keyserver queries

Some keyservers only need to support package signatures. For this use case, WoT and keyword search capabilities can be disabled completely, to only allow queries by fingerprint and self-signed content in results. This can further reduce operational overhead.

[hockeypuck.hkp.queries]
selfSignedOnly=true
keywordSearchDisabled=true

CPU and Memory profiling

Give hockeypuck a SIGUSR2 to cause it to dump profiles on top-k CPU calls and heap allocations. Files are written to:

/tmp/hockeypuck-cpu.prof
/tmp/hockeypuck-mem.prof

Bugs closed

#77, Log key sizes

#79, Blocking support

#67, GDPR & right to be forgotten

#62 and #64 fixed by using ProtonMail's openpgp implementation.

EOL

MongoDB support

I have no interest in maintaining the MongoDB backend, so it has been removed.

Travis CI

Replaced with Github Actions.

2.0.15

29 Sep 23:44
2.0.15
7b89cc7

Choose a tag to compare

Release 2.0.15