Skip to content

Releases: bmwcarit/MoCOCrW

Release 5.0.0

03 May 08:21
Compare
Choose a tag to compare

Release 5.0.0

Changed

  • MoCOCrW transitions to using OpenSSL 3.0

Fixed

  • Fixes several compilation and deprecation issues arising from the use of OpenSSL 3.0.
  • Resolved a deprecation issue in our tests concerning the use of
    GTEST's ... TEST_CASE API.
  • Refactored dockerfiles, leveraged by CI, so that docker multi-staged build
    is used to simplify the build process.

Added

  • Support for the setting of key attributes upon key generation inside HSM via an abstracted
    Builder API. Currently, Extraction property is supported.
  • API for creating and parsing PKCS#12 containers. Generation of legacy PKCS#12 containers
    is also supported.
  • Support for adding custom certificate extensions.

Release 4.5.1

12 Sep 08:34
Compare
Choose a tag to compare

Fixed

Fixed AES-GCM encryption bug that was caused by mistakenly resetting IV length to default value
of 12. This led to successful but wrong encryption result.

Release 4.5.0

28 Jun 08:28
fa03239
Compare
Choose a tag to compare

Added

  • Add support in the DistinguishedName abstraction for initials in the x509 subject

Release 4.4.0

20 Apr 09:17
Compare
Choose a tag to compare

Changed

  • Throw a descriptive exception when trying to load a non-existant key from
    HSM
  • A huge chunk of code was moved from hsm-example.cpp to
    tests/integration/hsm-integration-test.cpp where keys loaded/generated on HSM
    are used for various cryptopgraphic algorithms
  • Creating multiple keys with the same ID on the HSM is now not possible.
  • libp11 patch was modified to support a custom PKCS#11 implementation which
    does not implement all the PKCS#11 features as defined by the standard

Fixed

  • Creating multiple HsmEngine in a row has overwritten a set PIN from the
    previous one due to shared state in libp11. This caused problems when logging
    in to the token. This has been fixed.
  • PKCS#11 URIs are used to identify which key to fetch from the HSM.
    Construction of this URI didn't take into account PKCS#11 URI special
    characters that need to get escaped in order to avoid accidental or malicious
    construction of invalid PKCS#11 URI. The special characters have been escaped.

Added

  • utility::stringCleanse function was added for safely clearing a std::string
    object

4.3.0

10 Feb 12:36
2e6ce30
Compare
Choose a tag to compare

Release 4.3.0

Changed

  • Renamed CMake and MACRO definitions for optional features to be prefixed
    by MOCOCRW_ in order to be more specific in terms of naming.
    As a result, HSM_ENABLED is now MOCOCRW_HSM_ENABLED, etc.
  • Introduces config.h that is generated by CMake. This config contains the
    MACRO definitions according to the features enabled. Users are no longer
    needed to specify MACRO definitions via target_compile_definitions()
    themselves.

4.2.0

19 Jan 16:45
8174d0c
Compare
Choose a tag to compare

Release 4.2.0

Fixed

  • CA Tests' SetUp was changed so that all the objects involved do not depend on time when
    construction of object is made. This led to problems where object of CA class had notBefore
    attribute set to greater value than CA's certificate's notBefore which should never happen.
    This subtle bug in test SetUp has greater chance of appearing when running in slower
    environments, e.g., qemu.

Added

  • Exceptions with better error messages were added in sanity check section of
    CertificateAuthority::_signCSR function. This provides better understanding of
    scenarios which we dont allow:
    • Issued certificate has greater notAfter attribute than CA's certificate (issued
      certificate's validity period should not exceed issuing certificate's validity
      period)
    • Case with the CA's notBefore being larger than the issued certificate's notBefore. This
      results in issued certificate that are valid before issuing certificate which
      should never happen.
      This is not a behavior change in the library in the sense that a certificate that was issued
      before won't be issued anymore. Certificates with these properties were already rejected
      by CertificateAuthority::signCSR but with a rather misleading and generic error message.
      This change just improves the error reporting.
  • Clang-Format has been applied to the existing code-base of MoCOCrW and a .clang-format
    file has been included to format the code of of future PRs.
  • A foundational PKCS#11 HSM interface, based on OpenSSL's ENGINE API, has been introduced
    to MoCOCrW. This functionality is disabled by default. See README to get more
    information on how to enable it.
    Currently, the following functionality is supported:
    • Loading Public Keys
    • Loading Private Keys
    • Generating EC and RSA keypairs
  • Post Quantum Cryptography support has been added.
    Dilithium
    is used to offer signing and verification functionality. Please note that the API is
    provisional as there is currently no OpenSSL support for Dilithium. This library intends to
    switch to an OpenSSL implementation once available. As a consequence of this, the interfaces
    around Dilithium are subject to future changes. We support dilithium for experimentation and
    getting early hands-on experience but we discourage using it as it's not yet standardized.
    This functionality is disabled by default. See README to get more
    information on how to enable it.

4.1.1

26 Jul 13:02
4.1.1
Compare
Choose a tag to compare

Release 4.1.1

Fixed

  • CertificateAuthority now copies the subject of the CA directly into the
    issuer field of the issued certificate. This resolves problems around
    different orders of items in the underlying distinguished name. This fixes
    issue #95. The DistinguishedName object is still not order-aware when loading
    a DN from OpenSSL. This is to be fixed in a later step.
  • X509Certificate::signCSR doesn't validate the certificate at the current
    system time anymore but at certificate's notBefore and notAfter dates.
    This fixes issue #96 by allowing to sign past and future certificates but
    also ensures that the certificate's validity period does not exceed the
    validity bounds of the issuing certificate.

4.1.0

07 Jan 17:07
Compare
Choose a tag to compare

Support for AES-CMAC has been added (see mac-example.cpp for sample usage), as well as some minor changes listed below.

Changed

  • Remove wrapper openssl::_EVP_PKEY_CTX_get_rsa_oaep_label. This is technically an ABI break, but since the wrappers are not considered part of the public API, we do not bump the SOVERSION for this.
  • Improve error message in MoCOCrWException that is thrown in case of invalid signature validation.

Added

  • Support for AES-CMAC with key lengths of 128 and 256 bit.

4.0.0

17 Aug 16:45
4.0.0
Compare
Choose a tag to compare

Multiple (self-contained) example programs have been added to illustrate the features of this
libary. Otherwise, just smaller clean up tasks.

As part of the clean up, the DigestTypes enum has been moved from the openssl namespace into
the mococrw namespace. A using statement was added to make this backwards-compatible API-wise.
It is, however, an ABI change. Thus, this is a new major version release.

Details

Changed

  • Replace explicit_bzero(3) with OPENSSL_cleanse(3) to fix compilation on non-glibc systems. (see #75)
  • Replaced manual calculation of hash digest length by library function in ECIES
  • Improved error message when attempting to create an AES-GCM cipher with empty IV. (see #83)
  • Move DigestTypes from openssl namespace to mococrw namespace. This is an ABI change!
  • Add error detection to utility::fromHex (This changes the behaviour of fromHex as it will throw
    errors on invalid string from now on.)

Fixed

  • Exception message in AESCipher (thrown if key has unexpected length)
  • Install target of documentation
  • Fix toggling stream cipher test when encrypting short messages

Added

  • Examples for KDF, MAC, ECIES and EdDSA, and updated existing examples and documentation
  • Expose mococrw/bio.h as public header to simplify interoperability with OpenSSL functions
  • Compilable examples for:
    • KDF
    • MAC
    • ECIES
    • RSA en-/decryption
    • ECC en-/decryption
    • RSA signatures, ECDSA, EdDSA
    • RSA, ECC, Ed25519 and Ed448 key creation
    • CSR creation
    • CA creation
    • CSR signing
    • hash calculation
    • Symmetric en-/decryption (incl. authenticated encryption)

3.0.0

17 Aug 13:06
Compare
Choose a tag to compare
  • Initial Release (starting at 3.0.0 to keep soversion in sync)
  • Library now uses semantic versioning
  • Updated documentation
  • Increased soversion to 3.0