diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..508bc12 --- /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 fcmm . + +... diff --git a/Dockerfile b/Dockerfile index 376ebb1..04303ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.17-bullseye +FROM golang:1.18-rc-bullseye COPY . /src diff --git a/FinalCommander.go b/FinalCommander.go index 676573e..fda0910 100644 --- a/FinalCommander.go +++ b/FinalCommander.go @@ -189,11 +189,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() @@ -229,7 +235,7 @@ 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 { @@ -244,11 +250,22 @@ func DecodeContentMessage(signatureBytes []byte) *ContentMessage { return nil } - _, message.Identifier, err = cid.CidFromReader(buffer) - if err != nil { - log.Print(message.String()) - log.Print(err) - 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) @@ -420,7 +437,7 @@ func handle(w http.ResponseWriter, r *http.Request) { //TODO: signing cache message := &ContentMessage{ - Version: 0, + Version: 1, IssueTime: time.Now().UTC().Unix(), Identifier: identifier, }