//////////////////////////////////////////////////////////////////////////////// // Copyright 2018 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. //////////////////////////////////////////////////////////////////////////////// // Protocol buffer definitions for Widevine CAS. syntax = "proto2"; option java_package = "com.google.video.widevine.mediacasencryption"; package widevine; message CasEncryptionRequest { optional bytes content_id = 1; optional string provider = 2; // Optional track types such as "AUDIO", SD" or "HD". repeated string track_types = 3; // Indicates if the client is using key rotation. If true, the server will // return one key for EVEN and one key for ODD, otherwise only a single key is // returned. optional bool key_rotation = 4; } message CasEncryptionResponse { enum Status { STATUS_UNSPECIFIED = 0; OK = 1; SIGNATURE_FAILED = 2; ACCESS_DENIED = 3; INTERNAL_ERROR = 4; INVALID_ARGUMENT = 5; PROVIDER_ID_MISSING = 6; CONTENT_ID_MISSING = 7; TRACK_TYPE_MISSING = 8; } message KeyInfo { enum KeySlot { KEY_SLOT_UNSPECIFIED = 0; SINGLE = 1; EVEN = 2; ODD = 3; }; optional bytes key_id = 1; optional bytes key = 2; // Optional label used for the key. optional string track_type = 3; optional KeySlot key_slot = 4; } optional Status status = 1; optional string status_message = 2; optional bytes content_id = 3; repeated KeyInfo entitlement_keys = 4; } message SignedCasEncryptionRequest { optional bytes request = 1; optional bytes signature = 2; // Identifies the entity sending / signing the request. optional string signer = 3; } message SignedCasEncryptionResponse { // Serialized CasEncryptionResponse message. optional bytes response = 1; optional bytes signature = 2; } message HttpResponse { optional bytes response = 1; }