Annotation of embedaddon/curl/lib/vauth/vauth.h, revision 1.1
1.1 ! misho 1: #ifndef HEADER_CURL_VAUTH_H
! 2: #define HEADER_CURL_VAUTH_H
! 3: /***************************************************************************
! 4: * _ _ ____ _
! 5: * Project ___| | | | _ \| |
! 6: * / __| | | | |_) | |
! 7: * | (__| |_| | _ <| |___
! 8: * \___|\___/|_| \_\_____|
! 9: *
! 10: * Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>.
! 11: *
! 12: * This software is licensed as described in the file COPYING, which
! 13: * you should have received as part of this distribution. The terms
! 14: * are also available at https://curl.haxx.se/docs/copyright.html.
! 15: *
! 16: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 17: * copies of the Software, and permit persons to whom the Software is
! 18: * furnished to do so, under the terms of the COPYING file.
! 19: *
! 20: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 21: * KIND, either express or implied.
! 22: *
! 23: ***************************************************************************/
! 24:
! 25: #include <curl/curl.h>
! 26:
! 27: struct Curl_easy;
! 28:
! 29: #if !defined(CURL_DISABLE_CRYPTO_AUTH)
! 30: struct digestdata;
! 31: #endif
! 32:
! 33: #if defined(USE_NTLM)
! 34: struct ntlmdata;
! 35: #endif
! 36:
! 37: #if defined(USE_KERBEROS5)
! 38: struct kerberos5data;
! 39: #endif
! 40:
! 41: #if (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)) && defined(USE_SPNEGO)
! 42: struct negotiatedata;
! 43: #endif
! 44:
! 45: #if defined(USE_WINDOWS_SSPI)
! 46: #define GSS_ERROR(status) ((status) & 0x80000000)
! 47: #endif
! 48:
! 49: /* This is used to build a SPN string */
! 50: #if !defined(USE_WINDOWS_SSPI)
! 51: char *Curl_auth_build_spn(const char *service, const char *host,
! 52: const char *realm);
! 53: #else
! 54: TCHAR *Curl_auth_build_spn(const char *service, const char *host,
! 55: const char *realm);
! 56: #endif
! 57:
! 58: /* This is used to test if the user contains a Windows domain name */
! 59: bool Curl_auth_user_contains_domain(const char *user);
! 60:
! 61: /* This is used to generate a base64 encoded PLAIN cleartext message */
! 62: CURLcode Curl_auth_create_plain_message(struct Curl_easy *data,
! 63: const char *authzid,
! 64: const char *authcid,
! 65: const char *passwd,
! 66: char **outptr, size_t *outlen);
! 67:
! 68: /* This is used to generate a base64 encoded LOGIN cleartext message */
! 69: CURLcode Curl_auth_create_login_message(struct Curl_easy *data,
! 70: const char *valuep, char **outptr,
! 71: size_t *outlen);
! 72:
! 73: /* This is used to generate a base64 encoded EXTERNAL cleartext message */
! 74: CURLcode Curl_auth_create_external_message(struct Curl_easy *data,
! 75: const char *user, char **outptr,
! 76: size_t *outlen);
! 77:
! 78: #if !defined(CURL_DISABLE_CRYPTO_AUTH)
! 79: /* This is used to decode a CRAM-MD5 challenge message */
! 80: CURLcode Curl_auth_decode_cram_md5_message(const char *chlg64, char **outptr,
! 81: size_t *outlen);
! 82:
! 83: /* This is used to generate a CRAM-MD5 response message */
! 84: CURLcode Curl_auth_create_cram_md5_message(struct Curl_easy *data,
! 85: const char *chlg,
! 86: const char *userp,
! 87: const char *passwdp,
! 88: char **outptr, size_t *outlen);
! 89:
! 90: /* This is used to evaluate if DIGEST is supported */
! 91: bool Curl_auth_is_digest_supported(void);
! 92:
! 93: /* This is used to generate a base64 encoded DIGEST-MD5 response message */
! 94: CURLcode Curl_auth_create_digest_md5_message(struct Curl_easy *data,
! 95: const char *chlg64,
! 96: const char *userp,
! 97: const char *passwdp,
! 98: const char *service,
! 99: char **outptr, size_t *outlen);
! 100:
! 101: /* This is used to decode a HTTP DIGEST challenge message */
! 102: CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
! 103: struct digestdata *digest);
! 104:
! 105: /* This is used to generate a HTTP DIGEST response message */
! 106: CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data,
! 107: const char *userp,
! 108: const char *passwdp,
! 109: const unsigned char *request,
! 110: const unsigned char *uri,
! 111: struct digestdata *digest,
! 112: char **outptr, size_t *outlen);
! 113:
! 114: /* This is used to clean up the digest specific data */
! 115: void Curl_auth_digest_cleanup(struct digestdata *digest);
! 116: #endif /* !CURL_DISABLE_CRYPTO_AUTH */
! 117:
! 118: #if defined(USE_NTLM)
! 119: /* This is used to evaluate if NTLM is supported */
! 120: bool Curl_auth_is_ntlm_supported(void);
! 121:
! 122: /* This is used to generate a base64 encoded NTLM type-1 message */
! 123: CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
! 124: const char *userp,
! 125: const char *passwdp,
! 126: const char *service,
! 127: const char *host,
! 128: struct ntlmdata *ntlm,
! 129: char **outptr,
! 130: size_t *outlen);
! 131:
! 132: /* This is used to decode a base64 encoded NTLM type-2 message */
! 133: CURLcode Curl_auth_decode_ntlm_type2_message(struct Curl_easy *data,
! 134: const char *type2msg,
! 135: struct ntlmdata *ntlm);
! 136:
! 137: /* This is used to generate a base64 encoded NTLM type-3 message */
! 138: CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
! 139: const char *userp,
! 140: const char *passwdp,
! 141: struct ntlmdata *ntlm,
! 142: char **outptr, size_t *outlen);
! 143:
! 144: /* This is used to clean up the NTLM specific data */
! 145: void Curl_auth_cleanup_ntlm(struct ntlmdata *ntlm);
! 146: #endif /* USE_NTLM */
! 147:
! 148: /* This is used to generate a base64 encoded OAuth 2.0 message */
! 149: CURLcode Curl_auth_create_oauth_bearer_message(struct Curl_easy *data,
! 150: const char *user,
! 151: const char *host,
! 152: const long port,
! 153: const char *bearer,
! 154: char **outptr, size_t *outlen);
! 155:
! 156: /* This is used to generate a base64 encoded XOAuth 2.0 message */
! 157: CURLcode Curl_auth_create_xoauth_bearer_message(struct Curl_easy *data,
! 158: const char *user,
! 159: const char *bearer,
! 160: char **outptr, size_t *outlen);
! 161:
! 162: #if defined(USE_KERBEROS5)
! 163: /* This is used to evaluate if GSSAPI (Kerberos V5) is supported */
! 164: bool Curl_auth_is_gssapi_supported(void);
! 165:
! 166: /* This is used to generate a base64 encoded GSSAPI (Kerberos V5) user token
! 167: message */
! 168: CURLcode Curl_auth_create_gssapi_user_message(struct Curl_easy *data,
! 169: const char *userp,
! 170: const char *passwdp,
! 171: const char *service,
! 172: const char *host,
! 173: const bool mutual,
! 174: const char *chlg64,
! 175: struct kerberos5data *krb5,
! 176: char **outptr, size_t *outlen);
! 177:
! 178: /* This is used to generate a base64 encoded GSSAPI (Kerberos V5) security
! 179: token message */
! 180: CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
! 181: const char *input,
! 182: struct kerberos5data *krb5,
! 183: char **outptr,
! 184: size_t *outlen);
! 185:
! 186: /* This is used to clean up the GSSAPI specific data */
! 187: void Curl_auth_cleanup_gssapi(struct kerberos5data *krb5);
! 188: #endif /* USE_KERBEROS5 */
! 189:
! 190: #if defined(USE_SPNEGO)
! 191: /* This is used to evaluate if SPNEGO (Negotiate) is supported */
! 192: bool Curl_auth_is_spnego_supported(void);
! 193:
! 194: /* This is used to decode a base64 encoded SPNEGO (Negotiate) challenge
! 195: message */
! 196: CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
! 197: const char *user,
! 198: const char *passwood,
! 199: const char *service,
! 200: const char *host,
! 201: const char *chlg64,
! 202: struct negotiatedata *nego);
! 203:
! 204: /* This is used to generate a base64 encoded SPNEGO (Negotiate) response
! 205: message */
! 206: CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
! 207: struct negotiatedata *nego,
! 208: char **outptr, size_t *outlen);
! 209:
! 210: /* This is used to clean up the SPNEGO specifiec data */
! 211: void Curl_auth_cleanup_spnego(struct negotiatedata *nego);
! 212:
! 213: #endif /* USE_SPNEGO */
! 214:
! 215: #endif /* HEADER_CURL_VAUTH_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>