I'm considering the possibility to implement TLS over a non TCP connection. The idea is to use SSLEngine which provides the possibility encrypt/decrypt data to memory buffers and send them by the reliable transport we want.
I would have to implement all the handshake defined by the SSL Protocol (client hello, server hello...etc).
If I do this, how would I test that my implementation is working? Is there some "official TLS Test Suite" that I could run?
Thanks for your advices
The fact that you explicitely exclude TCP makes things more complicated. TLS has some assumption about how the underlying transport works. You can have a look at how QUIC basically provides TLS over UDP and the constraints of it.
As for official "Test Suite" I have some ideas to offer, that will probably not work as is out of the box, because of the TCP dependency but they could be a start:
At a more abstract level (I do not know if they are tools using that, but they may exist), when TLS 1.3 was drafted at the same time a document was created to collect typical handshake messages, so that you can use them as examples.
Find it here: https://datatracker.ietf.org/doc/draft-ietf-tls-tls13-vectors/
Its abstract is:
Examples of TLS 1.3 handshakes are shown. Private keys and inputs are provided so that these handshakes might be reproduced.
Intermediate values, including secrets, traffic keys and IVs are
shown so that implementations might be checked incrementally against
these values.