blob: 55a4505b4a4a58eff8f7e38e278bed56fb3527d5 [file] [log] [blame]
// 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;
};