Add TLSMirror looks like TLS censorship resistant transport protocol as a developer preview transport (#3437)

* Add tlsmirror server processing routine

* Add tlsmirror server processing routine: generated

* Add tlsmirror server handshake capture

* it runs version~

* add draining copy for handshake

* refactor out base tls mirror connection

* tls mirror server side base

* add random field extraction

* add tls like encryption

* add tls like encryption (generated)

* add server side implementation for tlsmirror

* apply coding style: tlsmirror

* fix typo in mirrortls mirror crypto

* add client initial implementation for tls mirror

* add traffic generator implementation for tlsmirror

* add client processing of traffic generator originated traffic

* add embedded traffic generator support to mirrortls client

* override security setting of traffic generator if appropriate

* override security setting of traffic generator if appropriate

* apply request wait time for traffic generator

* add unsafe keyword required for linkname

* fix outbound manager registration for traffic ingress at tlsmirror client

* initial works at sticking packets together

* fix traffic generator's traffic goto logic

* fix get client and server random

* fix applying primary key

* fix log error handling for handshake random retrieval

* fix nonce generation and key derivation logic

* fix: add readPipe channel to client and server connection handlers

* fix: use detached context for persistent mirror TLS dialer

* fix: ensure proper closure of connections on context cancellation

* fix: proper detection of traffic generator originated connection

wait for connection ready before sending payload

* fix coding style
This commit is contained in:
Xiaokang Wang (Shelikhoo)
2025-07-03 11:33:16 +01:00
committed by GitHub
parent 248cba4e43
commit b1ef737d48
32 changed files with 2530 additions and 3 deletions
+1 -1
View File
@@ -229,7 +229,7 @@ func (t *transportEnvImpl) Listener() internet.SystemListener {
}
func (t *transportEnvImpl) OutboundDialer() tagged.DialFunc {
panic("implement me")
return tagged.Dialer
}
func (t *transportEnvImpl) TransientStorage() storage.ScopedTransientStorage {