| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.media.drm; |
| |
| type Features = strict bits : uint32 { |
| /// All key management and crypto operations are performed in a hardware |
| /// based trusted execution environment. If not set, a software |
| /// implementation is used. |
| HARDWARE_CRYPTO = 0x01; |
| /// Decrypted data can be written to hardware secure buffers. |
| SECURE_OUTPUT = 0x02; |
| }; |
| |
| type Requirement = strict enum { |
| NOT_SUPPORTED = 1; |
| OPTIONAL = 2; |
| REQUIRED = 3; |
| }; |
| |
| type KeySystemProperties = table { |
| /// Various flags indicating supported features of the [`KeySystem`]. This |
| /// field is required. |
| 1: features Features; |
| |
| /// Indicates the data store requirements of the [`KeySystem`]. |
| /// |
| /// See [`KeySystem.ContentDecryptionModule2`] for implications of different |
| /// values. This field is required. |
| 2: data_store_requirement Requirement; |
| |
| /// Indicates the supported license session types. This field is required |
| /// and the list must not be empty. |
| 3: license_session_types vector<LicenseSessionType>:MAX; |
| |
| /// Indicates the supported init data types. This field is required and the |
| /// list must not be empty. |
| 4: init_data_types vector<LicenseInitDataType>:MAX; |
| |
| /// Indicates the supported encryption schemes. This field is required and |
| /// the list must not be empty. |
| 5: encryption_schemes vector<EncryptionScheme>:MAX; |
| }; |