diff --git a/packages/byteutils/byteutils.go b/packages/byteutils/byteutils.go deleted file mode 100644 index 1f5311f07d9b2240b7267e26fda45a9a69ac20eb..0000000000000000000000000000000000000000 --- a/packages/byteutils/byteutils.go +++ /dev/null @@ -1,17 +0,0 @@ -package byteutils - -func ReadAvailableBytesToBuffer(target []byte, targetOffset int, source []byte, sourceOffset int, sourceLength int) int { - availableBytes := sourceLength - sourceOffset - requiredBytes := len(target) - targetOffset - - var bytesToRead int - if availableBytes < requiredBytes { - bytesToRead = availableBytes - } else { - bytesToRead = requiredBytes - } - - copy(target[targetOffset:], source[sourceOffset:sourceOffset+bytesToRead]) - - return bytesToRead -} diff --git a/packages/crypto/hash20.go b/packages/crypto/hash20.go deleted file mode 100644 index d27ef21a2b30e433a6a6b5f2dc58b57d434efbe8..0000000000000000000000000000000000000000 --- a/packages/crypto/hash20.go +++ /dev/null @@ -1,17 +0,0 @@ -package crypto - -import ( - "crypto/sha256" - - "golang.org/x/crypto/ripemd160" -) - -func Hash20(input []byte) []byte { - sha256Hasher := sha256.New() - sha256Hasher.Write(input) - - ripemd160Hasher := ripemd160.New() - ripemd160Hasher.Write(sha256Hasher.Sum(nil)) - - return ripemd160Hasher.Sum(nil) -} diff --git a/packages/iac/area.go b/packages/iac/area.go deleted file mode 100644 index 7140e553e0b9d94986f4bdbeeee5fcca0bd8e2b6..0000000000000000000000000000000000000000 --- a/packages/iac/area.go +++ /dev/null @@ -1,38 +0,0 @@ -package iac - -import ( - "math" - - olc "github.com/google/open-location-code/go" - "github.com/iotaledger/iota.go/trinary" -) - -type Area struct { - olc.CodeArea - IACCode trinary.Trytes - OLCCode string -} - -func (area *Area) Distance(other *Area) float64 { - lat1, lng1 := area.Center() - lat2, lng2 := other.Center() - - return distance(lat1, lng1, lat2, lng2) -} - -func distance(lat1, lon1, lat2, lon2 float64) float64 { - la1 := lat1 * math.Pi / 180 - lo1 := lon1 * math.Pi / 180 - la2 := lat2 * math.Pi / 180 - lo2 := lon2 * math.Pi / 180 - - return 2 * EARTH_RADIUS_IN_METERS * math.Asin(math.Sqrt(hsin(la2-la1)+math.Cos(la1)*math.Cos(la2)*hsin(lo2-lo1))) -} - -func hsin(theta float64) float64 { - return math.Pow(math.Sin(theta/2), 2) -} - -const ( - EARTH_RADIUS_IN_METERS = 6371000 -) diff --git a/packages/iac/errors.go b/packages/iac/errors.go deleted file mode 100644 index 021c0a0bf7ef56c079e11105e9f0567f892b9079..0000000000000000000000000000000000000000 --- a/packages/iac/errors.go +++ /dev/null @@ -1,8 +0,0 @@ -package iac - -import "github.com/iotaledger/goshimmer/packages/errors" - -var ( - ErrConversionFailed = errors.New("conversion between IAC and internal OLC format failed") - ErrDecodeFailed = errors.Wrap(errors.New("decoding error"), "failed to decode the IAC") -) diff --git a/packages/iac/iac.go b/packages/iac/iac.go deleted file mode 100644 index e1e69661f2fca07bd24132befde5087e0182d22e..0000000000000000000000000000000000000000 --- a/packages/iac/iac.go +++ /dev/null @@ -1,25 +0,0 @@ -package iac - -import ( - olc "github.com/google/open-location-code/go" - "github.com/iotaledger/goshimmer/packages/errors" - "github.com/iotaledger/iota.go/trinary" -) - -func Decode(trytes trinary.Trytes) (result *Area, err errors.IdentifiableError) { - if olcCode, conversionErr := OLCCodeFromTrytes(trytes); conversionErr != nil { - err = conversionErr - } else { - if codeArea, olcErr := olc.Decode(olcCode); olcErr == nil { - result = &Area{ - IACCode: trytes, - OLCCode: olcCode, - CodeArea: codeArea, - } - } else { - err = ErrDecodeFailed.Derive(olcErr, "failed to decode the IAC") - } - } - - return -} diff --git a/packages/iac/olc_conversion.go b/packages/iac/olc_conversion.go deleted file mode 100644 index 632280d778645545b191faf61a3bab00c88855b8..0000000000000000000000000000000000000000 --- a/packages/iac/olc_conversion.go +++ /dev/null @@ -1,56 +0,0 @@ -package iac - -import ( - "github.com/iotaledger/goshimmer/packages/errors" - "github.com/iotaledger/iota.go/trinary" -) - -var ( - OLC_ALPHABET = []rune{'2', '3', '4', '5', '6', '7', '8', '9', 'C', 'F', 'G', 'H', 'J', 'M', 'P', 'Q', 'R', 'V', 'W', 'X'} - IAC_ALPHABET = []rune{'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'W', 'Y', 'Z'} - OLC_TO_IAC_MAP = make(map[rune]rune, 22) - IAC_TO_OLC_MAP = make(map[rune]rune, 22) -) - -const ( - OLC_SEPARATOR = '+' - OLC_PADDING = '0' - IAC_SEPARATOR = '9' - IAC_PADDING = 'A' -) - -func init() { - for pos, char := range OLC_ALPHABET { - OLC_TO_IAC_MAP[char] = IAC_ALPHABET[pos] - IAC_TO_OLC_MAP[IAC_ALPHABET[pos]] = char - } - - OLC_TO_IAC_MAP[OLC_SEPARATOR] = IAC_SEPARATOR - OLC_TO_IAC_MAP[OLC_PADDING] = IAC_PADDING - IAC_TO_OLC_MAP[IAC_SEPARATOR] = OLC_SEPARATOR - IAC_TO_OLC_MAP[IAC_PADDING] = OLC_PADDING -} - -func TrytesFromOLCCode(code string) (result trinary.Trytes, err errors.IdentifiableError) { - for _, char := range code { - if translatedChar, exists := OLC_TO_IAC_MAP[char]; exists { - result += trinary.Trytes(translatedChar) - } else { - err = ErrConversionFailed.Derive("invalid character in input") - } - } - - return -} - -func OLCCodeFromTrytes(trytes trinary.Trytes) (result string, err errors.IdentifiableError) { - for _, char := range trytes { - if translatedChar, exists := IAC_TO_OLC_MAP[char]; exists { - result += string(translatedChar) - } else { - err = ErrConversionFailed.Derive("invalid character in input") - } - } - - return -} diff --git a/packages/identity/constants.go b/packages/identity/constants.go deleted file mode 100644 index 0e23d6ede985f84190bf29282726a50d10eeef53..0000000000000000000000000000000000000000 --- a/packages/identity/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package identity - -import "crypto/ed25519" - -const ( - IDENTIFIER_BYTE_LENGTH = 20 - PUBLIC_KEY_BYTE_LENGTH = ed25519.PublicKeySize - SIGNATURE_BYTE_LENGTH = ed25519.PublicKeySize + ed25519.SignatureSize - - MARSHALED_IDENTITY_PUBLIC_KEY_START = 0 - MARSHALED_IDENTITY_PRIVATE_KEY_START = MARSHALED_IDENTITY_PUBLIC_KEY_END - - MARSHALED_IDENTITY_PUBLIC_KEY_SIZE = PUBLIC_KEY_BYTE_LENGTH - MARSHALED_IDENTITY_PRIVATE_KEY_SIZE = ed25519.PrivateKeySize - - MARSHALED_IDENTITY_PUBLIC_KEY_END = MARSHALED_IDENTITY_PUBLIC_KEY_START + MARSHALED_IDENTITY_PUBLIC_KEY_SIZE - MARSHALED_IDENTITY_PRIVATE_KEY_END = MARSHALED_IDENTITY_PRIVATE_KEY_START + MARSHALED_IDENTITY_PRIVATE_KEY_SIZE - - MARSHALED_IDENTITY_TOTAL_SIZE = MARSHALED_IDENTITY_PRIVATE_KEY_END -) diff --git a/packages/identity/errors.go b/packages/identity/errors.go deleted file mode 100644 index 60f5d59b12356acd5153808fe10f9546e7116e1e..0000000000000000000000000000000000000000 --- a/packages/identity/errors.go +++ /dev/null @@ -1,8 +0,0 @@ -package identity - -import "errors" - -var ( - ErrInvalidDataLen = errors.New("identity: invalid input data length") - ErrInvalidSignature = errors.New("identity: invalid signature") -) diff --git a/packages/identity/identity.go b/packages/identity/identity.go deleted file mode 100644 index e561c81d427da84467a45fc8bbf4b2e6c3342b83..0000000000000000000000000000000000000000 --- a/packages/identity/identity.go +++ /dev/null @@ -1,120 +0,0 @@ -package identity - -import ( - "crypto/ed25519" - "crypto/sha256" - "encoding/hex" - - "github.com/iotaledger/goshimmer/packages/autopeering/peer" -) - -type Identity struct { - Identifier peer.ID - StringIdentifier string - PublicKey ed25519.PublicKey - privateKey ed25519.PrivateKey -} - -// Creates a new identity based on the given public key. -func NewPublicIdentity(publicKey ed25519.PublicKey) *Identity { - identifier := sha256.Sum256(publicKey) - - return &Identity{ - Identifier: identifier, - StringIdentifier: hex.EncodeToString(identifier[:8]), - PublicKey: publicKey, - privateKey: nil, - } -} - -// Generates a identity based on a newly generated public/private key pair. -// It will panic if no such pair could be generated. -func GeneratePrivateIdentity() *Identity { - publicKey, privateKey, err := ed25519.GenerateKey(nil) - if err != nil { - panic("identity: failed generating key: " + err.Error()) - } - - return newPrivateIdentity(publicKey, privateKey) -} - -// Sign signs the message with privateKey and returns the message plus the signature. -func (id *Identity) AddSignature(msg []byte) []byte { - signatureStart := len(msg) - - signature := ed25519.Sign(id.privateKey, msg) - - data := make([]byte, signatureStart+SIGNATURE_BYTE_LENGTH) - - copy(data[:signatureStart], msg) - - // add public key and signature - copy(data[signatureStart:signatureStart+ed25519.PublicKeySize], id.PublicKey) - copy(data[signatureStart+ed25519.PublicKeySize:], signature) - - return data -} - -// Verifies whether the data contains a valid signature of the message. -func (id *Identity) VerifySignature(data []byte) error { - signatureStart := len(data) - SIGNATURE_BYTE_LENGTH - if signatureStart <= 0 { - return ErrInvalidDataLen - } - - msg := data[:signatureStart] - - // ignore the public key - sig := data[signatureStart+ed25519.PublicKeySize:] - - if !ed25519.Verify(id.PublicKey, msg, sig) { - return ErrInvalidSignature - } - - return nil -} - -// Returns the identitiy derived from the signed message. -func FromSignedData(data []byte) (*Identity, error) { - signatureStart := len(data) - SIGNATURE_BYTE_LENGTH - if signatureStart <= 0 { - return nil, ErrInvalidDataLen - } - - pubKey := data[signatureStart : signatureStart+ed25519.PublicKeySize] - - identity := NewPublicIdentity(pubKey) - if err := identity.VerifySignature(data); err != nil { - return nil, err - } - - return identity, nil -} - -func (id *Identity) Marshal() []byte { - data := make([]byte, MARSHALED_IDENTITY_TOTAL_SIZE) - - copy(data[MARSHALED_IDENTITY_PUBLIC_KEY_START:MARSHALED_IDENTITY_PUBLIC_KEY_END], id.PublicKey) - copy(data[MARSHALED_IDENTITY_PRIVATE_KEY_START:MARSHALED_IDENTITY_PRIVATE_KEY_END], id.privateKey) - - return data -} - -func Unmarshal(data []byte) (*Identity, error) { - if len(data) != MARSHALED_IDENTITY_TOTAL_SIZE { - return nil, ErrInvalidDataLen - } - - publicKey := data[MARSHALED_IDENTITY_PUBLIC_KEY_START:MARSHALED_IDENTITY_PUBLIC_KEY_END] - privateKey := data[MARSHALED_IDENTITY_PRIVATE_KEY_START:MARSHALED_IDENTITY_PRIVATE_KEY_END] - - return newPrivateIdentity(publicKey, privateKey), nil -} - -func newPrivateIdentity(publicKey []byte, privateKey []byte) *Identity { - - identity := NewPublicIdentity(publicKey) - identity.privateKey = privateKey - - return identity -} diff --git a/packages/identity/types.go b/packages/identity/types.go deleted file mode 100644 index 30565ab6786fc441931203041602e4d47b1e539f..0000000000000000000000000000000000000000 --- a/packages/identity/types.go +++ /dev/null @@ -1,3 +0,0 @@ -package identity - -type IdentityType int diff --git a/packages/network/udp/events.go b/packages/network/udp/events.go deleted file mode 100644 index 590c6c256b07500a11f109e7d406717de6cca1a9..0000000000000000000000000000000000000000 --- a/packages/network/udp/events.go +++ /dev/null @@ -1,18 +0,0 @@ -package udp - -import ( - "net" - - "github.com/iotaledger/hive.go/events" -) - -type serverEvents struct { - Start *events.Event - Shutdown *events.Event - ReceiveData *events.Event - Error *events.Event -} - -func dataCaller(handler interface{}, params ...interface{}) { - handler.(func(*net.UDPAddr, []byte))(params[0].(*net.UDPAddr), params[1].([]byte)) -} diff --git a/packages/network/udp/server.go b/packages/network/udp/server.go deleted file mode 100644 index 00fe86864cc01c3f31cdf7cb14d9e64444213714..0000000000000000000000000000000000000000 --- a/packages/network/udp/server.go +++ /dev/null @@ -1,71 +0,0 @@ -package udp - -import ( - "net" - "strconv" - "sync" - - "github.com/iotaledger/hive.go/events" -) - -type Server struct { - socket net.PacketConn - socketMutex sync.RWMutex - ReceiveBufferSize int - Events serverEvents -} - -func (this *Server) GetSocket() net.PacketConn { - this.socketMutex.RLock() - defer this.socketMutex.RUnlock() - return this.socket -} - -func (this *Server) Shutdown() { - this.socketMutex.Lock() - defer this.socketMutex.Unlock() - if this.socket != nil { - socket := this.socket - this.socket = nil - - socket.Close() - } -} - -func (this *Server) Listen(address string, port int) { - if socket, err := net.ListenPacket("udp", address+":"+strconv.Itoa(port)); err != nil { - this.Events.Error.Trigger(err) - - return - } else { - this.socketMutex.Lock() - this.socket = socket - this.socketMutex.Unlock() - } - - this.Events.Start.Trigger() - defer this.Events.Shutdown.Trigger() - - buf := make([]byte, this.ReceiveBufferSize) - for this.GetSocket() != nil { - if bytesRead, addr, err := this.GetSocket().ReadFrom(buf); err != nil { - if this.GetSocket() != nil { - this.Events.Error.Trigger(err) - } - } else { - this.Events.ReceiveData.Trigger(addr.(*net.UDPAddr), buf[:bytesRead]) - } - } -} - -func NewServer(receiveBufferSize int) *Server { - return &Server{ - ReceiveBufferSize: receiveBufferSize, - Events: serverEvents{ - Start: events.NewEvent(events.CallbackCaller), - Shutdown: events.NewEvent(events.CallbackCaller), - ReceiveData: events.NewEvent(dataCaller), - Error: events.NewEvent(events.ErrorCaller), - }, - } -} diff --git a/packages/network/udp/types.go b/packages/network/udp/types.go deleted file mode 100644 index 5ee6236e770225de18527d7209f6aa2e8e67ae70..0000000000000000000000000000000000000000 --- a/packages/network/udp/types.go +++ /dev/null @@ -1,9 +0,0 @@ -package udp - -import "net" - -type Callback = func() - -type AddressDataConsumer = func(addr *net.UDPAddr, data []byte) - -type ErrorConsumer = func(err error)