Stream: git-wasmtime

Topic: wasmtime / issue #10089 Implement wasi-tls


view this post on Zulip Wasmtime GitHub notifications bot (Jan 23 2025 at 11:47):

badeend opened issue #10089:

wasi-tls has recently been accepted as a phase 1 proposal.

We'd like to start implementing this in wasmtime. There already exists some prior efforts:


My suggestion is to add a new standalone wasi-tls crate:

Thoughts?


CC @dicej @jsturtevant

view this post on Zulip Wasmtime GitHub notifications bot (Jan 23 2025 at 11:48):

badeend commented on issue #10089:

I did an inventory of the two most popular rust TLS crates to see how suitable they are to implement the draft spec:

rustls:

native-tls:

From wasmtime's POV, rustls seems an obvious choice:

Despite its shortcomings, from a Standards POV, native-tls has one important leg up:
Instant validation of portability goals against three different industry-standard back-ends (OpenSSL, SChannel, SecureTransport).
AFAIK, most of these shortcomings are of the native-tls crate itself and not of the underlying providers. Case in point: .NET's SSLStream is also built on top of SChannel & OpenSSL, yet _does_ support the desired features.


In the current stage the interface is still simple enough that it doesn't really matter which one we choose. I just wanted to throw it out there before we start sinking too much time into the integration of either option.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 23 2025 at 16:57):

alexcrichton commented on issue #10089:

How unreasonable do you think it would be to support both rustls and native-tls? For example via compile-time Cargo features? It seems reasonable to have rustls as the default given its breadth of features but being able to showcase both in the same codebase would be a nice example for others looking to implement the proposal as well.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 25 2025 at 18:24):

badeend commented on issue #10089:

Given the current simplicity of the WASI interface, it should be doable to have both backends. Looking into the future, I can't vouch for how tenable the situation will be.

The current plan is that @jsturtevant will work on the initial implementation. I haven't checked in with him on this specific point yet, but I suspect that we'll start with just a single backend. We could add the secondary backend in a follow-up PR.

@jsturtevant Does this sound about right to you?

view this post on Zulip Wasmtime GitHub notifications bot (Jan 27 2025 at 17:41):

jsturtevant commented on issue #10089:

Sounds good to me. My biggest concern would be the lack of features on the native-tls side but the initial interface is pretty minimal so shouldn't be an issue initially. We can adjust as we go.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 27 2025 at 18:05):

alexcrichton commented on issue #10089:

Also to be clear if you the implementor @jsturtevant would prefer to pick one or the other I think that's totally ok too. I wouldn't consider it a requirement to support both at the beginning at all. Given how things are leaning I think it would make sense to start with rustls and once that's all working we could see if adding a native-tls backend would make sense?

view this post on Zulip Wasmtime GitHub notifications bot (Jan 27 2025 at 18:05):

alexcrichton commented on issue #10089:

Ok sorry early morning strikes again, @badeend already said all that, disregard me.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 08 2025 at 01:39):

jsturtevant commented on issue #10089:

Just an update, I've gotten pretty far on this, debugging one last issue before opening up a PR.


Last updated: Feb 28 2025 at 03:10 UTC