// creates and signs a record for the given key/value pair func makeRecord(ps peer.Peerstore, p peer.ID, k key.Key, v []byte) (*pb.Record, error) { blob := bytes.Join([][]byte{[]byte(k), v, []byte(p)}, []byte{}) sig, err := ps.PrivKey(p).Sign(blob) if err != nil { return nil, err } return &pb.Record{ Key: proto.String(string(k)), Value: v, Author: proto.String(string(p)), Signature: sig, }, nil }