Merge branch 'master' into hkexcp-proto

This commit is contained in:
Russ Magee 2018-07-19 22:40:40 -07:00
commit e3e38fb6fa
2 changed files with 36 additions and 30 deletions

View file

@ -6,7 +6,7 @@ Chaff Improvements
- Client-input chaff file data (ie., Moby Dick) - Client-input chaff file data (ie., Moby Dick)
Architecture Architecture
- Move hkexnet components other than key exchange into a proper hkex package (DONE) - Move hkexnet components other than key exchange into a proper hkex package
(ie., hkexsh imports hkex) - hkex should be usable for other client/svr utils, (ie., hkexsh imports hkex) - hkex should be usable for other client/svr utils,
ala 'hkex-netcat') ala 'hkex-netcat')
- Make KEx fully-pluggable: isolate all code to do with Herradura into a - Make KEx fully-pluggable: isolate all code to do with Herradura into a

View file

@ -44,39 +44,45 @@ const (
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
type WinSize struct { type (
Rows uint16 WinSize struct {
Cols uint16 Rows uint16
} Cols uint16
}
type ChaffConfig struct { // chaffconfig captures attributes used to send chaff packets betwixt
shutdown bool //set to inform chaffHelper to shut down // client and server connections, to obscure true traffic timing and
enabled bool // patterns
msecsMin uint //msecs min interval // see: https://en.wikipedia.org/wiki/chaff_(countermeasure)
msecsMax uint //msecs max interval ChaffConfig struct {
szMax uint // max size in bytes shutdown bool //set to inform chaffHelper to shut down
} enabled bool
msecsMin uint //msecs min interval
msecsMax uint //msecs max interval
szMax uint // max size in bytes
}
// Conn is a HKex connection - a superset of net.Conn // Conn is a HKex connection - a superset of net.Conn
type Conn struct { Conn struct {
m *sync.Mutex m *sync.Mutex
c net.Conn // which also implements io.Reader, io.Writer, ... c net.Conn // which also implements io.Reader, io.Writer, ...
h *hkex.HerraduraKEx h *hkex.HerraduraKEx
cipheropts uint32 // post-KEx cipher/hmac options cipheropts uint32 // post-KEx cipher/hmac options
opts uint32 // post-KEx protocol options (caller-defined) opts uint32 // post-KEx protocol options (caller-defined)
WinCh chan WinSize WinCh chan WinSize
Rows uint16 Rows uint16
Cols uint16 Cols uint16
chaff ChaffConfig chaff ChaffConfig
closeStat *uint8 // close status (shell exit status: UNIX uint8) closeStat *uint8 // close status (shell exit status: UNIX uint8)
r cipher.Stream //read cipherStream r cipher.Stream //read cipherStream
rm hash.Hash rm hash.Hash
w cipher.Stream //write cipherStream w cipher.Stream //write cipherStream
wm hash.Hash wm hash.Hash
dBuf *bytes.Buffer //decrypt buffer for Read() dBuf *bytes.Buffer //decrypt buffer for Read()
} }
)
func (hc Conn) GetStatus() uint8 { func (hc Conn) GetStatus() uint8 {
return *hc.closeStat return *hc.closeStat