alex 2d41198b3e Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Progetti e altra roba per Linux


git-svn-id: svn://10.65.10.50/trunk@11293 c028cbd2-c16b-5b4b-a496-9718f37d4682
2003-06-26 17:31:45 +00:00

141 lines
5.0 KiB
C
Executable File

/****************************************************************************/
/** **/
/** Hardlock RUS Demo Program **/
/** **/
/** This demo program is based on the Hardlock application interface, **/
/** called API, to access a Hardlock via a local or a remote port. **/
/** To access the Hardlock remote, HL-Server must be installed first. **/
/** **/
/** Aladdin Knowledge Systems, Germany **/
/** **/
/** Note **/
/** ---- **/
/** The following demo program is not meant to represent a real good **/
/** implementation of software protection into your application. It **/
/** demonstrates the basic use of the Hardlock API functions and is **/
/** thus as short and simple as possible. Please read the manual **/
/** carefully to get an insight in the strategy of the implementation. **/
/** Please keep in mind that there is no general solution for a good **/
/** protection. We provide you with the necessary functions, the **/
/** implementation itself is up to you and your imagination. **/
/** **/
/** Revision history **/
/** ----------------
*** $Log: not supported by cvs2svn $
*** Revision 1.3 2000/02/03 16:41:55 chris
*** adapted to new error message routine (HL_ERRMSG)
***
***
*** Revision 1.2 1999/10/13 16:31:19 chris
*** removed warnings
***
*** Revision 1.1 1999/10/13 16:14:22 chris
*** Initial revision
**/
/****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include "hlapi_c.h"
#include "demo.h"
/* ------------------------------------------------------------------------ */
/* Module address of Hardlock test device and RefKey/VerKey. We generated */
/* the VerifyKey with Latteccino. The API use the keys to identify the */
/* Hardlock with the correct encoding. */
/* The keys defined here are only valid for the demo module. */
/* You have to change module address AND VerKey for your specific Hardlock! */
/* ------------------------------------------------------------------------ */
#define MODAD 29809
Byte RefKey[8] = {'H','A','R','D','L','O','C','K'};
Byte VerKey[8] = {0x18,0x4C,0x97,0xF0,0xC0,0x7A,0x08,0x88};
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
int main(int argc, char **argv)
{
Word res; /* Return value from subroutines */
Long BufLen;
Byte *LicBuffer;
FILE *licf;
int num;
printf("\n+----------------------------+");
printf("\n| Hardlock RUS Get Data Test |");
printf("\n+----------------------------+\n");
if (argc != 2)
{
printf(" Usage: %s <rus info block file>\n",*argv);
return(1);
}
licf = fopen(*(argv+1),"wb");
if (!licf)
{
printf(" Cannot create license file: %s\n",*(argv+1));
return(1);
}
/* ------------------------------------- */
/* First we need to initialize the API : */
/* ------------------------------------- */
res = HLM_LOGIN(MODAD, DONT_CARE, RefKey, VerKey, svk, 0, 0);
if(res != STATUS_OK)
{
printf(" Login: %s\n", HL_ERRMSG(res, 0, NULL, NULL));
return (res);
}
printf("\n RUS Hardlock with Module address: %d\n", MODAD);
res = HL_ACCINF();
switch (res)
{
case LOCAL_DEVICE:
printf(" The Hardlock access is\t\t : Local\n");
break;
case NET_DEVICE:
printf(" The Hardlock access is\t\t : Remote\n");
break;
default:
printf(" The Hardlock access is\t\t : No access\n");
break;
}
printf("\n");
printf(" Getting RUS Data\n");
printf(" ================\n");
BufLen = 0;
res = HLM_GETRUSINFO (&BufLen, NULL, 1);
if (res != STATUS_OK && res != BUFFER_TOO_SMALL)
printf(" GetRUSInfo returns: %s\n", HL_ERRMSG(res, 0, NULL, NULL));
else
{
printf(" Needed Length : %ld\n", BufLen);
LicBuffer = (Byte *) malloc(BufLen);
if (LicBuffer)
{
res = HLM_GETRUSINFO (&BufLen, LicBuffer, 1);
printf(" RusInfo returns : %d\n", res);
num = fwrite(LicBuffer, 1, BufLen, licf);
printf(" License length : %d bytes\n", num);
printf(" File written : %s\n", *(argv+1));
fclose(licf);
if (!num)
return(1);
}
}
/* ---------------------------------------------- */
/* At last we have to release the API structure. */
/* ---------------------------------------------- */
return (HL_LOGOUT());
}