check in beginnings of new cleaned-up noise prototype

This commit is contained in:
eyedeekay
2024-07-01 18:50:13 -04:00
parent aca62174e6
commit c09161c824
6 changed files with 105 additions and 4 deletions

View File

@ -50,7 +50,7 @@ please keep up with these changes, as they will not be backward compatible and r
- [ ] Message parsing
- [ ] Message handling
- NetDB
- [ ] Local storage
- [/] Local storage
- [/] Persistence to disk
- [X] Reseeding
- [ ] Lookups

2
go.mod
View File

@ -4,6 +4,7 @@ go 1.21
require (
github.com/eyedeekay/go-unzip v0.0.0-20240201194209-560d8225b50e
github.com/flynn/noise v1.1.0
github.com/sirupsen/logrus v1.9.3
github.com/stretchr/testify v1.7.0
golang.org/x/crypto v0.23.0
@ -13,6 +14,5 @@ require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/sys v0.20.0 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
)

8
go.sum
View File

@ -3,6 +3,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/eyedeekay/go-unzip v0.0.0-20240201194209-560d8225b50e h1:NMjWYVkgcQHGOy0/VxU0TU6smrcoxzj9hwDesx2sB0w=
github.com/eyedeekay/go-unzip v0.0.0-20240201194209-560d8225b50e/go.mod h1:fKfFM3BsOOyjtZmEty7FsGzGabXo8Eb/dHjyIhTtxsE=
github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg=
github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag=
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@ -15,11 +17,17 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

View File

@ -69,9 +69,8 @@ func (r *Router) mainloop() {
e = err
}
if sz := r.ndb.Size(); sz >= 0 {
log.Println("NetDB Size:", sz)
log.Info("NetDB Size:", sz)
}
if e == nil {
// netdb ready
log.WithFields(log.Fields{

View File

@ -0,0 +1,64 @@
package noise
import (
"net"
"sync"
"github.com/flynn/noise"
)
// wrapper around flynn/noise with just enough options exposed to enable configuring NTCP2
type Noise struct {
noise.Config
*noise.HandshakeState
sync.Mutex
lock bool
send, recv *noise.CipherState
}
func NewNoise() (ns Noise, err error){
ns.Config = noise.Config{
CipherSuite: noise.NewCipherSuite(noise.DH25519, noise.CipherChaChaPoly, noise.HashSHA256),
Pattern: noise.HandshakeXK,
//StaticKeypair: ,
//EphemeralKeypair: ,
}
return
}
func (ns *Noise) unlockMutex() {
if (ns.lock){
ns.lock = false
ns.Mutex.Unlock()
}
}
func (ns *Noise) lockMutex() {
if (!ns.lock) {
ns.lock = true
ns.Mutex.Lock()
}
}
func (ns *Noise) Dial(n, addr string) (conn net.Conn, err error) {
ns.Config.Initiator = true
ns.HandshakeState, err = noise.NewHandshakeState(ns.Config)
if err != nil {
return
}
conn, err = net.Dial(n, addr)
if err != nil {
return
}
return
}
func (ns *Noise) Listen(n, addr string) (list net.Listener, err error) {
ns.Config.Initiator = false
list, err = net.Listen(n, addr)
if err != nil {
return
}
return
}

View File

@ -0,0 +1,30 @@
package noise
import (
"log"
"testing"
)
func TestEstablishment(t *testing.T) {
// assert := assert.New(t)
log.Println("NOISE TEST")
ns, err := NewNoise()
if err != nil {
t.Error("ERROR", err)
}
log.Println("NOISE TEST")
conn, err := ns.Dial("tcp", "[2604:a880:cad:d0::d2d:7001]:14433")
if err != nil {
t.Error("ERROR", err)
}
log.Println("NOISE TEST")
test := []byte("test-----------------------------------------------------------------------------------------------------------------------------------------------------------------test")
bytes, err := conn.Write(test)
if err != nil {
t.Error(err)
}
log.Println("NOISE TEST")
log.Print(bytes)
}