Commit Graph

503 Commits

Author SHA1 Message Date
Andy Wang 008fd8f0a3 Lazy allocation 2020-04-12 00:49:49 +01:00
Andy Wang 8a76afabf7 Reduce the amount of goroutines in tests 2020-04-11 23:09:51 +01:00
Andy Wang 17fd78b6c2 Use bbolt instead of bolt to fix go version compatibility issues 2020-04-11 23:09:29 +01:00
Andy Wang ce35a054ed Remove redundant tests 2020-04-11 22:43:29 +01:00
Andy Wang 5d4e8b8d8d Refactor udp piping and add tests 2020-04-11 22:37:15 +01:00
Andy Wang 9f413ff23a Fix multiconn benchmark 2020-04-11 19:03:44 +01:00
Andy Wang e4b45a55e3 Optimise AddRecordLayer 2020-04-10 19:09:17 +01:00
Andy Wang e9243a2e9f Framing in Stream.Write to prevent silent short write 2020-04-10 18:48:36 +01:00
Andy Wang 17d57d9369 Add benchmarks 2020-04-10 18:48:01 +01:00
Andy Wang 8c9bab2a6f TLSConn.Write returns correct length 2020-04-10 16:15:23 +01:00
Andy Wang 78b27c0705 Fix tests 2020-04-10 16:14:32 +01:00
Andy Wang a51d45f41a Avoid unnecessary pass by pointer 2020-04-10 16:09:05 +01:00
Andy Wang 2bf7df0eb0 Integration tests 2020-04-10 15:05:15 +01:00
Andy Wang 0f66fec28e Remove impossible error 2020-04-10 14:11:01 +01:00
Andy Wang 93cf6dec6e Export fields for testing 2020-04-10 14:09:48 +01:00
Andy Wang d53b80208f Refactor for easier testing 2020-04-10 11:07:38 +01:00
Andy Wang e5bda61587 Close connections properly 2020-04-09 23:52:08 +01:00
Andy Wang 254b7152b6 Fix tests 2020-04-09 22:21:02 +01:00
Andy Wang 444182f5bb Purge impurity 2020-04-09 22:11:12 +01:00
Andy Wang bbc0752883 Minor code cleanup 2020-04-09 19:10:04 +01:00
Andy Wang 86214a1df0 Implement stream SetReadDeadline 2020-04-09 18:56:17 +01:00
Andy Wang e41394c83c Set frame size limit through multiplexer 2020-04-09 16:37:46 +01:00
Andy Wang 780d607436 Use io.Copy for redir 2020-04-09 13:41:06 +01:00
Andy Wang 77c33ff352 Fix redir null pointer 2020-04-09 13:37:33 +01:00
Andy Wang 15f343db31 Refactor server configuration 2020-04-09 13:26:23 +01:00
Andy Wang 97858197cd Move common types to its own package 2020-04-09 00:39:40 +01:00
Andy Wang 86095ba5e6 Refactor out Dialer 2020-04-09 00:34:02 +01:00
Andy Wang 2400a33818 Remove extra imports 2020-04-08 22:17:08 +01:00
Andy Wang 7e9fe952aa Move code around for clarity 2020-04-08 22:07:11 +01:00
Andy Wang ec76ecfe71 Update tests 2020-04-08 21:47:31 +01:00
Andy Wang 693544659f Refactor server transport 2020-04-08 21:37:21 +01:00
Andy Wang 7bfae8accd Refactor client side transport (breaks server) 2020-04-08 20:53:09 +01:00
Andy Wang 96845700f8 Add some integration tests for multiplex 2020-04-08 18:26:57 +01:00
Andy Wang a461059b4a Change behaviour of stream.Write(nil) 2020-04-08 18:16:54 +01:00
Andy Wang d3bc3b5a13 Use connutil in test 2020-04-08 16:41:39 +01:00
Andy Wang dc2b1124cb move function out of util 2020-04-08 16:34:20 +01:00
Andy Wang db9b848053 Simplify ReadTLS 2020-04-08 16:31:55 +01:00
Andy Wang 43ae82ec0e Fix test, improve err message and fix nil interface casting 2020-04-08 15:58:46 +01:00
Andy Wang 3bc59ff4b6 Fix tests 2020-04-08 15:17:33 +01:00
Andy Wang 2dc7c6d6e1 Correct switchboard valve's scope 2020-04-08 15:15:08 +01:00
Andy Wang e52daf1a39 Set defaults properly 2020-04-08 15:13:49 +01:00
Andy Wang 545164a300 Make send/receive buffer sizes configurable 2020-04-08 15:07:35 +01:00
Andy Wang 1de5045003 Use errors from io 2020-04-08 14:59:09 +01:00
Andy Wang 01e5d15d20 Code cleanup 2020-04-08 12:18:20 +01:00
Andy Wang 963dae829d Fix tests 2020-04-07 21:19:40 +01:00
Andy Wang c1f3408c2c Make key lengths explicit 2020-04-07 21:15:28 +01:00
Andy Wang 443aeecf5f Use cbeuw/connutil for connection testing 2020-04-07 20:59:32 +01:00
Andy Wang e7963b9e24 Change wsAcceptor's name to wsOnceListener 2020-04-07 18:18:14 +01:00
Andy Wang 8d375e3f9b remove redundant fields 2020-04-06 20:51:21 +01:00
Andy Wang e8af6233c1 Fix test 2020-04-06 15:58:34 +01:00
Andy Wang 285b966326 Fix server reply certificate length 2020-04-06 15:55:22 +01:00
Andy Wang 6a83c58143 Refactor authentication pipeline 2020-04-06 15:24:18 +01:00
Andy Wang a161409577 Rename a struct 2020-04-06 14:29:38 +01:00
Andy Wang 903a413afc Update test 2020-04-06 13:14:11 +01:00
Andy Wang 25e41d0941 Allow UDP option to be set in both commandline and json 2020-04-06 13:11:19 +01:00
Andy Wang a163f066a6 Refactor client config 2020-04-06 13:07:16 +01:00
Andy Wang 402cfc9e25 Logging for silent connections 2020-04-05 01:15:45 +01:00
Andy Wang 8d84ebd145 Code styles 2020-04-05 00:56:43 +01:00
Andy Wang dc262f7ca5 actually change the connId of a stream upon new assignment in send 2020-04-05 00:52:06 +01:00
Andy Wang e9afae72f0 better stream closing error message 2020-04-05 00:51:28 +01:00
Andy Wang 6d75aaff01 fix return shadowing 2020-04-05 00:39:59 +01:00
Andy Wang e4da349aa0 Add websocket auth test 2020-04-04 16:11:02 +01:00
Andy Wang 5e1931a11c Ineffectual assignments 2020-04-04 16:10:43 +01:00
notsure2 2de034ec92 Make keepalive optional on client -> server and server -> proxy connections. Use KeepAlive value in config (seconds). 2020-04-04 15:32:19 +01:00
Andy Wang 2327420f75 Allow remote host to be set in the client config file 2020-04-04 00:43:06 +01:00
Andy Wang d05809f2a6 Fix logging of transport 2020-04-03 23:37:09 +01:00
Andy Wang 766c27a129 Refactor if to switch case 2020-04-03 22:46:07 +01:00
Andy Wang 75ab568cda Merge branch 'master' of https://github.com/cbeuw/Cloak 2020-04-03 22:44:39 +01:00
Andy Wang 85e95de69c variable cert length in TLS server response 2020-03-16 11:39:27 +00:00
Andy Wang e33afb258a extract util testing function 2020-03-16 11:38:30 +00:00
Andy Wang 47410dbb97 add comments 2020-03-15 23:56:45 +00:00
Andy Wang db8dd19c9d fix broken benchmarks 2020-03-15 23:55:56 +00:00
beans 23082aff4f Allow RemotePort to be optionally set in JSON. If it's not set in JSON, Cloak falls back to SS_REMOTE_PORT in SS mode, or the -p argument in standalone 2020-02-14 21:57:57 +00:00
Andy Wang 517a6d6e57 Handle error and retry for Crypto.rand 2020-02-01 23:46:46 +00:00
Andy Wang e714dc61a8 Add a test for server touchstone 2020-01-25 10:20:11 +00:00
Andy Wang bc5ce842a0 Refactor makeAuthenticationPayload to allow easier tests 2020-01-25 10:19:45 +00:00
Andy Wang abc39e4e90 Refactor authentication data representations 2020-01-24 16:44:29 +00:00
Andy Wang fa1c109d90 Make authentication info arrays 2020-01-24 15:13:26 +00:00
Andy Wang fe8b2d78ef Change authenticationInfo structure 2020-01-24 14:38:41 +00:00
Andy Wang 13b66f6fef Remove redundant code 2020-01-24 13:30:17 +00:00
Andy Wang f90ad52455 Add default stream timeout value to client 2020-01-23 20:31:08 +00:00
Andy Wang 6f34229aa0 Make and add stream upon reception of all new streamIDs even if they are closing 2020-01-23 20:30:31 +00:00
Andy Wang 39e54bae6c Fix transport null pointer 2020-01-22 22:27:19 +00:00
Andy Wang 99fa812594 Fix pickRandConn bad loop 2020-01-22 22:17:18 +00:00
Andy Wang 3f5fdae284 Close session immediately after receiving signal 2020-01-22 21:30:30 +00:00
Andy Wang d65aee725a Improve stream closing logic and add tests 2020-01-22 21:12:32 +00:00
Andy Wang af5c8a381f Make a test streamline instead of modular 2020-01-22 19:33:53 +00:00
Andy Wang 3d3d06ec96 Fix tests 2020-01-22 18:40:03 +00:00
Andy Wang 74a70a3113 Refactor Transport and add tests 2020-01-22 18:37:01 +00:00
Andy Wang e7e4cd5726 Refactor frame reception processor 2020-01-09 10:22:40 +00:00
Andy Wang 65553f4ec4 Remove redundant base64 decoding 2019-12-29 16:55:21 +00:00
Andy Wang e3552b2afc Refactor server config parser and add tests 2019-12-29 13:28:52 +00:00
notsure2 d35472aea1 Store stream in packet receive path instead of asynchronously to fix https://github.com/cbeuw/Cloak/issues/74 2019-12-14 12:48:45 +00:00
Andy Wang bdd5308169 Code style clean up 2019-11-08 17:06:20 +00:00
Andy Wang 9c30c9b5b5 Add explanations on accepting websocket connections 2019-11-08 16:56:31 +00:00
Andy Wang fbee919f47 Use constants for Closing value 2019-11-03 20:28:43 +00:00
Andy Wang c26be98e79 Use sync.Map in multiplex instead of manual locks 2019-11-03 12:22:12 +00:00
Andy Wang 9cab4670f4 Make buffer close non-blocking 2019-11-02 21:02:35 +00:00
Andy Wang 4c17923717 Make write error close session as well 2019-10-20 15:37:41 +01:00
Andy Wang e2b21dae9f Fix tests 2019-10-20 15:21:31 +01:00
Andy Wang 3649283a49 Fix tests 2019-10-20 15:18:27 +01:00
Andy Wang 57f0c3d20a Close session when one connection drops 2019-10-16 23:00:23 +01:00
Andy Wang 34a4805c34 Add tests 2019-10-16 23:00:11 +01:00
Andy Wang a1b719b15f Add terminal message 2019-10-15 22:24:33 +01:00
Andy Wang beb6568ce0 Check before passive close 2019-10-15 22:06:23 +01:00
Andy Wang 3b3cd277f8 Fix stream not closing 2019-10-15 22:06:11 +01:00
Andy Wang 67159abcf4 Add tests 2019-10-15 21:59:13 +01:00
Andy Wang 6580e38e44 Introduce a special Session closing frame 2019-10-14 15:34:14 +01:00
Andy Wang c9318dc90b Fix potential deadlocks 2019-10-08 23:11:16 +01:00
Andy Wang 96215f116a Fix #61 2019-09-22 10:44:16 +01:00
Andy Wang 8c477fb2b5 Default StreamTimeout to 300 seconds 2019-09-21 16:47:02 +01:00
Andy Wang 52720ca52f RedirAddr backward compatibility 2019-09-21 16:17:43 +01:00
Andy Wang eec295a00e Remove unnecessary pointer value 2019-09-15 21:33:35 +01:00
Andy Wang 8a6f6b6088 Minor error prompt and listen to :80 and :443 by default 2019-09-15 18:11:23 +01:00
Andy Wang 63f3b4a89f Allow server to listen on multiple ports 2019-09-15 15:29:29 +01:00
Andy Wang e2d4ab7376 Use non-pointer receiver instead 2019-09-02 14:04:52 +01:00
Andy Wang 98b77afb91 websocket over TLS 2019-09-02 14:03:10 +01:00
Andy Wang 854dc422a2 Update some comments 2019-09-01 23:14:28 +01:00
Andy Wang 339b324946 Working direct WebSocket transport 2019-09-01 20:23:45 +01:00
Andy Wang f47f57a59f Direct WebSocket 2019-09-01 01:33:34 +01:00
Andy Wang 3a28bb65d5 Refactor touchStone 2019-08-31 21:40:50 +01:00
Andy Wang a3c3c5dc07 Client side plain websocket 2019-08-31 18:01:39 +01:00
Andy Wang 75dc91c15c Fix wrong wait type 2019-08-31 15:33:23 +01:00
Andy Wang 4861efbc50 Fix #54 2019-08-31 15:32:57 +01:00
Andy Wang 31898dad63 Change the way user termination works 2019-08-30 22:14:45 +01:00
Andy Wang 9dacb9d8fd Handle closing frame properly in datagramBuffer 2019-08-30 21:00:15 +01:00
Andy Wang 3bfaa5c1c1 Receiving a closing frame no longer returns error on Write 2019-08-30 20:50:39 +01:00
Andy Wang 0bc48a5a2e Remove redundant err checking TODO 2019-08-30 20:45:06 +01:00
Andy Wang 3f532ae065 writeFrame returns error 2019-08-30 20:43:04 +01:00
Andy Wang a131af3439 Remove unnecessary Len check 2019-08-30 20:39:23 +01:00
Andy Wang cfa0a97edf Rename a test set 2019-08-30 17:07:08 +01:00
Andy Wang 59f2fe04e3 Use normal Read in ReadTLS instead of ReadFull 2019-08-30 14:38:31 +01:00
Andy Wang 4fb1f55e2d Use 64bit frame Seq to prevent nonce reuse 2019-08-27 15:06:28 +01:00
Andy Wang 2006e5971a Refactor frameSorter and datagramBuffer under one interface 2019-08-22 11:48:10 +01:00
Andy Wang c3ff3f5d1a Fix the weird nil pointer again 2019-08-21 13:14:23 +01:00
Andy Wang bbb0d35e80 Remove conns from map once switchboard.CloseAll is called 2019-08-20 23:15:36 +01:00
Andy Wang 8b99e419b3 Check buffer length for datagramBuffer.Read() in case the datagram is larger than the buffer 2019-08-20 22:50:58 +01:00
Andy Wang 46c02d17f4 Refactor InitState 2019-08-20 22:48:01 +01:00
Andy Wang 87a7684e10 More comments 2019-08-20 22:43:04 +01:00
Andy Wang dd4a1769d0 Refactor new session authorisation 2019-08-20 17:35:17 +01:00
Andy Wang eabe113547 Add Stream Timeout 2019-08-19 23:23:41 +01:00
Andy Wang ba467e8a32 Only store stream in map after Accept 2019-08-19 11:31:56 +01:00
Andy Wang c8184fc1d2 Switch back to juju/ratelimit 2019-08-17 11:23:26 +01:00
Andy Wang cf1f1ccf16 Add some tests 2019-08-17 00:59:30 +01:00
Andy Wang 57255fdeb2 Fail to parse ClientHello if the TLS record layer Content Type and versions are wrong 2019-08-17 00:35:28 +01:00
Andy Wang 0e0a3314c9 Add server TLS parse test 2019-08-17 00:32:03 +01:00
Andy Wang 812ca1af99 Unexport some client.State fields 2019-08-17 00:18:19 +01:00
Andy Wang b98a74f49b Refactor client ClientHello composition 2019-08-17 00:16:31 +01:00
Andy Wang b5c6d7fedc Change touchUp function signature 2019-08-16 23:56:46 +01:00
Andy Wang 52796ad0b1 recvDataFromRemote returns err 2019-08-16 23:47:15 +01:00
Andy Wang c276f504b5 Use ENUM constants for encryption methods 2019-08-16 23:44:40 +01:00
Andy Wang e9a3c29429 Add some tests 2019-08-16 23:39:41 +01:00
Andy Wang e28df86a55 Move Unordered field around 2019-08-16 23:20:24 +01:00
Andy Wang c1b1d5d8ba Fix accidentally removed tx qos 2019-08-14 11:56:55 +01:00
Andy Wang 44a09219f7 Experimental support for UDP 2019-08-14 11:56:55 +01:00
Andy Wang c19c43f6e8 Server side UDP to proxy server 2019-08-14 11:56:55 +01:00
Andy Wang c36ec04ce5 Add unordered mode 2019-08-14 11:56:55 +01:00
Andy Wang 52fac535e3 Fix nil pointer with ClientInfo 2019-08-14 11:48:32 +01:00
Andy Wang 8967819830 Fix accidentally removed tx qos 2019-08-14 10:28:08 +01:00
Qian Wang f65a46f4a9 Remove unnecessary state variable IsAdmin 2019-08-12 14:25:24 +01:00
Qian Wang 58cbb73f0f Refactor return value of decryption 2019-08-12 14:21:42 +01:00
Qian Wang 71e48a1947 Refactor switchboard configuration and add unordered option 2019-08-12 00:48:20 +01:00
Qian Wang cb672a99de Refactor session configuration 2019-08-12 00:22:15 +01:00
Qian Wang abc83a9190 Potential fix to an edge case nil pointer 2019-08-09 10:36:27 +01:00
Qian Wang ea5bb44b0a Add and edit some tests 2019-08-08 15:08:16 +01:00
Qian Wang 82fe177c24 Change how timestamp's validity is checked 2019-08-08 15:05:36 +01:00
Qian Wang fc9f227ccf stream.Write now returns the correct amount of data written 2019-08-08 10:56:29 +01:00
Qian Wang 572fe8486a Rename a variable and modify a test 2019-08-07 19:08:37 +01:00
Qian Wang 586cc5ebb6 Optimise deobfs 2019-08-07 17:53:34 +01:00
Qian Wang e3de2b9852 Fix a potential make len<0 2019-08-07 17:22:40 +01:00
Qian Wang b7549c0664 Fix a potential nil pointer 2019-08-07 17:06:48 +01:00
Qian Wang e244340885 Modify some tests 2019-08-07 17:06:31 +01:00
Qian Wang d99b4009b2 Differentiate concrete types of LimitedValve and UnlimitedValve to avoid unnecessary atomic.AddUint64 since it has non-trivial overhead on embedded systems 2019-08-07 15:43:42 +01:00
Qian Wang e7aa4cd04b Fix a stuck mutex 2019-08-07 13:59:27 +01:00
Qian Wang ae4fc917b6 Let the server send a mock encrypted certificate after ChangeCipherSuite to imitate real behaviour more closely 2019-08-07 00:28:08 +01:00
Qian Wang 81f233c226 Update obfs_test 2019-08-07 00:19:30 +01:00
Qian Wang acb999ee64 Force aead key sizes as 32 bytes due to chacha20-poly1305 2019-08-07 00:15:55 +01:00
Qian Wang 581c2332d1 Fix obfs_test as it wasn't really testing encryptionMethod other than aes-gcm 2019-08-07 00:15:12 +01:00
Qian Wang 1d878b3adb Use AEAD to encrypt session key in ServerHello to provide authentication of the identity of the server 2019-08-06 23:59:29 +01:00
Qian Wang 623ca55ab5 Add ecdh test 2019-08-06 23:27:18 +01:00
Qian Wang 3002c87a49 Fix a server crashing null pointer 2019-08-06 21:04:08 +01:00
Qian Wang e15536d7c7 Refactor TLS handshake 2019-08-06 15:50:33 +01:00
Qian Wang 3dc4c6fb3f Add more trace logs 2019-08-06 11:19:47 +01:00
Qian Wang 01036086c7 Change the frame distribution strategy so that each stream is assigned a fixed underlying TCP connection to send its frames to reduce framesorter ooo count 2019-08-05 22:14:11 +01:00
Qian Wang fac381dbca Refactor switchboard 2019-08-05 14:33:20 +01:00
Qian Wang d46fa74924 Refactor frame sorter 2019-08-05 13:32:53 +01:00
Qian Wang 9fcc328797 Fix a mutex deadlock 2019-08-05 13:17:02 +01:00
Qian Wang 76095bde0f Add user bypass feature 2019-08-04 21:10:59 +01:00
Qian Wang a513663a72 Use a fork of ratelimit for unlimited bucket 2019-08-04 17:16:18 +01:00
Qian Wang 640f81461c Buffer reuse in obfs 2019-08-04 10:38:49 +01:00
Qian Wang 9fa37e327f Use exclusively salsa20 for header encryption 2019-08-03 22:05:06 +01:00
Qian Wang f933c7b453 Move pipe to util 2019-08-03 15:01:12 +01:00
Qian Wang bf83273f6e Fix redirection 2019-08-03 13:26:57 +01:00
Qian Wang 64b39d728f Refactor usedrandom 2019-08-03 11:49:05 +01:00
Qian Wang 08cb5d8462 Refactor usermanager 2019-08-03 11:17:09 +01:00
Qian Wang 67521efbd6 Alter composeServerHello function signature slightly 2019-08-02 23:37:00 +01:00
Qian Wang 57fc31a5fc Add tests 2019-08-02 23:23:54 +01:00
Qian Wang 237b9d131b Add and fix some tests 2019-08-02 20:50:08 +01:00
Qian Wang e0e33e12d6 Fix non random GREASE generation 2019-08-02 20:06:41 +01:00
Qian Wang 05972863b5 Add tests 2019-08-02 20:06:28 +01:00
Qian Wang 53b6b96262 Remove stupid code 2019-08-02 18:03:08 +01:00
Qian Wang 429da0e0d9 Add unit tests 2019-08-02 18:00:27 +01:00
Qian Wang e75c713385 Refactor session struct's obfs fields 2019-08-02 16:37:48 +01:00
Qian Wang 1a628cb524 Refactor client TLS 2019-08-02 16:02:25 +01:00
Qian Wang 33f232475d Improve logging 2019-08-02 15:45:33 +01:00
Qian Wang 726a405a26 TLS1.3 2019-08-02 01:01:19 +01:00
Qian Wang 0684f5df40 Refactor payload cipher 2019-08-01 00:43:33 +01:00
Qian Wang 2735de4f96 Fix bad cryptography 2019-08-01 00:16:33 +01:00
Qian Wang 0fbb6011fc Remove psudorandom padding 2019-07-31 23:58:15 +01:00
Qian Wang 0f3b2232ab Remove redundant config field 2019-07-31 14:44:34 +01:00
Qian Wang e1c879a478 Fix CORS and POST handler 2019-07-30 23:49:22 +01:00
Qian Wang 6af97e2c22 Optimise session closing 2019-07-28 23:27:59 +01:00
Qian Wang 059a222394 Use defer to unlock mutexes 2019-07-28 12:52:57 +01:00
Qian Wang bf8d373f79 Stream optimisations 2019-07-28 11:58:45 +01:00
Qian Wang 0f9830e716 Update test 2019-07-28 11:06:15 +01:00
Qian Wang 73c0b8567e Memory optimisation 2019-07-28 00:15:27 +01:00
Qian Wang 6fc48c5dae Fix a goroutine leak 2019-07-27 21:38:08 +01:00
Qian Wang 1099b558f1 Fix admin mode 2019-07-27 19:55:53 +01:00
Qian Wang 0e08683828 Use a buffered pipe to buffer sorted data 2019-07-27 19:53:16 +01:00
Qian Wang 38f3a4a522 Only start a session after a local connection has been made 2019-07-26 23:12:38 +01:00
Qian Wang 75fecacd20 Change the protocol to solve sessionTicket inconsistency 2019-07-26 17:05:46 +01:00
Qian Wang 592175f73d Close pipe properly 2019-07-25 22:06:33 +01:00
Qian Wang 8f9922b06b Add terminal messages upon session closing 2019-07-25 20:57:02 +01:00
Qian Wang 8ff0f3d17e Rename handlers 2019-07-25 13:09:36 +01:00
Qian Wang 09bdae2584 Add CORS header through middleware 2019-07-25 13:03:32 +01:00
Qian Wang 2ce6f380d1 Implement admin control through a tunneled RESTful API 2019-07-25 12:17:29 +01:00
Qian Wang 98a772b6ee Add server response to status update 2019-07-24 15:25:09 +01:00
Qian Wang 9b552f55a4 Allow an terminal message to be set as a session terminates 2019-07-24 14:25:57 +01:00
Qian Wang 299f08270c make Session implement net.Listener 2019-07-23 11:06:49 +01:00
Qian Wang 29a45bcc1a Rewrite user authentication, credit bookkeeping and db interaction 2019-07-22 13:42:39 +01:00
Qian Wang c88c3d0084 Timeout unused new sessions 2019-06-16 23:30:35 +10:00
Qian Wang 710fa6835a Reduce the size of UID to 16 bytes 2019-06-16 11:08:51 +10:00
Qian Wang d781c7b1be Use a sessional ephemeral key as the main key instead of UID for forward security 2019-06-16 00:20:55 +10:00
Qian Wang ef185b00f0 Solve a data race 2019-06-15 11:52:46 +10:00
Qian Wang 589900fe52 I just did a joint and I need to commit before things go wrong 2019-06-14 23:08:28 +10:00
Qian Wang 00069b7a69 Support Chaha20-Poly1305 2019-06-14 20:26:26 +10:00
Qian Wang 078a382963 Improve the security of header obfuscation 2019-06-14 19:48:59 +10:00
Qian Wang f525643518 Remove debug log 2019-06-10 00:04:16 +10:00
Qian Wang 8168b9e2e7 Use AES-GCM instead of CTR 2019-06-10 00:03:28 +10:00
Qian Wang 0dd52d8570 Add optional encryption 2019-06-09 21:05:41 +10:00
Qian Wang 3e9855191b Cloak 2: generalising cloak as a universal pluggable transport for arbitary proxies 2019-06-09 16:10:22 +10:00
Qian Wang 425dbc4797 Session times out 30s after all streams have been closed 2019-03-23 23:45:12 +11:00
Qian Wang 99afb1a58b Remove ECDH as an external dependancy and include it as a internal package 2019-01-25 00:24:47 +00:00
Qian Wang c44b202c27 Regenerate SessionID on reconnection 2019-01-22 21:51:57 +00:00
Qian Wang 9d2e9be1ef Fix a race which causes the server unable to close all the connections in a session 2019-01-22 00:03:38 +00:00
Qian Wang cb07e446b6 Fix issue which the closing frame padding gets send as acutal data 2019-01-21 21:15:18 +00:00
Qian Wang a52c3204d1 Fix a stuck RWMutex 2019-01-21 21:13:54 +00:00
Qian Wang b522d4a407 Fix constant overflow 2019-01-21 11:42:27 +00:00
Qian Wang 8a10949846 Add unit tests 2019-01-20 23:47:10 +00:00
Qian Wang 46c8bc24de Fix wrapping bug 2019-01-20 17:23:45 +00:00