| Index: chrome/browser/safe_browsing/download_protection_service.cc
|
| diff --git a/chrome/browser/safe_browsing/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection_service.cc
|
| index aad28a885aeaddde13df3128d920789a185c623b..8dd5ba6a65bbb8c8f36d49049ecabea86a102d97 100644
|
| --- a/chrome/browser/safe_browsing/download_protection_service.cc
|
| +++ b/chrome/browser/safe_browsing/download_protection_service.cc
|
| @@ -350,6 +350,10 @@ class DownloadProtectionService::CheckClientDownloadRequest
|
| tab_referrer_url_(item->GetTabReferrerUrl()),
|
| archived_executable_(false),
|
| archive_is_valid_(ArchiveValid::UNSET),
|
| +#if defined(OS_MACOSX)
|
| + disk_image_signature_length_(0),
|
| + disk_image_signature_(nullptr),
|
| +#endif
|
| callback_(callback),
|
| service_(service),
|
| binary_feature_extractor_(binary_feature_extractor),
|
| @@ -785,6 +789,16 @@ class DownloadProtectionService::CheckClientDownloadRequest
|
| if (!service_)
|
| return;
|
|
|
| +#if defined(OS_MACOSX)
|
| + disk_image_signature_length_ = results.signature_blob.size();
|
| + if (disk_image_signature_length_ > 0) {
|
| + disk_image_signature_ =
|
| + std::unique_ptr<uint8_t[]>(new uint8_t[disk_image_signature_length_]);
|
| + memcpy(disk_image_signature_.get(), results.signature_blob.data(),
|
| + disk_image_signature_length_);
|
| + }
|
| +#endif
|
| +
|
| // Even if !results.success, some of the DMG may have been parsed.
|
| archive_is_valid_ =
|
| (results.success ? ArchiveValid::VALID : ArchiveValid::INVALID);
|
| @@ -1036,6 +1050,14 @@ class DownloadProtectionService::CheckClientDownloadRequest
|
| referrer_chain_data->GetReferrerChain());
|
| }
|
|
|
| +// TODO(mortonm): add UMA stats to keep track of % of DMG use new format
|
| +#if defined(OS_MACOSX)
|
| + if (disk_image_signature_length_ > 0) {
|
| + request.set_udif_code_signature(disk_image_signature_.get(),
|
| + disk_image_signature_length_);
|
| + }
|
| +#endif
|
| +
|
| if (archive_is_valid_ != ArchiveValid::UNSET)
|
| request.set_archive_valid(archive_is_valid_ == ArchiveValid::VALID);
|
| request.mutable_signature()->CopyFrom(signature_info_);
|
| @@ -1231,6 +1253,11 @@ class DownloadProtectionService::CheckClientDownloadRequest
|
| bool archived_executable_;
|
| ArchiveValid archive_is_valid_;
|
|
|
| +#if defined(OS_MACOSX)
|
| + uint64_t disk_image_signature_length_;
|
| + std::unique_ptr<uint8_t[]> disk_image_signature_;
|
| +#endif
|
| +
|
| ClientDownloadRequest_SignatureInfo signature_info_;
|
| std::unique_ptr<ClientDownloadRequest_ImageHeaders> image_headers_;
|
| google::protobuf::RepeatedPtrField<ClientDownloadRequest_ArchivedBinary>
|
|
|