diff --git a/libwvpl_cas_proxy.so b/libwvpl_cas_proxy.so index f622c0f..b60829b 100755 Binary files a/libwvpl_cas_proxy.so and b/libwvpl_cas_proxy.so differ diff --git a/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_environment.h b/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_environment.h index 45edf1e..982cdc7 100644 --- a/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_environment.h +++ b/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_environment.h @@ -17,6 +17,34 @@ namespace wv_pl_sdk { class WvPLCASProxySession; +/** + * Sets up an environment for partners who are using the Widevine CAS License + * Proxy SDK. This environment *must* be successfully created in order to work + * with the SDK API. + * + * Implements the following public API: + * - CreateSession() + * - SetDeviceCertificateStatusList() + * + * Example Usage: + * map config_values; + * config_values.insert(std::make_pair(kDrmCertificateType, "prod"); + * config_values.insert(std::make_pair(kProvider, "TEST_PROVIDER"); + * config_values.insert(std::make_pair(kProviderIv, "TEST_IV")); + * config_values.insert(std::make_pair(kProviderKey, "TEST_KEY")); + * WvPLCASProxyEnvironment* wv_cas_proxy_environment = + * new WvPLCASProxyEnvironment(config_values); + * // This is the DeviceCertificateStatusList returned from a query to the + * // Widevine Certificate Provisioning Service (List API). + * std::string certificate_status_list = "TEST_CERTIFICATE_STATUS_LIST"; + * wvpl_status = wvpl_cas_proxy_environment->SetDeviceCertificateStatusList( + * certificate_status_list); + * WvPLCASProxySession** wvpl_cas_proxy_session = nullptr; + * std::string license_request_from_cdm = "TEST_LICENSE_REQUEST"; + * wvpl_status = wvpl_cas_proxy_environment->CreateSession( + * license_request_from_cdm, &wvpl_cas_proxy_session); + */ + class WvPLCASProxyEnvironment : public WvPLSDKEnvironment { public: /** diff --git a/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_session.h b/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_session.h index 0991b6f..6043777 100644 --- a/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_session.h +++ b/media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_session.h @@ -76,9 +76,6 @@ class WvPLCASProxySession : public WvPLSDKSession { WvPLCASProxySession( const widevine::DrmRootCertificate* drm_root_certificate, const std::string& cas_license_request_from_cdm); - - WvPLStatus ParsePsshData( - WvPLWidevinePsshData* wvpl_widevine_pssh_data) const override; }; } // namespace wv_pl_sdk diff --git a/sdk/external/common/wvpl/wvpl_sdk_session.h b/sdk/external/common/wvpl/wvpl_sdk_session.h index 21e8335..b0c50be 100644 --- a/sdk/external/common/wvpl/wvpl_sdk_session.h +++ b/sdk/external/common/wvpl/wvpl_sdk_session.h @@ -206,14 +206,6 @@ class WvPLSDKSession { private: std::unique_ptr system_id_; - - /** - * Parses WvPLWidevinePsshData in the new license request. - * - * @return WvPLStatus - Status::OK if success, else error. - */ - virtual WvPLStatus ParsePsshData( - WvPLWidevinePsshData* wvpl_widevine_pssh_data) const = 0; }; } // namespace wv_pl_sdk diff --git a/sdk/external/common/wvpl/wvpl_types.h b/sdk/external/common/wvpl/wvpl_types.h index 9fe5236..ca162af 100644 --- a/sdk/external/common/wvpl/wvpl_types.h +++ b/sdk/external/common/wvpl/wvpl_types.h @@ -15,7 +15,7 @@ #include #include -#include "util/status.h" +#include "common/status.h" // TODO(user) Split wvpl_types.h into wvpl_common_types.h , // wvpl_license_sdk_types.h, wvpl_proxy_sdk_types.h and diff --git a/util/error_space.h b/util/error_space.h index 68c093a..2e66a39 100644 --- a/util/error_space.h +++ b/util/error_space.h @@ -49,11 +49,11 @@ class ErrorSpaceImpl : public ErrorSpace { // pointer to stateless static methods, so that clients of ErrorSpaceImpl are // safe to have constexpr global instances. static std::string SpaceNameImpl(const ErrorSpace* /*space*/) { - return T::SpaceName(); + return T::space_name(); } static std::string CodeToStringImpl(const ErrorSpace* /*space*/, int code) { - return T::CodeToString(code); + return T::code_to_string(code); } }; diff --git a/util/status.h b/util/status.h deleted file mode 100644 index c690692..0000000 --- a/util/status.h +++ /dev/null @@ -1,119 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Copyright 2017 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. -//////////////////////////////////////////////////////////////////////////////// - -#ifndef UTIL_STATUS_H_ -#define UTIL_STATUS_H_ - -#include - -#include "util/error_space.h" - -namespace widevine { -namespace util { -namespace error { - -enum StatusCode { - // Success. - OK = 0, - - // Client specified an invalid argument. - INVALID_ARGUMENT = 3, - - // Some requested entity (e.g., file or directory) was not found. - NOT_FOUND = 5, - - // Some entity that we attempted to create (e.g., file or directory) - // already exists. - ALREADY_EXISTS = 6, - - // The caller does not have permission to execute the specified - // operation. PERMISSION_DENIED must not be used for rejections - // caused by exhausting some resource (use RESOURCE_EXHAUSTED - // instead for those errors). - PERMISSION_DENIED = 7, - - // Operation is not implemented or not supported/enabled in this service. - UNIMPLEMENTED = 12, - - // Internal errors. Means some invariants expected by underlying - // system has been broken. If you see one of these errors, - // something is very broken. - INTERNAL = 13, - - // Operation is not implemented or not supported/enabled in this service. - UNAVAILABLE = 14, - - // Number of generic (non license related) errors. - NUM_ERRORS, -}; - -} // namespace error - -class GenericErrorSpace : public ErrorSpaceImpl { - public: - static std::string SpaceName(); - static std::string CodeToString(int code); -}; - -class Status { - public: - Status() : status_code_(error::OK) {} - ~Status() {} - explicit Status(error::StatusCode c) : status_code_(c) {} - Status(error::StatusCode c, const std::string& error_message) - : status_code_(c), error_message_(error_message) {} - Status(const ErrorSpace* e, error::StatusCode c, - const std::string& error_message) { - SetError(e, c, error_message); - } - Status(const ErrorSpace* e, int error, const std::string& error_message) { - SetError(e, error, error_message); - } - void SetError(const ErrorSpace* e, int c, const std::string& error_message) { - error_space_ = e; - status_code_ = c; - error_message_ = error_message; - } - - bool ok() const { return status_code_ == error::OK; } - const ErrorSpace* error_space() const { return error_space_; } - static const ErrorSpace* canonical_space() { - return GenericErrorSpace::Get(); - } - std::string ToString() const; - std::string error_message() const { return error_message_; } - int error_code() const { return status_code_; } - - private: - const ErrorSpace* error_space_ = GenericErrorSpace::Get(); - int status_code_; - std::string error_message_; -}; // class Status - -inline Status OkStatus() { return Status(); } - -// Here error_message_ is ignored during comparison. -inline bool operator==(const Status& s1, const Status& s2) { - return s1.error_space() == s2.error_space() && - s1.error_code() == s2.error_code(); -} -inline bool operator!=(const Status& s1, const Status& s2) { - return s1.error_space() != s2.error_space() || - s1.error_code() != s2.error_code(); -} - -// Prints a human-readable representation of 'x' to 'os'. -std::ostream& operator<<(std::ostream& os, const Status& x); - -#define CHECK_OK(expression) CHECK(expression.ok()) << expression.ToString() - - -} // namespace util -} // namespace widevine - -#endif // UTIL_STATUS_H_