34#define _BASIC_BASE "Basic "
70 if (0 != strncmp (header,
77 if (0 != (enc_size % 4))
80 MHD_DLOG (connection->
daemon,
81 _ (
"Bad length of basic authentication value.\n"));
85 dec_size = MHD_base64_max_dec_size_ (enc_size);
86 decode = (
char *) malloc (dec_size + 1);
90 MHD_DLOG (connection->
daemon,
91 _ (
"Failed to allocate memory.\n"));
95 dec_size = MHD_base64_to_bin_n (header, enc_size, decode, dec_size);
100 separator = memchr (decode,
':', dec_size);
101 if (
NULL != separator)
104 if (
NULL == password)
108 *password = strdup (separator + 1);
109 if (
NULL != *password)
114 MHD_DLOG (connection->
daemon,
115 _ (
"Failed to allocate memory for password.\n"));
123 MHD_DLOG (connection->
daemon,
124 _ (
"Basic authentication doesn't contain ':' separator.\n"));
131 MHD_DLOG (connection->
daemon,
132 _ (
"Error decoding basic authentication.\n"));
159 size_t hlen = strlen (realm) + strlen (
"Basic realm=\"\"") + 1;
162 header = (
char *) malloc (hlen);
166 MHD_DLOG (connection->
daemon,
167 "Failed to allocate memory for auth header.\n");
171 res = MHD_snprintf_ (header,
173 "Basic realm=\"%s\"",
175 if ((res > 0) && ((
size_t) res < hlen))
192 MHD_DLOG (connection->
daemon,
193 _ (
"Failed to add Basic auth header.\n"));
_MHD_EXTERN char * MHD_basic_auth_get_username_password(struct MHD_Connection *connection, char **password)
_MHD_EXTERN enum MHD_Result MHD_queue_basic_auth_fail_response(struct MHD_Connection *connection, const char *realm, struct MHD_Response *response)
#define MHD_HTTP_UNAUTHORIZED
_MHD_EXTERN enum MHD_Result MHD_lookup_connection_value_n(struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key, size_t key_size, const char **value_ptr, size_t *value_size_ptr)
_MHD_EXTERN enum MHD_Result MHD_queue_response(struct MHD_Connection *connection, unsigned int status_code, struct MHD_Response *response)
_MHD_EXTERN enum MHD_Result MHD_add_response_header(struct MHD_Response *response, const char *header, const char *content)
#define MHD_STATICSTR_LEN_(macro)
MHD internal shared structures.
Header for platform missing functions.
limits values definitions
Header for string manipulating helpers.
struct MHD_Daemon * daemon