| // Copyright 2023 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef USB_BOUNCER_METRICS_ALLOWLIST_H_ |
| #define USB_BOUNCER_METRICS_ALLOWLIST_H_ |
| |
| #include "policy/device_policy.h" |
| |
| namespace usb_bouncer { |
| |
| // Top 200 most popular USB devices used with chromeOS based on an M111 |
| // popularity study. Detailed metrics are only collected for these devices to |
| // mitigate privacy concerns about metric collection on obscure USB devices. |
| const policy::DevicePolicy::UsbDeviceId kMetricsAllowlist[] = { |
| /* HP Inc. */ |
| {0x03F0, 0x0024}, |
| {0x03F0, 0x034A}, |
| {0x03F0, 0x0610}, |
| {0x03F0, 0x0620}, |
| {0x03F0, 0x0782}, |
| {0x03F0, 0x094A}, |
| {0x03F0, 0x0982}, |
| {0x03F0, 0x1198}, |
| {0x03F0, 0x134A}, |
| {0x03F0, 0x1647}, |
| {0x03F0, 0x1A47}, |
| {0x03F0, 0x2141}, |
| /* NEC Corp. */ |
| {0x0409, 0x005A}, |
| /* Microchip-SMSC */ |
| {0x0424, 0x2514}, |
| {0x0424, 0x2806}, |
| {0x0424, 0x284C}, |
| {0x0424, 0x4206}, |
| {0x0424, 0x4216}, |
| {0x0424, 0x7240}, |
| {0x0424, 0x7260}, |
| /* Texas Instruments */ |
| {0x0451, 0x82FF}, |
| {0x0451, 0x8440}, |
| {0x0451, 0x8442}, |
| /* Microsoft Corp. */ |
| {0x045E, 0x00CB}, |
| {0x045E, 0x0745}, |
| {0x045E, 0x07B2}, |
| {0x045E, 0x07F8}, |
| {0x045E, 0x07FD}, |
| /* Primax Electronics */ |
| {0x0461, 0x0010}, |
| {0x0461, 0x4141}, |
| {0x0461, 0x4E17}, |
| {0x0461, 0x4E22}, |
| {0x0461, 0x4E2A}, |
| {0x0461, 0x4E84}, |
| /* Cherry */ |
| {0x046A, 0xB090}, |
| {0x046A, 0xB091}, |
| /* Logitech Inc. */ |
| {0x046D, 0x0825}, |
| {0x046D, 0x082D}, |
| {0x046D, 0x0843}, |
| {0x046D, 0x085B}, |
| {0x046D, 0x0A38}, |
| {0x046D, 0x0A8F}, |
| {0x046D, 0xC018}, |
| {0x046D, 0xC05A}, |
| {0x046D, 0xC069}, |
| {0x046D, 0xC077}, |
| {0x046D, 0xC31C}, |
| {0x046D, 0xC31D}, |
| {0x046D, 0xC34B}, |
| {0x046D, 0xC52B}, |
| {0x046D, 0xC52F}, |
| {0x046D, 0xC534}, |
| {0x046D, 0xC53F}, |
| {0x046D, 0xC542}, |
| {0x046D, 0xC548}, |
| /* Plantronics Inc. */ |
| {0x047F, 0xC053}, |
| {0x047F, 0xC056}, |
| /* IBM Corp. */ |
| {0x04B3, 0x3025}, |
| /* Cypress Semiconductor */ |
| {0x04B4, 0x6506}, |
| {0x04B4, 0xF649}, |
| /* Holtek Semiconductor Inc. */ |
| {0x04D9, 0x1702}, |
| /* Samsung Electronics Co., Ltd. */ |
| {0x04E8, 0x6860}, |
| /* Chicony Electronics Co., Ltd. */ |
| {0x04F2, 0x0939}, |
| /* Elan Microelectronics Corp. */ |
| {0x04F3, 0x0103}, |
| /* Alcor Micro Corp. */ |
| {0x058F, 0x8468}, |
| /* Apple Inc. */ |
| {0x05AC, 0x024F}, |
| {0x05AC, 0x12A8}, |
| {0x05AC, 0x12AB}, |
| {0x05AC, 0x1393}, |
| /* Zebra Technologies */ |
| {0x05E0, 0x1200}, |
| /* Genesys Logic, Inc. */ |
| {0x05E3, 0x0608}, |
| {0x05E3, 0x0610}, |
| {0x05E3, 0x0620}, |
| {0x05E3, 0x0626}, |
| {0x05E3, 0x0749}, |
| {0x05E3, 0x0751}, |
| /* MosArt Semiconductor Corp. */ |
| {0x062A, 0x4101}, |
| {0x062A, 0x4102}, |
| {0x062A, 0x4C01}, |
| {0x062A, 0x5110}, |
| {0x062A, 0x5918}, |
| /* Prolific Technologies, Inc. */ |
| {0x067B, 0x2586}, |
| /* Cyber Power Systems, Inc. */ |
| {0x0764, 0x0501}, |
| /* Pixart Imaging, Inc. */ |
| {0x093A, 0x2510}, |
| /* A-Four Technologies Co., Ltd. */ |
| {0x09DA, 0x2268}, |
| /* Cambridge Silicon Radio Ltd. */ |
| {0x0A12, 0x4010}, |
| /* GN Audio */ |
| {0x0B0E, 0x0300}, |
| {0x0B0E, 0x0301}, |
| {0x0B0E, 0x0305}, |
| {0x0B0E, 0x0312}, |
| {0x0B0E, 0x2304}, |
| {0x0B0E, 0x2315}, |
| {0x0B0E, 0x2319}, |
| {0x0B0E, 0x2327}, |
| /* ASIX Electronics Corp. */ |
| {0x0B95, 0x1790}, |
| /* Realtek Semiconductor Corp. */ |
| {0x0BDA, 0x0409}, |
| {0x0BDA, 0x0411}, |
| {0x0BDA, 0x0412}, |
| {0x0BDA, 0x0413}, |
| {0x0BDA, 0x0487}, |
| {0x0BDA, 0x1100}, |
| {0x0BDA, 0x2172}, |
| {0x0BDA, 0x402E}, |
| {0x0BDA, 0x5400}, |
| {0x0BDA, 0x5409}, |
| {0x0BDA, 0x5411}, |
| {0x0BDA, 0x5412}, |
| {0x0BDA, 0x5413}, |
| {0x0BDA, 0x5418}, |
| {0x0BDA, 0x5454}, |
| {0x0BDA, 0x5487}, |
| {0x0BDA, 0x8152}, |
| {0x0BDA, 0x8153}, |
| /* RF Ideas */ |
| {0x0C27, 0x3BFA}, |
| /* Sonix Technology Co., Ltd. */ |
| {0x0C45, 0x636B}, |
| /* Promethean */ |
| {0x0D48, 0x0012}, |
| /* Darfon Electronics Corp. */ |
| {0x0D62, 0x0D98}, |
| /* C-Media Electronics Inc. */ |
| {0x0D8C, 0x0012}, |
| {0x0D8C, 0x0014}, |
| /* MediaTek Inc. */ |
| {0x0E8D, 0x2008}, |
| /* Yubico AB */ |
| {0x1050, 0x0120}, |
| {0x1050, 0x0200}, |
| {0x1050, 0x0402}, |
| {0x1050, 0x0407}, |
| /* Silicon Laboratories Inc. */ |
| {0x10C4, 0x8108}, |
| /* Huawei Technologies Co., Ltd. */ |
| {0x12D1, 0x107E}, |
| /* AzureWave Technologies, Inc. */ |
| {0x13D3, 0x5521}, |
| /* MOAI Electronics Corp. */ |
| {0x14CD, 0x8601}, |
| /* Lenovo */ |
| {0x17EF, 0x6019}, |
| {0x17EF, 0x608C}, |
| {0x17EF, 0x608D}, |
| {0x17EF, 0x6099}, |
| /* Google LLC */ |
| {0x18D1, 0x4EE0}, |
| {0x18D1, 0x4EE1}, |
| {0x18D1, 0x4EE7}, |
| {0x18D1, 0x5026}, |
| {0x18D1, 0x503C}, |
| /* Teitsu Denshi Kenkyusho Co., Ltd. */ |
| {0x18F8, 0x0F97}, |
| /* Terminus Technology Inc. */ |
| {0x1A40, 0x0101}, |
| {0x1A40, 0x0801}, |
| /* Evoluent LLC */ |
| {0x1A7C, 0x0191}, |
| /* Generalplus Technology Inc. */ |
| {0x1B3F, 0x2008}, |
| {0x1B3F, 0x2247}, |
| /* Sunplus Innovation Technology Inc. */ |
| {0x1BCF, 0x0005}, |
| {0x1BCF, 0x08A0}, |
| /* Beijing Sigmachip Co., Ltd. */ |
| {0x1C4F, 0x0002}, |
| {0x1C4F, 0x0034}, |
| /* Fresno Logic Inc. */ |
| {0x1D5C, 0x5001}, |
| {0x1D5C, 0x5011}, |
| {0x1D5C, 0x5100}, |
| {0x1D5C, 0x7102}, |
| /* Semitek International Holding Ltd. */ |
| {0x1EA7, 0x0064}, |
| {0x1EA7, 0x0066}, |
| /* NXP Semiconductors */ |
| {0x1FC9, 0x5002}, |
| /* LG Display Co., Ltd. */ |
| {0x1FD2, 0x8102}, |
| /* Guangzhou Shi Rui Electronics Co., Ltd. */ |
| {0x1FF7, 0x0013}, |
| {0x1FF7, 0x0F21}, |
| /* VIA Labs, Inc. */ |
| {0x2109, 0x0100}, |
| {0x2109, 0x0102}, |
| {0x2109, 0x0103}, |
| {0x2109, 0x0210}, |
| {0x2109, 0x0813}, |
| {0x2109, 0x0815}, |
| {0x2109, 0x0817}, |
| {0x2109, 0x0822}, |
| {0x2109, 0x2210}, |
| {0x2109, 0x2813}, |
| {0x2109, 0x2815}, |
| {0x2109, 0x2817}, |
| {0x2109, 0x2822}, |
| {0x2109, 0x8817}, |
| {0x2109, 0x8888}, |
| /* Ameco Technologies Co., Ltd. */ |
| {0x214B, 0x7250}, |
| /* Motorola Mobility Inc. */ |
| {0x22B8, 0x2E82}, |
| /* TeLink Semiconductor Co., Ltd. */ |
| {0x248A, 0x8366}, |
| {0x248A, 0x8367}, |
| {0x248A, 0x8514}, |
| /* RNDPLUS Co., Ltd. */ |
| {0x2512, 0x5004}, |
| /* Norel Systems Ltd. */ |
| {0x2537, 0x1081}, |
| /* Algoltek Inc. */ |
| {0x25A4, 0x9311}, |
| /* Beken Corp. */ |
| {0x25A7, 0xFA23}, |
| {0x25A7, 0xFA61}, |
| {0x25A7, 0xFA67}, |
| /* Xiaomi Communications Co., Ltd. */ |
| {0x2717, 0xFF40}, |
| /* NewSoc Tech Limited */ |
| {0x275D, 0x0BA6}, |
| /* Cadwell Laboratories, Inc. */ |
| {0x27C0, 0x0818}, |
| /* Shenzhen iSolutions Technologies Co., Ltd. */ |
| {0x28E1, 0xB101}, |
| /* Fibocom Wireless Inc. */ |
| {0x2CB7, 0x0007}, |
| {0x2CB7, 0x01A0}, |
| /* Wuxi Instant Microelectronics Co., Ltd. */ |
| {0x30FA, 0x0300}, |
| {0x30FA, 0x0400}, |
| /* Yichip Microelectronics Co., Ltd. */ |
| {0x3151, 0x3020}, |
| /* Unknown */ |
| {0x3938, 0x1031}, |
| {0x3938, 0x1191}, |
| /* Dell Inc. */ |
| {0x413C, 0x2107}, |
| {0x413C, 0x2113}, |
| {0x413C, 0x301A}, |
| {0x413C, 0x301B}, |
| {0x413C, 0xB06E}, |
| {0x413C, 0xB06F}, |
| }; |
| |
| // Returns true if dev1 appears before dev2 in the metrics allowlist. Used by |
| // std::binary_search() to check if a particular device is in the metrics |
| // allowlist. |
| bool DeviceComp(policy::DevicePolicy::UsbDeviceId dev1, |
| policy::DevicePolicy::UsbDeviceId dev2); |
| |
| // Returns true if the provided VID/PID pairing is in the metrics allowlist. |
| bool DeviceInMetricsAllowlist(uint16_t vendor_id, uint16_t product_id); |
| |
| } // namespace usb_bouncer |
| |
| #endif // USB_BOUNCER_METRICS_ALLOWLIST_H_ |