dc4bc/storage/types.go

36 lines
691 B
Go
Raw Normal View History

package storage
2020-08-14 05:34:15 -07:00
import (
"bytes"
"crypto/ed25519"
)
type Message struct {
ID string `json:"id"`
Offset uint64 `json:"offset"`
2020-08-14 05:34:15 -07:00
Event string `json:"event"`
Data []byte `json:"data"`
Signature []byte `json:"signature"`
Sender string `json:"sender"`
}
func (m *Message) Bytes() []byte {
buf := bytes.NewBuffer(nil)
buf.Write([]byte(m.Sender))
buf.Write([]byte(m.Event))
buf.Write(m.Data)
return buf.Bytes()
}
func (m *Message) Verify(pubKey ed25519.PublicKey) bool {
return ed25519.Verify(pubKey, m.Bytes(), m.Signature)
}
type Storage interface {
Send(message Message) (Message, error)
2020-07-30 03:29:47 -07:00
GetMessages(offset uint64) ([]Message, error)
Close() error
}