Blame view

pop3d/stls.c 1.4 KB
1
/* GNU Mailutils -- a suite of utilities for electronic mail
2
   Copyright (C) 2003, 2007, 2009, 2010 Free Software Foundation, Inc.
3 4 5

   GNU Mailutils is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
6
   the Free Software Foundation; either version 3, or (at your option)
7 8 9 10 11 12 13 14
   any later version.

   GNU Mailutils is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
15
   along with GNU Mailutils.  If not, see <http://www.gnu.org/licenses/>. */
16 17 18 19 20 21 22 23

#include "pop3d.h"

/* STLS command -- TLS/SSL encryption */

#ifdef WITH_TLS

int
24
pop3d_stls (char *arg)
25 26 27 28
{
  if (strlen (arg) != 0)
    return ERR_BAD_ARGS;

29
  if (state != initial_state)
30 31
    return ERR_WRONG_STATE;

32 33 34
  if (tls_done)
    return ERR_TLS_ACTIVE;

Sergey Poznyakoff authored
35
  pop3d_outf ("+OK Begin TLS negotiation\n");
36 37
  pop3d_flush_output ();

38
  tls_done = pop3d_init_tls_server () == 0;
39 40

  if (!tls_done)
41 42 43 44 45
    {
      mu_diag_output (MU_DIAG_ERROR, _("Session terminated"));
      state = ABORT;
      return ERR_UNKNOWN;
    }
46

47 48 49
  state = AUTHORIZATION;  /* Confirm we're in this state. Necessary for
			     --tls-required to work */

50 51 52 53 54
  return OK;
}

#endif /* WITH_TLS */