1 #ifndef HEADER_CURL_SSPI_H 2 #define HEADER_CURL_SSPI_H 27 #ifdef USE_WINDOWS_SSPI 37 #undef SECURITY_KERNEL 38 #define SECURITY_WIN32 1 43 CURLcode Curl_sspi_global_init(
void);
44 void Curl_sspi_global_cleanup(
void);
47 CURLcode Curl_override_sspi_http_realm(
const char *chlg,
48 SEC_WINNT_AUTH_IDENTITY *identity);
51 CURLcode Curl_create_sspi_identity(
const char *userp,
const char *passwdp,
52 SEC_WINNT_AUTH_IDENTITY *identity);
55 void Curl_sspi_free_identity(SEC_WINNT_AUTH_IDENTITY *identity);
58 extern HMODULE s_hSecDll;
59 extern PSecurityFunctionTable s_pSecFn;
62 #define SP_NAME_DIGEST "WDigest" 63 #define SP_NAME_NTLM "NTLM" 64 #define SP_NAME_NEGOTIATE "Negotiate" 65 #define SP_NAME_KERBEROS "Kerberos" 67 #ifndef ISC_REQ_USE_HTTP_STYLE 68 #define ISC_REQ_USE_HTTP_STYLE 0x01000000 71 #ifndef ISC_RET_REPLAY_DETECT 72 #define ISC_RET_REPLAY_DETECT 0x00000004 75 #ifndef ISC_RET_SEQUENCE_DETECT 76 #define ISC_RET_SEQUENCE_DETECT 0x00000008 79 #ifndef ISC_RET_CONFIDENTIALITY 80 #define ISC_RET_CONFIDENTIALITY 0x00000010 83 #ifndef ISC_RET_ALLOCATED_MEMORY 84 #define ISC_RET_ALLOCATED_MEMORY 0x00000100 87 #ifndef ISC_RET_STREAM 88 #define ISC_RET_STREAM 0x00008000 91 #ifndef SEC_E_INSUFFICIENT_MEMORY 92 # define SEC_E_INSUFFICIENT_MEMORY ((HRESULT)0x80090300L) 94 #ifndef SEC_E_INVALID_HANDLE 95 # define SEC_E_INVALID_HANDLE ((HRESULT)0x80090301L) 97 #ifndef SEC_E_UNSUPPORTED_FUNCTION 98 # define SEC_E_UNSUPPORTED_FUNCTION ((HRESULT)0x80090302L) 100 #ifndef SEC_E_TARGET_UNKNOWN 101 # define SEC_E_TARGET_UNKNOWN ((HRESULT)0x80090303L) 103 #ifndef SEC_E_INTERNAL_ERROR 104 # define SEC_E_INTERNAL_ERROR ((HRESULT)0x80090304L) 106 #ifndef SEC_E_SECPKG_NOT_FOUND 107 # define SEC_E_SECPKG_NOT_FOUND ((HRESULT)0x80090305L) 109 #ifndef SEC_E_NOT_OWNER 110 # define SEC_E_NOT_OWNER ((HRESULT)0x80090306L) 112 #ifndef SEC_E_CANNOT_INSTALL 113 # define SEC_E_CANNOT_INSTALL ((HRESULT)0x80090307L) 115 #ifndef SEC_E_INVALID_TOKEN 116 # define SEC_E_INVALID_TOKEN ((HRESULT)0x80090308L) 118 #ifndef SEC_E_CANNOT_PACK 119 # define SEC_E_CANNOT_PACK ((HRESULT)0x80090309L) 121 #ifndef SEC_E_QOP_NOT_SUPPORTED 122 # define SEC_E_QOP_NOT_SUPPORTED ((HRESULT)0x8009030AL) 124 #ifndef SEC_E_NO_IMPERSONATION 125 # define SEC_E_NO_IMPERSONATION ((HRESULT)0x8009030BL) 127 #ifndef SEC_E_LOGON_DENIED 128 # define SEC_E_LOGON_DENIED ((HRESULT)0x8009030CL) 130 #ifndef SEC_E_UNKNOWN_CREDENTIALS 131 # define SEC_E_UNKNOWN_CREDENTIALS ((HRESULT)0x8009030DL) 133 #ifndef SEC_E_NO_CREDENTIALS 134 # define SEC_E_NO_CREDENTIALS ((HRESULT)0x8009030EL) 136 #ifndef SEC_E_MESSAGE_ALTERED 137 # define SEC_E_MESSAGE_ALTERED ((HRESULT)0x8009030FL) 139 #ifndef SEC_E_OUT_OF_SEQUENCE 140 # define SEC_E_OUT_OF_SEQUENCE ((HRESULT)0x80090310L) 142 #ifndef SEC_E_NO_AUTHENTICATING_AUTHORITY 143 # define SEC_E_NO_AUTHENTICATING_AUTHORITY ((HRESULT)0x80090311L) 145 #ifndef SEC_E_BAD_PKGID 146 # define SEC_E_BAD_PKGID ((HRESULT)0x80090316L) 148 #ifndef SEC_E_CONTEXT_EXPIRED 149 # define SEC_E_CONTEXT_EXPIRED ((HRESULT)0x80090317L) 151 #ifndef SEC_E_INCOMPLETE_MESSAGE 152 # define SEC_E_INCOMPLETE_MESSAGE ((HRESULT)0x80090318L) 154 #ifndef SEC_E_INCOMPLETE_CREDENTIALS 155 # define SEC_E_INCOMPLETE_CREDENTIALS ((HRESULT)0x80090320L) 157 #ifndef SEC_E_BUFFER_TOO_SMALL 158 # define SEC_E_BUFFER_TOO_SMALL ((HRESULT)0x80090321L) 160 #ifndef SEC_E_WRONG_PRINCIPAL 161 # define SEC_E_WRONG_PRINCIPAL ((HRESULT)0x80090322L) 163 #ifndef SEC_E_TIME_SKEW 164 # define SEC_E_TIME_SKEW ((HRESULT)0x80090324L) 166 #ifndef SEC_E_UNTRUSTED_ROOT 167 # define SEC_E_UNTRUSTED_ROOT ((HRESULT)0x80090325L) 169 #ifndef SEC_E_ILLEGAL_MESSAGE 170 # define SEC_E_ILLEGAL_MESSAGE ((HRESULT)0x80090326L) 172 #ifndef SEC_E_CERT_UNKNOWN 173 # define SEC_E_CERT_UNKNOWN ((HRESULT)0x80090327L) 175 #ifndef SEC_E_CERT_EXPIRED 176 # define SEC_E_CERT_EXPIRED ((HRESULT)0x80090328L) 178 #ifndef SEC_E_ENCRYPT_FAILURE 179 # define SEC_E_ENCRYPT_FAILURE ((HRESULT)0x80090329L) 181 #ifndef SEC_E_DECRYPT_FAILURE 182 # define SEC_E_DECRYPT_FAILURE ((HRESULT)0x80090330L) 184 #ifndef SEC_E_ALGORITHM_MISMATCH 185 # define SEC_E_ALGORITHM_MISMATCH ((HRESULT)0x80090331L) 187 #ifndef SEC_E_SECURITY_QOS_FAILED 188 # define SEC_E_SECURITY_QOS_FAILED ((HRESULT)0x80090332L) 190 #ifndef SEC_E_UNFINISHED_CONTEXT_DELETED 191 # define SEC_E_UNFINISHED_CONTEXT_DELETED ((HRESULT)0x80090333L) 193 #ifndef SEC_E_NO_TGT_REPLY 194 # define SEC_E_NO_TGT_REPLY ((HRESULT)0x80090334L) 196 #ifndef SEC_E_NO_IP_ADDRESSES 197 # define SEC_E_NO_IP_ADDRESSES ((HRESULT)0x80090335L) 199 #ifndef SEC_E_WRONG_CREDENTIAL_HANDLE 200 # define SEC_E_WRONG_CREDENTIAL_HANDLE ((HRESULT)0x80090336L) 202 #ifndef SEC_E_CRYPTO_SYSTEM_INVALID 203 # define SEC_E_CRYPTO_SYSTEM_INVALID ((HRESULT)0x80090337L) 205 #ifndef SEC_E_MAX_REFERRALS_EXCEEDED 206 # define SEC_E_MAX_REFERRALS_EXCEEDED ((HRESULT)0x80090338L) 208 #ifndef SEC_E_MUST_BE_KDC 209 # define SEC_E_MUST_BE_KDC ((HRESULT)0x80090339L) 211 #ifndef SEC_E_STRONG_CRYPTO_NOT_SUPPORTED 212 # define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED ((HRESULT)0x8009033AL) 214 #ifndef SEC_E_TOO_MANY_PRINCIPALS 215 # define SEC_E_TOO_MANY_PRINCIPALS ((HRESULT)0x8009033BL) 217 #ifndef SEC_E_NO_PA_DATA 218 # define SEC_E_NO_PA_DATA ((HRESULT)0x8009033CL) 220 #ifndef SEC_E_PKINIT_NAME_MISMATCH 221 # define SEC_E_PKINIT_NAME_MISMATCH ((HRESULT)0x8009033DL) 223 #ifndef SEC_E_SMARTCARD_LOGON_REQUIRED 224 # define SEC_E_SMARTCARD_LOGON_REQUIRED ((HRESULT)0x8009033EL) 226 #ifndef SEC_E_SHUTDOWN_IN_PROGRESS 227 # define SEC_E_SHUTDOWN_IN_PROGRESS ((HRESULT)0x8009033FL) 229 #ifndef SEC_E_KDC_INVALID_REQUEST 230 # define SEC_E_KDC_INVALID_REQUEST ((HRESULT)0x80090340L) 232 #ifndef SEC_E_KDC_UNABLE_TO_REFER 233 # define SEC_E_KDC_UNABLE_TO_REFER ((HRESULT)0x80090341L) 235 #ifndef SEC_E_KDC_UNKNOWN_ETYPE 236 # define SEC_E_KDC_UNKNOWN_ETYPE ((HRESULT)0x80090342L) 238 #ifndef SEC_E_UNSUPPORTED_PREAUTH 239 # define SEC_E_UNSUPPORTED_PREAUTH ((HRESULT)0x80090343L) 241 #ifndef SEC_E_DELEGATION_REQUIRED 242 # define SEC_E_DELEGATION_REQUIRED ((HRESULT)0x80090345L) 244 #ifndef SEC_E_BAD_BINDINGS 245 # define SEC_E_BAD_BINDINGS ((HRESULT)0x80090346L) 247 #ifndef SEC_E_MULTIPLE_ACCOUNTS 248 # define SEC_E_MULTIPLE_ACCOUNTS ((HRESULT)0x80090347L) 250 #ifndef SEC_E_NO_KERB_KEY 251 # define SEC_E_NO_KERB_KEY ((HRESULT)0x80090348L) 253 #ifndef SEC_E_CERT_WRONG_USAGE 254 # define SEC_E_CERT_WRONG_USAGE ((HRESULT)0x80090349L) 256 #ifndef SEC_E_DOWNGRADE_DETECTED 257 # define SEC_E_DOWNGRADE_DETECTED ((HRESULT)0x80090350L) 259 #ifndef SEC_E_SMARTCARD_CERT_REVOKED 260 # define SEC_E_SMARTCARD_CERT_REVOKED ((HRESULT)0x80090351L) 262 #ifndef SEC_E_ISSUING_CA_UNTRUSTED 263 # define SEC_E_ISSUING_CA_UNTRUSTED ((HRESULT)0x80090352L) 265 #ifndef SEC_E_REVOCATION_OFFLINE_C 266 # define SEC_E_REVOCATION_OFFLINE_C ((HRESULT)0x80090353L) 268 #ifndef SEC_E_PKINIT_CLIENT_FAILURE 269 # define SEC_E_PKINIT_CLIENT_FAILURE ((HRESULT)0x80090354L) 271 #ifndef SEC_E_SMARTCARD_CERT_EXPIRED 272 # define SEC_E_SMARTCARD_CERT_EXPIRED ((HRESULT)0x80090355L) 274 #ifndef SEC_E_NO_S4U_PROT_SUPPORT 275 # define SEC_E_NO_S4U_PROT_SUPPORT ((HRESULT)0x80090356L) 277 #ifndef SEC_E_CROSSREALM_DELEGATION_FAILURE 278 # define SEC_E_CROSSREALM_DELEGATION_FAILURE ((HRESULT)0x80090357L) 280 #ifndef SEC_E_REVOCATION_OFFLINE_KDC 281 # define SEC_E_REVOCATION_OFFLINE_KDC ((HRESULT)0x80090358L) 283 #ifndef SEC_E_ISSUING_CA_UNTRUSTED_KDC 284 # define SEC_E_ISSUING_CA_UNTRUSTED_KDC ((HRESULT)0x80090359L) 286 #ifndef SEC_E_KDC_CERT_EXPIRED 287 # define SEC_E_KDC_CERT_EXPIRED ((HRESULT)0x8009035AL) 289 #ifndef SEC_E_KDC_CERT_REVOKED 290 # define SEC_E_KDC_CERT_REVOKED ((HRESULT)0x8009035BL) 292 #ifndef SEC_E_INVALID_PARAMETER 293 # define SEC_E_INVALID_PARAMETER ((HRESULT)0x8009035DL) 295 #ifndef SEC_E_DELEGATION_POLICY 296 # define SEC_E_DELEGATION_POLICY ((HRESULT)0x8009035EL) 298 #ifndef SEC_E_POLICY_NLTM_ONLY 299 # define SEC_E_POLICY_NLTM_ONLY ((HRESULT)0x8009035FL) 302 #ifndef SEC_I_CONTINUE_NEEDED 303 # define SEC_I_CONTINUE_NEEDED ((HRESULT)0x00090312L) 305 #ifndef SEC_I_COMPLETE_NEEDED 306 # define SEC_I_COMPLETE_NEEDED ((HRESULT)0x00090313L) 308 #ifndef SEC_I_COMPLETE_AND_CONTINUE 309 # define SEC_I_COMPLETE_AND_CONTINUE ((HRESULT)0x00090314L) 311 #ifndef SEC_I_LOCAL_LOGON 312 # define SEC_I_LOCAL_LOGON ((HRESULT)0x00090315L) 314 #ifndef SEC_I_CONTEXT_EXPIRED 315 # define SEC_I_CONTEXT_EXPIRED ((HRESULT)0x00090317L) 317 #ifndef SEC_I_INCOMPLETE_CREDENTIALS 318 # define SEC_I_INCOMPLETE_CREDENTIALS ((HRESULT)0x00090320L) 320 #ifndef SEC_I_RENEGOTIATE 321 # define SEC_I_RENEGOTIATE ((HRESULT)0x00090321L) 323 #ifndef SEC_I_NO_LSA_CONTEXT 324 # define SEC_I_NO_LSA_CONTEXT ((HRESULT)0x00090323L) 326 #ifndef SEC_I_SIGNATURE_NEEDED 327 # define SEC_I_SIGNATURE_NEEDED ((HRESULT)0x0009035CL) 330 #ifndef CRYPT_E_REVOKED 331 # define CRYPT_E_REVOKED ((HRESULT)0x80092010L) 335 # define SECFLAG_WINNT_AUTH_IDENTITY \ 336 (unsigned long)SEC_WINNT_AUTH_IDENTITY_UNICODE 338 # define SECFLAG_WINNT_AUTH_IDENTITY \ 339 (unsigned long)SEC_WINNT_AUTH_IDENTITY_ANSI 346 #define KERB_WRAP_NO_ENCRYPT 0x80000001