mirror of https://gogs.blitter.com/RLabs/xs
Dial() and Accept() again conform to net.Dial(), net.Accept() return signature
This commit is contained in:
parent
e57d97d3e6
commit
cd9f7914e0
|
@ -251,17 +251,17 @@ func HKExAcceptSetup(c net.Conn, hc *Conn) (err error) {
|
||||||
// "C_AES_256" | "C_TWOFISH_128"
|
// "C_AES_256" | "C_TWOFISH_128"
|
||||||
//
|
//
|
||||||
// "H_SHA256"
|
// "H_SHA256"
|
||||||
func Dial(protocol string, ipport string, extensions ...string) (hc *Conn, err error) {
|
func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err error) {
|
||||||
// Open raw Conn c
|
// Open raw Conn c
|
||||||
c, err := net.Dial(protocol, ipport)
|
c, err := net.Dial(protocol, ipport)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return hc, err
|
||||||
}
|
}
|
||||||
// Init hkexnet.Conn hc over net.Conn c
|
// Init hkexnet.Conn hc over net.Conn c
|
||||||
// NOTE: kex default of KEX_HERRADURA may be overridden by
|
// NOTE: kex default of KEX_HERRADURA may be overridden by
|
||||||
// future extension args to applyConnExtensions(), which is
|
// future extension args to applyConnExtensions(), which is
|
||||||
// called prior to Dial()
|
// called prior to Dial()
|
||||||
hc = &Conn{m: &sync.Mutex{}, c: c, closeStat: new(CSOType), h: hkex.New(0, 0), dBuf: new(bytes.Buffer), totBytes: new(uint64), totPackets: new(uint64)}
|
hc = Conn{m: &sync.Mutex{}, c: c, closeStat: new(CSOType), h: hkex.New(0, 0), dBuf: new(bytes.Buffer), totBytes: new(uint64), totPackets: new(uint64)}
|
||||||
hc.applyConnExtensions(extensions...)
|
hc.applyConnExtensions(extensions...)
|
||||||
|
|
||||||
// TODO: Factor out ALL params following this to helpers for
|
// TODO: Factor out ALL params following this to helpers for
|
||||||
|
@ -274,19 +274,19 @@ func Dial(protocol string, ipport string, extensions ...string) (hc *Conn, err e
|
||||||
// Perform Key Exchange according to client-request algorithm
|
// Perform Key Exchange according to client-request algorithm
|
||||||
switch hc.kex {
|
switch hc.kex {
|
||||||
case KEX_HERRADURA:
|
case KEX_HERRADURA:
|
||||||
if HKExDialSetup(c, hc) != nil {
|
if HKExDialSetup(c, &hc) != nil {
|
||||||
return hc, nil
|
return hc, nil
|
||||||
}
|
}
|
||||||
case KEX_FOO:
|
case KEX_FOO:
|
||||||
// For testing: set up as HKEx anyway, but server via Accept() should
|
// For testing: set up as HKEx anyway, but server via Accept() should
|
||||||
// reject as invalid.
|
// reject as invalid.
|
||||||
//if FooKExDialSetup(c, hc) != nil {
|
//if FooKExDialSetup(c, hc) != nil {
|
||||||
if HKExDialSetup(c, hc) != nil {
|
if HKExDialSetup(c, &hc) != nil {
|
||||||
return hc, nil
|
return hc, nil
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
log.Printf("Invalid kex alg (%d), rejecting\n", hc.kex)
|
log.Printf("Invalid kex alg (%d), rejecting\n", hc.kex)
|
||||||
return nil, errors.New("Invalid kex alg")
|
return hc, errors.New("Invalid kex alg")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -389,17 +389,17 @@ func (hl HKExListener) Addr() net.Addr {
|
||||||
// Accept a client connection, conforming to net.Listener.Accept()
|
// Accept a client connection, conforming to net.Listener.Accept()
|
||||||
//
|
//
|
||||||
// See go doc net.Listener.Accept
|
// See go doc net.Listener.Accept
|
||||||
func (hl *HKExListener) Accept() (hc *Conn, err error) {
|
func (hl *HKExListener) Accept() (hc Conn, err error) {
|
||||||
// Open raw Conn c
|
// Open raw Conn c
|
||||||
c, err := hl.l.Accept()
|
c, err := hl.l.Accept()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
hc := &Conn{m: &sync.Mutex{}, c: nil, h: nil, closeStat: new(CSOType), cipheropts: 0, opts: 0,
|
hc := Conn{m: &sync.Mutex{}, c: nil, h: nil, closeStat: new(CSOType), cipheropts: 0, opts: 0,
|
||||||
r: nil, w: nil, totBytes: new(uint64), totPackets: new(uint64)}
|
r: nil, w: nil, totBytes: new(uint64), totPackets: new(uint64)}
|
||||||
return hc, err
|
return hc, err
|
||||||
}
|
}
|
||||||
log.Println("[Accepted]")
|
log.Println("[Accepted]")
|
||||||
|
|
||||||
hc = &Conn{ /*kex: from client,*/ m: &sync.Mutex{}, c: c, h: hkex.New(0, 0), closeStat: new(CSOType), WinCh: make(chan WinSize, 1),
|
hc = Conn{ /*kex: from client,*/ m: &sync.Mutex{}, c: c, h: hkex.New(0, 0), closeStat: new(CSOType), WinCh: make(chan WinSize, 1),
|
||||||
dBuf: new(bytes.Buffer), totBytes: new(uint64), totPackets: new(uint64)}
|
dBuf: new(bytes.Buffer), totBytes: new(uint64), totPackets: new(uint64)}
|
||||||
|
|
||||||
// TODO: Factor out ALL params following this to helpers for
|
// TODO: Factor out ALL params following this to helpers for
|
||||||
|
@ -415,7 +415,7 @@ func (hl *HKExListener) Accept() (hc *Conn, err error) {
|
||||||
switch kexAlg {
|
switch kexAlg {
|
||||||
case KEX_HERRADURA:
|
case KEX_HERRADURA:
|
||||||
log.Printf("[KEx alg %d accepted]\n", kexAlg)
|
log.Printf("[KEx alg %d accepted]\n", kexAlg)
|
||||||
if HKExAcceptSetup(c, hc) != nil {
|
if HKExAcceptSetup(c, &hc) != nil {
|
||||||
return hc, nil
|
return hc, nil
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -613,9 +613,9 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if shellMode {
|
if shellMode {
|
||||||
doShellMode(isInteractive, conn, oldState, rec)
|
doShellMode(isInteractive, &conn, oldState, rec)
|
||||||
} else { // copyMode
|
} else { // copyMode
|
||||||
_, s := doCopyMode(conn, pathIsDest, fileArgs, rec)
|
_, s := doCopyMode(&conn, pathIsDest, fileArgs, rec)
|
||||||
rec.SetStatus(s)
|
rec.SetStatus(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -606,7 +606,7 @@ func main() {
|
||||||
log.Println("[Bad hkexsh.Session]")
|
log.Println("[Bad hkexsh.Session]")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}(conn)
|
}(&conn)
|
||||||
} // Accept() success
|
} // Accept() success
|
||||||
} //endfor
|
} //endfor
|
||||||
log.Println("[Exiting]")
|
log.Println("[Exiting]")
|
||||||
|
|
Loading…
Reference in New Issue