1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Multiply-included param traits file, so no include guard.
6 // Disabling the presubmit warning with:
7 //   no-include-guard-because-multiply-included
8 
9 #include "build/build_config.h"
10 #include "chrome/common/safe_browsing/archive_analyzer_results.h"
11 #include "chrome/common/safe_browsing/ipc_protobuf_message_macros.h"
12 #include "components/safe_browsing/buildflags.h"
13 #include "ipc/ipc_message_macros.h"
14 #include "ipc/ipc_message_protobuf_utils.h"
15 
16 #if !BUILDFLAG(FULL_SAFE_BROWSING)
17 #error BUILDFLAG(FULL_SAFE_BROWSING) should be set.
18 #endif
19 
20 IPC_ENUM_TRAITS_VALIDATE(
21     safe_browsing::ClientDownloadRequest_DownloadType,
22     safe_browsing::ClientDownloadRequest_DownloadType_IsValid(value))
23 
24 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(safe_browsing::ClientDownloadRequest_Digests)
25   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(sha256)
26   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(sha1)
27   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(md5)
28 IPC_PROTOBUF_MESSAGE_TRAITS_END()
29 
30 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
31     safe_browsing::ClientDownloadRequest_CertificateChain_Element)
32   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(certificate)
33 IPC_PROTOBUF_MESSAGE_TRAITS_END()
34 
35 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
36     safe_browsing::ClientDownloadRequest_CertificateChain)
37   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(element)
38 IPC_PROTOBUF_MESSAGE_TRAITS_END()
39 
40 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
41     safe_browsing::ClientDownloadRequest_SignatureInfo)
42   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(certificate_chain)
43   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(trusted)
44   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(signed_data)
45 IPC_PROTOBUF_MESSAGE_TRAITS_END()
46 
47 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
48     safe_browsing::ClientDownloadRequest_PEImageHeaders_DebugData)
49   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(directory_entry)
50   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(raw_data)
51 IPC_PROTOBUF_MESSAGE_TRAITS_END()
52 
53 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
54     safe_browsing::ClientDownloadRequest_PEImageHeaders)
55   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(dos_header)
56   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(file_header)
57   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(optional_headers32)
58   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(optional_headers64)
59   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(section_header)
60   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(export_section_data)
61   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(debug_data)
62 IPC_PROTOBUF_MESSAGE_TRAITS_END()
63 
64 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
65     safe_browsing::ClientDownloadRequest_MachOHeaders_LoadCommand)
66   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(command_id)
67   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(command)
68 IPC_PROTOBUF_MESSAGE_TRAITS_END()
69 
70 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
71     safe_browsing::ClientDownloadRequest_MachOHeaders)
72   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(mach_header)
73   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(load_commands)
74 IPC_PROTOBUF_MESSAGE_TRAITS_END()
75 
76 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
77     safe_browsing::ClientDownloadRequest_ImageHeaders)
78   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(pe_headers)
79   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(mach_o_headers)
80 IPC_PROTOBUF_MESSAGE_TRAITS_END()
81 
82 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
83     safe_browsing::ClientDownloadRequest_ArchivedBinary)
84   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(file_basename)
85   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(download_type)
86   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(digests)
87   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(length)
88   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(signature)
89   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(image_headers)
90   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(is_encrypted)
91   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(is_executable)
92   IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(is_archive)
93 IPC_PROTOBUF_MESSAGE_TRAITS_END()
94 
95 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
96     safe_browsing::ClientDownloadRequest_DetachedCodeSignature)
97   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(file_name)
98   IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(contents)
99 IPC_PROTOBUF_MESSAGE_TRAITS_END()
100 
101 IPC_STRUCT_TRAITS_BEGIN(safe_browsing::ArchiveAnalyzerResults)
102   IPC_STRUCT_TRAITS_MEMBER(success)
103   IPC_STRUCT_TRAITS_MEMBER(has_executable)
104   IPC_STRUCT_TRAITS_MEMBER(has_archive)
105   IPC_STRUCT_TRAITS_MEMBER(archived_binary)
106   IPC_STRUCT_TRAITS_MEMBER(archived_archive_filenames)
107 #if defined(OS_MAC)
108   IPC_STRUCT_TRAITS_MEMBER(signature_blob)
109   IPC_STRUCT_TRAITS_MEMBER(detached_code_signatures)
110 #endif  // OS_MAC
111   IPC_STRUCT_TRAITS_MEMBER(file_count)
112   IPC_STRUCT_TRAITS_MEMBER(directory_count)
113 IPC_STRUCT_TRAITS_END()
114