//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1997. // // File: certutil.h // // Contents: // // Classes: // // Functions: // // History: 03-18-97 HueiWang Created // //---------------------------------------------------------------------------- #ifndef __LICENSE_VERIFY_H__ #define __LICENSE_VERIFY_H__ #include #include typedef BOOL (*EnumerateCertNameInfoCallBack)(PCERT_RDN_ATTR pCertRdnAttr, HANDLE dwUserData); #ifndef AllocateMemory #define AllocMemory(size) LocalAlloc(LPTR, size) #define FreeMemory(ptr) if(ptr) LocalFree(ptr) #endif // // SP3 build environment problem. // #define LSCERT_ALT_NAME_OTHER_NAME 1 #define LSCERT_ALT_NAME_RFC822_NAME 2 #define LSCERT_ALT_NAME_DNS_NAME 3 #define LSCERT_ALT_NAME_X400_ADDRESS 4 #define LSCERT_ALT_NAME_DIRECTORY_NAME 5 #define LSCERT_ALT_NAME_EDI_PARTY_NAME 6 #define LSCERT_ALT_NAME_URL 7 #define LSCERT_ALT_NAME_IP_ADDRESS 8 #define LSCERT_ALT_NAME_REGISTERED_ID 9 typedef struct _LSCERT_ALT_NAME_ENTRY { DWORD dwAltNameChoice; union { CRYPT_ATTRIBUTE_TYPE_VALUE OtherName; LPWSTR pwszRfc822Name; LPWSTR pwszDNSName; CRYPT_ATTRIBUTE_TYPE_VALUE x400Address; CERT_NAME_BLOB DirectoryName; LPWSTR pwszEdiPartyName; LPWSTR pszURL; CRYPT_DATA_BLOB IPAddress; LPSTR pszRegisteredID; }; } LSCERT_ALT_NAME_ENTRY, *PLSCERT_ALT_NAME_ENTRY; typedef struct _LSCERT_ALT_NAME_INFO { DWORD cAltEntry; PLSCERT_ALT_NAME_ENTRY rgAltEntry; } LSCERT_ALT_NAME_INFO, *PLSCERT_ALT_NAME_INFO; typedef struct _LSCERT_AUTHORITY_KEY_ID2_INFO { CRYPT_DATA_BLOB KeyId; LSCERT_ALT_NAME_INFO AuthorityCertIssuer; CRYPT_INTEGER_BLOB AuthorityCertSerialNumber; } LSCERT_AUTHORITY_KEY_ID2_INFO, *PLSCERT_AUTHORITY_KEY_ID2_INFO; #define szOID_X509_AUTHORITY_KEY_ID2 "2.5.29.35" #define szOID_X509_AUTHORITY_ACCESS_INFO "1.3.6.1.5.5.7.1.1" #define szOID_X509_ACCESS_PKIX_OCSP "1.3.6.1.5.5.7.48.1" typedef struct _LSCERT_ACCESS_DESCRIPTION { LPSTR pszAccessMethod; // pszObjId LSCERT_ALT_NAME_ENTRY AccessLocation; } LSCERT_ACCESS_DESCRIPTION, *PLSCERT_ACCESS_DESCRIPTION; typedef struct _LSCERT_AUTHORITY_INFO_ACCESS { DWORD cAccDescr; PLSCERT_ACCESS_DESCRIPTION rgAccDescr; } LSCERT_AUTHORITY_INFO_ACCESS, *PLSCERT_AUTHORITY_INFO_ACCESS; #if UNICODE #define CAST_PBYTE (USHORT *) #else #define CAST_PBYTE #endif #define CERT_X509_MULTI_BYTE_INTEGER ((LPCSTR) 28) #ifdef __cplusplus extern "C" { #endif void LSShutdownCertutilLib(); BOOL LSInitCertutilLib( HCRYPTPROV hProv ); void LSFreeLicensedProduct( PLICENSEDPRODUCT pLicensedProduct ); LICENSE_STATUS LSVerifyDecodeClientLicense( IN PBYTE pbLicense, IN DWORD cbLicense, IN PBYTE pbSecretKey, IN DWORD cbSecretKey, IN OUT PDWORD pdwNumLicensedInfo, IN OUT PLICENSEDPRODUCT pLicensedInfo ); LICENSE_STATUS LSVerifyCertificateChain( HCRYPTPROV hCryptProv, HCERTSTORE hCertStore ); DWORD LSCryptDecodeObject( IN DWORD dwEncodingType, IN LPCSTR lpszStructType, IN const BYTE * pbEncoded, IN DWORD cbEncoded, IN DWORD dwFlags, OUT void ** pvStructInfo, IN OUT DWORD * pcbStructInfo ); DWORD LSLicensedProductInfoToExtension( DWORD dwQuantity, DWORD dwPlatformId, DWORD dwLangId, PBYTE pbOriginalProductId, DWORD cbOriginalProductId, PBYTE pbAdjustedProductId, DWORD cbAdjustedProductId, LICENSED_VERSION_INFO* pLicensedVersionInfo, DWORD dwNumLicensedVersionInfo, PBYTE *pbData, PDWORD cbData ); DWORD LSExtensionToMsLicensedProductInfo( PBYTE pbData, DWORD cbData, PDWORD pdwQuantity, PDWORD pdwPlatformId, PDWORD pdwLanguagId, PBYTE* ppbOriginalProductId, PDWORD pcbOriginalProductId, PBYTE* ppbAdjustedProductId, PDWORD pcbAdjustedProductId, LICENSED_VERSION_INFO** ppLicenseInfo, PDWORD pdwNumberLicensedVersionInfo ); DWORD LSEnumerateCertNameInfo( LPBYTE pbData, DWORD cbData, EnumerateCertNameInfoCallBack func, HANDLE dwUserData ); LICENSE_STATUS LSEncryptClientHWID(HWID* pHwid, PBYTE pbData, PDWORD cbData, PBYTE pbSecretKey, DWORD cbSecretKey); LICENSE_STATUS LSDecodeClientHWID( PBYTE pbData, DWORD cbData, PBYTE pbSecretKey, DWORD cbSecretKey, HWID* pHwid); LICENSE_STATUS LicenseGetSecretKey( PDWORD pcbSecretKey, BYTE FAR * pSecretKey ); LICENSE_STATUS LSExtensionToMsLicenseServerInfo( PBYTE pbData, DWORD cbData, LPTSTR* szIssuer, LPTSTR* szIssuerId, LPTSTR* szScope ); LICENSE_STATUS LSMsLicenseServerInfoToExtension( LPTSTR szIssuer, LPTSTR szIssuerId, LPTSTR szScope, PBYTE* pbData, PDWORD cbData ); LICENSE_STATUS DecodeLicense20( IN PCERT_INFO pCertInfo, IN PBYTE pbSecretKey, IN DWORD cbSecretKey, IN OUT PLICENSEDPRODUCT pLicensedInfo, IN OUT ULARGE_INTEGER* ulSerialNumber ); #ifdef __cplusplus }; #endif #endif