Annotation of embedaddon/curl/lib/vauth/vauth.h, revision 1.1.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>