Skip to main content
Skip table of contents

D_SECURITY (core module plugins)

This page applies to Harlequin v13.1r0 and later; and to Harlequin MultiRIP but not Harlequin Core

D_SECURITY Selector

Parameter: devSecurityParam * securityparam

This call is made to determine whether the plugin works with the version of the RIP making the call, and the security device in use, whether it is a dongle or license from the license server. D_SELECTOR can also determine if the plugin is running on a Watermark RIP, see Core module plugins and Watermark RIPs for details.

The plugin tests values in the structure supplied to decide whether it will permit calling the RIP to use it. It reports its decision to the RIP in the s_result field.

TEXT
      typedef struct devSecurityParam { int32 s_key;
      int32 s_customerid; int32 s_uniqueid; int32 s_level; int32 s_demo;
      int32 s_result; int32 s_platform;
    } devSecurityParam;

The D_SECURITY call may be made at any time between the D_PLUGIN_INITIALISE and D_GEN_SHUTDOWN calls. If your plugin refuses to let the RIP use it, the RIP will attempt to unload it by calling D_GEN_SHUTDOWN . This happens even if plugin's “don't unload” flag is set.

Caution: Even if your plugin refuses to be used, the result of D_SECURITY could be patched so that the RIP thinks that the plugin granted its permission. To defeat this, code your plugin so that if it declines permission to be used, or if this selector isn't called, it can no longer work properly.

D_SECURITY will always be called before anything significant after D_PLUGIN_INITIALISE .

s_key

A value provided by the RIP. See s_result.

s_customerid

An identifier for a particular OEM. The version of the RIP calling the plugin will have this ID encoded in it. The ID declares whom the version in question was produced for.

The plugin can decide which IDs it will permit itself to be used with. If no restrictions on users are required, the plugin need not test the s_customerid field.

The plugin may, alternatively, be restricted to the developer's ID and two Harlequin IDs (0x00 and

0x0B ).

If you choose this option, note that the two Harlequin IDs must be supported. One (0x00 ) will facilitate Harlequin testing and support, while the other (0x0B ) is for Global Graphics' generic version of the RIP. By supporting this, you will be able to use your plugin in tests of new RIP features. (These are generally seen in a generic version of the RIP before they are supplied in special OEM versions.)

s_uniqueid

The unique security identifier obtained from the dongle. This can be used to tie a plugin to use with a particular dongle.

s_level

This field is obsolete.

s_demo

This field will be TRUE (that is, non‐zero) if the software and dongle combination is for demonstration only. It need only be tested if you wish to restrict the plugin to use with non‐demonstration versions.

s_result

This field is set by the plugin to inform the RIP of its decision. If it is going to allow the calling version of the RIP to use it, it should set this field to the following:

s_key ^ s_customerid ^ s_uniqueid

That is, s_result should be the exclusive‐OR of s_key , s_customerid and s_uniqueid .

Any other value tells the RIP that the plugin may not be used. Avoid setting s_result to the number above by accident!

s_platform

This field contains a number signifying the platform and operating system upon which it is being run. Clearly, a plugin compiled for a Power PC Mac simply would not get this far if started up on an Intel‐ based machine, but this information is useful to a plugin dealing with the difference between versions of Windows.

3 m.s.b

OS

5 l.s.b.

Platform

5

Intel x64

5

Windows

7

Intel x 86

8 . . . 20

Already allocated to older platforms - no longer used.

Figure 16.14 Platform and OS codes for s_platform .

Core module plugins and Watermark RIPs

D_SECURITY is able to recognize if the plugin is running on a Watermark RIP. Watermark RIPs do not use dongles, so the following plugin library call allows the security check to return a valid dongle:

TEXT
    if (PluginHostIsWaterMarkedRip(pSecurity))
    {
      s_result = s_key ^ s_customerid ^ s_uniqueid ; return NOERR;
    }
    /* else usual OEM based checking */

The function returns TRUE or FALSE . If TRUE the security information is updated in the usual way to permit the plugin to operate, the plugin can simply return NOERR . If FALSE the security information is invalidated, and the plugin should perform its usual OEM based security checking.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.