merged some things together
This commit is contained in:
@@ -5,7 +5,7 @@ import (
|
||||
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -3,7 +3,7 @@ package confirm
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/prv"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/pub"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -3,7 +3,7 @@ package dxresponse
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"net/netip"
|
||||
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -3,7 +3,7 @@ package response
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"net/netip"
|
||||
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/prv"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/noop"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/noop"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -59,7 +59,7 @@ func New(hop byte) (x *Layer) {
|
||||
if pldPrv, e = prv.GenerateKey(); check(e) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
return &Layer{
|
||||
ID: nonce.NewID(),
|
||||
Hop: hop,
|
||||
@@ -1,38 +1,31 @@
|
||||
package onion
|
||||
package relay
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
|
||||
"git-indra.lan/indra-labs/indra"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/ecdh"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/prv"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/pub"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/dxresponse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/dxresponse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
var (
|
||||
log = log2.GetLogger(indra.PathBase)
|
||||
check = log.E.Chk
|
||||
)
|
||||
|
||||
func Encode(on types.Onion) (b slice.Bytes) {
|
||||
b = make(slice.Bytes, on.Len())
|
||||
var sc slice.Cursor
|
||||
@@ -1,4 +1,4 @@
|
||||
package onion
|
||||
package relay
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
@@ -12,14 +12,14 @@ import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/pub"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/tests"
|
||||
@@ -3,7 +3,7 @@ package relay
|
||||
import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/magicbytes"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
@@ -2,15 +2,15 @@ package relay
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/delay"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
func (eng *Engine) delay(on *delay.Layer, b slice.Bytes,
|
||||
c *slice.Cursor, prev types.Onion) {
|
||||
|
||||
|
||||
// this is a message to hold the message in the buffer until a duration
|
||||
// elapses. The accounting for the remainder of the message adds a
|
||||
// factor to the effective byte consumption in accordance with the time
|
||||
|
||||
@@ -6,10 +6,9 @@ import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
@@ -34,7 +33,7 @@ func (eng *Engine) exit(ex *exit.Layer, b slice.Bytes,
|
||||
}
|
||||
// We need to wrap the result in a message crypt.
|
||||
eng.Lock()
|
||||
res := onion.Encode(&response.Layer{
|
||||
res := Encode(&response.Layer{
|
||||
ID: ex.ID,
|
||||
Port: ex.Port,
|
||||
Load: eng.Load,
|
||||
|
||||
@@ -2,16 +2,16 @@ package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
func (eng *Engine) forward(on *forward.Layer, b slice.Bytes,
|
||||
c *slice.Cursor, prev types.Onion) {
|
||||
|
||||
|
||||
// forward the whole buffer received onwards. Usually there will be a
|
||||
// crypt.Layer under this which will be unwrapped by the receiver.
|
||||
if on.AddrPort.String() == eng.GetLocalNodeAddress().String() {
|
||||
|
||||
@@ -3,10 +3,9 @@ package relay
|
||||
import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -37,7 +36,7 @@ func (eng *Engine) getBalance(on *getbalance.Layer,
|
||||
}
|
||||
header := b[*c:c.Inc(crypt.ReverseHeaderLen)]
|
||||
rb := FormatReply(header,
|
||||
onion.Encode(bal), on.Ciphers, on.Nonces)
|
||||
Encode(bal), on.Ciphers, on.Nonces)
|
||||
rb = append(rb, slice.NoisePad(714-len(rb))...)
|
||||
switch on1 := prev.(type) {
|
||||
case *crypt.Layer:
|
||||
@@ -63,7 +62,7 @@ func (eng *Engine) getBalance(on *getbalance.Layer,
|
||||
return false
|
||||
})
|
||||
rb = FormatReply(header,
|
||||
onion.Encode(bal), on.Ciphers, on.Nonces)
|
||||
Encode(bal), on.Ciphers, on.Nonces)
|
||||
rb = append(rb, slice.NoisePad(714-len(rb))...)
|
||||
eng.handleMessage(rb, on)
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/response"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
// response is a payload from an exit message.
|
||||
func (eng *Engine) response(on *response.Layer, b slice.Bytes,
|
||||
cur *slice.Cursor, prev types.Onion) {
|
||||
|
||||
|
||||
pending := eng.PendingResponses.Find(on.ID)
|
||||
log.T.F("searching for pending ID %x", on.ID)
|
||||
if pending != nil {
|
||||
|
||||
@@ -4,9 +4,8 @@ import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/ciph"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
@@ -17,7 +16,7 @@ func (eng *Engine) reverse(on *reverse.Layer, b slice.Bytes,
|
||||
var e error
|
||||
var on2 types.Onion
|
||||
if on.AddrPort.String() == eng.GetLocalNodeAddress().String() {
|
||||
if on2, e = onion.Peel(b, c); check(e) {
|
||||
if on2, e = Peel(b, c); check(e) {
|
||||
return
|
||||
}
|
||||
switch on1 := on2.(type) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
|
||||
@@ -4,17 +4,16 @@ import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -85,7 +84,7 @@ func (eng *Engine) handleMessage(b slice.Bytes, prev types.Onion) {
|
||||
var on1 types.Onion
|
||||
var e error
|
||||
c := slice.NewCursor()
|
||||
if on1, e = onion.Peel(b, c); check(e) {
|
||||
if on1, e = Peel(b, c); check(e) {
|
||||
return
|
||||
}
|
||||
switch on := on1.(type) {
|
||||
|
||||
@@ -6,8 +6,7 @@ import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/cryptorand"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -79,7 +78,7 @@ func (eng *Engine) BuyNewSessions(amount lnwire.MilliSatoshi,
|
||||
}
|
||||
}
|
||||
// todo: handle payment failures!
|
||||
o := onion.SendKeys(conf, s, returnSession, nodes[:], eng.KeySet)
|
||||
o := SendKeys(conf, s, returnSession, nodes[:], eng.KeySet)
|
||||
res := eng.PostAcctOnion(o)
|
||||
eng.SendWithOneHook(nodes[0].AddrPort, res, func(id nonce.ID, b slice.Bytes) {
|
||||
eng.SessionManager.Lock()
|
||||
|
||||
@@ -4,14 +4,13 @@ import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
@@ -28,8 +27,8 @@ type SendData struct {
|
||||
// PostAcctOnion takes a slice of Skins and calculates their costs and
|
||||
// the list of sessions inside them and attaches accounting operations to
|
||||
// apply when the associated confirmation(s) or response hooks are executed.
|
||||
func (eng *Engine) PostAcctOnion(o onion.Skins) (res SendData) {
|
||||
res.b = onion.Encode(o.Assemble())
|
||||
func (eng *Engine) PostAcctOnion(o Skins) (res SendData) {
|
||||
res.b = Encode(o.Assemble())
|
||||
// do client accounting
|
||||
skip := false
|
||||
for i := range o {
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"time"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
@@ -19,7 +18,7 @@ func (eng *Engine) SendExit(port uint16, message slice.Bytes, id nonce.ID,
|
||||
se := eng.SelectHops(hops, s)
|
||||
var c traffic.Circuit
|
||||
copy(c[:], se)
|
||||
o := onion.SendExit(port, message, id, se[len(se)-1], c, eng.KeySet)
|
||||
o := SendExit(port, message, id, se[len(se)-1], c, eng.KeySet)
|
||||
log.D.Ln("sending out exit onion")
|
||||
res := eng.PostAcctOnion(o)
|
||||
eng.SendWithOneHook(c[0].AddrPort, res, hook)
|
||||
@@ -27,19 +26,19 @@ func (eng *Engine) SendExit(port uint16, message slice.Bytes, id nonce.ID,
|
||||
|
||||
func (eng *Engine) MakeExit(port uint16, message slice.Bytes, id nonce.ID,
|
||||
target *traffic.Session) (c traffic.Circuit,
|
||||
o onion.Skins) {
|
||||
o Skins) {
|
||||
|
||||
hops := []byte{0, 1, 2, 3, 4, 5}
|
||||
s := make(traffic.Sessions, len(hops))
|
||||
s[2] = target
|
||||
se := eng.SelectHops(hops, s)
|
||||
copy(c[:], se)
|
||||
o = onion.SendExit(port, message, id, se[len(se)-1], c, eng.KeySet)
|
||||
o = SendExit(port, message, id, se[len(se)-1], c, eng.KeySet)
|
||||
return
|
||||
}
|
||||
|
||||
func (eng *Engine) SendExitNew(c traffic.Circuit,
|
||||
o onion.Skins, hook func(id nonce.ID, b slice.Bytes),
|
||||
o Skins, hook func(id nonce.ID, b slice.Bytes),
|
||||
timeout time.Duration) {
|
||||
|
||||
log.D.Ln("sending out exit onion")
|
||||
|
||||
@@ -2,7 +2,6 @@ package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
)
|
||||
|
||||
@@ -14,7 +13,7 @@ func (eng *Engine) SendGetBalance(target *traffic.Session, hook Callback) {
|
||||
var c traffic.Circuit
|
||||
copy(c[:], se)
|
||||
confID := nonce.NewID()
|
||||
o := onion.GetBalance(target.ID, confID, se[5], c, eng.KeySet)
|
||||
o := GetBalance(target.ID, confID, se[5], c, eng.KeySet)
|
||||
log.D.Ln("sending out getbalance onion")
|
||||
res := eng.PostAcctOnion(o)
|
||||
eng.SendWithOneHook(c[0].AddrPort, res, hook)
|
||||
|
||||
@@ -7,25 +7,24 @@ import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
func (eng *Engine) SendOnion(ap *netip.AddrPort, o onion.Skins,
|
||||
func (eng *Engine) SendOnion(ap *netip.AddrPort, o Skins,
|
||||
responseHook func(id nonce.ID, b slice.Bytes), timeout time.Duration) {
|
||||
|
||||
if timeout == 0 {
|
||||
timeout = DefaultTimeout
|
||||
}
|
||||
b := onion.Encode(o.Assemble())
|
||||
b := Encode(o.Assemble())
|
||||
var billable []nonce.ID
|
||||
var ret nonce.ID
|
||||
var last nonce.ID
|
||||
|
||||
@@ -2,7 +2,6 @@ package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
)
|
||||
|
||||
@@ -13,7 +12,7 @@ func (eng *Engine) SendPing(c traffic.Circuit, hook Callback) {
|
||||
se := eng.SelectHops(hops, s)
|
||||
copy(c[:], se)
|
||||
confID := nonce.NewID()
|
||||
o := onion.Ping(confID, se[len(se)-1], c, eng.KeySet)
|
||||
o := Ping(confID, se[len(se)-1], c, eng.KeySet)
|
||||
res := eng.PostAcctOnion(o)
|
||||
eng.SendWithOneHook(c[0].AddrPort, res, hook)
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package onion
|
||||
package relay
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/prv"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/pub"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/signer"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
package onion
|
||||
package relay
|
||||
|
||||
import (
|
||||
"net/netip"
|
||||
@@ -9,17 +9,17 @@ import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/prv"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/key/pub"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/noop"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/balance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/confirm"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/delay"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/exit"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/forward"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/getbalance"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/noop"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/response"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/reverse"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/traffic"
|
||||
"git-indra.lan/indra-labs/indra/pkg/types"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
|
||||
type Skins []types.Onion
|
||||
|
||||
var os = &noop.Layer{}
|
||||
var nop = &noop.Layer{}
|
||||
|
||||
func (o Skins) ForwardCrypt(s *traffic.Session, k *prv.Key,
|
||||
n nonce.IV) Skins {
|
||||
@@ -64,7 +64,7 @@ func (o Skins) Confirmation(id nonce.ID, load byte) Skins {
|
||||
}
|
||||
|
||||
func (o Skins) Delay(d time.Duration) Skins {
|
||||
return append(o, &delay.Layer{Duration: d, Onion: os})
|
||||
return append(o, &delay.Layer{Duration: d, Onion: nop})
|
||||
}
|
||||
|
||||
func (o Skins) Exit(port uint16, prvs [3]*prv.Key, pubs [3]*pub.Key,
|
||||
@@ -76,7 +76,7 @@ func (o Skins) Exit(port uint16, prvs [3]*prv.Key, pubs [3]*pub.Key,
|
||||
Nonces: nonces,
|
||||
ID: id,
|
||||
Bytes: payload,
|
||||
Onion: os,
|
||||
Onion: nop,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ func (o Skins) GetBalance(id, confID nonce.ID, prvs [3]*prv.Key,
|
||||
ConfID: confID,
|
||||
Ciphers: GenCiphers(prvs, pubs),
|
||||
Nonces: nonces,
|
||||
Onion: os,
|
||||
Onion: nop,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -109,12 +109,12 @@ func (o Skins) Crypt(toHdr, toPld *pub.Key, from *prv.Key, n nonce.IV,
|
||||
ToPayloadPub: toPld,
|
||||
From: from,
|
||||
Nonce: n,
|
||||
Onion: os,
|
||||
Onion: nop,
|
||||
})
|
||||
}
|
||||
|
||||
func (o Skins) Reverse(ip *netip.AddrPort) Skins {
|
||||
return append(o, &reverse.Layer{AddrPort: ip, Onion: os})
|
||||
return append(o, &reverse.Layer{AddrPort: ip, Onion: nop})
|
||||
}
|
||||
|
||||
func (o Skins) Response(id nonce.ID, res slice.Bytes, port uint16) Skins {
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/ciph"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/crypt"
|
||||
"git-indra.lan/indra-labs/indra/pkg/util/slice"
|
||||
)
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@ package traffic
|
||||
|
||||
import (
|
||||
"git-indra.lan/indra-labs/lnd/lnd/lnwire"
|
||||
|
||||
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/nonce"
|
||||
"git-indra.lan/indra-labs/indra/pkg/crypto/sha256"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/layers/session"
|
||||
"git-indra.lan/indra-labs/indra/pkg/onion/session"
|
||||
)
|
||||
|
||||
type Payment struct {
|
||||
@@ -20,7 +20,7 @@ type PaymentChan chan *Payment
|
||||
// Send a payment on the PaymentChan.
|
||||
func (pc PaymentChan) Send(amount lnwire.MilliSatoshi,
|
||||
s *session.Layer) (confirmChan chan bool) {
|
||||
|
||||
|
||||
confirmChan = make(chan bool)
|
||||
pc <- &Payment{
|
||||
ID: s.ID,
|
||||
@@ -77,7 +77,7 @@ func (p PendingPayments) FindPreimage(pi sha256.Hash) (pp *Payment) {
|
||||
|
||||
func (sm *SessionManager) AddPendingPayment(
|
||||
np *Payment) {
|
||||
|
||||
|
||||
sm.Lock()
|
||||
defer sm.Unlock()
|
||||
log.D.F("%s adding pending payment %s for %v",
|
||||
@@ -87,21 +87,21 @@ func (sm *SessionManager) AddPendingPayment(
|
||||
}
|
||||
func (sm *SessionManager) DeletePendingPayment(
|
||||
preimage sha256.Hash) {
|
||||
|
||||
|
||||
sm.Lock()
|
||||
defer sm.Unlock()
|
||||
sm.PendingPayments = sm.PendingPayments.Delete(preimage)
|
||||
}
|
||||
func (sm *SessionManager) FindPendingPayment(
|
||||
id nonce.ID) (pp *Payment) {
|
||||
|
||||
|
||||
sm.Lock()
|
||||
defer sm.Unlock()
|
||||
return sm.PendingPayments.Find(id)
|
||||
}
|
||||
func (sm *SessionManager) FindPendingPreimage(
|
||||
pi sha256.Hash) (pp *Payment) {
|
||||
|
||||
|
||||
log.T.F("searching preimage %x", pi)
|
||||
sm.Lock()
|
||||
defer sm.Unlock()
|
||||
|
||||
Reference in New Issue
Block a user