|
|
@ -26,6 +26,7 @@ type Group struct { |
|
|
|
Owner string |
|
|
|
IsCompromised bool |
|
|
|
InitialMessage []byte |
|
|
|
Attributes map[string]string |
|
|
|
lock sync.Mutex |
|
|
|
NewMessage chan Message `json:"-"` |
|
|
|
} |
|
|
@ -49,6 +50,7 @@ func NewGroup(server string) (*Group, error) { |
|
|
|
} |
|
|
|
copy(group.GroupKey[:], groupKey[:]) |
|
|
|
group.Owner = "self" |
|
|
|
group.Attributes = make(map[string]string) |
|
|
|
return group, nil |
|
|
|
} |
|
|
|
|
|
|
@ -152,3 +154,18 @@ func (g *Group) DecryptMessage(ciphertext []byte) (bool, *protocol.DecryptedGrou |
|
|
|
} |
|
|
|
return false, nil |
|
|
|
} |
|
|
|
|
|
|
|
// SetAttribute allows applications to store arbitrary configuration info at the group level.
|
|
|
|
func (g *Group) SetAttribute(name string, value string) { |
|
|
|
g.lock.Lock() |
|
|
|
defer g.lock.Unlock() |
|
|
|
g.Attributes[name] = value |
|
|
|
} |
|
|
|
|
|
|
|
// GetAttribute returns the value of a value set with SetAttribute. If no such value has been set exists is set to false.
|
|
|
|
func (g *Group) GetAttribute(name string) (value string, exists bool) { |
|
|
|
g.lock.Lock() |
|
|
|
defer g.lock.Unlock() |
|
|
|
value, exists = g.Attributes[name] |
|
|
|
return |
|
|
|
} |
|
|
|