diff options
Diffstat (limited to 'src/btftunnel.h')
| -rw-r--r-- | src/btftunnel.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/btftunnel.h b/src/btftunnel.h index 1fa4f01..24a7509 100644 --- a/src/btftunnel.h +++ b/src/btftunnel.h | |||
| @@ -10,8 +10,12 @@ | |||
| 10 | // caller), then BtfClientTunnel connects through the relay, runs the echan | 10 | // caller), then BtfClientTunnel connects through the relay, runs the echan |
| 11 | // handshake, and returns a local SOCKET to hand a new outbound CNode. | 11 | // handshake, and returns a local SOCKET to hand a new outbound CNode. |
| 12 | // | 12 | // |
| 13 | // Service side: after RvServiceRegister pairs us with a client, BtfServiceWrap | 13 | // Service side: RvServiceRegister only registers -- callers must then block in |
| 14 | // completes the echan handshake and returns a local SOCKET for an inbound CNode. | 14 | // RvServiceWaitPaired until a client is actually paired to them. BtfServiceWrap |
| 15 | // completes the echan handshake on that paired socket and returns a local | ||
| 16 | // SOCKET for an inbound CNode. Wrapping a registered-but-unpaired socket reads | ||
| 17 | // the relay's 0x01 pairing byte as the first byte of the client's ephemeral | ||
| 18 | // key, which silently corrupts the tunnel instead of failing. | ||
| 15 | 19 | ||
| 16 | #ifndef BITFLASH_BTFTUNNEL_H | 20 | #ifndef BITFLASH_BTFTUNNEL_H |
| 17 | #define BITFLASH_BTFTUNNEL_H | 21 | #define BITFLASH_BTFTUNNEL_H |
| @@ -39,8 +43,9 @@ btf_socket_t BtfClientTunnel(const char* meeting_host, unsigned short port, | |||
| 39 | const unsigned char target_pubkey[32], | 43 | const unsigned char target_pubkey[32], |
| 40 | const unsigned char service_enc_pub[32]); | 44 | const unsigned char service_enc_pub[32]); |
| 41 | 45 | ||
| 42 | // Service: wrap an already-paired rendezvous socket (from RvServiceRegister) | 46 | // Service: wrap an already-paired rendezvous socket (RvServiceRegister followed |
| 43 | // with echan using my static x25519 secret, returning a local plaintext SOCKET | 47 | // by RvServiceWaitPaired -- the pairing byte MUST already be consumed) with |
| 48 | // echan using my static x25519 secret, returning a local plaintext SOCKET | ||
| 44 | // for an inbound CNode. Consumes `rv` (closed when the tunnel tears down). | 49 | // for an inbound CNode. Consumes `rv` (closed when the tunnel tears down). |
| 45 | btf_socket_t BtfServiceWrap(RvSocket rv, const unsigned char my_enc_sk[32]); | 50 | btf_socket_t BtfServiceWrap(RvSocket rv, const unsigned char my_enc_sk[32]); |
| 46 | 51 | ||