48 #define CNONCE_ENTROPY_BYTES 16
82 state = calloc (1,
sizeof (*state));
102 char **output,
size_t *output_len)
110 if (state->
step == 0)
156 else if (strcmp (qop,
"qop-int") == 0)
158 else if (strcmp (qop,
"qop-auth") == 0)
178 service, hostname) < 0)
224 rc = gc_md5 (tmp, strlen (tmp), state->
secret);
248 *output_len = strlen (*output);
309 char **output,
size_t *output_len)
333 char **output,
size_t *output_len)
int gsasl_base64_to(const char *in, size_t inlen, char **out, size_t *outlen)
int gsasl_callback(Gsasl *ctx, Gsasl_session *sctx, Gsasl_property prop)
int gsasl_nonce(char *data, size_t datalen)
int _gsasl_digest_md5_client_decode(Gsasl_session *sctx _GL_UNUSED, void *mech_data, const char *input, size_t input_len, char **output, size_t *output_len)
int _gsasl_digest_md5_client_encode(Gsasl_session *sctx _GL_UNUSED, void *mech_data, const char *input, size_t input_len, char **output, size_t *output_len)
int _gsasl_digest_md5_client_step(Gsasl_session *sctx, void *mech_data, const char *input, size_t input_len, char **output, size_t *output_len)
void _gsasl_digest_md5_client_finish(Gsasl_session *sctx _GL_UNUSED, void *mech_data)
#define CNONCE_ENTROPY_BYTES
int _gsasl_digest_md5_client_start(Gsasl_session *sctx _GL_UNUSED, void **mech_data)
void digest_md5_free_finish(digest_md5_finish *f)
void digest_md5_free_response(digest_md5_response *r)
void digest_md5_free_challenge(digest_md5_challenge *c)
int digest_md5_parse_challenge(const char *challenge, size_t len, digest_md5_challenge *out)
int digest_md5_parse_finish(const char *finish, size_t len, digest_md5_finish *out)
char * digest_md5_print_response(digest_md5_response *r)
@ DIGEST_MD5_QOP_AUTH_INT
#define DIGEST_MD5_RESPONSE_LENGTH
#define DIGEST_MD5_LENGTH
int digest_md5_hmac(char *output, char secret[MD5LEN], const char *nonce, unsigned long nc, const char *cnonce, digest_md5_qop qop, const char *authzid, const char *digesturi, int rspauth, digest_md5_cipher cipher, char *kic, char *kis, char *kcc, char *kcs)
@ GSASL_AUTHENTICATION_ERROR
@ GSASL_MECHANISM_CALLED_TOO_MANY_TIMES
@ GSASL_MECHANISM_PARSE_ERROR
_GSASL_API int gsasl_property_set(Gsasl_session *sctx, Gsasl_property prop, const char *data)
_GSASL_API const char * gsasl_property_get(Gsasl_session *sctx, Gsasl_property prop)
_GSASL_API const char * gsasl_property_fast(Gsasl_session *sctx, Gsasl_property prop)
char * utf8tolatin1ifpossible(const char *passwd)
const char * digest_md5_qops2qopstr(int qops)
int digest_md5_decode(const char *input, size_t input_len, char **output, size_t *output_len, digest_md5_qop qop, unsigned long readseqnum, char key[DIGEST_MD5_LENGTH])
int digest_md5_encode(const char *input, size_t input_len, char **output, size_t *output_len, digest_md5_qop qop, unsigned long sendseqnum, char key[DIGEST_MD5_LENGTH])
char kis[DIGEST_MD5_LENGTH]
char kcc[DIGEST_MD5_LENGTH]
char kcs[DIGEST_MD5_LENGTH]
digest_md5_response response
char kic[DIGEST_MD5_LENGTH]
char secret[DIGEST_MD5_LENGTH]
digest_md5_challenge challenge
char rspauth[DIGEST_MD5_RESPONSE_LENGTH+1]
char response[DIGEST_MD5_RESPONSE_LENGTH+1]