1
/* Copyright (c) 2013 Dovecot authors, see the included COPYING file */
5
#include "dsasl-client-private.h"
13
struct login_dsasl_client {
14
struct dsasl_client client;
15
enum login_state state;
19
mech_login_input(struct dsasl_client *_client,
20
const unsigned char *input ATTR_UNUSED,
21
unsigned int input_len ATTR_UNUSED,
24
struct login_dsasl_client *client =
25
(struct login_dsasl_client *)_client;
27
if (client->state == STATE_PASS) {
28
*error_r = "Server didn't finish authentication";
36
mech_login_output(struct dsasl_client *_client,
37
const unsigned char **output_r, unsigned int *output_len_r,
40
struct login_dsasl_client *client =
41
(struct login_dsasl_client *)_client;
43
if (_client->set.authid == NULL) {
44
*error_r = "authid not set";
47
if (_client->password == NULL) {
48
*error_r = "password not set";
52
switch (client->state) {
54
*output_r = &uchar_nul;
58
*output_r = (const unsigned char *)_client->set.authid;
59
*output_len_r = strlen(_client->set.authid);
62
*output_r = (const unsigned char *)_client->set.password;
63
*output_len_r = strlen(_client->set.password);
69
const struct dsasl_client_mech dsasl_client_mech_login = {
71
.struct_size = sizeof(struct login_dsasl_client),
73
.input = mech_login_input,
74
.output = mech_login_output