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
		
			
				
	
	
		
			184 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			6.5 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:42:13  chris
 | 
						|
***  adapted to new error message routine (HL_ERRMSG)
 | 
						|
***
 | 
						|
***
 | 
						|
***  Revision 1.2  1999/10/13 16:28:54  chris
 | 
						|
***  fixed printf argument
 | 
						|
***  
 | 
						|
***  Revision 1.1  1999/10/13 16:14:30  chris
 | 
						|
***  Initial revision
 | 
						|
**/
 | 
						|
/****************************************************************************/
 | 
						|
#include <stdio.h>
 | 
						|
#include <string.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(void)
 | 
						|
{
 | 
						|
Word   res;              /* Return value from subroutines */
 | 
						|
Long   SlotCnt = 0;
 | 
						|
Long   MaxUser = 0;
 | 
						|
Long   CurrentUser = 0;
 | 
						|
Long   MaxCounter = 0;
 | 
						|
Long   CurrentCounter = 0;
 | 
						|
Long   ID = 0;
 | 
						|
Word   Year, Month, Day;
 | 
						|
 | 
						|
 | 
						|
printf("\n+-------------------------+");
 | 
						|
printf("\n| Hardlock RUS Query Test |");
 | 
						|
printf("\n+-------------------------+\n");
 | 
						|
 | 
						|
/* ------------------------------------- */
 | 
						|
/* 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;
 | 
						|
  }
 | 
						|
 | 
						|
/* Check for a RUS Hardlock and display the RUS ID: */
 | 
						|
/* ------------------------------------------------ */
 | 
						|
printf("\n");
 | 
						|
printf(" Checking global data\n");
 | 
						|
printf(" ====================\n");
 | 
						|
res = HLM_ISRUSHL(&ID);
 | 
						|
if (res == STATUS_OK)
 | 
						|
  printf(" RUS ID     : %lu (0x%lx)\n", ID, ID);
 | 
						|
 else
 | 
						|
  printf(" RUS ID     : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
 | 
						|
/* Now read the global expiration date: */
 | 
						|
/* ------------------------------------ */
 | 
						|
res = HLM_CHECKEXPDATE(0, &Year, &Month, &Day);
 | 
						|
if (res == STATUS_OK || res == RUS_DATE_EXPIRED)
 | 
						|
  {
 | 
						|
  printf(" ExpDate    : Day:%d Month:%d Year:%d", Day, Month, Year);
 | 
						|
  if (res == RUS_DATE_EXPIRED)
 | 
						|
    printf(" (Expired)\n");
 | 
						|
   else
 | 
						|
    printf("\n");
 | 
						|
  }
 | 
						|
 else
 | 
						|
  printf(" ExpDate    : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
 | 
						|
/* Check the counter but don't increment it: */
 | 
						|
/* ----------------------------------------- */
 | 
						|
res = HLM_CHECKCOUNTER(0, &MaxCounter, &CurrentCounter);
 | 
						|
if (res == STATUS_OK)
 | 
						|
  {
 | 
						|
  printf(" MaxCounter : %ld\n", MaxCounter);
 | 
						|
  printf(" CurCounter : %ld\n", CurrentCounter);
 | 
						|
  }
 | 
						|
 else
 | 
						|
  printf(" Counter    : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
 | 
						|
/* Retrieve the slot data and try a ocuppy and free: */
 | 
						|
/* ------------------------------------------------- */
 | 
						|
printf("\n Now Checking slot 1 to 4:\n");
 | 
						|
 | 
						|
for (SlotCnt = 1; SlotCnt < 5; SlotCnt++)
 | 
						|
  {
 | 
						|
  printf("\n");
 | 
						|
  printf(" Checking slot #%ld\n", SlotCnt);
 | 
						|
  printf(" =================\n");
 | 
						|
 | 
						|
  res = HLM_OCCUPYSLOT(SlotCnt);
 | 
						|
  if (res == STATUS_OK)
 | 
						|
    printf(" Occupy     : OK\n");
 | 
						|
   else
 | 
						|
    printf(" Occupy     : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
 | 
						|
  res = HLM_CHECKSLOT(SlotCnt, &MaxUser, &CurrentUser);
 | 
						|
  if (res == STATUS_OK)
 | 
						|
    {
 | 
						|
    printf(" MaxUser    : %ld\n", MaxUser);
 | 
						|
    printf(" CurUser    : %ld\n", CurrentUser);
 | 
						|
    }
 | 
						|
   else
 | 
						|
    printf(" User Count : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
 | 
						|
  res = HLM_CHECKEXPDATE(SlotCnt, &Year, &Month, &Day);
 | 
						|
  if (res == STATUS_OK || res == RUS_DATE_EXPIRED)
 | 
						|
    {
 | 
						|
    printf(" ExpDate    : Day:%d Month:%d Year:%d", Day, Month, Year);
 | 
						|
    if (res == RUS_DATE_EXPIRED)
 | 
						|
      printf(" (Expired)\n");
 | 
						|
     else
 | 
						|
      printf("\n");
 | 
						|
    }
 | 
						|
   else
 | 
						|
    printf(" ExpDate    : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
 | 
						|
  res = HLM_FREESLOT(SlotCnt);
 | 
						|
  if (res == STATUS_OK)
 | 
						|
    printf(" Free       : OK\n");
 | 
						|
   else
 | 
						|
    printf(" Free       : %s\n", HL_ERRMSG(res, 0, NULL, NULL));
 | 
						|
  }
 | 
						|
 | 
						|
/* ---------------------------------------------- */
 | 
						|
/* At last we have to release the API structure.  */
 | 
						|
/* ---------------------------------------------- */
 | 
						|
return (HL_LOGOUT());
 | 
						|
}
 | 
						|
 |