Commit Graph

12 Commits (f1b1dcdb106c00fef1acffe04caaeabb3a34239b)

Author SHA1 Message Date
Yawning Angel f1b1dcdb10 Change hashDrbg to take a drbgSeed for initialization.
This paves the way for having servers use the same seed for all
incoming connections, across multiple startup/shutdown cycles.  As
opposed to the current situation where each Obfs4Listener will
randomly generate it's seed at creation time.

Additionally, use 256 bit seeds (128 bit SipHash-2-4 key + 16 bytes of
initial material).
11 years ago
Yawning Angel 013c3c7c4d Fix up how Read() errors were processed where appropriate. 11 years ago
Yawning Angel 48c6f06d04 Change the framing Encoder/Decoder to take the destination slice.
In theory this is easier on the garbage collector.  Probably could
reuse more of the intermediary buffers by stashing them in the
connection state, but that makes the code kind of messy.  This should
be an improvement.
11 years ago
Yawning Angel ded3f6948c Kill Obfs4Conn.isOk with fire, and replace it with a state var. 11 years ago
Yawning Angel 557e746815 First pass at cleaning up the write code. 11 years ago
Yawning Angel 731a926172 Implement the io.WriterTo interface. 11 years ago
Yawning Angel 582aa3a366 First pass at cleaning up the read code. 11 years ago
Yawning Angel 64212e1029 Add vim modelines to some files (No functional changes). 11 years ago
Yawning Angel 9bfdd77f72 Add preliminary support for packet length obfuscation.
The same algorithm as ScrambleSuit is used, except:
 * SipHash-2-4 in OFB mode is used to create the distribution.
 * The system CSPRNG is used when sampling the distribution.

This fixes most of #3, all that remains is generating and sending a
persistent distribution on the server side to the client.
11 years ago
Yawning Angel 51a8dd5a86 Fix logging again.
On second thought instead of using log.Panicf(), panic() and do the
logging with recover().  This somewhat centralizes logging in
obfs4proxy, which will be easier to change when I invariably decide to
do logging differently in the future.
11 years ago
Yawning Angel 433ff8027d Fix a comment (No functional changes). 11 years ago
Yawning Angel 9712aec73b Preliminary support padding, log on panic.
This adds preliminary support for data padding by adding another layer
of encapsulation inside each AEAD frame containing a type and length.
For now, data is still sent unpadded, but the infrastructure for
supporting it is mostly there.

Additionally, use log.Panic[f]() instead of panic through out the code
so that some panics are logged.
11 years ago