1package s3crypto
2
3import (
4	"encoding/json"
5)
6
7// MaterialDescription is used to identify how and what master
8// key has been used.
9type MaterialDescription map[string]*string
10
11// Clone returns a copy of the MaterialDescription
12func (md MaterialDescription) Clone() (clone MaterialDescription) {
13	if md == nil {
14		return nil
15	}
16	clone = make(MaterialDescription, len(md))
17	for k, v := range md {
18		clone[k] = copyPtrString(v)
19	}
20	return clone
21}
22
23func (md *MaterialDescription) encodeDescription() ([]byte, error) {
24	v, err := json.Marshal(&md)
25	return v, err
26}
27
28func (md *MaterialDescription) decodeDescription(b []byte) error {
29	return json.Unmarshal(b, &md)
30}
31
32func copyPtrString(v *string) *string {
33	if v == nil {
34		return nil
35	}
36	ns := *v
37	return &ns
38}
39