Archive for the ‘Releases’ Category

SoftHSM 2.4.0

Version 2.4.0 of SoftHSM has been released.


  • Issue #135: Support PKCS#8 for GOST.
  • Issue #140: Support for CKA_ALLOWED_MECHANISMS.
    (Patch from Brad Hess)
  • Issue #141: Support CKA_ALWAYS_AUTHENTICATE for private key objects.
  • Issue #220: Support for CKM_DES3_CMAC and CKM_AES_CMAC.
  • Issue #226: Configuration option for Windows build to enable build with static CRT (/MT).
  • Issue #325: Support for CKM_AES_GCM.
  • Issue #334: Document that initialized tokens will be reassigned to another slot (based on the token serial number).
  • Issue #335: Support for CKM_RSA_PKCS_PSS.
    (Patch from Nikos Mavrogiannopoulos)
  • Issue #341: Import AES keys with softhsm2-util.
    (Patch from Pavel Cherezov)
  • Issue #348: Document that OSX needs pkg-config to detect cppunit.
  • Issue #349: softhsm2-util will check the configuration and report any issues before loading the PKCS#11 library.


  • Issue #345: Private objects are presented to security officer in search results.
  • Issue #358: Race condition when multiple applications are creating and reading object files.


SoftHSM 2.3.0

Version 2.3.0 of SoftHSM has been released.


  • Issue #130: Upgraded to PKCS#11 v2.40.
    • Minor changes to some return values.
    • Added CKA_DESTROYABLE to all objects. Used by C_DestroyObject().
    • Added CKA_PUBLIC_KEY_INFO to certificates, private, and public key objects. Will be accepted from application, but SoftHSM will currently not calculate it.
  • Issue #142: Support for CKM_AES_CTR.
  • Issue #155: Add unit tests for SessionManager.
  • Issue #189: C_DigestKey returns CKR_KEY_INDIGESTIBLE when key attribute CKA_EXTRACTABLE = false. Whitelist SHA algorithms to allow C_DigestKey in this case.
  • Issue #225: Show slot id after initialization.
  • Issue #247: Run AppVeyor (Windows CI) for each PR and merge.
  • Issue #257: Set CKA_DECRYPT/CKA_ENCRYPT flags on key import to true. (Patch from Martin Domke)
  • Issue #261: Add support for libeaycompat lib for FIPS on Windows. (Patch from Matt Hauck)
  • Issue #262: Support importing ECDSA P-521 in softhsm-util.
  • Issue #276: Support for Botan 2.0.
  • Issue #279: Editorial changes from Mountain Lion to Sierra. (Patch from Mike Neumann)
  • Issue #283: More detailed error messages when initializing SoftHSM.
  • Issue #285: Support for LibreSSL. (Patch from Alon Bar-Lev)
  • Issue #286: Update .gitignore. (Patch from Alon Bar-Lev)
  • Issue #291: Change to enable builds and reports on new Jenkinks environment.
  • Issue #293: Detect cppunit in autoconf. (Patch from Alon Bar-Lev)
  • Issue #309: CKO_CERTIFICATE and CKO_PUBLIC_KEY now defaults to CKA_PRIVATE=false.
  • Issue #314: Update README with information about logging.
  • Issue #330: Adjust log levels for failing to enumerate object store. (Patch from Nikos Mavrogiannopoulos)


  • Issue #216: Better handling of CRYPTO_set_locking_callback() for OpenSSL.
  • Issue #265: Fix deriving shared secret with ECC.
  • Issue #280: HMAC with sizes less than L bytes is strongly discouraged. Set a lower bound equal to L bytes in ulMinKeySize and check it when initializing the operation.
  • Issue #281: Fix test of p11 shared library. (Patch from Lars Silvén)
  • Issue #289: Minor fix of ‘EVP_CipherFinal_ex’. (Patch from Viktor Tarasov)
  • Issue #297: Fix build with cppunit. (Patch from Ludovic Rousseau)
  • Issue #302: Export PKCS#11 symbols from the library. (Patch from Ludovic Rousseau)
  • Issue #305: Zero pad key to fit the block in CKM_AES_KEY_WRAP.
  • Issue #313: Detecting CppUnit when using Macports. (Patch from mouse07410)


OpenDNSSEC 2.1.0

Version 2.1.0 of OpenDNSSEC has been released on 2017-02-22.


OpenDNSSEC 2.1 development was focused on improving the daemon code for the Signer and Enforcer. As such it is much more a steady incremental improvement rather than revolutionary. With this style of development we hope that a migration from 1.4, for which an end-of-life is to be given, is facilitated.

Many of these changes are not directly visible but improve the handling and responsiveness or unify the Signer and Enforcer code bases. These improvements are not all mentioned in the issue list below because of their detail. Attention has been given to different roll-over methods and we now test fully with SoftHSMv2.


There are no migration steps needed from 2.0.x to 2.1.0. Version 1.4.10 can be migrated directly to 2.1.0 (see MIGRATION text file in tarball). Any version prior to 1.4.10 should upgrade to 1.4.10 first.


  • OPENDNSSEC-779: The Enforcer will now have an ‘enforce’ and ‘signconf’ task scheduled per zone. ‘Resalt’ tasks are scheduled per policy. This improves performance and parallelism since no longer all zones need to be evaluated for work to be done. Further parallelism improvements in the Enforcer are on our roadmap.
  • OPENDNSSEC-681: When daemonizing the Signer and Enforcer daemons fork to the background. Since they are then no longer able to print messages to the console startup problems are harder to debug. Now, after the fork() call the parent process will wait for the daemon to signal successful start and will print relevant error messages in case it doesn’t.
  • OPENDNSSEC-479: On sending notifies and initiating zone transfers the signer will now use the first interface mentioned in the listener section of conf.xml. This way the interface selection is not left to the OS, which could cause outgoing packets have an unexpected source address if multiple interfaces have a route to the destination address.
  • OPENDNSSEC-759: The Signer doesn’t need to access the HSM for every zone during startup anymore. This is done later by the worker threads. This way the signer starts quicker and is earlier available for user input.
  • OPENDNSSEC-450: Implement support for ECDSA P-256, P-384 and GOST. To be able to use this your HSM should have support as well. SoftHSMv2 can be compiled with support for these.
  • OPENDNSSEC-503: When adding a new zone to OpenDNSSEC the Enforcer is a little less conservative and will add signatures and keys to the zone in one go. Thereby mimicking OpenDNSSEC 1.4. Effectively new zones are earlier fully signed by the TTL of the DNSKEY set.
  • A bash autocompletion script is included in contrib for ods-enforcer and ods-signer. Commands, parameters, zone names and key identifiers can be autocompleted from the command line.

Further Improvements

  • OPENDNSSEC-530: The tag for the Enforcer in conf.xml has been unused and deprecated in 2.0. since 2.1 this tag is no longer allowed to be specified.
  • Show help for ods-enforcer-db-setup with -h or –help
  • OPENDNSSEC-836: If the listening port for Signer is not set in conf.xml file, the default value “15354” is used.
  • OPENDNSSEC-864: ods-signer didn’t print help. Also –version and –socket options where not processed.
  • OPENDNSSEC-858: OpenDNSSEC 2.0 did print “completed in x seconds” to stderr for enforcer commands. This line is removed.
  • SUPPORT-208: Running ‘ods-enforcer key export’ included a comment string with key properties. This is dropped to aid parsing.
  • OPENDNSSEC-552: By default ‘ods-enforcer key export –ds’ included the SHA1 version of the DS. SHA1 use is discouraged in favour of SHA256. To get the SHA1 DS use the –sha1 flag. This flag is immediately deprecated and will be removed from future versions of OpenDNSSEC.
  • OPENDNSSEC-465: ods-kaspcheck warns about algorithm mismatch between keys.
  • When a zone is deleted the Enforcer now properly removes all tasks associated with that zone from its task queue.
  • In the key section of the kasp.xml file, the algorithm length is no longer optional. For ECDSA and GHOST keys this value is ignored.
  • The Enforcer and the Signer now have a HSM key cache shared between their threads so no longer every thread needs to iterate over all keys, which can potentially be very slow for some HSMs.
  • OPENDNSSEC-721: Our integration testing environment now uses SoftHSMv2 instead of version one.
  • OPENDNSSEC-844: warning when lifetime of key is smaller than signature validity time.
  • OPENDNSSEC-311: Installation can now set the right permissions on used files for a configurable user/group when not running OpenDNSSEC as root.
  • OPENDNSSEC-593: More gracefully cope when zone configured for signer but signconf not yet available.
  • OPENDNSSEC-600: Log critical error if key is not inserted due to policy parameters misconfiguration.
  • OPENDNSSEC-694: Domain Names in the value/answer part of records (e.g. named referred to by PTR records) where mapped to lowercase.
  • OPENDNSSEC-803 : Extensive logging on aborting the application.

Bugs Fixed

  • OPENDNSSEC-778: Double NSEC3PARAM record after resalt.
  • SUPPORT-29: signer clear would assert when signconf wasn’t read yet.
  • OPENDNSSEC-869: ds-seen command did not give error on badly formatted keytag.
  • OPENDNSSEC-849: Crash on free of part of IXFR structure.
  • OPENDNSSEC-601: signer and enforcer working dir would not properly fallback to default when not specified.
  • OPENDNSSEC-689: Failure of daemon during startup is not logged.
  • OPENDNSSEC-850: Date of new transition could temporarily be incorrect.
  • OPENDNSSEC-851: Change in verbosity level not immediately propagated.
  • Various memory leaks, resolving compiler warnings, and static code analysis.
  • Libxml2 cleanup improvements (Thanks he32).


SoftHSM 2.2.0

Version 2.2.0 of SoftHSM has been released.


  • Issue #143: Delete a token using softhsm2-util.
  • Issue #185: Change access mode bits for /var/lib/softhsm/tokens/ to 1777. All users can now create tokens, but only access their own. (Patch from Rick van Rein)
  • Issue #186: Reinitializing a token will now keep the token, but all token objects are deleted, the user PIN is removed and the token label is updated.
  • Issue #190: Support for OpenSSL 1.1.0.
  • Issue #198: Calling C_GetSlotList with NULL_PTR will make sure that there is always a slot with an uninitialized token available.
  • Issue #199: The token serial number will be used when setting the slot number. The serial number is set after the token has been initialized. (Patch from Lars Silvén)
  • Issue #203: Update the command utils to use the token label or serial to find the token and its slot number.
  • Issue #209: Possibility to test other PKCS#11 implementations with the CppUnit test. (Patch from Lars Silvén)
  • Issue #223: Mark public key as non private by default. (Patch from Nikos Mavrogiannopoulos)
  • Issue #230: Install p11-kit module, to disable use –disable-p11-kit. (Patch from David Woodhouse)
  • Issue #237: Add windows continuous integration build. (Patch from Peter Polačko)


  • Issue #201: Missing new source file and test configuration in the Windows build project.
  • Issue #205: ECDSA P-521 support for OpenSSL and better test coverage.
  • Issue #207: Fix segmentation faults in loadLibrary function. (Patch from Jaroslav Imrich)
  • Issue #215: Update the Homebrew install notes for OSX.
  • Issue #218: Fix build warnings.
  • Issue #235: Add the libtool install command for OSX. (Patch from Mark Wylde)
  • Issue #236: Use GetEnvironmentVariable instead of getenv on Windows. (Patch from Jaroslav Imrich)
  • Issue #239: Crash on module unload with OpenSSL. (Patch from David Woodhouse)
  • Issue #241: Added EXTRALIBS to Windows utils project. (Patch from Peter Polačko)
  • Issue #250: C++11 not detected.
  • Issue #255: API changes in Botan 1.11.27.
  • Issue #260: Fix include guard to check WITH_FIPS. (Patch from Matt Hauck)
  • Issue #268: p11test fails on 32-bit systems.
  • Issue #270: Build warning about “converting a string constant”.
  • Issue #272: Fix C++11 check to look for unique_ptr. (Patch from Matt Hauck)


SoftHSM 1.3.8

Version 1.3.8 of SoftHSM has been released.


  • SOFTHSM-101: softhsm-keyconv creates files with sensitive material in insecure way. Also applies to softhsm-util when using –export or –optimize.
  • SOFTHSM-104: Inconsistencies between v1 and v2.
  • Issue #17: Use the MutexFactory wrapper functions correctly.


OpenDNSSEC 1.4.12

Version 1.4.12 of OpenDNSSEC has been released on 2016-10-17.


Hereby we announce the OpenDNSSEC 1.4.12 release. This is a bug fix release targeting a memory leak in the signer when being used in the “bump in the wire” model where the signer would send out notify messages and respond to IXFR requests for the signed zone. This typically would manifest itself with very frequent outgoing IXFRs over a longer period of time.
When upgrading from 1.4.10 (the 1.4.11 release was skipped) no migration steps are needed. For upgrading from earlier releases see the migration steps in the individual releases, most notably in This version of OpenDNSSEC does however require a slightly less older minimal version of the library ldns.


  • OPENDNSSEC-808: Crash on query with empty query section (thanks HÃ¥vard Eidnes).
  • SUPPORT-191: Regression, Must accept notify without SOA (thanks Christos Trochalakis).
  • OPENDNSSEC-845: memory leak occuring when responding to IXFR out when having had multiple updates.
  • OPENDNSSEC-805: Avoid full resign due to mismatch in backup file when upgrading from 1.4.8 or later.
  • OPENDNSSEC-828: parsing zone list could show data from next zone when zones iterated on single line.
  • OPENDNSSEC-811,OPENDNSSEC-827,e.o.: compiler warnings and other static code analysis cleanup
  • OPENDNSSEC-847: Broken DNS IN notifications when pkt answer section is empty.
  • OPENDNSSEC-838: Crash in signer after having removed a zone.
  • Update dependency to ldns to version 1.6.17 enabling the DNS HIP record.
  • Prevent responding to queries when not fully started yet.


OpenDNSSEC 2.0.3

Version 2.0.3 of OpenDNSSEC has been released on 2016-10-17.


Hereby we announce the OpenDNSSEC 2.0.3 release. Most of the changes are related to further smoothing the migration path from OpenDNSSEC 1.4 to 2.0. If you still need to migrate from 1.4.10 please migrate to 2.0.3 directly rather than via 2.0.1. Another important fix is a memory leak in the signer. It would cause a high memory usage for installations with very frequent outgoing IXFR’s.


  • OpenDNSSEC-839: update all no longer deletes zones or policies. Policy import now has a –remove-missing-policies option. (thanks David Peall)
  • OpenDNSSEC-840: Fix migration script to correctly interpret SOA serial strategy.
  • OPENDNSSEC-843: MaxZoneTTL defaults to 0 instead of 1 day.
  • Migration script can handle converting a database with zones in rollover better.
  • Fixed incorrect behaviour when more than 2 ZSKs involved in roll.
  • SUPPORT-201: Remove old keys from converted DB.
  • OPENDNSSEC-845: Memory leak on IXFR out.


OpenDNSSEC 2.0.1

Version 2.0.1 of OpenDNSSEC has been released on 2016-07-21.


This release is primarily focused on ironing out the issues on the migration path from 1.4 to 2.0. Besides that there are no functional changes.


  • Fixed crash and linking issue in ods-migrate.
  • Fixed case where 2.0.0 could not read backup files from 1.4.10.
  • Fixed bug in migration script where key state in the database wasn’t transformed properly.


OpenDNSSEC 2.0.0

It gives us pleasure to announce the release of OpenDNSSEC 2.0

OpenDNSSEC got a entire re-write of the enforcer. This part of OpenDNSSEC controls changing signing keys in the right way to perform a roll-over. Before, the enforcer would perform a roll-over according to a strict paradigm. One scenario in which deviations would not be possible.

The new enforcer is more aware of the zone changes being propagated in the Internet. It can therefore decide when it is safe to make changes, rather than to rely upon a given scenario. This makes it possible now for OpenDNSSEC to:

  • Allow changing your TTL values and all other related parameters in your key and signing policy (KASP). OpenDNSSEC will know which outdated records may still be on the Internet due to their TTL and only roll when it is safe.
  • It is possible to safely roll to an unsigned situation, without going bogus.
  • Perform a roll-over procedure at any time, even if a roll-over procedure is still in progress, this way you can abort a roll-over and perform emergency roll-overs.
  • Perform a roll-over to a different signing algorithm. DNSSEC requires the algorithm number of ZSK and KSK to be the same, so a roll-over to a different algorithm requires a different sequence.
  • Since there is no longer a single scenario, it will become possible to perform other roll-over methods, like a double DS roll-over or a double RRSIG roll-over.

These features keep your zone valid even in situations where changing parameters could trap you into a bogus situation. OpenDNSSEC chooses the fastest safe steps to keep (or even heal) your zone. Other features have also been realized in this rewrite:

  • Shared keys, allowing multiple zones to share the most recent signing key for that policy. Useful when having many zones, and a limited storage in your HSM.
  • Combined keys, allow KSK and ZSK to be the same key, also limiting the usage of keys, but also simplify key usage.
  • Also allow zones to pass unsigned. This allows for a chain of software packages where both signed and unsigned zones can follow the same steps in your chain, simplifying the set-up.
  • And the enforcer no longer requires to be run periodically, but runs as a proper daemon which wakes up at the proper time.
  • Allow for multiple HSMs, also allowing you to roll to roll your zone from keys in one HSM to another. Or to store KSK and ZSK separately.
  • This could even be used in set-ups where the key set is signed separately from your zone.
  • And the enforcer daemon can now be queried and given commands using command line channel.

Administratively, there has also been a major change. NLnet Labs has adopted the full development of OpenDNSSEC, where previously it was one of the partners in the project. This ensures a future-safe continued development of OpenDNSSEC. In this respect we will see more features enhancements in quicker release cycles soon.

Some heads-up when trying it out after being used to 1.4:

  • Scripted migration from 1.4 to 2.0 is available, see MIGRATION file
  • Use command ods-enforcer-db-setup rather than “ods-ksmutil setup”
  • Any other use of ods-ksmutil is replaced with the ods-enforcer command, which at the moment requires the enforcer daemon to be running
  • Use ods-enforcer zone add and delete rather than modifying the zonelist.xml file yourself. This file is not kept up-to-date automatically anymore
  • to start using OpenDNSSEC, use ods-enforcer policy import instead of update kasp to update your policies
  • Getting started at: Quick start guide.

Edit: Update from 2.0.0 to 2.0.0-1. Both releases are identical but 2.0.0 lacked some database generation scripts required for migration from 1.4.10.

Download it here:

OpenDNSSEC 1.4.10

Version 1.4.10 of OpenDNSSEC has been released on May 2nd, 2016.


This release fix targets stability issues which have had a history nad had been hard to reproduce.  Stability should be improved, running OpenDNSSEC as a long term service.

Changes in TTL in the input zone that seem not to be propagated, notifies to slaves under load that where not handled properly and could lead to assertions.  NSEC3PARAM that would appear duplicate in the resulting zone, and crashes in the signer daemon in seldom race conditions or re-opening due to a HSM reset.

No migration steps needed when upgrading from OpenDNSSEC 1.4.9.

Also have a look at our OpenDNSSEC 2.0 beta release, its impending release will help us forward with new development and signal phasing out historic releases.


  • SUPPORT-156 OPENDNSSEC-771: Multiple NSEC3PARAM records in signed zone.
    After a resalt the signer would fail to remove the old NSEC3PARAM RR until a manual resign or incoming transfer.
    Old NSEC3PARAMS are removed when inserting a new record, even if they look the same.
  • OPENDNSSEC-725: Signer did not properly handle new update while still distributing notifies to slaves.
    An AXFR disconnect looked not to be handled gracefully.
  • SUPPORT-171: Signer would sometimes hit an assertion using DNS output adapter when .ixfr was missing or corrupt but .backup file available.
  • Above two issues also in part addresses problems with seemingly corrected backup files (SOA serial). Also an crash on badly configured DNS output adapters is averted.
  • The signer daemon will now refuse to start when failed to open a listen socket for DNS handling.
  • OPENDNSSEC-478 OPENDNSSEC-750 OPENDNSSEC-581 OPENDNSSEC-582 SUPPORT-88: Segmentation fault in signer daemon when opening and closing hsm multiple times.
    Also addresses other concurrency access by avoiding a common context to the HSM (a.k.a. NULL context).
  • OPENDNSSEC-798: Improper use of key handles across hsm reopen, causing keys not to be available after a re-open.
  • SUPPORT-186: IXFR disregards TTL changes, when only TTL of an RR is changed.
    TTL changes should be treated like any other changes to records.
  • When OpenDNSSEC now overrides a TTL value, this is now reported in the log files.


You are currently browsing the archives for the Releases category.