Encode encodes s as a CBOR item.
()
| 45 | |
| 46 | // Encode encodes s as a CBOR item. |
| 47 | func (s *SignedSubset) Encode() ([]byte, error) { |
| 48 | mes := []*cbor.MapEntryEncoder{ |
| 49 | cbor.GenerateMapEntry(func(keyE *cbor.Encoder, valueE *cbor.Encoder) { |
| 50 | keyE.EncodeTextString("validity-url") |
| 51 | valueE.EncodeTextString(s.ValidityUrl.String()) |
| 52 | }), |
| 53 | cbor.GenerateMapEntry(func(keyE *cbor.Encoder, valueE *cbor.Encoder) { |
| 54 | keyE.EncodeTextString("auth-sha256") |
| 55 | valueE.EncodeByteString(s.AuthSha256) |
| 56 | }), |
| 57 | cbor.GenerateMapEntry(func(keyE *cbor.Encoder, valueE *cbor.Encoder) { |
| 58 | keyE.EncodeTextString("date") |
| 59 | valueE.EncodeInt(s.Date.Unix()) |
| 60 | }), |
| 61 | cbor.GenerateMapEntry(func(keyE *cbor.Encoder, valueE *cbor.Encoder) { |
| 62 | keyE.EncodeTextString("expires") |
| 63 | valueE.EncodeInt(s.Expires.Unix()) |
| 64 | }), |
| 65 | cbor.GenerateMapEntry(func(keyE *cbor.Encoder, valueE *cbor.Encoder) { |
| 66 | keyE.EncodeTextString("subset-hashes") |
| 67 | subsetHashes := []*cbor.MapEntryEncoder{} |
| 68 | for url, rh := range s.SubsetHashes { |
| 69 | subsetHashes = append(subsetHashes, |
| 70 | cbor.GenerateMapEntry(func(keyE *cbor.Encoder, valueE *cbor.Encoder) { |
| 71 | keyE.EncodeTextString(url) |
| 72 | valueE.EncodeArrayHeader(1 + len(rh.Hashes)*2) |
| 73 | valueE.EncodeByteString(rh.VariantsValue) |
| 74 | for _, ri := range rh.Hashes { |
| 75 | valueE.EncodeByteString(ri.HeaderSha256) |
| 76 | valueE.EncodeTextString(ri.PayloadIntegrityHeader) |
| 77 | } |
| 78 | })) |
| 79 | } |
| 80 | valueE.EncodeMap(subsetHashes) |
| 81 | }), |
| 82 | } |
| 83 | var buf bytes.Buffer |
| 84 | enc := cbor.NewEncoder(&buf) |
| 85 | if err := enc.EncodeMap(mes); err != nil { |
| 86 | return nil, err |
| 87 | } |
| 88 | return buf.Bytes(), nil |
| 89 | } |
| 90 | |
| 91 | func NewSigner(ver version.Version, certs certurl.CertChain, privKey crypto.PrivateKey, validityUrl *url.URL, date time.Time, duration time.Duration) (*Signer, error) { |
| 92 | if err := certs.Validate(); err != nil { |