//+-------------------------------------------------------------------------- // // Copyright (c) 1997-1999 Microsoft Corporation // // File : srvdef.h // // Contents: // // History: // //--------------------------------------------------------------------------- #ifndef __TLSERVER_DEF_H__ #define __TLSERVER_DEF_H__ #include "ntverp.h" //---------------------------------------------- // #define TLS_CURRENT_VERSION (MAKELONG(0, HIBYTE(VER_PRODUCTVERSION_W))) // // Bit 31 - 1 if enterprise server, 0 if domain/workgroup license server // Bit 30 - 1 if enforce license server, 0 if non-enforce. // Bit 29 - 1 if RTM version, 0 if beta // #if defined(ENFORCE_LICENSING) #define TLS_ENFORCE_VERSION 0x4000 #else #define TLS_ENFORCE_VERSION 0x0000 #endif #define TLS_RTM_VERSION 0x2000 //----------------------------------------------------------------- // // License Server Version // // 5.0 W2K license server version. // 5.1 Add LKP replication. // 5.2 Post W2K Beta 3 check in. // 5.3 Turn on enforce build, TLSAPI enumeration will skip 5.2 non-enforce // 5.4 Depends on platform challenge response from client, issue long or short cert cain // #define TLS_MINOR_VERSION 0x04 #define TLS_CURRENT_VERSION (MAKELONG(MAKEWORD(TLS_MINOR_VERSION, HIBYTE(VER_PRODUCTVERSION_W)), TLS_ENFORCE_VERSION)) #define TLS_CURRENT_VERSION_RTM (MAKELONG(MAKEWORD(TLS_MINOR_VERSION, HIBYTE(VER_PRODUCTVERSION_W)), TLS_ENFORCE_VERSION | TLS_RTM_VERSION)) #define GET_SERVER_MAJOR_VERSION(version) HIBYTE(LOWORD(version)) #define GET_SERVER_MINOR_VERSION(version) LOBYTE(LOWORD(version)) #define IS_ENTERPRISE_SERVER(version) ((version & TLS_VERSION_ENTERPRISE_BIT) > 0) #define IS_ENFORCE_SERVER(version) \ ((version & 0x40000000) > 0) //---------------------------------------------- // // Service Manager Error Code // //---------------------------------------------- //#define TLS_E_SERVICE_STARTUP_GENERAL 0x1 //#define TLS_E_SERVICE_STARTUP_CREATE_THREAD 0x2 //#define TLS_E_SERVICE_STARTUP_REPORT_SCM 0x3 //#define TLS_E_SERVICE_STARTUP_RPC_THREAD_ERROR 0x4 //#define TLS_E_SERVICE_STARTUP_INIT_THREAD_ERROR 0x5 //#define TLS_E_SERVICE_STARTUP_POST_INIT 0x6 //#define TLS_E_SERVICE_RPC_LISTEN 0x7 //#define TLS_E_SERVICE_LOAD_POLICY 0x8 //#define TLS_I_SERVICE_WARNING 0x9 #define SET_JB_ERROR(err) (TLS_E_JB_BASE | abs(err)) #define IS_JB_ERROR(err) ((err & (FACILITY_JETBLUE_BASE << 16))) // JetBlue error code are in negative #define GET_JB_ERROR_CODE(err) (-((LONG)(err & ~(FACILITY_JETBLUE_BASE << 16)))) #ifndef USE_MULTIPLE_WORKSPACE #define ALLOCATEDBHANDLE(stmt, timeout) \ AcquireRPCExclusiveLock(timeout) \ #define FREEDBHANDLE(stmt) \ g_DbWorkSpace->Cleanup(); \ ReleaseRPCExclusiveLock() #define BEGIN_TRANSACTION(stmt) \ g_DbWorkSpace->BeginTransaction(); #define COMMIT_TRANSACTION(stmt) \ g_DbWorkSpace->CommitTransaction(); #define ROLLBACK_TRANSACTION(stmt) \ g_DbWorkSpace->RollbackTransaction(); #define CLEANUPSTMT \ g_DbWorkSpace->Cleanup() #define USEHANDLE(stmt) \ g_DbWorkSpace #define RPCCALL_LOCK(timeout) \ AcquireRPCExclusiveLock(timeout) #define RPCCALL_UNLOCK \ ReleaseRPCExclusiveLock() #else // // Not tested yet!!! // #define ALLOCATEDBHANDLE(pStmt, timeout) \ pStmt = AllocateWorkSpace(timeout) #define FREEDBHANDLE(pStmt) \ pStmt->Cleanup(); \ ReleaseWorkSpace(pStmt); #define BEGIN_TRANSACTION(pStmt) \ pStmt->BeginTransaction(); #define COMMIT_TRANSACTION(pStmt) \ pStmt->CommitTransaction(); #define ROLLBACK_TRANSACTION(pStmt) \ pStmt->RollbackTransaction(); #define CLEANUPSTMT \ pStmt->Cleanup() #define USEHANDLE(pStmt) \ pStmt #define RPCCALL_LOCK(timeout) \ AcquireRPCExclusiveLock(timeout) #define RPCCALL_UNLOCK \ ReleaseRPCExclusiveLock() #endif //---------------------------------------------------------------------- // // #ifndef SPC_CERT_EXTENSIONS_OBJID #define SPC_CERT_EXTENSIONS_OBJID "1.3.6.1.4.1.311.2.1.14" #endif //--------------------------------------------------------------------------- // Server specified Registry Entry // #define LSERVER_REGISTRY_BASE _TEXT("SYSTEM\\CurrentControlSet\\Services\\") #define LSERVER_PARAMETERS _TEXT("Parameters") #define LSERVER_PARAMETERS_SCOPE _TEXT("Scope") #define LSERVER_PARAMETERS_DBPATH _TEXT("DBPath") // database file #define LSERVER_PARAMETERS_DBFILE _TEXT("DBFile") // database file #define LSERVER_PARAMETERS_USER _TEXT("User") #define LSERVER_PARAMETERS_PWD _TEXT("Pwd") #define LSERVER_PARAMETERS_LOGLEVEL _TEXT("Log Level") #define LSERVER_PARAMETERS_CONSOLE _TEXT("Console") #define LSERVER_PARAMETERS_ROLE _TEXT("Role") #define LSERVER_PARAMETERS_ESENTMAXCACHESIZE _TEXT("MaxCacheSize") #define LSERVER_PARAMETERS_ESENTSTARTFLUSH _TEXT("StartFlushThreshold") #define LSERVER_PARAMETERS_ESENTSTOPFLUSH _TEXT("StopFlushThreshold") #define LSERVER_PARAMETERS_LEASE_MIN _TEXT("LeaseMinimum") #define LSERVER_PARAMETERS_LEASE_RANGE _TEXT("LeaseRange") #define LSERVER_PARAMETERS_LEASE_LEEWAY _TEXT("LeaseLeeway") #define LSERVER_PARAMETERS_EXPIRE_THREAD_SLEEP _TEXT("ExpireThreadSleep") // // JET_paramCacheSizeMax is expressed in pages, // default 4K per page. // #define LSERVER_PARAMETERS_ESENTMAXCACHESIZE_DEFAULT 256 //#define LSERVER_PARAMETERS_ESENTMINCACHESIZE_DEFAULT 16 #define LSERVER_PARAMETERS_ESENTSTARTFLUSH_DEFAULT 100 #define LSERVER_PARAMETERS_ESENTSTOPFLUSH_DEFAULT 200 #define LSERVER_PARAMETERS_ESENTMAXCACHESIZE_MAX 512 #define LSERVER_PARAMETERS_ESENTSTARTFLUSH_MAX 100 #define LSERVER_PARAMETERS_ESENTSTOPFLUSH_MAX 400 #define LSERVER_PARAMETERS_ESENTMAXCACHESIZE_MIN 64 #define LSERVER_PARAMETERS_ESENTSTARTFLUSH_MIN 16 #define LSERVER_PARAMETERS_ESENTSTOPFLUSH_MIN 32 // // MaxCacheSize is set to 0xFFFFFFFF, we just let ESENT pick its number // #define LSERVER_PARAMETERS_USE_ESENTDEFAULT 0xFFFFFFFF #define LSERVER_PARAMETERS_KEY \ LSERVER_REGISTRY_BASE _TEXT(SZSERVICENAME) _TEXT("\\") LSERVER_PARAMETERS #define LSERVER_SECRET _TEXT("Security") #define LSERVER_SECRET_KEY _TEXT("Secret Key") #define LSERVER_SIGNATURE_CERTIFICATE_KEY _TEXT("Signature Certificate") #define LSERVER_EXCHANGE_CERTIFICATE_KEY _TEXT("Exchange Certificate") #define LSERVER_LSA_PRIVATEKEY_SIGNATURE _TEXT("TermServLiceningSignKey-12d4b7c8-77d5-11d1-8c24-00c04fa3080d") #define LSERVER_LSA_PRIVATEKEY_EXCHANGE _TEXT("TermServLicensingExchKey-12d4b7c8-77d5-11d1-8c24-00c04fa3080d") #define LSERVER_LSA_LSERVERID _TEXT("TermServLicensingServerId-12d4b7c8-77d5-11d1-8c24-00c04fa3080d") #define TLSERVER_SERVER_ID_VERSION 0x00010001 typedef struct _TlsLsaServerId { DWORD dwVersion; // structure version DWORD dwUniqueId; // TLServer 5 digit unique ID DWORD dwServerPid; // TLServer PID DWORD dwServerSPK; // TLServer's SPK if any. DWORD dwExtensions; // Size of encoded certificate entension. BYTE pbVariableStart[1]; // UniqueId follow by ServerPid then ServerSPK. } TLSLSASERVERID, *PTLSLSASERVERID, *LPTLSLSASERVERID; //---------------------------------------------------------------------- // // Registry key for License Server certificate issued by CA // //---------------------------------------------------------------------- #define LSERVER_SOFTWARE_REGBASE \ _TEXT("SOFTWARE\\Microsoft\\") _TEXT(SZSERVICENAME) #define LSERVER_CERTIFICATE_STORE _TEXT("Certificates") #define LSERVER_CERTIFICATE_STORE_BACKUP1 _TEXT("Certificates.000") #define LSERVER_CERTIFICATE_STORE_BACKUP2 _TEXT("Certificates.001") #define LSERVER_SELFSIGN_CERTIFICATE_REGKEY \ LSERVER_REGISTRY_BASE _TEXT(SZSERVICENAME) _TEXT("\\") LSERVER_SECRET #define LSERVER_SERVER_CERTIFICATE_REGKEY \ LSERVER_SOFTWARE_REGBASE _TEXT("\\") LSERVER_CERTIFICATE_STORE #define LSERVER_SERVER_CERTIFICATE_REGKEY_BACKUP1 \ LSERVER_PARAMETERS_KEY _TEXT("\\") LSERVER_CERTIFICATE_STORE_BACKUP1 #define LSERVER_SERVER_CERTIFICATE_REGKEY_BACKUP2 \ LSERVER_PARAMETERS_KEY _TEXT("\\") LSERVER_CERTIFICATE_STORE_BACKUP2 #define LSERVER_PARAMETERS_GRACEPERIOD _TEXT("GracePeriod") #define LSERVER_PARAMETERS_LOWLICENSEWARNING _TEXT("Low License Warning") #define LSERVER_PARAMETERS_ISSUETEMPLICENSE _TEXT("IssueTemporaryLicenses") #define LSERVER_PARAMETERS_WORKINTERVAL _TEXT("DefaultJobInterval") #define LSERVER_PARAMETERS_RETRYTIMES _TEXT("DefaultJobRetryTimes") #define LSERVER_PARAMETERS_WORKRESTART _TEXT("DefaultJobRestartTime") #define LSERVER_CLIENT_CERTIFICATE_ISSUER _TEXT("Parm0") #define LSERVER_SIGNATURE_CERT_KEY _TEXT("Parm1") #define LSERVER_EXCHANGE_CERT_KEY _TEXT("Parm2") #define LSERVER_SIGNATURE_CERTCHAIN_KEY _TEXT("Parm3") #define LSERVER_POLICY_REGKEY _TEXT("Policy") #define LSERVER_POLICY_DLLPATH _TEXT("Dll") #define LSERVER_POLICY_DLLFLAG _TEXT("Flags") #define LSERVER_POLICY_REGBASE \ LSERVER_SOFTWARE_REGBASE _TEXT("\\") LSERVER_POLICY_REGKEY #define TLS_ERROR(dwErrCode) ((dwErrCode & 0xC0000000) == 0xC0000000) //--------------------------------------------------------------------- #define MAXTCPNAME MAXGETHOSTSTRUCT #define FIRSTTIME_STARTUP_REGBASE _TEXT("Software\\Microsoft\\MSLicensing\\Startup") //------------------------------------------------------------------------------------------------ // Hydra Specific Product SKU // // 236-4.00-S Windows NT Workstation 4.0 Full Version Non Windows and Non NT Client // 236-4.00-VU Windows NT Workstation 4.0 Version Upgrade Windows NT 3.51 Client // 236-4.00-EX Existing Windows NT Workstation 4.0 License Windows NT 4.0 and 5.0 Client // #define HYDRA_PRODUCTID_SKU "236" #define HYDRA_FULLVERSION_POSTFIX "S" #define HYDRA_UPGRADE_POSTFIX "VU" #define HYDRA_EXISTING "EX" #define HYDRAPRODUCT_FULLVERSION_SKU _TEXT("236-4.00-S") #define HYDRAPRODUCT_UPGRADE_SKU _TEXT("236-4.00-VU") #define HYDRAPRODUCT_EXISTING_SKU _TEXT("236-4.00-EX") // // 236 Product ID // #define PLATFORMID_UPGRADE 1 #define PLATFORMID_FREE 2 #define PLATFORMID_OTHERS 0xFF #define TERMSERV_PRODUCTID_SKU _TEXT("A02") #define TERMSERV_PRODUCTID_INTERNET_SKU _TEXT("B96") #define TERMSERV_PRODUCTID_CONCURRENT_SKU _TEXT("C50") #define TERMSERV_FULLVERSION_TYPE _TEXT("S") #define TERMSERV_FREE_TYPE _TEXT("EX") #define TERMSERV_INTERNET_TYPE _TEXT("I") #define TERMSERV_CONCURRENT_TYPE _TEXT("C") #define TERMSERV_PRODUCTID_FORMAT _TEXT("%3s-%ld.%02ld-%s") #define MAX_TERMSRV_PRODUCTID LSERVER_MAX_STRING_SIZE #define MAX_SKU_PREFIX 10 #define MAX_SKU_POSTFIX 10 // // Following two are info. for special key pack that // will be used for issuing certificate to hydra server. // #define HYDRAPRODUCT_HS_CERTIFICATE_SKU \ _TEXT("3d267954-eeb7-11d1-b94e-00c04fa3080d") #define HYDRAPRODUCT_HS_CERTIFICATE_KEYPACKID \ _TEXT("3d267954-eeb7-11d1-b94e-00c04fa3080d") #define HYDRACERT_PRODUCT_VERSION 0x0001000 // Windows NT Upgrade=1, Windows NT Free=2, Others=3 #define CLIENT_PLATFORMID_WINDOWS_NT_UPGRADE 1 #define CLIENT_PLATFORMID_WINDOWS_NT_FREE 2 #define CLIENT_PLATFORMID_OTHERS 3 //--------------------------------------------------------------------------- // // Common Define // #define LICENSE_MIN_MATCH 3 #define RPC_MINIMUMCALLTHREADS 1 #define RPC_MAXIMUMCALLTHREADS RPC_C_LISTEN_MAX_CALLS_DEFAULT #define SC_WAITHINT 3000 #define ODBC_MAX_SQL_STRING 8196 // max. sql string #define DEFAULT_CONNECTION_TIMEOUT 5*60*1000 // odbc.h #define DB_ENUM_WAITTIMEOUT 10*1000 // 10 second time out // for enumeration handle #define MAX_LICENSE_SIZE 4096 #define GRACE_PERIOD 90 // default to 90 days #define DEFAULT_DB_CONNECTIONS 4 #define LSERVER_PARAMETERS_DBTIMEOUT _TEXT("Db ConnectionTimeout") #define LSERVER_PARAMETERS_EDBTIMEOUT _TEXT("Enum DbConnection Timeout") #define LSERVER_PARAMETERS_MAXDBHANDLES _TEXT("Max DB Handles") #define DB_MAX_CONNECTIONS 20 #define DB_MIN_HANDLE_NEEDED 3 // keypack enumeration uses two handle // need odd number to prevent deadlock //--------------------------------------------------------------------------- // // draft-ietf-pkix-ipki-part1-06.txt section 4.1.2.5.1 // where year is greater or equal to 50, the year shall be interpreted as 19YY; and // where year is less than 50, the year shall be interpreted as 20YY // #define PERMANENT_CERT_EXPIRE_DATE 2049 //--------------------------------------------------------------------------- // // Internal specific not export to RPC // #define LSKEYPACKSTATUS_DELETE 0xF #define LSLICENSESTATUS_DELETE 0xF #define LSKEYPACKSTATUS_BETA 0x10 #define LSKEYPACKSTATUS_HIDDEN 0x20 #define LSKEYPACKSTATUS_LOCAL 0x40 #define LSKEYPACKSTATUS_REMOTE 0x80 #define LSKEYPACKSTATUS_RESERVED 0xF0 #define LSKEYPACK_REMOTE_TYPE 0x80 #define LSKEYPACK_LOCAL_TYPE 0x40 #define LSKEYPACK_HIDDEN_TYPE 0x20 #define LSKEYPACK_RESERVED_TYPE 0xF0 #define LSKEYPACK_PLATFORM_REMOTE 0x80000000 //---------------------------------------------------------------------------- // // KeyPackDesc Table specific // #define KEYPACKDESC_SEARCH_NONE 0x00000000 #define KEYPACKDESC_SEARCH_ALL 0xFFFFFFFF #define KEYPACKDESC_SET_ADD_ENTRY 0x00010000 #define KEYPACKDESC_SET_DELETE_ENTRY 0x00020000 //--------------------------------------------------------------------------- #ifndef AllocateMemory #define AllocateMemory(size) \ LocalAlloc(LPTR, size) #endif #ifndef FreeMemory #define FreeMemory(ptr) \ if(ptr) \ { \ LocalFree(ptr); \ ptr=NULL; \ } #endif #ifndef ReallocateMemory #define ReallocateMemory(ptr, size) \ LocalReAlloc(ptr, size, LMEM_ZEROINIT) #endif #ifndef SAFESTRCPY #define SAFESTRCPY(dest, source) \ _tcsncpy(dest, source, min(_tcslen(source), sizeof(dest)/sizeof(TCHAR))); \ dest[min(_tcslen(source), (sizeof(dest)/sizeof(TCHAR) -1))] = _TEXT('\0'); #endif //--------------------------------------------------------------------------- // // Return code from LSWaitForService() // #define WAIT_SERVICE_UNKNOWN 0 #define WAIT_SERVICE_ERROR 1 #define WAIT_SERVICE_ALREADY_RUNNING 2 #define WAIT_SERVICE_MANUALLY_STARTED 3 #define WAIT_SERVICE_NOT_EXIST 4 #define WAIT_SERVICE_DISABLED 5 #define WAIT_SERVICE_READY 6 #define LICENSE_TABLE_EXTERN_SEARCH_MASK \ (LSLICENSE_SEARCH_LICENSEID | LSLICENSE_SEARCH_KEYPACKID | \ LSLICENSE_SEARCH_MACHINENAME | \ LSLICENSE_SEARCH_USERNAME | \ LSLICENSE_SEARCH_ISSUEDATE | LSLICENSE_SEARCH_NUMLICENSES | \ LSLICENSE_SEARCH_EXPIREDATE | LSLICENSE_EXSEARCH_LICENSESTATUS) // // The original style permanent license will never expire. The leased license // will expire in a random period between 52 and 89 days. // #define PERMANENT_LICENSE_EXPIRE_DATE INT_MAX //#define PERMANENT_LICENSE_LEASE_EXPIRE_MIN (3*60) // testing: 3 min //#define PERMANENT_LICENSE_LEASE_EXPIRE_RANGE (60) // testing: 1 min //#define EXPIRE_THREAD_SLEEP_TIME (1000*60*5) /* five min */ #define PERMANENT_LICENSE_LEASE_EXPIRE_MIN (52 * 24 * 60 * 60) #define PERMANENT_LICENSE_LEASE_EXPIRE_RANGE (37 * 24 * 60 * 60) #define EXPIRE_THREAD_SLEEP_TIME (1000*60*60*24) /* one day */ #define TLSERVER_CHALLENGE_CONTEXT 0xFFFFFFFF #define TLSERVER_ENTERPRISE_SERVER 0x00000001 #define DEFAULT_CSP MS_DEF_PROV #define PROVIDER_TYPE PROV_RSA_FULL #define CRYPTOINIT_ALREADY_EXIST 0x00000000 #define CRYPTOINIT_CREATE_CONTAINER 0x00000001 #define CRYPTOINIT_CREATE_SIGNKEY 0x00000002 #define CRYPTOINIT_CREATE_EXCHKEY 0x00000004 #define TLSBACKUP_EXPORT_DIR _TEXT("Export") #endif