Minimal client
defdefred
defdefred at protonmail.com
Wed Jul 1 23:11:10 BST 2020
netcat ?
freD.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Thursday 2 July 2020 00:06, Phil Leblanc <philanc at gmail.com> wrote:
> Hi all,
>
> I am looking for a solution to build a small, statically linked,
> minimal gemini client. My focus at the moment is to implement the
> basic communication layer (including TLS!): just enough to send a
> request to a gemini host and receive a response.
>
> Has anybody already built such a client? any pointer or suggestion?
>
> Where I stand as of now:
>
> --- I discarded OpenSSL. Bad memories of building small static
> executables a long time ago. Maybe it has improved and I am just
> prejudiced.
>
> --- LibreSSL:
>
> - not TLS v1.3 yet, but definitely alive and moving there.
> - easily builds static libraries, but no modular build: I mean I
> found no way to build libraries/executable with only a limited set of
> crypto algorithms
> => executables are large: The openssl command (similar to the
>
>
> OpenSSL one) is 2.5 MB (built on Linux with Musl libc, fully static,
> -Os, stripped). They also include the OpenBSD 'nc' command which
> supports TLS connections - 2 MB (for reference I have a small static
> nc without TLS support which is 50KB)
>
> --- BearSSL
>
> - very nice code. An impressive feat for a one-man project (Thomas Pornin)
> - not yet at TLS-1.3. The code looks maintained but I don't know if
> it is actively developed. I saw no sign of ed25519 cert signing, but
> may be wrong here.
>
> - code size: the whole libbearssl.a is ~ 860KB, basic client and
> server examples are in the 150KB range, which is very nice.
>
> --- WolfSSL
>
> - supports TLS-1.3. Is actively maintained by a company targeting
> embedded systems (but the code is GPL)
>
> - I don't know yet how to properly build small code, but with a
> default support for only TLS-1.3, and no ed25519 cert support, I could
> build basic client/server examples at ~ 260 KB.
>
> --- MatrixSSL
>
> - supports TLS-1.3 but the code of the last public (GPL) version
> hasn't changed in the last 6 months.
>
> - I have not yet succeeded in building static working examples with
> a cross compiler. So I don't have ballpark code size figures.
>
> --- Busybox ssl_client
>
> - some TLS support has been added in the recent busybox trees, based
> on MatrixSSLcode. As they say, "enough TLS to allow the busybox wget
> applet to retrieve a kernel source" from https://kernel.org/
>
> - I built the ssl_client applet as a standalone static exe: 71 KB
> - it supports TLS-1.2 with a very limited set of crypto algos. and
> no cert validation.
>
> - I tried for fun to retrieve with it the root pages from all the
> gemini sites listed on Gus / known hosts: On a total of 116 sites, it
> managed to
> get 98 root pages and 18 TLS errors (I lack detailed error causes, but
> apparently mostly missing algos, and maybe some unsupported curves for
> ECDH(E).-- not so bad for such a small "client" - but clearly not
> enough for real use.
>
> Obviously, a big part of the equation is the evil number of
> combinations of ciphers, hashes and key exchange algos. Any guideline
> or best practice document about what ciphers/algos Gemini servers
> should minimally support would help immensely!
>
> Again, any suggestion on how to build a small, static SSL client is
> more than welcome.Thanks in advance,
>
> Phil
>
More information about the Gemini
mailing list