Encrypted Files
We have 3rd party developers that want to write their tools for Ensign
Windows using our ESPL programming language. These developers want
to distribute an encrypted file so others cannot discover the logic of their
proprietary work.
Example:
procedure RunButton;
begin
writeln('This is a proprietary routine');
end;
Suppose the above script is proprietary, and needs to be distributed as an
encrypted file. On the Script Editor, click the menu Script | Save
As and enter the filename to use. To save the file in
an encrypted format, you must provide an extension of
.LIB by typing the filename with the .LIB
extension. All encrypted files will have an .LIB extension and
be saved in the C:\Ensign\Macro folder.
To use the encrypted file in a script, it must be referenced with the
{$Include filename} compiler directive, as illustrated in this example, assuming
we have an encrypted file named TEST.LIB.
{$I Test.lib}
begin
if who=0 then RunButton;
end;
This little script can use all the code in the TEST.LIB file, which in our
simple example contains the RunButton procedure. There is no harm
nor any value in the user seeing this portion which calls the encrypted TEST
library file. But what the user cannot see nor can they edit is the
TEST library file because it is encrypted. To see and edit the
contents of Test, one would need to have the original TEST.SPT file which
was encrypted to create the TEST.LIB file.
So, how does this differ from the previous use of the {$I ....}
directive. The difference is in the presence or absence of the .LIB
extension in the filename on the $I directive.
{$I Test} This will
include a filename TEST.SPT which is not encrypted. SPT
files are ASCII text files saved by the Script Editor. They can
be loaded, edited, and saved by the Script Editor.
{$I Test.lib} The extension indicates the TEST.LIB file
is encrypted and will be treated as such when it is processed by the
ESPL engine. If you try to view an encrypted file, you will see what
look like random garbage. Thus the developers proprietary work is
protected. It cannot be viewed nor edited by end-users.
Only the developer can make changes, by working with the SPT original and
resaving to a LIB file.
Developers can put their sensitive code in encrypted files by saving them
using filenames with the .LIB extension. A filename with the .SPT
extension will automatically be saved at the same time. Developers
will distribute the LIB file, and keep the SPT file for file maintenance
purposes.
The libraries are easy to work with because the editor has a tab on the
bottom for each script file found in your \Macro folder. So, you can be
editing in the main script, and click on a tab to quickly change to look at the
code in the library, and click the main script tab to return to where you were
editing. Also, the error messages will indicate the library code
where a syntax or run-time error occurred. So, you have everything
to gain by breaking your code into chunks and save them in separate script
files. And assemble them back into the main script using the Include
directive.
Access to all distributed encrypted files will be through the use of the
{$Include ...} compiler directive from a main script that is not
encrypted. This is the correct way to proceed because end-users
will want to add purchased libraries to scripts they are developing.
End-users can include the encrypted libraries in the non-encrypted scripts they
are editing and running.
Some typical uses of this encryption capability are:
- Hide proprietary formulas, studies, and technical analysis
- Prevent modification and tampering with original work
- Prevent removal of copyright notices, names and addresses
- Hide details of security authorization and prevent security mechanisms
from being removed.
|