173 lines
6.4 KiB
Protocol Buffer
173 lines
6.4 KiB
Protocol Buffer
////////////////////////////////////////////////////////////////////////////////
|
|
// Copyright 2020 Google LLC.
|
|
//
|
|
// This software is licensed under the terms defined in the Widevine Master
|
|
// License Agreement. For a copy of this agreement, please contact
|
|
// widevine-licensing@google.com.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// This file contains device-related definitions that are common to both the
|
|
// legacy device management service and the new devices service. Eventually,
|
|
// we may merge the contents of this file into other files.
|
|
|
|
syntax = "proto3";
|
|
|
|
package widevine;
|
|
|
|
option java_package = "com.google.video.widevine.protos";
|
|
|
|
|
|
// Allows additional make/models to be associated with a system_id.
|
|
message DeviceModel {
|
|
// ModelStatus is used to specify how confident we are that this
|
|
// make/model/year combination is allowed by the device manufacturer.
|
|
// VERIFIED indicates that the manufacturer confirmed that it is correct.
|
|
// UNVERIFIED means that we have sufficient data to believe it is correct,
|
|
// but the manufacturer has not confirmed.
|
|
// UNKNOWN indicates that we do not have sufficient information to indicate
|
|
// whether or not the device is allowed by the manufacturer.
|
|
// REJECTED indicates that the manufacturer explicitly disallowed the use
|
|
// of the make/model/year combination.
|
|
enum ModelStatus {
|
|
MODEL_STATUS_UNSPECIFIED = 0;
|
|
MODEL_STATUS_VERIFIED = 1;
|
|
MODEL_STATUS_UNVERIFIED = 2;
|
|
MODEL_STATUS_UNKNOWN = 4;
|
|
MODEL_STATUS_REJECTED = 3;
|
|
}
|
|
// Represents the device manufacturer. Typically, this will be Philips, LG,
|
|
// Sharp, etc.
|
|
string manufacturer = 1;
|
|
// Model of the device.
|
|
string model_name = 2;
|
|
// The expected release year of the make/model combination. Optional.
|
|
uint32 model_year = 3;
|
|
// The model status of this make and model.
|
|
ModelStatus status = 4;
|
|
}
|
|
|
|
// DeviceState defines the current state of the device. It is used in
|
|
// licensing to determine if a (classic or MDRM/CENC) license should be
|
|
// issued. The status affects if and how a device record is shown in
|
|
// keysmith's CertificateStatusList.
|
|
//
|
|
// States:
|
|
// DEVICE_STATE_UNKNOWN: This should not be used.
|
|
// It only indicates that a state has not been set.
|
|
// IN_TESTING: The first valid state of a device record. A newly created
|
|
// device should be in this state until the device is considered
|
|
// "released". In this state a device should only be supported on test
|
|
// services (e.g. UAT license service).
|
|
// PRE_RELEASE: The state of a device when it's ready to be used with
|
|
// production services. In this state a device can receive production
|
|
// classic and MDRM/CENC licenses. The device will also be listed in
|
|
// keysmith's certificate status list. The device data will be
|
|
// available for sharing with internal partners only.
|
|
// RELEASED: Indicates that the device is available on the store shelves.
|
|
// The device data will be available for sharing with external partners.
|
|
// DELETED: Indicates that the device was manually disabled and should
|
|
// not be used for any test or production services. The device should
|
|
// not appear in the device certificate status list. Customers will
|
|
// not be able to see or utilize this state when managing their devices.
|
|
// TEST_ONLY: Indicates that this device was never intended for production
|
|
// but can be used for test purposes. The device will be listed in the
|
|
// certificate status list as a test device.
|
|
// REVOKED: Indicates that the device was revoked. No test or production
|
|
// service should honor requests (classic nor MDRM/CENC) from one of
|
|
// these devices. The device serial number and its REVOKED status will
|
|
// appear in keysmith's certificate status list.
|
|
//
|
|
// Devices in the above states have the following behaviors in widevince
|
|
// services:
|
|
//
|
|
// Licensing | Certificate | Cert | Cert | Test |
|
|
// State Prod | UAT | Provisioning | Listed | status | device | redact
|
|
// -- -- -- -- -- -- -- --
|
|
// IN_TESTING No Yes Yes Yes VALID true yes
|
|
// TEST_ONLY No Yes Yes Yes VALID true no
|
|
// PRE_RELEASE Yes Yes Yes Yes VALID false yes
|
|
// RELEASED Yes Yes Yes Yes VALID false no
|
|
// REVOKED No No No Yes REVOKED false no
|
|
// DELETED No No No No n/a n/a n/a
|
|
enum DeviceState {
|
|
DEVICE_STATE_UNKNOWN = 0;
|
|
IN_TESTING = 1;
|
|
RELEASED = 2;
|
|
DELETED = 3;
|
|
TEST_ONLY = 4;
|
|
REVOKED = 5;
|
|
PRE_RELEASE = 6;
|
|
}
|
|
|
|
// Specifies the device type, or form factor of a device.
|
|
enum DeviceType {
|
|
DEVICE_TYPE_UNSPECIFIED = 0;
|
|
DEVICE_TYPE_PHONE = 1;
|
|
DEVICE_TYPE_TV = 2;
|
|
DEVICE_TYPE_TABLET = 3;
|
|
DEVICE_TYPE_GAMING_CONSOLE = 4;
|
|
DEVICE_TYPE_SET_TOP_BOX = 5;
|
|
DEVICE_TYPE_VIDEO_DONGLE = 6;
|
|
DEVICE_TYPE_PC = 7;
|
|
DEVICE_TYPE_AUTO = 8;
|
|
DEVICE_TYPE_WEARABLE = 9;
|
|
DEVICE_TYPE_CONNECTED_AUDIO_DEVICE = 10;
|
|
DEVICE_TYPE_SMART_DISPLAY = 11;
|
|
// Legacy identifier for records that were created for SoC integration.
|
|
DEVICE_TYPE_SOC = 12;
|
|
}
|
|
|
|
// Specifies the platform and OS of the device.
|
|
enum Platform {
|
|
PLATFORM_UNSPECIFIED = 0;
|
|
PLATFORM_CHROMECAST = 1;
|
|
PLATFORM_FUCHSIA = 2;
|
|
PLATFORM_IOS = 3;
|
|
PLATFORM_IPAD_OS = 4;
|
|
PLATFORM_TV_OS = 5;
|
|
PLATFORM_ANDROID = 6;
|
|
PLATFORM_WINDOWS = 7;
|
|
PLATFORM_CHROME_OS = 8;
|
|
PLATFORM_MAC_OS = 9;
|
|
PLATFORM_LINUX = 10;
|
|
PLATFORM_WEB_OS = 11;
|
|
PLATFORM_TIZEN = 12;
|
|
PLATFORM_FIRE_OS = 13;
|
|
PLATFORM_ROKU = 14;
|
|
PLATFORM_PLAYSTATION = 15;
|
|
PLATFORM_XBOX = 16;
|
|
PLATFORM_KAIOS = 17;
|
|
PLATFORM_RDK = 18;
|
|
PLATFORM_OTHER = 19;
|
|
}
|
|
|
|
// This is used for tri-state answers. Yes-TEE, Yes-REE, No.
|
|
// This has to be in device_common to avoid import conflicts between security
|
|
// profiles and device security profiles.
|
|
enum OsOptionalSupport {
|
|
OS_OPTIONAL_SUPPORT_UNSPECIFIED = 0;
|
|
YES_TEE = 1;
|
|
YES_REE = 2;
|
|
NO_SUPPORT = 3;
|
|
}
|
|
|
|
// Version of High-bandwidth Digital Content Protection (HDCP).
|
|
// This has to be in device_common to avoid import conflicts between security
|
|
// profiles and device security profiles.
|
|
enum HdcpVersion {
|
|
HDCP_VERSION_UNSPECIFIED = 0;
|
|
HDCP_V1 = 1;
|
|
HDCP_V2 = 2;
|
|
HDCP_V2_1 = 3;
|
|
HDCP_V2_2 = 4;
|
|
HDCP_V2_3 = 5;
|
|
}
|
|
|
|
// Widevine device security level.
|
|
enum DeviceSecurityLevel {
|
|
SECURITY_LEVEL_UNSPECIFIED = 0;
|
|
LEVEL_1 = 1;
|
|
LEVEL_2 = 2;
|
|
LEVEL_3 = 3;
|
|
}
|