Home | History | Annotate | Download | only in 1.2
      1 /**
      2  * Copyright (C) 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.hardware.drm@1.2;
     18 
     19 import @1.0::KeyStatusType;
     20 import @1.0::Status;
     21 import @1.1::HdcpLevel;
     22 
     23 enum OfflineLicenseState : uint32_t {
     24     /**
     25      * Offline license state is unknown
     26      */
     27     UNKNOWN,
     28 
     29     /**
     30      * Offline license state is usable, the keys are usable for decryption.
     31      */
     32     USABLE,
     33 
     34     /**
     35      * Offline license state is inactive, the keys have been marked for
     36      * release using {@link #getKeyRequest} with KEY_TYPE_RELEASE but the
     37      * key response has not been received.
     38      */
     39     INACTIVE
     40 };
     41 
     42 enum Status : @1.0::Status {
     43     /**
     44      * The drm HAL module must return ERROR_DRM_INSUFFICIENT_SECURITY
     45      * from the crypto plugin decrypt method when the security level
     46      * of the device is not sufficient to meet the requirements in the
     47      * license policy.
     48      */
     49     ERROR_DRM_INSUFFICIENT_SECURITY,
     50 
     51     /**
     52      * The drm HAL module must return ERROR_FRAME_TOO_LARGE from the
     53      * decrypt method when the frame being decrypted into the secure
     54      * output buffer exceeds the size of the buffer.
     55      */
     56     ERROR_DRM_FRAME_TOO_LARGE,
     57 
     58     /**
     59      * This error must be returned from any session method when an
     60      * attempt is made to use the session after the crypto hardware
     61      * state has been invalidated. Some devices are not able to
     62      * retain crypto session state across device suspend/resume which
     63      * results in invalid session state.
     64      */
     65     ERROR_DRM_SESSION_LOST_STATE,
     66 
     67      /**
     68       * The drm HAL module must return this error if client
     69       * applications using the hal are temporarily exceeding the
     70       * capacity of available crypto resources such that a retry of
     71       * the operation is likely to succeed.
     72       */
     73     ERROR_DRM_RESOURCE_CONTENTION,
     74 };
     75 
     76 /**
     77  * HDCP specifications are defined by Digital Content Protection LLC (DCP).
     78  *   "HDCP Specification Rev. 2.3 Interface Independent Adaptation"
     79  *   "HDCP 2.3 on HDMI Specification"
     80  */
     81 enum HdcpLevel : @1.1::HdcpLevel {
     82     /**
     83      * HDCP version 2.3 Type 1.
     84      */
     85     HDCP_V2_3
     86 };
     87 
     88 
     89 /**
     90  * KeySetId is an identifier that references a set of keys in an
     91  * offline license. The keySetId is created by the HAL implementation
     92  * and returned from provideKeyResponse and getOfflineLicenseIds. The
     93  * framework passes KeySetId back to the HAL when referring to the key
     94  * set in methods that take a KeySetId as an input parameter.
     95  */
     96 typedef vec<uint8_t> KeySetId;
     97 
     98 enum KeyStatusType : @1.0::KeyStatusType {
     99     /**
    100      * The key is not yet usable to decrypt media because the start
    101      * time is in the future. The key must become usable when
    102      * its start time is reached.
    103      */
    104     USABLEINFUTURE
    105 };
    106 
    107 /**
    108  * Used by sendKeysChange_1_2 to report the usability status of each key to the
    109  * app.
    110  *
    111  * This struct only differs from @1.0 version by the addition of new
    112  * KeyStatusType(s).
    113  *
    114  */
    115 struct KeyStatus {
    116     KeySetId keyId;
    117     KeyStatusType type;
    118 };
    119