Version 1 signature, added Drone CI
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2022-01-17 10:18:22 +01:00
parent 566bcaffb9
commit e2e192cce1
2 changed files with 44 additions and 5 deletions

12
.drone.yml Normal file
View file

@ -0,0 +1,12 @@
---
kind: pipeline
type: docker
name: default
steps:
- name: backend
image: golang:1.18-rc-bullseye
commands:
- go build -o orbeat .
...

View file

@ -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
}