37 #if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_FTP) 57 krb5_init(
void *app_data)
66 krb5_check_prot(
void *app_data,
int level)
69 if(level == PROT_CONFIDENTIAL)
75 krb5_decode(
void *app_data,
void *
buf,
int len,
88 maj =
gss_unseal(&min, *context, &enc, &dec, NULL, NULL);
103 krb5_overhead(
void *app_data,
int level,
int len)
113 krb5_encode(
void *app_data,
const void *
from,
int length,
int level,
void **to)
124 dec.
value = (
void *)from;
127 level == PROT_PRIVATE,
146 krb5_auth(
void *app_data,
struct connectdata *conn)
158 const char *srv_host =
"host";
164 size_t base64_sz = 0;
165 struct sockaddr_in **remote_addr =
170 (
struct sockaddr *)&conn->local_addr, &l) < 0)
171 perror(
"getsockname()");
174 chan.initiator_address.length = l - 4;
175 chan.initiator_address.value = &conn->local_addr.sin_addr.s_addr;
177 chan.acceptor_address.length = l - 4;
178 chan.acceptor_address.value = &(*remote_addr)->sin_addr.s_addr;
179 chan.application_data.length = 0;
180 chan.application_data.value = NULL;
185 if(service == srv_host) {
197 stringp =
aprintf(
"%s@%s", service, host);
201 input_buffer.
value = stringp;
202 input_buffer.
length = strlen(stringp);
208 if(service == srv_host) {
209 Curl_failf(data,
"Error importing service name %s@%s", service, host);
227 maj = Curl_gss_init_sec_context(data,
244 Curl_infof(data,
"Error creating security context\n");
249 if(output_buffer.
length != 0) {
253 output_buffer.
length, &p, &base64_sz);
280 Curl_infof(data,
"Server didn't accept auth data\n");
286 p = strstr(p,
"ADAT=");
289 (
unsigned char **)&_gssresp.
value,
309 if(ret ==
AUTH_OK || service == srv_host)
317 static void krb5_end(
void *app_data)
OM_uint32 gss_release_buffer(OM_uint32 *min, gss_buffer_t buffer)
CURLcode Curl_ftpsend(struct connectdata *conn, const char *cmd)
#define GSS_S_CONTINUE_NEEDED
CURLcode Curl_base64_decode(const char *src, unsigned char **outptr, size_t *outlen)
CURLcode Curl_base64_encode(struct Curl_easy *data, const char *inputbuff, size_t insize, char **outptr, size_t *outlen)
CURLcode Curl_GetFTPResponse(ssize_t *nreadp, struct connectdata *conn, int *ftpcode)
OM_uint32 gss_display_name(OM_uint32 *min, gss_const_name_t input_name, gss_buffer_t output_name_buffer, gss_OID *output_name_type)
int curlx_uztosi(size_t uznum)
struct gss_name_t_desc_struct * gss_name_t
void Curl_failf(struct Curl_easy *data, const char *fmt,...)
UNITTEST_START int result
static srvr_sockaddr_union_t from
struct sockaddr * ai_addr
#define GSS_C_NT_HOSTBASED_SERVICE
memcpy(filename, filename1, strlen(filename1))
CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t
double min(double a, double b)
void Curl_infof(struct Curl_easy *data, const char *fmt,...)
#define GSS_ERROR(status)
OM_uint32 gss_release_name(OM_uint32 *min, gss_name_t *input_name)
#define gss_delete_sec_context
#define GSS_C_QOP_DEFAULT
CURL_EXTERN const char * curl_easy_strerror(CURLcode)
struct gss_ctx_id_t_desc_struct * gss_ctx_id_t