1#ifndef HEADER_CURL_SASL_H 2#define HEADER_CURL_SASL_H 3/*************************************************************************** 4 * _ _ ____ _ 5 * Project ___| | | | _ \| | 6 * / __| | | | |_) | | 7 * | (__| |_| | _ <| |___ 8 * \___|\___/|_| \_\_____| 9 * 10 * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. 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 http://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 "pingpong.h" 26 27/* Authentication mechanism flags */ 28#define SASL_MECH_LOGIN 0x0001 29#define SASL_MECH_PLAIN 0x0002 30#define SASL_MECH_CRAM_MD5 0x0004 31#define SASL_MECH_DIGEST_MD5 0x0008 32#define SASL_MECH_GSSAPI 0x0010 33#define SASL_MECH_EXTERNAL 0x0020 34#define SASL_MECH_NTLM 0x0040 35 36/* This is used to generate a base64 encoded PLAIN authentication message */ 37CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data, 38 const char *userp, 39 const char *passwdp, 40 char **outptr, size_t *outlen); 41 42/* This is used to generate a base64 encoded LOGIN authentication message 43 containing either the user name or password details */ 44CURLcode Curl_sasl_create_login_message(struct SessionHandle *data, 45 const char *valuep, char **outptr, 46 size_t *outlen); 47 48#ifndef CURL_DISABLE_CRYPTO_AUTH 49/* This is used to generate a base64 encoded CRAM-MD5 response message */ 50CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data, 51 const char *chlg64, 52 const char *user, 53 const char *passwdp, 54 char **outptr, size_t *outlen); 55 56/* This is used to generate a base64 encoded DIGEST-MD5 response message */ 57CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data, 58 const char *chlg64, 59 const char *user, 60 const char *passwdp, 61 const char *service, 62 char **outptr, size_t *outlen); 63#endif 64 65#ifdef USE_NTLM 66/* This is used to generate a base64 encoded NTLM type-1 message */ 67CURLcode Curl_sasl_create_ntlm_type1_message(const char *userp, 68 const char *passwdp, 69 struct ntlmdata *ntlm, 70 char **outptr, 71 size_t *outlen); 72 73/* This is used to decode an incoming NTLM type-2 message and generate a 74 base64 encoded type-3 response */ 75CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data, 76 const char *header, 77 const char *userp, 78 const char *passwdp, 79 struct ntlmdata *ntlm, 80 char **outptr, size_t *outlen); 81 82#endif /* USE_NTLM */ 83 84/* This is used to cleanup any libraries or curl modules used by the sasl 85 functions */ 86void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused); 87 88#endif /* HEADER_CURL_SASL_H */ 89