Licence Bakery

How to download and run

Go to the Public Downloads and get this executable:

  • tinman3d_bakery.exe

The executable is self-contained and can be run without prior installation.

The bakery assembles the required metadata for ordering a Tinman 3D SDK licence.

For details on the various licence types, please refer to Licencing and Pricing.

Using the bakery is the recommended way to initiate an order process, because you do not have to worry about getting the licence metadata right.
screenshot
Figure 1. Licence Bakery

Licence Metadata

You can assemble licence metadata in different ways:

  1. Input the metadata information manually:

    Clearing a field with x will bind to empty metadata. Use * to disable a specific binding.
    When checking licence metadata, legit variations are considered automatically. For example, a licence key bound to the copyright "Copyright © 2010 Some Company" will still work for incremented year numbers, for example: "Copyright © 2024 Some Company".
  2. Read metadata from an application / a process running on the machine:
    Read from running process

  3. Read metadata from the current computer login:
    Read from computer login

    It is not guaranteed that the Machine Hardware Code that is filled in by this action will be identical to the code that will be computed by the target application. Please call LicenceDomain.Request on LicenceDomain.Tinman from within the target application to obtain a proper licence request.
  4. Read metadata from an executable file (DLL / EXE) or a licence request file:
    Read from file…​ (EXE, DLL, JSON)

Licence Request

After assembling licence metadata, you can generate licence request files.

The requests will be based on the metadata you have provided.

licence request
Figure 2. Licence Bakery - Licence Requests

Licence Key Setup

To generate a source code fragment that generates a licence key string value at runtime, input the licence key into the LicKey field and press and of the Source Code…​ buttons. The generated source code fragment will then be copied to the system clipboard.

Example source code fragment C#
// Tinman 3D licence key:
// CIk!6Dh6Ui;lSE+Z{{jx7$Y~8,#TSt~o%CK#(e,F#O9.d;fGc+bU35%HVl;[.+s#@h.bo1~{riL.4|UreHfeuac}5ZV~DBocxU}@
{
  sbyte[] licenceKeyData;

  licenceKeyData = new sbyte[146];
  licenceKeyData[0] = 120;
  licenceKeyData[1] = (sbyte) (licenceKeyData[0] ^ -94);
  licenceKeyData[2] = (sbyte) (licenceKeyData[1] + 43);
  ...
  licenceKeyData[143] = (sbyte) (licenceKeyData[142] ^ 76);
  licenceKeyData[144] = (sbyte) (licenceKeyData[143] ^ -9);
  licenceKeyData[145] = (sbyte) (licenceKeyData[144] + 96);

  licenceKey = global::Tinman.Core.StringUtil.BinaryDecode(licenceKeyData);
}
Example source code fragment C++
// Tinman 3D licence key:
// CIk!6Dh6Ui;lSE+Z{{jx7$Y~8,#TSt~o%CK#(e,F#O9.d;fGc+bU35%HVl;[.+s#@h.bo1~{riL.4|UreHfeuac}5ZV~DBocxU}@
{
  CodeX::Array<int8> licenceKeyData(146);

  licenceKeyData[0] = 120;
  licenceKeyData[1] = static_cast<CodeX::int8> (licenceKeyData[0] ^ -94);
  licenceKeyData[2] = static_cast<CodeX::int8> (licenceKeyData[1] + 43);
  ...
  licenceKeyData[143] = static_cast<CodeX::int8> (licenceKeyData[142] ^ 76);
  licenceKeyData[144] = static_cast<CodeX::int8> (licenceKeyData[143] ^ -9);
  licenceKeyData[145] = static_cast<CodeX::int8> (licenceKeyData[144] + 96);

  licenceKey = ::Tinman::Core::StringUtil::BinaryDecode(licenceKeyData);
}