|
|
//+--------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// File:
//
// Contents:
//
// History:
//
//---------------------------------------------------------------------------
#ifndef __LKPLITE__H__
#define __LKPLITE__H__
//SPK Stuff
#define LKPLITE_SPK_SELECT 1
#define LKPLITE_SPK_BASIC 0
#define LKPLITE_SPK_UNKNOWN 2
#define LKPLITE_SPK_LEN 25
//SPK Masks
#define LKPLITE_SPK_SELECT_MASK 0x0000200000000000
#define LKPLITE_SPK_BASIC_MASK 0x0000000000000000
#define LKPLITE_SPK_PID_MASK 0x00001FFFFFFFFF00
#define LKPLITE_SPK_UNIQUEID_MASK 0xFFFFC00000000000
#define LKPLITE_SPK_INVALID 1
#define LKPLITE_SPK_VALID 2
#define LKPLITE_SPK_INVALID_SIGN 3
#define LKPLITE_INVALID_CONFNUM 4
//LKP Stuff
#define LKPLITE_PROGRAM_SELECT 0x0
#define LKPLITE_PROGRAM_MOLP 0x1
#define LKPLITE_PROGRAM_RETAIL 0x2
#define LKPLITE_LKP_LEN 25
#define LKPLITE_LKP_INVALID 1
#define LKPLITE_LKP_VALID 2
#define LKPLITE_LKP_INVALID_SIGN 3
//LKP Masks
#define LKPLITE_LKP_PRODUCT_MASK 0xFFC0000000000000
#define LKPLITE_LKP_QUANTITY_MASK 0x003FFF0000000000
#define LKPLITE_LKP_SERAIL_NO_MASK 0x000000FFF0000000
#define LKPLITE_LKP_PROGRAM_MASK 0x000000000C000000
#define LKPLITE_LKP_EXP_DATE_MASK 0x0000000003FC0000
#define LKPLITE_LKP_VERSION_MASK 0x000000000003F800
#define LKPLITE_LKP_UPG_FULL_MASK 0x0000000000000700
//function declarations for SPK portion of the LKPLite
DWORD LKPLiteGenSPK ( LPTSTR pszPID, //PID for the product. Should include the installation number
DWORD dwUniqueId, //unique Id to be put in the SPK
short nSPKType, //Can be 1 for select or 0 for BASIC
LPTSTR * ppszSPK );
DWORD LKPLiteVerifySPK ( LPTSTR pszPID, //PID to validate against
LPTSTR pszSPK, DWORD * pdwVerifyResult );
DWORD LKPLiteCrackSPK ( LPTSTR pszPID, LPTSTR pszSPK, //Pointer to SPK
LPTSTR pszPIDPart, //PID Part of SPK
DWORD * pdwUniqueId, //uniqueId part of SPK
short * pnSPKType //Type of SPK - Select/Basic
); //function declarations for LKP portion of the LKPLite
DWORD LKPLiteGenLKP ( LPTSTR lpszPID, //used for encrypting the LKPLite structure
LPTSTR lpszProductCode, //Product Code
DWORD dwQuantity, //quantity
DWORD dwSerialNum, //serail number of SPK
DWORD dwExpirationMos, //expiration in number of months from today
DWORD dwVersion, //version number can be upto 99
DWORD dwUpgrade, //upgrade or full license
DWORD dwProgramType, //SELECT,MOLP or RETAIL
LPTSTR * ppszLKPLite );
DWORD LKPLiteVerifyLKP ( LPTSTR lpszPID, //PID for verifying the LKP lite blob
LPTSTR pszLKPLite, //B24 encoded LKP
DWORD * pdwVerifyResult );
DWORD LKPLiteCrackLKP ( LPTSTR lpszPID, LPTSTR pszLKPLite, LPTSTR lpszProductCode, DWORD * pdwQuantity, DWORD * pdwSerialNum, DWORD * pdwExpitaitonMos, DWORD * pdwVersion, DWORD * pdwUpgrade, DWORD * pdwProgramType );
DWORD LKPLiteEncryptUsingPID(LPTSTR lpszPID, BYTE * pbBufferToEncrypt, DWORD dwLength); DWORD LKPLiteDecryptUsingPID(LPTSTR lpszPID, BYTE * pbBufferToEncrypt, DWORD dwLength); DWORD LKPLiteGenConfNumber(LPTSTR lpszLSID, LPTSTR lpszPID, LPTSTR *lpszConfirmation); DWORD LKPLiteValConfNumber(LPTSTR lpszLSID, LPTSTR lpszPID, LPTSTR lpszConfirmation);
#endif //__LKPLITE__H__
|