diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-04-25 21:59:26 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-04-25 21:59:26 +0200 |
| commit | ba7d09616f8e529d71ff1e7843f39f22d2823409 (patch) | |
| tree | 36e2c83a89239c29d45fb40356bec58dc831d99c /src | |
| parent | 7c24b62d51e0ddf14af451ef5a543f07b69f111e (diff) | |
Update PKL assets before writing it.
Diffstat (limited to 'src')
| -rw-r--r-- | src/dcp.cc | 18 | ||||
| -rw-r--r-- | src/pkl.cc | 7 | ||||
| -rw-r--r-- | src/pkl.h | 1 |
3 files changed, 17 insertions, 9 deletions
@@ -400,16 +400,16 @@ DCP::write_xml ( i->write_xml (_directory / (name_format.get(values, "_" + i->id() + ".xml")), signer); } - shared_ptr<PKL> pkl; - if (_pkls.empty()) { - pkl = make_shared<PKL>(standard, annotation_text, issue_date, issuer, creator); - _pkls.push_back (pkl); - for (auto i: assets()) { - i->add_to_pkl (pkl, _directory); - } - } else { - pkl = _pkls.front (); + _pkls.push_back(make_shared<PKL>(standard, annotation_text, issue_date, issuer, creator)); + } + + auto pkl = _pkls.front(); + + /* The assets may have changed since we read the PKL, so re-add them */ + pkl->clear_assets(); + for (auto asset: assets()) { + asset->add_to_pkl(pkl, _directory); } NameFormat::Map values; @@ -159,3 +159,10 @@ PKL::type (string id) const return {}; } + + +void +PKL::clear_assets() +{ + _asset_list.clear(); +} @@ -76,6 +76,7 @@ public: boost::optional<std::string> hash (std::string id) const; boost::optional<std::string> type (std::string id) const; + void clear_assets(); void add_asset (std::string id, boost::optional<std::string> annotation_text, std::string hash, int64_t size, std::string type); void write (boost::filesystem::path file, std::shared_ptr<const CertificateChain> signer) const; |
