Skip to content

Releases: christian-schlichtherle/truelicense

TrueLicense 4.0.3

09 Feb 21:29
Compare
Choose a tag to compare

This release fixes a critical bug - updating is highly recommended.

Version 4.0.0 and 4.0.1 are broken - do not use!

Some releases of TrueLicense, specifically version 4.0.0 and 4.0.1 with all their milestones and release candidates, are now considered broken and should not be used anymore. The reason is that they fail to install or verify license keys which have been generated by previous versions and vice versa, therefore making it impossible to change your dependency from any previous version to one of these broken versions or vice versa without effectively invalidating all existing license keys of your customers!

Also, the broken versions should not be used anymore to generate new license keys because they are larger than they really need to be. The root cause of these issues is that the compression filter and the encryption filter were accidentally swapped in the broken versions. This was not detected by the round-trip integration tests.

In TrueLicense 4.0.3, the root cause has been fixed and binary compatibility with license keys generated by all versions has been fully restored: Customers can continue to use their existing license keys, no matter which version of TrueLicense has been used to generate them! Also, the test suite has been amended to protect the code base against this regression in the future.

Note that the version number 4.0.2 has been skipped in order to restore consistent version numbering between TrueLicense and the TrueLicense Maven Archetype: The TrueLicense Maven Archetype 4.0.3 corresponds to TrueLicense 4.0.3.

TrueLicense 4.0.1

07 Dec 16:59
Compare
Choose a tag to compare

[This release is broken - do not use! Please upgrade to TrueLicense 4.0.3 or later.]

This is a maintenance release with dependency updates. There is only one insignificant bug fix, and its only effect is a minimal performance improvement when generating source code using the TrueLicense Maven Plugin.

TrueLicense 4.0.0

04 Aug 11:05
Compare
Choose a tag to compare

[This release is broken - do not use! Please upgrade to TrueLicense 4.0.3 or later.]

TrueLicense 4 is a major upgrade from TrueLicense 3 and provides new features and improvements:

  • Crypto standards for keystores, digital signature and password based encryption now include all features of Java 12 - but only Java 8 is required.
  • The new license key format V4 takes advantage of that and employs PKCS12 as its default keystore format and PBEWithHmacSHA256AndAES_128 as its default password based algorithm.
  • The older license key formats V1, V2/JSON and V2/XML are still supported, but now deprecated.
  • The new module TrueLicense Build Tasks provides basic building blocks for build tools:
    • Code generation
    • String value obfuscation
    • New: byte code obfuscation with ProGuard
  • The TrueLicense Maven Plugin bundle these tasks in a Maven plugin.
  • The API is now completely abstract, allowing for future extensions (maybe a V5 license key format?) without changing the API.
  • The dependency on JAXB is mostly gone: It's only required if you are using the V2/XML license key format.
  • All I/O is now done via Fun I/O, enabling many more options to plug-in different algorithms for compressing, encoding and storing license keys.
  • In accordance with semantic versioning and to allow peaceful co-existence of TrueLicense 3 and TrueLicense 4 on the same class path, the base package name has been changed from net.truelicense to global.namespace.truelicense.

Last but not least, the license has been changed from AGPL3 to ASL2, making TrueLicense 4 completely Free Open Source Software (FOSS).

The old documentation is now outdated and will be updated next.

TrueLicense 4.0.0 Milestone 1

03 Nov 08:35
Compare
Choose a tag to compare
Pre-release

[This release is broken - do not use! Please upgrade to TrueLicense 4.0.3 or later.]

This is the first milestone release for TrueLicense 4.0.0.
For this major version increment, the TrueLicense Maven Archetype has been launched as a separate component with its own source code repository and release cycle.

TrueLicense 2 pioneered powerful abstractions for synchronous I/O: Codec, Store, Transformation (now called Filter) et al.
Since their conception, I have introduced these abstractions into many projects.
Recently, I have created the Fun I/O library to provide an API for these abstractions and many ready-made implementations.
Consequently, TrueLicense 4 now depends on Fun I/O 2 in order to reuse its codecs for JSON and XML and many storage and filter implementations.

TrueLicense 4 also adopts another pattern used in Fun I/O: API implementations are published through facade classes.
In TrueLicense 4, this means that bootstrapping the API works by selecting a facade class for a particular license key format (V1, V2/XML or V2/JSON) and tell it to create a license management context builder.
For example, to obtain a LicenseManagementContext configured for the V2/JSON license key format, you would use the V2Json facade as follows:

import global.namespace.truelicense.api.*;
import global.namespace.truelicense.v2.json.V2Json;

...

LicenseManagementContextBuilder builder = V2Json.builder();

As you can see, the base package has been changed from net.truelicense to global.namespace.truelicense, which allows TrueLicense 3 and TrueLicense 4 to peacefully coexist on the class path in a client application.

TrueLicense 3.2.0

03 Nov 07:31
Compare
Choose a tag to compare

This release primarily upgrades dependencies like e.g. Jackson.

For new users of the TrueLicense Maven archetype, a validation regex has been added to the check the value of any enumeration property, e.g. for the password based encryption algorithm (pbeAlgorithm) and the digital signature algorithm (signatureAlgorithm) et al.

TrueLicense 3.1.0

20 Oct 06:39
Compare
Choose a tag to compare

You can now transform a checked license manager to an unchecked license manager by calling unchecked() on the (checked) ConsumerLicenseManager or VendorLicenseManager classes. Previously you had to call UncheckedLicenseManager.from(manager) to obtain an UncheckedConsumerLicenseManager or an UncheckedVendorLicenseManager.

An unchecked license manager generally throws an UncheckedLicenseManagementException (which is a RuntimeException) instead of a (checked) LicenseManagementException (which is a GeneralSecurityException which is an Exception) if an operation fails. The UncheckedLicenseManagementException will have a LicenseManagementException as its cause.

TrueLicense 3.0.0

20 Oct 06:48
Compare
Choose a tag to compare

TrueLicense 3.x is a complete overhaul of TrueLicense 2.x. TrueLicense 3.x takes advantage of functional programming features introduced in Java SE 8 and provides lots of API improvements. New features will be added to extend the API with minor version number releases.

Binary compatibility with existing license key for TrueLicense 2.x has been fully retained. Please read the online documentation on how to migrate your project from TrueLicense 2.x to TrueLicense 3.x.