[ANN] AHT an Ada HTTP/1.1 and WebSocket client with TLS via OpenSSL or mbedTLS

6 Likes

this looks super relevant to the stuff I’ve been working on.

How down would you be if I forked it and added it to my async runtime thing?

Hi, no issues at all, it is Apache 2.0… so as long as you comply… :slight_smile:
I use it for my own stuff and I published it since it could be useful to someone else (I wouldn’t have written it if it had existed already)

1 Like

Asynchronous I/O is more relevant for HTTP server than client. In most cases a client can live with blocking I/O.

Note also that what implementing asynchronous I/O with OpenSSL and TLS you would have to choose between their asynchronous layers (e.g. bio in OpenSSL) and the synchronous ones. I.e. the level where you would insert stuff converting blocking into non-blocking:

   socket
    |
   TLS
    |
   HTTP / WebSocket
1 Like

Still pre-alpha but coming along if you are interested in a pure Ada TLS solution without having to use OpenSSL: GitHub - docandrew/SPARKTLS: TLS 1.3 Implementation in SPARK · GitHub

1 Like

Thanks, I really appreciate the suggestion and the work behind SPARKTLS. Having a native Ada/SPARK TLS implementation is genuinely interesting, and I’m glad to see this kind of work happening in the ecosystem.

For now, I’d still prefer AHT to rely on mature and widely deployed TLS implementations such as OpenSSL or mbedTLS. With something as security-critical as TLS, maturity, interoperability, review, and long-term maintenance matter a lot to me.

That said, I’m very open to revisiting this as SPARKTLS matures. If you’d like to fork AHT and experiment with integrating it, I’d be very interested to see how it works out. A solid native Ada/SPARK TLS stack could be a very natural fit for AHT in the future.

3 Likes

man i really want to combine this with the async runtime I’m creating in SPARK, but I have to sit down and actually clean up all of this generated AI documentation first.

(if your interested, I can give you access to the repo if you give me your github account username)