Minimal client

Dave Gauer dave at ratfactor.com
Mon Jul 6 15:09:17 BST 2020


On 7/1/20 6:06 PM, Phil Leblanc 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.


I have long been planning to do the same thing, but haven't even 
started. The plan was to write it in Rust and use this:

https://github.com/ctz/rustls

Copied from README.md:
=================================================================
## Current features

* TLS1.2 and TLS1.3.
* ECDSA, Ed25519 or RSA server authentication by clients.
* ECDSA, Ed25519 or RSA server authentication by servers.
* Forward secrecy using ECDHE; with curve25519, nistp256 or nistp384 curves.
* AES128-GCM and AES256-GCM bulk encryption, with safe nonces.
* ChaCha20-Poly1305 bulk encryption 
([RFC7905](https://tools.ietf.org/html/rfc7905)).
* ALPN support.
* SNI support.
* Tunable MTU to make TLS messages match size of underlying transport.
* Optional use of vectored IO to minimise system calls.
* TLS1.2 session resumption.
* TLS1.2 resumption via tickets (RFC5077).
* TLS1.3 resumption via tickets or session storage.
* TLS1.3 0-RTT data for clients.
* Client authentication by clients.
* Client authentication by servers.
* Extended master secret support (RFC7627).
* Exporters (RFC5705).
* OCSP stapling by servers.
* SCT stapling by servers.
* SCT verification by clients.
=================================================================

Statically linked, yes. But I have no idea if it would meet the _small_ 
goal!

-Dave


More information about the Gemini mailing list