Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "curl_setup.h"
00027
00028 #include <curl/curl.h>
00029 #include "urldata.h"
00030
00031 #include "vauth/vauth.h"
00032 #include "curl_base64.h"
00033 #include "curl_md5.h"
00034 #include "warnless.h"
00035 #include "strtok.h"
00036 #include "sendf.h"
00037 #include "curl_printf.h"
00038
00039
00040 #include "curl_memory.h"
00041 #include "memdebug.h"
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 CURLcode Curl_auth_create_plain_message(struct Curl_easy *data,
00061 const char *userp,
00062 const char *passwdp,
00063 char **outptr, size_t *outlen)
00064 {
00065 CURLcode result;
00066 char *plainauth;
00067 size_t ulen;
00068 size_t plen;
00069 size_t plainlen;
00070
00071 *outlen = 0;
00072 *outptr = NULL;
00073 ulen = strlen(userp);
00074 plen = strlen(passwdp);
00075
00076
00077 plainlen = 2 * ulen;
00078 if(plainlen < ulen)
00079 return CURLE_OUT_OF_MEMORY;
00080 plainlen += plen;
00081 if(plainlen < plen)
00082 return CURLE_OUT_OF_MEMORY;
00083 plainlen += 2;
00084 if(plainlen < 2)
00085 return CURLE_OUT_OF_MEMORY;
00086
00087 plainauth = malloc(plainlen);
00088 if(!plainauth)
00089 return CURLE_OUT_OF_MEMORY;
00090
00091
00092 memcpy(plainauth, userp, ulen);
00093 plainauth[ulen] = '\0';
00094 memcpy(plainauth + ulen + 1, userp, ulen);
00095 plainauth[2 * ulen + 1] = '\0';
00096 memcpy(plainauth + 2 * ulen + 2, passwdp, plen);
00097
00098
00099 result = Curl_base64_encode(data, plainauth, plainlen, outptr, outlen);
00100 free(plainauth);
00101
00102 return result;
00103 }
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 CURLcode Curl_auth_create_login_message(struct Curl_easy *data,
00122 const char *valuep, char **outptr,
00123 size_t *outlen)
00124 {
00125 size_t vlen = strlen(valuep);
00126
00127 if(!vlen) {
00128
00129 *outptr = strdup("=");
00130 if(*outptr) {
00131 *outlen = (size_t) 1;
00132 return CURLE_OK;
00133 }
00134
00135 *outlen = 0;
00136 return CURLE_OUT_OF_MEMORY;
00137 }
00138
00139
00140 return Curl_base64_encode(data, valuep, vlen, outptr, outlen);
00141 }
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159 CURLcode Curl_auth_create_external_message(struct Curl_easy *data,
00160 const char *user, char **outptr,
00161 size_t *outlen)
00162 {
00163
00164 return Curl_auth_create_login_message(data, user, outptr, outlen);
00165 }