Minos definitive licence check

Hello,
I am doing some testing on a CVB Dongle with a Minos licence (CVB11, 32b, Sentinel dongle). My customer reports no licence and it sounds as if he is right (the Magic Number is ok). However, I tested the dongle and it seems fine on my laptop. My testing regime was to attempt to save a Minos classifier:

  • with the dongle inserted I can save,
  • without it, I cannot.

That seems to be a foolproof method, but I know at runtime Minos checks at random* intervals, so I’d like to be sure - is it really a foolproof licence test?

*“random”

This and running the Minos tutorials without getting a license warning message of sorts should suffice for verifying if the license works.

Hi.

First of all, there is no definitive routine with which you could check the validity of the license by e.g. looking at the return value of a function call to determine whether or not a Minos license is present. This was a deliberate decision because having such a function would have made a brute force attack on Minos’ Magic Number algorithm too easy (in the earliest version the Minos Magic Numbers were just four digit numbers; now there are six digits - trying all possibilities would have been a trifle even if each check takes a second).

For interactively checking I recommend the following:

  1. Make sure the dongle and the Magic Number that is supposed to match the dongle are visible in the Management Console or License Manager.
  2. Load or generate a classifier
  3. Wait a few seconds (something like 10…)
  4. Save that classifier.
  5. Reload that classifier.

Step 1, 3 and 4 each trigger one individual synchronization of the license state with the service that provides the license state. The catch is that as long as the license state has not yet reported to the application a license query may be answered with “Ok” even though there is no license. So step 1 triggers the synchronization of the state (step 0 made sure that the service is aware of the dongle and Magic Number in the first place) and step 3 harvests the synchronization result. Step 4 is just to be sure… :wink:

You said that your customer is using CVB 11. Here the precise version would be interesting, because before CVB 11.02.005 the service did infrequently crash because a not thread safe random number generator has been used:

11.02.008, so it looks like I was lucky!

Thanks to @Frank and @illusive