unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: gnus/starttls.el and net/tls.el
       [not found] <E1Ipflm-0004Yx-6I@fencepost.gnu.org>
@ 2007-11-08 13:35 ` Simon Josefsson
  2007-11-09 22:00   ` Richard Stallman
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Josefsson @ 2007-11-08 13:35 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

(I'm cc'ing emacs-devel since there appears to be other threads
discussing this already.)

Richard Stallman <rms@gnu.org> writes:

> Can you tell me how these two files relate to each other?

They both create a TLS encrypted network socket using external tools,
but there is some differences:

tls.el starts talking TLS to the server directly.  starttls.el, however,
does not begin talking TLS until the application calls
starttls-negotiate.  In other words, starttls.el allows an unencrypted
phase before the encrypted phase starts.

tls.el can use openssl and gnutls.  starttls.el can use gnutls and a
tool called 'starttls'.

They serve (slightly) different purposes, but there is some code
duplication.  They probably should be merged eventually, but it requires
some effort (especially testing on many operating systems) and I'm
afraid I don't have time to work on it.

/Simon

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-08 13:35 ` gnus/starttls.el and net/tls.el Simon Josefsson
@ 2007-11-09 22:00   ` Richard Stallman
  2007-11-15 14:20     ` Simon Josefsson
  0 siblings, 1 reply; 9+ messages in thread
From: Richard Stallman @ 2007-11-09 22:00 UTC (permalink / raw)
  To: Simon Josefsson; +Cc: emacs-devel

    tls.el starts talking TLS to the server directly.  starttls.el, however,
    does not begin talking TLS until the application calls
    starttls-negotiate.  In other words, starttls.el allows an unencrypted
    phase before the encrypted phase starts.

Would it be hard to extend tls.el to provide a way to do this?

    tls.el can use openssl and gnutls.  starttls.el can use gnutls and a
    tool called 'starttls'.

What is the point of `starttls'?  For what purpose is it useful
to use that, rather than GNUtls?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-09 22:00   ` Richard Stallman
@ 2007-11-15 14:20     ` Simon Josefsson
  2007-11-16  4:29       ` Richard Stallman
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Josefsson @ 2007-11-15 14:20 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     tls.el starts talking TLS to the server directly.  starttls.el, however,
>     does not begin talking TLS until the application calls
>     starttls-negotiate.  In other words, starttls.el allows an unencrypted
>     phase before the encrypted phase starts.
>
> Would it be hard to extend tls.el to provide a way to do this?

It would require some work, but it is possible.  (Alas, I don't think I
have time to do it.)

Semantically, the tls-package could be implemented via starttls.el by
calling the 'open' and then the 'negotiate' function.  However, tls.el
and starttls.el differ by supporting different external tools, so some
users may get upset if, e.g., the 'starttls' or 'OpenSSL' way stops
working.

I'm not sure I understand the reason though.  Is it to avoid having two
files?  If so, how about moving the code in starttls.el into tls.el?
That would make it easier to slowly re-factor the code to avoid code
duplication.  On the other hand, starttls.el is used by a couple of
packages already, which may break.

>     tls.el can use openssl and gnutls.  starttls.el can use gnutls and a
>     tool called 'starttls'.
>
> What is the point of `starttls'?  For what purpose is it useful
> to use that, rather than GNUtls?

Today, I don't think there is any reason, but I may be biased towards
favoring GnuTLS.  gnutls-cli didn't used to support starttls operations,
but it does today.  As far as I remember, 'starttls' doesn't verify
server certificates, so starttls may be considered insecure.

/Simon

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-15 14:20     ` Simon Josefsson
@ 2007-11-16  4:29       ` Richard Stallman
  2007-11-26 15:28         ` Simon Josefsson
  0 siblings, 1 reply; 9+ messages in thread
From: Richard Stallman @ 2007-11-16  4:29 UTC (permalink / raw)
  To: Simon Josefsson; +Cc: emacs-devel

    I'm not sure I understand the reason though.  Is it to avoid having two
    files?

It is to avoid the code duplication.

	    If so, how about moving the code in starttls.el into tls.el?

I don't exactly object, but I am not sure that is the best way.

    Today, I don't think there is any reason, but I may be biased towards
    favoring GnuTLS.  gnutls-cli didn't used to support starttls operations,
    but it does today.  As far as I remember, 'starttls' doesn't verify
    server certificates, so starttls may be considered insecure.

It sounds like the thing to do is to reimplement the useful features
of starttls.el in tls.el.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-16  4:29       ` Richard Stallman
@ 2007-11-26 15:28         ` Simon Josefsson
  2007-11-26 22:39           ` Richard Stallman
  2007-11-28 13:44           ` Sascha Wilde
  0 siblings, 2 replies; 9+ messages in thread
From: Simon Josefsson @ 2007-11-26 15:28 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I'm not sure I understand the reason though.  Is it to avoid having two
>     files?
>
> It is to avoid the code duplication.
>
> 	    If so, how about moving the code in starttls.el into tls.el?
>
> I don't exactly object, but I am not sure that is the best way.
>
>     Today, I don't think there is any reason, but I may be biased towards
>     favoring GnuTLS.  gnutls-cli didn't used to support starttls operations,
>     but it does today.  As far as I remember, 'starttls' doesn't verify
>     server certificates, so starttls may be considered insecure.
>
> It sounds like the thing to do is to reimplement the useful features
> of starttls.el in tls.el.

The problem is the different set of external dependencies:

 tls.el: use gnutls-cli (GnuTLS) or s_client (OpenSSL)
 starttls.el: use gnutls-cli (GnuTLS) or starttls

As far as I can tell, OpenSSL does not support the general starttls
behaviour, so we cannot switch to that tls.el and starttls.el both
support gnutls+openssl.  Depending on which mode you want to support
(direct tls or the starttls approach) the tls.el code need to change
which tool it uses.  Merging the code paths will lead to a rather
complex code-path, which is tricky to code and debug.  It will likely
also lead to new or different user variables, which will break existing
users configurations, which is another problem.

I'm afraid I don't have time to work on this now.  If someone else likes
to do it, I could try to help in discussions.

/Simon

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-26 15:28         ` Simon Josefsson
@ 2007-11-26 22:39           ` Richard Stallman
  2007-11-28 13:44           ` Sascha Wilde
  1 sibling, 0 replies; 9+ messages in thread
From: Richard Stallman @ 2007-11-26 22:39 UTC (permalink / raw)
  To: Simon Josefsson; +Cc: emacs-devel

I guess we are stuck with the duplication.

Could you write some text to compare the capabilities
and uses of tls.el and starttls.el, so people can tell which
is best for a given use, and insert that in the comments section
of both tls.el and starttls.el?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-26 15:28         ` Simon Josefsson
  2007-11-26 22:39           ` Richard Stallman
@ 2007-11-28 13:44           ` Sascha Wilde
  2007-11-29 11:34             ` Simon Josefsson
  1 sibling, 1 reply; 9+ messages in thread
From: Sascha Wilde @ 2007-11-28 13:44 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

Simon Josefsson <simon@josefsson.org> wrote:
> The problem is the different set of external dependencies:
>
>  tls.el: use gnutls-cli (GnuTLS) or s_client (OpenSSL)
>  starttls.el: use gnutls-cli (GnuTLS) or starttls
>
> As far as I can tell, OpenSSL does not support the general starttls
> behaviour, so we cannot switch to that tls.el and starttls.el both
> support gnutls+openssl.

I'm not sure that I properly understood the problem (and I haven't read
the whole thread), but OpenSSL supports StartTLS, like:

  openssl s_client -starttls smtp -connect mail.example.com

does this do what you need to support s_client in starttls.el?

cheers
sascha
-- 
Sascha Wilde : The sum of intelligence on earth is a constant; 
             : population is growing

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-28 13:44           ` Sascha Wilde
@ 2007-11-29 11:34             ` Simon Josefsson
  2007-11-29 12:08               ` Sascha Wilde
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Josefsson @ 2007-11-29 11:34 UTC (permalink / raw)
  To: Sascha Wilde; +Cc: rms, emacs-devel

Sascha Wilde <wilde@sha-bang.de> writes:

> Simon Josefsson <simon@josefsson.org> wrote:
>> The problem is the different set of external dependencies:
>>
>>  tls.el: use gnutls-cli (GnuTLS) or s_client (OpenSSL)
>>  starttls.el: use gnutls-cli (GnuTLS) or starttls
>>
>> As far as I can tell, OpenSSL does not support the general starttls
>> behaviour, so we cannot switch to that tls.el and starttls.el both
>> support gnutls+openssl.
>
> I'm not sure that I properly understood the problem (and I haven't read
> the whole thread), but OpenSSL supports StartTLS, like:
>
>   openssl s_client -starttls smtp -connect mail.example.com
>
> does this do what you need to support s_client in starttls.el?

Not entirely, OpenSSL only supports starttls for a few application
protocols:

 -starttls prot - use the STARTTLS command before starting TLS
                 for those protocols that support it, where
                 'prot' defines which one to assume.  Currently,
                 only "smtp", "pop3", "imap", and "ftp" are supported.

Right now, in Emacs, I think starttls support is used for IMAP, SMTP,
POP3 and ManageSieve.  There is no support for Managesieve in OpenSSL...

Further, the starttls elisp functions in Emacs are application protocol
agnostic, so we would have to add a parameter to indicate which
application protocol is used.  That seems like a API layer violation,
but if there were no other problem (like the managesieve issue), maybe
we could do that.

/Simon

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: gnus/starttls.el and net/tls.el
  2007-11-29 11:34             ` Simon Josefsson
@ 2007-11-29 12:08               ` Sascha Wilde
  0 siblings, 0 replies; 9+ messages in thread
From: Sascha Wilde @ 2007-11-29 12:08 UTC (permalink / raw)
  To: Simon Josefsson; +Cc: rms, emacs-devel

Simon Josefsson <simon@josefsson.org> wrote:
> Sascha Wilde <wilde@sha-bang.de> writes:
>> Simon Josefsson <simon@josefsson.org> wrote:
>>> The problem is the different set of external dependencies:
>>>
>>>  tls.el: use gnutls-cli (GnuTLS) or s_client (OpenSSL)
>>>  starttls.el: use gnutls-cli (GnuTLS) or starttls
[...]
>> I'm not sure that I properly understood the problem (and I haven't read
>> the whole thread), but OpenSSL supports StartTLS, like:
>>
>>   openssl s_client -starttls smtp -connect mail.example.com
>>
>> does this do what you need to support s_client in starttls.el?
>
> Not entirely, OpenSSL only supports starttls for a few application
> protocols:

True.  What a pity (well, not to much for replacing OpenSSL with GnuTLS
is a good thing anyway, IMO). 

> Right now, in Emacs, I think starttls support is used for IMAP, SMTP,
> POP3 and ManageSieve.  There is no support for Managesieve in OpenSSL...

I see.  I haven't thought of managesieve here.

cheers
sascha
-- 
Sascha Wilde
Nota bene: wenn Word für Längeres geeignet wäre, würde es schließlich
nicht Word, sondern Sentence, Page oder Article heißen
 	-- Matthias Mühlich in dctt

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-11-29 12:08 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <E1Ipflm-0004Yx-6I@fencepost.gnu.org>
2007-11-08 13:35 ` gnus/starttls.el and net/tls.el Simon Josefsson
2007-11-09 22:00   ` Richard Stallman
2007-11-15 14:20     ` Simon Josefsson
2007-11-16  4:29       ` Richard Stallman
2007-11-26 15:28         ` Simon Josefsson
2007-11-26 22:39           ` Richard Stallman
2007-11-28 13:44           ` Sascha Wilde
2007-11-29 11:34             ` Simon Josefsson
2007-11-29 12:08               ` Sascha Wilde

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).