' ########################################################################################
' Microsoft Windows
' File: CertCli.inc
' Library name: CERTCLIENTLib
' Version: 1.0, Locale ID = 0
' Library GUID: {372FCE32-4324-11D0-8810-00A0C903B83C}
' Path: C:\WINDOWS\system32\certcli.dll
' Contents: CertCli 1.0 Type Library
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_CertCli_PBI)
#DEFINE PBX_CertCli_PBI
%EQUATE `CERTCLI_INC = 1
'/* header files for imported files */
#INCLUDE ONCE "Legacy/System/WTypes.inc"
#INCLUDE ONCE "Legacy/Security/Certif.inc"
$LIBID_CERTCLIENTLib = GUID$("{372FCE32-4324-11D0-8810-00A0C903B83C}")
' ========================================================================================
' ProgIDs (Program identifiers)
' ========================================================================================
' CLSID = {372FCE38-4324-11D0-8810-00A0C903B83C}
$PROGID_CertificateAuthorityConfig1 = "CertificateAuthority.Config.1"
' CLSID = {C6CC49B0-CE17-11D0-8833-00A0C903B83C}
$PROGID_CertificateAuthorityGetConfig1 = "CertificateAuthority.GetConfig.1"
' CLSID = {98AFF3F0-5524-11D0-8812-00A0C903B83C}
$PROGID_CertificateAuthorityRequest1 = "CertificateAuthority.Request.1"
' CLSID = {4C4A5E40-732C-11D0-8816-00A0C903B83C}
$PROGID_CertificateAuthorityServerExit1 = "CertificateAuthority.ServerExit.1"
' CLSID = {AA000926-FFBE-11CF-8800-00A0C903B83C}
$PROGID_CertificateAuthorityServerPolicy1 = "CertificateAuthority.ServerPolicy.1"
' ========================================================================================
' Version independent ProgIDs
' ========================================================================================
' CLSID = {372FCE38-4324-11D0-8810-00A0C903B83C}
$PROGID_CertificateAuthorityConfig = "CertificateAuthority.Config"
' CLSID = {C6CC49B0-CE17-11D0-8833-00A0C903B83C}
$PROGID_CertificateAuthorityGetConfig = "CertificateAuthority.GetConfig"
' CLSID = {98AFF3F0-5524-11D0-8812-00A0C903B83C}
$PROGID_CertificateAuthorityRequest = "CertificateAuthority.Request"
' CLSID = {4C4A5E40-732C-11D0-8816-00A0C903B83C}
$PROGID_CertificateAuthorityServerExit = "CertificateAuthority.ServerExit"
' CLSID = {AA000926-FFBE-11CF-8800-00A0C903B83C}
$PROGID_CertificateAuthorityServerPolicy = "CertificateAuthority.ServerPolicy"
' ========================================================================================
' ClsIDs (Class identifiers)
' ========================================================================================
$CLSID_CCertConfig = GUID$("{372FCE38-4324-11D0-8810-00A0C903B83C}")
$CLSID_CCertGetConfig = GUID$("{C6CC49B0-CE17-11D0-8833-00A0C903B83C}")
$CLSID_CCertRequest = GUID$("{98AFF3F0-5524-11D0-8812-00A0C903B83C}")
$CLSID_CCertServerExit = GUID$("{4C4A5E40-732C-11D0-8816-00A0C903B83C}")
$CLSID_CCertServerPolicy = GUID$("{AA000926-FFBE-11CF-8800-00A0C903B83C}")
' ========================================================================================
' IIDs (Interface identifiers)
' ========================================================================================
$IID_ICertConfig = GUID$("{372FCE34-4324-11D0-8810-00A0C903B83C}")
$IID_ICertConfig2 = GUID$("{7A18EDDE-7E78-4163-8DED-78E2C9CEE924}")
$IID_ICertGetConfig = GUID$("{C7EA09C0-CE17-11D0-8833-00A0C903B83C}")
$IID_ICertRequest = GUID$("{014E4840-5523-11D0-8812-00A0C903B83C}")
$IID_ICertRequest2 = GUID$("{A4772988-4A85-4FA9-824E-B5CF5C16405A}")
$IID_ICertRequest3 = GUID$("{AFC8F92B-33A2-4861-BF36-2933B7CD67B3}")
' ########################################################################################
' Interface name = ICertGetConfig
' IID = {C7EA09C0-CE17-11D0-8833-00A0C903B83C}
' Attributes = 4160 [&H1040] [Dual] [Dispatchable]
' Inherited interface = IDispatch
' ########################################################################################
#IF NOT %DEF(%ICertGetConfig_INTERFACE_DEFINED)
 %ICertGetConfig_INTERFACE_DEFINED = 1
INTERFACE ICertGetConfig $IID_ICertGetConfig
 INHERIT IDispatch
 ' =====================================================================================
 METHOD GetConfig ( ' VTable offset = 28
 BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __ICertGetConfig_INTERFACE_DEFINED__ */
$$wszCONFIG_COMMONNAME = "CommonName"$$
$$wszCONFIG_ORGUNIT = "OrgUnit"$$
$$wszCONFIG_ORGANIZATION = "Organization"$$
$$wszCONFIG_LOCALITY = "Locality"$$
$$wszCONFIG_STATE = "State"$$
$$wszCONFIG_COUNTRY = "Country"$$
$$wszCONFIG_CONFIG = "Config"$$
$$wszCONFIG_EXCHANGECERTIFICATE = "ExchangeCertificate"$$
$$wszCONFIG_SIGNATURECERTIFICATE = "SignatureCertificate"$$
$$wszCONFIG_DESCRIPTION = "Description"$$
$$wszCONFIG_COMMENT = "Comment"$$ ' // obsolete: use Description
$$wszCONFIG_SERVER = "Server"$$
$$wszCONFIG_AUTHORITY = "Authority"$$
$$wszCONFIG_SANITIZEDNAME = "SanitizedName"$$
$$wszCONFIG_SHORTNAME = "ShortName"$$
$$wszCONFIG_SANITIZEDSHORTNAME = "SanitizedShortName"$$
$$wszCONFIG_FLAGS = "Flags"$$
$$wszCONFIG_WEBENROLLMENTSERVERS = "WebEnrollmentServers"$$
%EQUATE `CAIF_DSENTRY = &H1
%EQUATE `CAIF_SHAREDFOLDERENTRY = &H2
%EQUATE `CAIF_REGISTRY = &H4
%EQUATE `CAIF_LOCAL = &H8
%EQUATE `CAIF_REGISTRYPARENT = &H10
' ########################################################################################
' Interface name = ICertConfig
' IID = {372FCE34-4324-11D0-8810-00A0C903B83C}
' Attributes = 4160 [&H1040] [Dual] [Dispatchable]
' Inherited interface = IDispatch
' ########################################################################################
#IF NOT %DEF(%ICertConfig_INTERFACE_DEFINED)
 %ICertConfig_INTERFACE_DEFINED = 1
INTERFACE ICertConfig $IID_ICertConfig
 INHERIT IDispatch
 ' =====================================================================================
 METHOD Reset ( ' VTable offset = 28
 BYVAL Index AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD Next ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetField ( ' VTable offset = 36
 BYVAL strFieldName AS WSTRING
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetConfig ( ' VTable offset = 40
 BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __ICertConfig_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = ICertConfig2
' IID = {7A18EDDE-7E78-4163-8DED-78E2C9CEE924}
' Attributes = 4160 [&H1040] [Dual] [Dispatchable]
' Inherited interface = ICertConfig
' ########################################################################################
#IF NOT %DEF(%ICertConfig2_INTERFACE_DEFINED)
 %ICertConfig2_INTERFACE_DEFINED = 1
INTERFACE ICertConfig2 $IID_ICertConfig2
 INHERIT IDispatch
 ' =====================================================================================
 METHOD Reset ( ' VTable offset = 28
 BYVAL Index AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD Next ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetField ( ' VTable offset = 36
 BYVAL strFieldName AS WSTRING
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetConfig ( ' VTable offset = 40
 BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD SetSharedFolder ( ' VTable offset = 44
 BYVAL strSharedFolder AS WSTRING
 ) ' void
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __ICertConfig2_INTERFACE_DEFINED__ */
%EQUATE `CR_IN_BASE64HEADER = 0
%EQUATE `CR_IN_BASE64 = &H1
%EQUATE `CR_IN_BINARY = &H2
%EQUATE `CR_IN_ENCODEANY = &Hff
%EQUATE `CR_IN_ENCODEMASK = &Hff
%EQUATE `CR_IN_FORMATANY = 0
%EQUATE `CR_IN_PKCS10 = &H100
%EQUATE `CR_IN_KEYGEN = &H200
%EQUATE `CR_IN_PKCS7 = &H300
%EQUATE `CR_IN_CMC = &H400
%EQUATE `CR_IN_FORMATMASK = &Hff00
%EQUATE `CR_IN_RPC = &H20000
%EQUATE `CR_IN_FULLRESPONSE = &H40000
%EQUATE `CR_IN_CRLS = &H80000
%EQUATE `CR_IN_MACHINE = &H100000
%EQUATE `CR_IN_ROBO = &H200000
%EQUATE `CR_IN_CLIENTIDNONE = &H400000
%EQUATE `CR_IN_CONNECTONLY = &H800000
%EQUATE `CR_IN_CLIENTFLAGSMASK = (((((%CR_IN_ENCODEMASK OR %CR_IN_RPC) OR %CR_IN_MACHINE) OR %CR_IN_CLIENTIDNONE) OR %CR_IN_CONNECTONLY))
%EQUATE `CC_DEFAULTCONFIG = 0
%EQUATE `CC_UIPICKCONFIG = &H1
%EQUATE `CC_FIRSTCONFIG = &H2
%EQUATE `CC_LOCALCONFIG = &H3
%EQUATE `CC_LOCALACTIVECONFIG = &H4
%EQUATE `CC_UIPICKCONFIGSKIPLOCALCA = &H5
%EQUATE `CR_DISP_INCOMPLETE = 0
%EQUATE `CR_DISP_ERROR = &H1
%EQUATE `CR_DISP_DENIED = &H2
%EQUATE `CR_DISP_ISSUED = &H3
%EQUATE `CR_DISP_ISSUED_OUT_OF_BAND = &H4
%EQUATE `CR_DISP_UNDER_SUBMISSION = &H5
%EQUATE `CR_DISP_REVOKED = &H6
%EQUATE `CR_OUT_BASE64HEADER = 0
%EQUATE `CR_OUT_BASE64 = &H1
%EQUATE `CR_OUT_BINARY = &H2
%EQUATE `CR_OUT_ENCODEMASK = &Hff
%EQUATE `CR_OUT_CHAIN = &H100
%EQUATE `CR_OUT_CRLS = &H200
%EQUATE `CR_GEMT_HRESULT_STRING = &H1
%EQUATE `CR_PROP_NONE = 0 ' // Invalid
%EQUATE `CR_PROP_FILEVERSION = 1 ' // String
%EQUATE `CR_PROP_PRODUCTVERSION = 2 ' // String
%EQUATE `CR_PROP_EXITCOUNT = 3 ' // Long
'// CR_PROP_EXITCOUNT Elements:
%EQUATE `CR_PROP_EXITDESCRIPTION = 4 ' // String, Indexed
%EQUATE `CR_PROP_POLICYDESCRIPTION = 5 ' // String
%EQUATE `CR_PROP_CANAME = 6 ' // String
%EQUATE `CR_PROP_SANITIZEDCANAME = 7 ' // String
%EQUATE `CR_PROP_SHAREDFOLDER = 8 ' // String
%EQUATE `CR_PROP_PARENTCA = 9 ' // String
%EQUATE `CR_PROP_CATYPE = 10 ' // Long
%EQUATE `CR_PROP_CASIGCERTCOUNT = 11 ' // Long
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CASIGCERT = 12 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CASIGCERTCHAIN = 13 ' // Binary, Indexed
%EQUATE `CR_PROP_CAXCHGCERTCOUNT = 14 ' // Long
'// CR_PROP_CAXCHGCERTCOUNT Elements:
%EQUATE `CR_PROP_CAXCHGCERT = 15 ' // Binary, Indexed
'// CR_PROP_CAXCHGCERTCOUNT Elements:
%EQUATE `CR_PROP_CAXCHGCERTCHAIN = 16 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
'// Fetch only if CR_PROP_CRLSTATE[i] == CA_DISP_VALID
'// May also be available if CR_PROP_CRLSTATE[i] == CA_DISP_INVALID
%EQUATE `CR_PROP_BASECRL = 17 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
'// Fetch only if Delta CRLs enabled && CR_PROP_CRLSTATE[i] == CA_DISP_VALID
'// May also be available if CR_PROP_CRLSTATE[i] == CA_DISP_INVALID
%EQUATE `CR_PROP_DELTACRL = 18 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CACERTSTATE = 19 ' // Long, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CRLSTATE = 20 ' // Long, Indexed
%EQUATE `CR_PROP_CAPROPIDMAX = 21 ' // Long
%EQUATE `CR_PROP_DNSNAME = 22 ' // String
%EQUATE `CR_PROP_ROLESEPARATIONENABLED = 23 ' // Long
%EQUATE `CR_PROP_KRACERTUSEDCOUNT = 24 ' // Long
%EQUATE `CR_PROP_KRACERTCOUNT = 25 ' // Long
'// CR_PROP_KRACERTCOUNT Elements:
%EQUATE `CR_PROP_KRACERT = 26 ' // Binary, Indexed
'// CR_PROP_KRACERTCOUNT Elements:
%EQUATE `CR_PROP_KRACERTSTATE = 27 ' // Long, Indexed
%EQUATE `CR_PROP_ADVANCEDSERVER = 28 ' // Long
%EQUATE `CR_PROP_TEMPLATES = 29 ' // String
'// CR_PROP_CASIGCERTCOUNT Elements:
'// Fetch only if CR_PROP_CRLSTATE[i] == CA_DISP_VALID
%EQUATE `CR_PROP_BASECRLPUBLISHSTATUS = 30 ' // Long, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
'// Fetch only if Delta CRLs enabled && CR_PROP_CRLSTATE[i] == CA_DISP_VALID
%EQUATE `CR_PROP_DELTACRLPUBLISHSTATUS = 31 ' // Long, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CASIGCERTCRLCHAIN = 32 ' // Binary, Indexed
'// CR_PROP_CAXCHGCERTCOUNT Elements:
%EQUATE `CR_PROP_CAXCHGCERTCRLCHAIN = 33 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CACERTSTATUSCODE = 34 ' // Long, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CAFORWARDCROSSCERT = 35 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CABACKWARDCROSSCERT = 36 ' // Binary, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CAFORWARDCROSSCERTSTATE = 37 ' // Long, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CABACKWARDCROSSCERTSTATE = 38 ' // Long, Indexed
'// CR_PROP_CASIGCERTCOUNT Elements:
%EQUATE `CR_PROP_CACERTVERSION = 39 ' // Long, Indexed
%EQUATE `CR_PROP_SANITIZEDCASHORTNAME = 40 ' // String
'// CR_PROP_CERTCDPURLS Elements:
%EQUATE `CR_PROP_CERTCDPURLS = 41 ' // String, Indexed
'// CR_PROP_CERTAIAURLS Elements:
%EQUATE `CR_PROP_CERTAIAURLS = 42 ' // String, Indexed
'// CR_PROP_CERTAIAOCSPURLS Elements:
%EQUATE `CR_PROP_CERTAIAOCSPURLS = 43 ' // String, Indexed
'// CR_PROP_LOCALENAME Elements:
%EQUATE `CR_PROP_LOCALENAME = 44 ' // String
%EQUATE `FR_PROP_NONE = 0 ' // Invalid
%EQUATE `FR_PROP_FULLRESPONSE = 1 ' // Binary
%EQUATE `FR_PROP_STATUSINFOCOUNT = 2 ' // Long
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_BODYPARTSTRING = 3 ' // String, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_STATUS = 4 ' // Long, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_STATUSSTRING = 5 ' // String, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_OTHERINFOCHOICE = 6 ' // Long, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_FAILINFO = 7 ' // Long, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_PENDINFOTOKEN = 8 ' // Binary, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_PENDINFOTIME = 9 ' // Date, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_ISSUEDCERTIFICATEHASH = 10 ' // Binary, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_ISSUEDCERTIFICATE = 11 ' // Binary, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_ISSUEDCERTIFICATECHAIN = 12 ' // Binary, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_ISSUEDCERTIFICATECRLCHAIN = 13 ' // Binary, Indexed
'// FR_PROP_STATUSINFOCOUNT Elements:
%EQUATE `FR_PROP_ENCRYPTEDKEYHASH = 14 ' // Binary, Indexed
%EQUATE `FR_PROP_FULLRESPONSENOPKCS7 = 15 ' // Binary
' ########################################################################################
' Interface name = ICertRequest
' IID = {014E4840-5523-11D0-8812-00A0C903B83C}
' ICertRequest Interface
' Attributes = 4160 [&H1040] [Dual] [Dispatchable]
' Inherited interface = IDispatch
' ########################################################################################
#IF NOT %DEF(%ICertRequest_INTERFACE_DEFINED)
 %ICertRequest_INTERFACE_DEFINED = 1
INTERFACE ICertRequest $IID_ICertRequest
 INHERIT IDispatch
 ' =====================================================================================
 METHOD Submit ( ' VTable offset = 28
 BYVAL Flags AS LONG
 , BYVAL strRequest AS WSTRING
 , BYVAL strAttributes AS WSTRING
 , BYVAL strConfig AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD RetrievePending ( ' VTable offset = 32
 BYVAL RequestId AS LONG
 , BYVAL strConfig AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetLastStatus ( ' VTable offset = 36
 ) AS LONG
 ' =====================================================================================
 METHOD GetRequestId ( ' VTable offset = 40
 ) AS LONG
 ' =====================================================================================
 METHOD GetDispositionMessage ( ' VTable offset = 44
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCACertificate ( ' VTable offset = 48
 BYVAL fExchangeCertificate AS LONG
 , BYVAL strConfig AS WSTRING
 , BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCertificate ( ' VTable offset = 52
 BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __ICertRequest_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = ICertRequest2
' IID = {A4772988-4A85-4FA9-824E-B5CF5C16405A}
' Attributes = 4160 [&H1040] [Dual] [Dispatchable]
' Inherited interface = ICertRequest
' ########################################################################################
#IF NOT %DEF(%ICertRequest2_INTERFACE_DEFINED)
 %ICertRequest2_INTERFACE_DEFINED = 1
INTERFACE ICertRequest2 $IID_ICertRequest2
 INHERIT IDispatch
 ' =====================================================================================
 ' ICertRequest methods
 ' =====================================================================================
 METHOD Submit ( ' VTable offset = 28
 BYVAL Flags AS LONG
 , BYVAL strRequest AS WSTRING
 , BYVAL strAttributes AS WSTRING
 , BYVAL strConfig AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD RetrievePending ( ' VTable offset = 32
 BYVAL RequestId AS LONG
 , BYVAL strConfig AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetLastStatus ( ' VTable offset = 36
 ) AS LONG
 ' =====================================================================================
 METHOD GetRequestId ( ' VTable offset = 40
 ) AS LONG
 ' =====================================================================================
 METHOD GetDispositionMessage ( ' VTable offset = 44
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCACertificate ( ' VTable offset = 48
 BYVAL fExchangeCertificate AS LONG
 , BYVAL strConfig AS WSTRING
 , BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCertificate ( ' VTable offset = 52
 BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 ' =====================================================================================
 ' ICertRequest2 methods
 ' =====================================================================================
 METHOD GetIssuedCertificate ( ' VTable offset = 56
 BYVAL strConfig AS WSTRING
 , BYVAL RequestId AS LONG
 , BYVAL strSerialNumber AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetErrorMessageText ( ' VTable offset = 60
 BYVAL hrMessage AS LONG
 , BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCAProperty ( ' VTable offset = 64
 BYVAL strConfig AS WSTRING
 , BYVAL PropId AS LONG
 , BYVAL PropIndex AS LONG
 , BYVAL PropType AS LONG
 , BYVAL Flags AS LONG
 ) AS VARIANT
 ' =====================================================================================
 METHOD GetCAPropertyFlags ( ' VTable offset = 68
 BYVAL strConfig AS WSTRING
 , BYVAL PropId AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetCAPropertyDisplayName ( ' VTable offset = 72
 BYVAL strConfig AS WSTRING
 , BYVAL PropId AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetFullResponseProperty ( ' VTable offset = 76
 BYVAL PropId AS LONG
 , BYVAL PropIndex AS LONG
 , BYVAL PropType AS LONG
 , BYVAL Flags AS LONG
 ) AS VARIANT
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __ICertRequest2_INTERFACE_DEFINED__ */
' enum X509EnrollmentAuthFlags
%EQUATE `X509AuthNone = 0
%EQUATE `X509AuthAnonymous = 1
%EQUATE `X509AuthKerberos = 2
%EQUATE `X509AuthUsername = 4
%EQUATE `X509AuthCertificate = 8
' ########################################################################################
' Interface name = ICertRequest3
' IID = AFC8F92B-33A2-4861-BF36-2933B7CD67B3
' Attributes = 4160 [&H1040] [Dual] [Dispatchable]
' Inherited interface = ICertRequest2
' ########################################################################################
#IF NOT %DEF(%ICertRequest3_INTERFACE_DEFINED)
 %ICertRequest3_INTERFACE_DEFINED = 1
INTERFACE ICertRequest3 $IID_ICertRequest3
 INHERIT IDispatch
 ' =====================================================================================
 ' ICertRequest methods
 ' =====================================================================================
 METHOD Submit ( ' VTable offset = 28
 BYVAL Flags AS LONG
 , BYVAL strRequest AS WSTRING
 , BYVAL strAttributes AS WSTRING
 , BYVAL strConfig AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD RetrievePending ( ' VTable offset = 32
 BYVAL RequestId AS LONG
 , BYVAL strConfig AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetLastStatus ( ' VTable offset = 36
 ) AS LONG
 ' =====================================================================================
 METHOD GetRequestId ( ' VTable offset = 40
 ) AS LONG
 ' =====================================================================================
 METHOD GetDispositionMessage ( ' VTable offset = 44
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCACertificate ( ' VTable offset = 48
 BYVAL fExchangeCertificate AS LONG
 , BYVAL strConfig AS WSTRING
 , BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCertificate ( ' VTable offset = 52
 BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 ' =====================================================================================
 ' ICertRequest2 methods
 ' =====================================================================================
 METHOD GetIssuedCertificate ( ' VTable offset = 56
 BYVAL strConfig AS WSTRING
 , BYVAL RequestId AS LONG
 , BYVAL strSerialNumber AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetErrorMessageText ( ' VTable offset = 60
 BYVAL hrMessage AS LONG
 , BYVAL Flags AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetCAProperty ( ' VTable offset = 64
 BYVAL strConfig AS WSTRING
 , BYVAL PropId AS LONG
 , BYVAL PropIndex AS LONG
 , BYVAL PropType AS LONG
 , BYVAL Flags AS LONG
 ) AS VARIANT
 ' =====================================================================================
 METHOD GetCAPropertyFlags ( ' VTable offset = 68
 BYVAL strConfig AS WSTRING
 , BYVAL PropId AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetCAPropertyDisplayName ( ' VTable offset = 72
 BYVAL strConfig AS WSTRING
 , BYVAL PropId AS LONG
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetFullResponseProperty ( ' VTable offset = 76
 BYVAL PropId AS LONG
 , BYVAL PropIndex AS LONG
 , BYVAL PropType AS LONG
 , BYVAL Flags AS LONG
 ) AS VARIANT
 ' =====================================================================================
 ' =====================================================================================
 ' ICertRequest3 methods
 ' =====================================================================================
 METHOD SetCredential ( ' VTable offset = 80
 BYVAL hWnd AS LONG
 , BYVAL AuthType AS LONG
 , BYVAL strCredential AS WSTRING
 , BYVAL strPassword AS WSTRING
 ) ' void
 ' =====================================================================================
 METHOD GetRequestIdString ( ' VTable offset = 84
 ) AS WSTRING
 ' =====================================================================================
 METHOD GetIssuedCertificate2 ( ' VTable offset = 88
 BYVAL strConfig AS WSTRING
 , BYVAL strRequestId AS WSTRING
 , BYVAL strSerialNumber AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetRefreshPolicy ( ' VTable offset = 92
 ) AS INTEGER
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __ICertRequest3_INTERFACE_DEFINED__ */
#ENDIF
