Hi,
Is there a way to easily connect to a HTTPS server with (open-tcp-client) or variant? The SSL part seems to be left to the user, is that so?
Best regards
Afficher les réponses par date
Hallo,
On Wed, Dec 18, 2013 at 1:10 PM, Álvaro Castro-Castilla < alvaro.castro.castilla@gmail.com> wrote:
Hi,
Is there a way to easily connect to a HTTPS server with (open-tcp-client) or variant? The SSL part seems to be left to the user, is that so?
I guess something like stunnel can help here.
https://www.stunnel.org/index.html
Cheers,
Alvaro,
The newest version of Sack + my OpenSSL module (both integrated) do a great job at this, with supposedly very good performance OpenSSL operates on the OS socket underlying the TCP client port object directly i.e. no doublebuffering through the Scheme world.
There's both HTTP server and client.
Mikael
2013/12/18 Álvaro Castro-Castilla alvaro.castro.castilla@gmail.com
Hi,
Is there a way to easily connect to a HTTPS server with (open-tcp-client) or variant? The SSL part seems to be left to the user, is that so?
Best regards
Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
On Dec 18, 2013, at 7:10 AM, Álvaro Castro-Castilla alvaro.castro.castilla@gmail.com wrote:
Hi,
Is there a way to easily connect to a HTTPS server with (open-tcp-client) or variant? The SSL part seems to be left to the user, is that so?
There is no builtin support for SSL. I have considered implementing this with OpenSSL or PolarSSL (which has the advantage of being lightweight and portable, see https://polarssl.org), but it is a non trivial job due to the complex API required for SSL. Moreover, this would add an external library dependency for Gambit (the only one), which is a problem for portability, so a configure option would likely be added to disable SSL support.
If someone wants to tackle this (i.e. implementing builtin support for SSL), I can help with the integration with Gambit's I/O system. It would sure be nice to be able to open secure connections with Gambit.
Marc
I suggest relating to OpenSSL as only one among the unlimited zillions of protocols out there,
and that by this reason, including OpenSSL support in Gambit is not the solution, but rather, to update Gambit's IO system to support implementation of non-leaky extremely-high-performance application/user-level ports.
Next in line are various compression and crypto protocols.
2013/12/18 Marc Feeley feeley@iro.umontreal.ca
There is no builtin support for SSL. I have considered implementing this with OpenSSL or PolarSSL (which has the advantage of being lightweight and portable, see https://polarssl.org), but
it is a non trivial job due to the complex API required for SSL.
Yes. Also because OpenSSL is maintained by only one guy who gives part time to it, and its code is extremely bloated from its development process (this is what the experts on #crypto say anyhow).
Protocols and their support libraries are a complete jungle - for instance; I personally gave approximately one man month to implement an OpenSSL channel wrapper in Gambit. The whimsical documentation was on several key points indicative at best and inspiration from others' user code was required. The result is a very good integration, however at the same time,
Factors like this put an upper ceiling on what quality is actually possible to achieve for a particular integration/wrapper implementation, and this in turn means there will always be situations when a particular implementation is subqualitative and "in the way" and there is a palpable use of using some-other implementation, for someone to make his own new one, and so on.
Moreover, this would add an external library dependency for Gambit (the
only one), which is a problem for portability, so a configure option would likely be added to disable SSL support.
If someone wants to tackle this (i.e. implementing builtin support for SSL), I can help with the integration with Gambit's I/O system. It would sure be nice to be able to open secure connections with Gambit.
Marc
I've pondered a bit how such an application/user-level ports interface would look.
To start with, a key decision would be if there should be support for something like zerocopying IO, i.e. you have a sandwhich of a number of such ports atop of each other and one or many of them is doing passive passthrough/forwarding only for N bytes/chars/seconds - will the IO system support that.
Perhaps that could be easily implemented if there's a convention that on such use, the user must not mutate the structures fed into the IO system any more.
This kind of design decisions could take a titanic-kind of direction though if carefully made and thought through it could be enormously useful also;
any code and modules relating to data streams, IO, and also data processing more generally, do at some point end up benefitting of having a qualitative interface with Gambit's IO system, through such an application/user-level ports interface.
I would be glad to participate in a conversation on the topic on how such a application/user-level ports interface ought to look more specifically.
Mikael
There is a simple HTTPS client interface in LambdaNative, with no dependencies other than OpenSSL, that you might be able to make use of: https://github.com/part-cw/lambdanative/blob/master/modules/httpsclient/http... It's very basic, but does support connections both with and without keys, and works on all platforms (including iOS/Android/BB10).
PolarSSL is GPL btw, which would be a problem for our use of Gambit. And I agree that external library dependencies are bad for portability in general.
Chris
________________________________________ From: gambit-list-bounces@iro.umontreal.ca [gambit-list-bounces@iro.umontreal.ca] On Behalf Of Marc Feeley [feeley@iro.umontreal.ca] Sent: Wednesday, December 18, 2013 5:47 AM To: Álvaro Castro-Castilla Cc: Gambit List Subject: Re: [gambit-list] HTTPS client
On Dec 18, 2013, at 7:10 AM, Álvaro Castro-Castilla alvaro.castro.castilla@gmail.com wrote:
Hi,
Is there a way to easily connect to a HTTPS server with (open-tcp-client) or variant? The SSL part seems to be left to the user, is that so?
There is no builtin support for SSL. I have considered implementing this with OpenSSL or PolarSSL (which has the advantage of being lightweight and portable, see https://polarssl.org), but it is a non trivial job due to the complex API required for SSL. Moreover, this would add an external library dependency for Gambit (the only one), which is a problem for portability, so a configure option would likely be added to disable SSL support.
If someone wants to tackle this (i.e. implementing builtin support for SSL), I can help with the integration with Gambit's I/O system. It would sure be nice to be able to open secure connections with Gambit.
Marc
_______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list