Adds --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=1" to 'bazel build' command in moe_test.sh.
This flag also added to [] and [] ------------- CASDrmLicenseRequest at the proxy. ------------- CAS Proxy SDK version update to 1.1.2. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=231988012
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -76,6 +76,13 @@ class WvPLCASProxyEnvironment : public WvPLSDKEnvironment {
|
|||||||
virtual WvPLStatus CreateSession(const std::string& cas_license_request,
|
virtual WvPLStatus CreateSession(const std::string& cas_license_request,
|
||||||
WvPLCASProxySession** cas_proxy_session);
|
WvPLCASProxySession** cas_proxy_session);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the session
|
||||||
|
*
|
||||||
|
* @param session
|
||||||
|
*/
|
||||||
|
virtual void DestroySession(WvPLCASProxySession* cas_proxy_session) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the certificate status list system-wide.
|
* Set the certificate status list system-wide.
|
||||||
* |cert_list| specifies the device certificate status
|
* |cert_list| specifies the device certificate status
|
||||||
|
|||||||
@@ -10,14 +10,17 @@
|
|||||||
#define MEDIA_CAS_PROXY_SDK_EXTERNAL_COMMON_WVPL_WVPL_CAS_PROXY_SESSION_H_
|
#define MEDIA_CAS_PROXY_SDK_EXTERNAL_COMMON_WVPL_WVPL_CAS_PROXY_SESSION_H_
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include "absl/synchronization/mutex.h"
|
||||||
#include "sdk/external/common/wvpl/wvpl_sdk_session.h"
|
#include "sdk/external/common/wvpl/wvpl_sdk_session.h"
|
||||||
|
#include "protos/public/media_cas_license.pb.h"
|
||||||
|
|
||||||
namespace widevine_server {
|
namespace widevine_server {
|
||||||
namespace wv_pl_sdk {
|
namespace wv_pl_sdk {
|
||||||
|
|
||||||
constexpr uint32_t kMajorVersion = 1;
|
constexpr uint32_t kMajorVersion = 1;
|
||||||
constexpr uint32_t kMinorVersion = 0;
|
constexpr uint32_t kMinorVersion = 1;
|
||||||
constexpr uint32_t kRelease = 1;
|
constexpr uint32_t kRelease = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Models a session for Widevine CAS Proxy functionality for
|
* Models a session for Widevine CAS Proxy functionality for
|
||||||
@@ -68,6 +71,18 @@ class WvPLCASProxySession : public WvPLSDKSession {
|
|||||||
*/
|
*/
|
||||||
PlatformVerificationStatus VerifyPlatform() override;
|
PlatformVerificationStatus VerifyPlatform() override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns license request as a JSON string. This std::string is placed in
|
||||||
|
* |license_request|, if successful. Returns OK status upon success, else an
|
||||||
|
* error status.
|
||||||
|
*/
|
||||||
|
WvPLStatus GenerateLicenseRequestAsJSON(std::string* license_request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a key to the WvPLCasKey collection.
|
||||||
|
*/
|
||||||
|
WvPLStatus AddCasKey(const WvPLCasKey& key);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class WvPLCASProxyEnvironment;
|
friend class WvPLCASProxyEnvironment;
|
||||||
friend class WvPLCASProxyEnvironmentTest;
|
friend class WvPLCASProxyEnvironmentTest;
|
||||||
@@ -76,6 +91,20 @@ class WvPLCASProxySession : public WvPLSDKSession {
|
|||||||
WvPLCASProxySession(
|
WvPLCASProxySession(
|
||||||
const widevine::DrmRootCertificate* drm_root_certificate,
|
const widevine::DrmRootCertificate* drm_root_certificate,
|
||||||
const std::string& cas_license_request_from_cdm);
|
const std::string& cas_license_request_from_cdm);
|
||||||
|
|
||||||
|
WvPLStatus BuildCasDrmLicenseRequest(
|
||||||
|
widevine::CasDrmLicenseRequest* cas_drm_license_request);
|
||||||
|
|
||||||
|
void set_provider(const std::string& provider) { provider_ = provider; }
|
||||||
|
|
||||||
|
// name of the provider hosting this service.
|
||||||
|
std::string provider_;
|
||||||
|
|
||||||
|
// holds all the WvPLCasKey objects. Used when generating a CAS License.
|
||||||
|
std::vector<WvPLCasKey> cas_keys_ GUARDED_BY(cas_keys_mutex_);
|
||||||
|
|
||||||
|
// Mutex to protect the keys owned by this session.
|
||||||
|
mutable absl::Mutex cas_keys_mutex_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace wv_pl_sdk
|
} // namespace wv_pl_sdk
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ proto_library(
|
|||||||
"verified_media_pipeline.proto",
|
"verified_media_pipeline.proto",
|
||||||
"widevine_pssh.proto",
|
"widevine_pssh.proto",
|
||||||
"license_services.proto",
|
"license_services.proto",
|
||||||
|
"media_cas_encryption.proto",
|
||||||
|
"media_cas_license.proto",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -241,3 +243,29 @@ java_proto_library(
|
|||||||
name = "widevine_pssh_java_proto",
|
name = "widevine_pssh_java_proto",
|
||||||
deps = [":widevine_pssh_proto_base"],
|
deps = [":widevine_pssh_proto_base"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "media_cas_license_proto_base",
|
||||||
|
srcs = ["media_cas_license.proto"],
|
||||||
|
deps = [
|
||||||
|
":license_protocol_proto_base",
|
||||||
|
":license_server_sdk_proto_base",
|
||||||
|
":errors_proto_base",
|
||||||
|
":media_cas_encryption_proto_base",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_proto_library(
|
||||||
|
name = "media_cas_license_proto",
|
||||||
|
deps = [":media_cas_license_proto_base"],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "media_cas_encryption_proto_base",
|
||||||
|
srcs = ["media_cas_encryption.proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_proto_library(
|
||||||
|
name = "media_cas_encryption_proto",
|
||||||
|
deps = [":media_cas_encryption_proto_base"],
|
||||||
|
)
|
||||||
|
|||||||
@@ -239,4 +239,10 @@ enum Errors {
|
|||||||
// Invalid method parameter.
|
// Invalid method parameter.
|
||||||
INVALID_PARAMETER = 170;
|
INVALID_PARAMETER = 170;
|
||||||
|
|
||||||
|
// Even KeyID not specified, CasEncryptionResponse.KeyInfo.KeySlot
|
||||||
|
MISSING_EVEN_KEY_ID = 171;
|
||||||
|
|
||||||
|
// Even Key not specified, CasEncryptionResponse.KeyInfo.KeySlot
|
||||||
|
MISSING_EVEN_KEY = 172;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
74
protos/public/media_cas_encryption.proto
Normal file
74
protos/public/media_cas_encryption.proto
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
110
protos/public/media_cas_license.proto
Normal file
110
protos/public/media_cas_license.proto
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// 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.
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
// Definitions of the protocol buffer messages used in the Widevine license
|
||||||
|
// exchange protocol for Media CAS.
|
||||||
|
|
||||||
|
syntax = "proto2";
|
||||||
|
|
||||||
|
option java_package = "com.google.video.widevine.mediacaslicense";
|
||||||
|
|
||||||
|
import "protos/public/license_protocol.proto";
|
||||||
|
import "protos/public/license_server_sdk.proto";
|
||||||
|
import "protos/public/media_cas_encryption.proto";
|
||||||
|
|
||||||
|
package widevine;
|
||||||
|
|
||||||
|
message CasDrmLicenseRequest {
|
||||||
|
// The request payload. This is usually the HTTP Post body of a request.
|
||||||
|
// Required.
|
||||||
|
optional bytes payload = 1;
|
||||||
|
// The content provider whose proxy is sending this license request onto the
|
||||||
|
// Widevine license service. Required.
|
||||||
|
optional string provider_id = 2;
|
||||||
|
// An identifier supplied by a content provider, used to identify a piece of
|
||||||
|
// content and derive key IDs and content keys.
|
||||||
|
optional bytes content_id = 3;
|
||||||
|
// A ContentKeySpec identifies a content key by track type name. It also
|
||||||
|
// specifies the policy that should be used for this key.
|
||||||
|
// TODO(user): Consolidate this ContentKeySpec with
|
||||||
|
// ModularDrmLicenseRequest_ContentKeySpec. Both should include a common
|
||||||
|
// ContentKeySpec.
|
||||||
|
message ContentKeySpec {
|
||||||
|
optional License.KeyContainer.SecurityLevel security_level = 1;
|
||||||
|
optional License.KeyContainer.OutputProtection required_output_protection =
|
||||||
|
2;
|
||||||
|
optional License.KeyContainer.OutputProtection requested_output_protection =
|
||||||
|
3;
|
||||||
|
// Optionally specify even, odd or single slot for key rotation.
|
||||||
|
repeated CasEncryptionResponse.KeyInfo entitlement_keys = 4;
|
||||||
|
optional License.KeyContainer.KeyType key_type = 5;
|
||||||
|
}
|
||||||
|
repeated ContentKeySpec content_key_specs = 4;
|
||||||
|
// Policy for the entire license such as playback duration.
|
||||||
|
optional License.Policy policy = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CasDrmLicenseResponse {
|
||||||
|
enum Status {
|
||||||
|
UNKNOWN = 0;
|
||||||
|
OK = 1;
|
||||||
|
SIGNATURE_FAILED = 2;
|
||||||
|
INVALID_LICENSE_CHALLENGE = 3;
|
||||||
|
PROVIDER_ID_MISSING = 4;
|
||||||
|
INVALID_CONTENT_INFO = 5;
|
||||||
|
EMPTY_CONTENT_INFO = 6;
|
||||||
|
CONTENT_ID_MISMATCH = 7;
|
||||||
|
MISSING_CONTENT_ID = 8;
|
||||||
|
MALFORMED_REQUEST = 9;
|
||||||
|
INTERNAL_ERROR = 10;
|
||||||
|
}
|
||||||
|
optional Status status = 1;
|
||||||
|
optional string status_message = 2;
|
||||||
|
// Serialzed bytes for a CAS license.
|
||||||
|
// TODO(user): Until a CAS license protocol is defined, this field is a
|
||||||
|
// serialized License message defined in license_protocol.proto.
|
||||||
|
optional bytes license = 3;
|
||||||
|
// Actual SDK license status as defined in widevine/server/sdk/error.proto.
|
||||||
|
optional uint32 internal_status = 4;
|
||||||
|
// Indicates the type of message in the license response.
|
||||||
|
optional SignedMessage.MessageType message_type = 5;
|
||||||
|
// A subset of data from the Widevine PSSH.
|
||||||
|
message PsshData {
|
||||||
|
repeated bytes key_id = 1;
|
||||||
|
optional bytes content_id = 2;
|
||||||
|
}
|
||||||
|
message LicenseMetadata {
|
||||||
|
optional bytes content_id = 1;
|
||||||
|
repeated bytes key_id = 2;
|
||||||
|
}
|
||||||
|
optional PsshData pssh_data = 6;
|
||||||
|
optional SessionState session_state = 7;
|
||||||
|
optional string content_owner = 8;
|
||||||
|
optional string content_provider = 9;
|
||||||
|
optional LicenseMetadata license_metadata = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignedCasDrmRequest {
|
||||||
|
optional bytes request = 1;
|
||||||
|
optional bytes signature = 2;
|
||||||
|
// Identifies the entity sending / signing the request. Required if signature
|
||||||
|
// is present.
|
||||||
|
optional string signer = 3;
|
||||||
|
// The IP Address of the portal that is forwarding the request from the
|
||||||
|
// original sender.
|
||||||
|
optional string client_ip_address = 4;
|
||||||
|
// The client software identifier, as used by HTTP.
|
||||||
|
optional string user_agent = 5;
|
||||||
|
optional string provider = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignedCasDrmResponse {
|
||||||
|
optional bytes response = 1;
|
||||||
|
optional bytes signature = 2;
|
||||||
|
}
|
||||||
8
sdk/external/common/wvpl/wvpl_sdk_session.h
vendored
8
sdk/external/common/wvpl/wvpl_sdk_session.h
vendored
@@ -99,12 +99,14 @@ class WvPLSDKSession {
|
|||||||
* Returns the type of the message handled by this session.
|
* Returns the type of the message handled by this session.
|
||||||
*
|
*
|
||||||
* @return MessageType enumeration.
|
* @return MessageType enumeration.
|
||||||
|
* @deprecated use request_type instead.
|
||||||
|
* @since end of Q1, 2019
|
||||||
*/
|
*/
|
||||||
virtual MessageType message_type() const;
|
virtual MessageType message_type() const;
|
||||||
|
|
||||||
virtual PlatformVerificationStatus VerifyPlatform() = 0;
|
virtual PlatformVerificationStatus VerifyPlatform() = 0;
|
||||||
|
|
||||||
virtual LicenseRequestType request_type() const { return request_type_; }
|
virtual WvPLRequestType request_type() const { return type_; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the license type is offline, otherwise return false.
|
* Returns true if the license type is offline, otherwise return false.
|
||||||
@@ -164,7 +166,7 @@ class WvPLSDKSession {
|
|||||||
std::string license_request_from_cdm_;
|
std::string license_request_from_cdm_;
|
||||||
std::string remote_attestation_cert_serial_number_;
|
std::string remote_attestation_cert_serial_number_;
|
||||||
std::unique_ptr<widevine::LicenseRequest> sdk_license_request_;
|
std::unique_ptr<widevine::LicenseRequest> sdk_license_request_;
|
||||||
LicenseRequestType request_type_;
|
WvPLRequestType type_;
|
||||||
bool has_session_state_ = false;
|
bool has_session_state_ = false;
|
||||||
bool has_encrypted_client_id_ = false;
|
bool has_encrypted_client_id_ = false;
|
||||||
|
|
||||||
@@ -244,6 +246,8 @@ class WvPLSDKSession {
|
|||||||
uint32_t system_id,
|
uint32_t system_id,
|
||||||
widevine::ProvisionedDeviceInfo* provisioned_device_info) const;
|
widevine::ProvisionedDeviceInfo* provisioned_device_info) const;
|
||||||
|
|
||||||
|
virtual const std::string TrackTypeToString(TrackType track_type) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<uint32_t> system_id_;
|
std::unique_ptr<uint32_t> system_id_;
|
||||||
};
|
};
|
||||||
|
|||||||
9
sdk/external/common/wvpl/wvpl_types.h
vendored
9
sdk/external/common/wvpl/wvpl_types.h
vendored
@@ -1015,12 +1015,13 @@ struct WvPLCasKey {
|
|||||||
|
|
||||||
TrackType track_type() const { return track_type_; }
|
TrackType track_type() const { return track_type_; }
|
||||||
|
|
||||||
void set_output_protection(const WvPLOutputProtection& out_prot) {
|
void set_output_protection(const WvPLOutputProtection& output_protection) {
|
||||||
output_protection_ = out_prot;
|
output_protection_ = output_protection;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_requested_output_protection(const WvPLOutputProtection& out_prot) {
|
void set_requested_output_protection(
|
||||||
requested_output_protection_ = out_prot;
|
const WvPLOutputProtection& output_protection) {
|
||||||
|
requested_output_protection_ = output_protection;
|
||||||
}
|
}
|
||||||
|
|
||||||
const WvPLOutputProtection& output_protection() const {
|
const WvPLOutputProtection& output_protection() const {
|
||||||
|
|||||||
Reference in New Issue
Block a user