1/** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5cpp_quote("#include <winapifamily.h>") 6cpp_quote("") 7cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") 8 9import "objidl.idl"; 10import "wincrypt.idl"; 11 12cpp_quote("") 13interface IWSDAddress; 14interface IWSDMessageParameters; 15interface IWSDUdpAddress; 16interface IWSDUdpMessageParameters; 17interface IWSDHttpAddress; 18interface IWSDHttpMessageParameters; 19 20cpp_quote("") 21cpp_quote("#if WINVER >= 0x601") 22typedef enum { 23 WSD_CONFIG_MAX_INBOUND_MESSAGE_SIZE = 1, 24 WSD_CONFIG_MAX_OUTBOUND_MESSAGE_SIZE = 2, 25 WSD_SECURITY_SSL_CERT_FOR_CLIENT_AUTH = 3, 26 WSD_SECURITY_SSL_SERVER_CERT_VALIDATION = 4, 27 WSD_SECURITY_SSL_CLIENT_CERT_VALIDATION = 5, 28 WSD_SECURITY_SSL_NEGOTIATE_CLIENT_CERT = 6, 29 WSD_SECURITY_COMPACTSIG_SIGNING_CERT = 7, 30 WSD_SECURITY_COMPACTSIG_VALIDATION = 8, 31 WSD_CONFIG_HOSTING_ADDRESSES = 9, 32 WSD_CONFIG_DEVICE_ADDRESSES = 10, 33 WSD_SECURITY_REQUIRE_HTTP_CLIENT_AUTH = 11, 34 WSD_SECURITY_REQUIRE_CLIENT_CERT_OR_HTTP_CLIENT_AUTH = 12, 35 WSD_SECURITY_USE_HTTP_CLIENT_AUTH = 13 36} WSD_CONFIG_PARAM_TYPE; 37 38typedef struct _WSD_CONFIG_PARAM { 39 WSD_CONFIG_PARAM_TYPE configParamType; 40 PVOID pConfigData; 41 DWORD dwConfigDataSize; 42} WSD_CONFIG_PARAM,*PWSD_CONFIG_PARAM; 43 44typedef struct _WSD_SECURITY_CERT_VALIDATION_V1 { 45 PCCERT_CONTEXT *certMatchArray; 46 DWORD dwCertMatchArrayCount; 47 HCERTSTORE hCertMatchStore; 48 HCERTSTORE hCertIssuerStore; 49 DWORD dwCertCheckOptions; 50} WSD_SECURITY_CERT_VALIDATION_V1; 51 52cpp_quote("#if _WIN32_WINNT >= 0x602") 53typedef struct _WSD_SECURITY_CERT_VALIDATION { 54 PCCERT_CONTEXT *certMatchArray; 55 DWORD dwCertMatchArrayCount; 56 HCERTSTORE hCertMatchStore; 57 HCERTSTORE hCertIssuerStore; 58 DWORD dwCertCheckOptions; 59 LPCWSTR pszCNGHashAlgId; 60 BYTE *pbCertHash; 61 DWORD dwCertHashSize; 62} WSD_SECURITY_CERT_VALIDATION; 63cpp_quote("#else") 64cpp_quote("typedef WSD_SECURITY_CERT_VALIDATION_V1 WSD_SECURITY_CERT_VALIDATION;") 65cpp_quote("#endif") 66 67cpp_quote("") 68typedef WSD_SECURITY_CERT_VALIDATION *PWSD_SECURITY_CERT_VALIDATION; 69 70typedef struct _WSD_SECURITY_SIGNATURE_VALIDATION { 71 PCCERT_CONTEXT *signingCertArray; 72 DWORD dwSigningCertArrayCount; 73 HCERTSTORE hSigningCertStore; 74 DWORD dwFlags; 75} WSD_SECURITY_SIGNATURE_VALIDATION,*PWSD_SECURITY_SIGNATURE_VALIDATION; 76 77typedef DWORD WSD_SECURITY_HTTP_AUTH_SCHEMES,*PWSD_SECURITY_HTTP_AUTH_SCHEMES; 78 79cpp_quote("") 80cpp_quote("#define WSDAPI_SSL_CERT_APPLY_DEFAULT_CHECKS 0x0") 81cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_REVOCATION 0x1") 82cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_EXPIRY 0x2") 83cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_WRONG_USAGE 0x4") 84cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_UNKNOWN_CA 0x8") 85cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_INVALID_CN 0x10") 86cpp_quote("") 87cpp_quote("#define WSDAPI_COMPACTSIG_ACCEPT_ALL_MESSAGES 0x1") 88cpp_quote("") 89cpp_quote("#define WSD_SECURITY_HTTP_AUTH_SCHEME_NEGOTIATE 0x1") 90cpp_quote("#define WSD_SECURITY_HTTP_AUTH_SCHEME_NTLM 0x2") 91cpp_quote("") 92 93typedef struct _WSD_CONFIG_ADDRESSES { 94 IWSDAddress **addresses; 95 DWORD dwAddressCount; 96} WSD_CONFIG_ADDRESSES,*PWSD_CONFIG_ADDRESSES; 97cpp_quote("#endif") 98 99cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV4 1") 100cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV6 2") 101 102[object, uuid (b9574c6c-12a6-4f74-93a1-3318ff605759), local] 103interface IWSDAddress : IUnknown { 104 HRESULT Serialize ([out, size_is (cchLength)] LPWSTR pszBuffer,[in] DWORD cchLength,[in] BOOL fSafe); 105 HRESULT Deserialize ([in] LPCWSTR pszBuffer); 106} 107 108[object, uuid (70d23498-4ee6-4340-a3df-d845d2235467), local] 109interface IWSDTransportAddress : IWSDAddress { 110 HRESULT GetPort ([out] WORD *pwPort); 111 HRESULT SetPort ([in] WORD wPort); 112 HRESULT GetTransportAddress ([out] LPCWSTR *ppszAddress); 113 HRESULT GetTransportAddressEx ([in] BOOL fSafe,[out] LPCWSTR *ppszAddress); 114 HRESULT SetTransportAddress ([in] LPCWSTR pszAddress); 115} 116 117[object, uuid (1fafe8a2-e6fc-4b80-b6cf-b7d45c416d7c)] 118interface IWSDMessageParameters : IUnknown { 119 HRESULT GetLocalAddress ([out] IWSDAddress **ppAddress); 120 HRESULT SetLocalAddress ([in] IWSDAddress *pAddress); 121 HRESULT GetRemoteAddress ([out] IWSDAddress **ppAddress); 122 HRESULT SetRemoteAddress ([in] IWSDAddress *pAddress); 123 HRESULT GetLowerParameters ([out] IWSDMessageParameters **ppTxParams); 124} 125 126cpp_quote("HRESULT WINAPI") 127cpp_quote("WSDCreateUdpMessageParameters(") 128cpp_quote("IWSDUdpMessageParameters** ppTxParams);") 129 130typedef struct _WSDUdpRetransmitParams { 131 ULONG ulSendDelay; 132 ULONG ulRepeat; 133 ULONG ulRepeatMinDelay; 134 ULONG ulRepeatMaxDelay; 135 ULONG ulRepeatUpperDelay; 136} WSDUdpRetransmitParams; 137 138[object, uuid (9934149f-8f0c-447b-aa0b-73124b0ca7f0)] 139interface IWSDUdpMessageParameters : IWSDMessageParameters { 140 HRESULT SetRetransmitParams ([in] const WSDUdpRetransmitParams *pParams); 141 HRESULT GetRetransmitParams ([out] WSDUdpRetransmitParams *pParams); 142} 143 144cpp_quote("HRESULT WINAPI") 145cpp_quote("WSDCreateUdpAddress(") 146cpp_quote(" IWSDUdpAddress** ppAddress);") 147 148#ifndef SOCKADDR_STORAGE 149cpp_quote("#if 1") 150cpp_quote("") 151cpp_quote("#ifndef __CSADDR_DEFINED__") 152cpp_quote("struct SOCKADDR_STORAGE;") 153cpp_quote("#endif") 154cpp_quote("#else") 155typedef void SOCKADDR_STORAGE; 156cpp_quote("#endif") 157#endif 158 159typedef enum _WSDUdpMessageType { 160 ONE_WAY, 161 TWO_WAY 162} WSDUdpMessageType; 163 164[object, local, uuid (74d6124a-a441-4f78-a1eb-97a8d1996893)] 165interface IWSDUdpAddress : IWSDTransportAddress { 166 HRESULT SetSockaddr ([in] const SOCKADDR_STORAGE *pSockAddr); 167 HRESULT GetSockaddr ([out] SOCKADDR_STORAGE *pSockAddr); 168 HRESULT SetExclusive ([in] BOOL fExclusive); 169 HRESULT GetExclusive (); 170 HRESULT SetMessageType ([in] WSDUdpMessageType messageType); 171 HRESULT GetMessageType ([out] WSDUdpMessageType *pMessageType); 172 HRESULT SetTTL ([in] DWORD dwTTL); 173 HRESULT GetTTL ([out] DWORD *pdwTTL); 174 HRESULT SetAlias ([in] const GUID *pAlias); 175 HRESULT GetAlias ([out] GUID *pAlias); 176} 177 178[object, local, uuid (540bd122-5c83-4dec-b396-ea62a2697fdf)] 179interface IWSDHttpMessageParameters : IWSDMessageParameters { 180 HRESULT SetInboundHttpHeaders ([in] LPCWSTR pszHeaders); 181 HRESULT GetInboundHttpHeaders ([out] LPCWSTR *ppszHeaders); 182 HRESULT SetOutboundHttpHeaders ([in] LPCWSTR pszHeaders); 183 HRESULT GetOutboundHttpHeaders ([out] LPCWSTR *ppszHeaders); 184 HRESULT SetID ([in] LPCWSTR pszId); 185 HRESULT GetID ([out] LPCWSTR *ppszId); 186 HRESULT SetContext ([in] IUnknown *pContext); 187 HRESULT GetContext ([out] IUnknown **ppContext); 188 HRESULT Clear (); 189} 190 191[object, local, uuid (d09ac7bd-2a3e-4b85-8605-2737ff3e4ea0)] 192interface IWSDHttpAddress : IWSDTransportAddress { 193 HRESULT GetSecure (); 194 HRESULT SetSecure ([in] BOOL fSecure); 195 HRESULT GetPath ([out] LPCWSTR *ppszPath); 196 HRESULT SetPath ([in] LPCWSTR pszPath); 197} 198 199cpp_quote("#if WINVER >= 0x601") 200[object, local, uuid (de105e87-a0da-418e-98ad-27b9eed87bdc)] 201interface IWSDSSLClientCertificate : IUnknown { 202 HRESULT GetClientCertificate ([in, out] PCCERT_CONTEXT *ppCertContext); 203 HRESULT GetMappedAccessToken ([in, out] HANDLE *phToken); 204} 205 206[object, local, uuid (0b476df0-8dac-480d-b05c-99781a5884aa)] 207interface IWSDHttpAuthParameters: IUnknown { 208 HRESULT GetClientAccessToken ([out] HANDLE *phToken); 209 HRESULT GetAuthType ([out] PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType); 210} 211 212[object, local, uuid (03ce20aa-71c4-45e2-b32e-3766c61c790f), pointer_default (unique), restricted] 213interface IWSDSignatureProperty : IUnknown { 214 HRESULT IsMessageSigned ([out] BOOL *pbSigned); 215 HRESULT IsMessageSignatureTrusted ([out] BOOL *pbSignatureTrusted); 216 HRESULT GetKeyInfo ([out, size_is (*pdwKeyInfoSize)] BYTE *pbKeyInfo,[in, out] DWORD *pdwKeyInfoSize); 217 HRESULT GetSignature ([out, size_is (*pdwSignatureSize)] BYTE *pbSignature,[in, out] DWORD *pdwSignatureSize); 218 HRESULT GetSignedInfoHash ([out, size_is (*pdwHashSize)] BYTE *pbSignedInfoHash,[in, out] DWORD *pdwHashSize); 219} 220cpp_quote("#endif") 221 222cpp_quote("HRESULT WINAPI WSDCreateHttpAddress(IWSDHttpAddress **ppAdress);") 223cpp_quote("HRESULT WINAPI WSDCreateHttpMessageParameters(IWSDHttpMessageParameters **ppTxParams);") 224 225cpp_quote("#endif") 226