From e2e192cce1babc39219052b6fa4ea400d3bcd5f0 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Mon, 17 Jan 2022 10:18:22 +0100 Subject: [PATCH] Version 1 signature, added Drone CI --- .drone.yml | 12 ++++++++++++ OrbitalBeat.go | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..0ab5000 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,12 @@ +--- +kind: pipeline +type: docker +name: default + +steps: + - name: backend + image: golang:1.18-rc-bullseye + commands: + - go build -o orbeat . + +... diff --git a/OrbitalBeat.go b/OrbitalBeat.go index e465ae5..f8ca748 100644 --- a/OrbitalBeat.go +++ b/OrbitalBeat.go @@ -362,11 +362,17 @@ func (s *ContentMessage) encodeMessage() []byte { n := binary.PutUvarint(buf, s.Version) //signature version _, _ = message.Write(buf[:n]) - if s.Version == 0 { + if s.Version == 0 || s.Version == 1 { _, _ = message.Write(s.PublicKey) n = binary.PutVarint(buf, s.IssueTime) //time _, _ = message.Write(buf[:n]) + if s.Version == 1 { + _, _ = message.Write(s.Identifier.Hash()) + } else { + _, _ = s.Identifier.WriteBytes(message) + } + _, _ = s.Identifier.WriteBytes(message) return message.Bytes() @@ -401,29 +407,50 @@ func DecodeContentMessage(signatureBytes []byte) *ContentMessage { return nil } - if message.Version == 0 { + if message.Version == 0 || message.Version == 1 { message.PublicKey = make([]byte, ed25519.PublicKeySize) _, err := buffer.Read(message.PublicKey) if err != nil { + log.Print(message.String()) + log.Print(err) return nil } message.IssueTime, err = binary.ReadVarint(buffer) if err != nil { + log.Print(message.String()) + log.Print(err) return nil } - _, message.Identifier, err = cid.CidFromReader(buffer) - if err != nil { - return nil + if message.Version == 1 { + read, mh, err := multihash.MHFromBytes(buffer.Bytes()) + if err != nil { + log.Print(message.String()) + log.Print(err) + return nil + } + buffer.Next(read) + message.Identifier = cid.NewCidV1(cid.Raw, mh) + } else { + _, message.Identifier, err = cid.CidFromReader(buffer) + if err != nil { + log.Print(message.String()) + log.Print(err) + return nil + } } message.Signature = make([]byte, ed25519.SignatureSize) _, err = buffer.Read(message.Signature) if err != nil { + log.Print(message.String()) + log.Print(err) return nil } if buffer.Len() != 0 { //Unknown extra data + log.Print(message.String()) + log.Printf("%x", buffer.Bytes()) return nil }