From be4dca5bf7054b80b872697a39a79e296eb15b7b Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Tue, 20 Jan 2015 20:27:59 +0000 Subject: [PATCH] cosmetic: move crypto types from types.go into crypto.go --- router/crypto.go | 93 ++++++++++++++++++++++++++++++++++++++++++ router/types.go | 102 ----------------------------------------------- 2 files changed, 93 insertions(+), 102 deletions(-) diff --git a/router/crypto.go b/router/crypto.go index 71997d1e..044b3eff 100644 --- a/router/crypto.go +++ b/router/crypto.go @@ -11,6 +11,8 @@ import ( "encoding/gob" "fmt" "log" + "net" + "sync" ) func GenerateKeyPair() (publicKey, privateKey *[32]byte, err error) { @@ -99,6 +101,34 @@ func DecodeNonce(msg []byte) (bool, *[24]byte) { // Frame Encryptors +type Encryptor interface { + FrameOverhead() int + PacketOverhead() int + IsEmpty() bool + Bytes() []byte + AppendFrame(*ForwardedFrame) + TotalLen() int +} + +type NonEncryptor struct { + buf []byte + bufTail []byte + buffered int + prefixLen int +} + +type NaClEncryptor struct { + NonEncryptor + buf []byte + offset uint16 + nonce *[24]byte + nonceChan chan *[24]byte + flags uint16 + prefixLen int + conn *LocalConnection + df bool +} + func NewNonEncryptor(prefix []byte) *NonEncryptor { buf := make([]byte, MaxUDPPacketSize) prefixLen := copy(buf, prefix) @@ -212,6 +242,33 @@ func (ne *NaClEncryptor) TotalLen() int { // Frame Decryptors +type FrameConsumer func(*LocalConnection, *net.UDPAddr, []byte, []byte, uint16, []byte) error + +type Decryptor interface { + IterateFrames(FrameConsumer, *UDPPacket) error + ReceiveNonce([]byte) + Shutdown() +} + +type NonDecryptor struct { + conn *LocalConnection +} + +type NaClDecryptor struct { + NonDecryptor + instance *NaClDecryptorInstance + instanceDF *NaClDecryptorInstance +} + +type NaClDecryptorInstance struct { + nonce *[24]byte + previousNonce *[24]byte + usedOffsets *bit.Set + previousUsedOffsets *bit.Set + highestOffsetSeen uint16 + nonceChan chan *[24]byte +} + func NewNonDecryptor(conn *LocalConnection) *NonDecryptor { return &NonDecryptor{conn: conn} } @@ -378,6 +435,28 @@ func (nd *NaClDecryptor) decrypt(buf []byte) ([]byte, error) { // TCP Senders +type TCPSender interface { + Send([]byte) error +} + +type SimpleTCPSender struct { + encoder *gob.Encoder +} + +type EncryptedTCPSender struct { + sync.RWMutex + outerEncoder *gob.Encoder + innerEncoder *gob.Encoder + buffer *bytes.Buffer + conn *LocalConnection + msgCount int +} + +type EncryptedTCPMessage struct { + Number int + Body []byte +} + func NewSimpleTCPSender(encoder *gob.Encoder) *SimpleTCPSender { return &SimpleTCPSender{encoder: encoder} } @@ -417,6 +496,20 @@ func (sender *EncryptedTCPSender) Send(msg []byte) error { // TCP Receivers +type TCPReceiver interface { + Decode([]byte) ([]byte, error) +} + +type SimpleTCPReceiver struct { +} + +type EncryptedTCPReceiver struct { + conn *LocalConnection + decoder *gob.Decoder + buffer *bytes.Buffer + msgCount int +} + func NewSimpleTCPReceiver() *SimpleTCPReceiver { return &SimpleTCPReceiver{} } diff --git a/router/types.go b/router/types.go index 7cd5b18f..96fb7f95 100644 --- a/router/types.go +++ b/router/types.go @@ -1,11 +1,8 @@ package router import ( - "bytes" - "code.google.com/p/go-bit/bit" "code.google.com/p/gopacket" "code.google.com/p/gopacket/layers" - "encoding/gob" "net" "sync" "time" @@ -155,105 +152,6 @@ type RawUDPSender struct { conn *LocalConnection } -// TCPSender interface and implementations - -type TCPSender interface { - Send([]byte) error -} - -type SimpleTCPSender struct { - encoder *gob.Encoder -} - -type EncryptedTCPSender struct { - sync.RWMutex - outerEncoder *gob.Encoder - innerEncoder *gob.Encoder - buffer *bytes.Buffer - conn *LocalConnection - msgCount int -} - -type EncryptedTCPMessage struct { - Number int - Body []byte -} - -// TCPReceiver interface and implementations - -type TCPReceiver interface { - Decode([]byte) ([]byte, error) -} - -type SimpleTCPReceiver struct { -} - -type EncryptedTCPReceiver struct { - conn *LocalConnection - decoder *gob.Decoder - buffer *bytes.Buffer - msgCount int -} - -// Encryptor interface and implementations - -type Encryptor interface { - FrameOverhead() int - PacketOverhead() int - IsEmpty() bool - Bytes() []byte - AppendFrame(*ForwardedFrame) - TotalLen() int -} - -type NonEncryptor struct { - buf []byte - bufTail []byte - buffered int - prefixLen int -} - -type NaClEncryptor struct { - NonEncryptor - buf []byte - offset uint16 - nonce *[24]byte - nonceChan chan *[24]byte - flags uint16 - prefixLen int - conn *LocalConnection - df bool -} - -// Decryptor interface and implementations - -type FrameConsumer func(*LocalConnection, *net.UDPAddr, []byte, []byte, uint16, []byte) error - -type Decryptor interface { - IterateFrames(FrameConsumer, *UDPPacket) error - ReceiveNonce([]byte) - Shutdown() -} - -type NonDecryptor struct { - conn *LocalConnection -} - -type NaClDecryptor struct { - NonDecryptor - instance *NaClDecryptorInstance - instanceDF *NaClDecryptorInstance -} - -type NaClDecryptorInstance struct { - nonce *[24]byte - previousNonce *[24]byte - usedOffsets *bit.Set - previousUsedOffsets *bit.Set - highestOffsetSeen uint16 - nonceChan chan *[24]byte -} - // Packet capture/inject interfaces type PacketSource interface {