mirror of https://gogs.blitter.com/RLabs/xs
Made server.go and serverp.go (plaintext net example) use same bufsize
This commit is contained in:
parent
9054bcb89f
commit
aaa99360be
41
README.md
41
README.md
|
@ -1,16 +1,33 @@
|
|||
This is an implementation of the 'HerraduraKEx' key exchange algorithm in golang.
|
||||
See github.com/Caume/HerraduraKEx
|
||||
This is a drop-in replacement for the golang/pkg/net facilities
|
||||
(net.Dial(), net.Listen(), net.Accept() and net.Conn type) using the
|
||||
experimental HerraduraKEx 'secure' key exchange algorithm, first released at
|
||||
github.com/Caume/HerraduraKEx
|
||||
|
||||
package herradurakex is a simple golang library to manage key exchanges using the algorithm
|
||||
and (TODO) wraps/extends golang.org/pkg/net/, Listener interface, Dial/Accept methods by
|
||||
providing a HKexConn built on top of the vanilla Conn.
|
||||
One can simply replace calls to net.Dial() with hkex.Dial(), and likewise
|
||||
net.Listen() with hkex.Listen(), to obtain connections (hkex.Conn) conforming
|
||||
to the basic net.Conn interface. Upon Dial(), the HerraduraKEx key exchange
|
||||
is initiated (whereby client and server independently derive the same
|
||||
keying material) and session algorithms to be used are exchanged allowing an
|
||||
encrypted channel between client and server.
|
||||
|
||||
Theory:
|
||||
1. Build a standard pkg/net/ Conn c
|
||||
2. Build a HKexConn passing in Conn hc (HKexConn implements io.Reader,io.Writer)s
|
||||
3. Dial/Listen on hc (it will do the KEx and store session key, negotiate crypto alg.)
|
||||
4. Call any pkg/net ops as usual using HKexConn
|
||||
NOTE: the terms 'secure' and 'securely' where used above are purposely
|
||||
enclosed in singled quotes due to the experimental nature of the HerraduraKEx
|
||||
algorithm used to derive crypto keying material on each end.
|
||||
As of this time no verdict by acknowledged 'crypto experts' as to the true
|
||||
security of the HerraduraKEx algorithm for purposes of session key exchange
|
||||
over an insecure channel has been rendered.
|
||||
It is hoped that such experts in the field will analyze the algorithm and
|
||||
determine if it is indeed a suitable one for use in situations where
|
||||
Diffie-Hellman key exchange is currently utilized.
|
||||
|
||||
To run
|
||||
--
|
||||
$ go get <tbd>/herradurakex.git
|
||||
$ cd $GOPATH/src/<tbd>/herradurakex
|
||||
$ go install .
|
||||
$ cd demo/
|
||||
$ go build client.go && go build server.go
|
||||
|
||||
? -rlm 2018-01-06
|
||||
|
||||
[ in separate shell windows ]
|
||||
[A]$ ./server
|
||||
[B]$ ./client
|
||||
|
|
|
@ -39,7 +39,7 @@ func main() {
|
|||
go func(ch chan []byte, eCh chan error) {
|
||||
for {
|
||||
// try to read the data
|
||||
data := make([]byte, 64)
|
||||
data := make([]byte, 512)
|
||||
chN, err = c.Read(data)
|
||||
if err != nil {
|
||||
// send an error if it's encountered
|
||||
|
|
Loading…
Reference in New Issue