Update example so that partner can have a working example of
* creating and initializing WvPLCASProxyEnvironment. * creating WvPLCASProxySession. * generating a license request to send to WLS. Bumped version update to 1.1.3. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=232586603
This commit is contained in:
@@ -13,12 +13,133 @@
|
||||
#include <string>
|
||||
|
||||
#include "media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_environment.h"
|
||||
#include "media_cas_proxy_sdk/external/common/wvpl/wvpl_cas_proxy_session.h"
|
||||
|
||||
using widevine_server::wv_pl_sdk::WvPLCASProxySession;
|
||||
using widevine_server::wv_pl_sdk::WvPLStatus;
|
||||
|
||||
namespace {
|
||||
const char kValidRequestFromCdm[] =
|
||||
"080712b90b0a840b080112ed090aae02080212108b8832fb7921b3e65419c6112f96d1"
|
||||
"ce18e4edd4e105228e023082010a0282010100a729e70e43515708819fe6c62f9fc26e"
|
||||
"a9f2300bd5cca79131b46997cc2822a8479a58ea287b7dceada6b77290cd0df3f7a98b"
|
||||
"d4e91907631bfc4065afe93b08f95a5799f7391252de6a3d0a0e502dc116c0e0853c87"
|
||||
"5e5ebff843858c322f2c06017d423981a7a41070ff8eae0c2ac135491187eb227907b1"
|
||||
"185ecb76cd3f26eb0259a3e6c177c35ade2c07aa243d29599e251a6ab4dbb9bea00112"
|
||||
"7bd39765bd40a1bb23b883b10ab829adde17311b90295059570936f0ee5ec6bdaba0be"
|
||||
"07adbff30505537c67f1004daf469e6d760024f6f07095687fde35a62651b504beeaca"
|
||||
"79282ce83001a914fdd9eface7e6d15959abee536b3c4cb53e573b39128d0203010001"
|
||||
"2899201280023231afb3b643ea7db3095fdca3fe8df49e299d2b19fe9da7ab5f286ef2"
|
||||
"17a08226bd0d530e9683fbb78edecca7d8bc3f1f9ac03a53a8d48029c0f490a6af301b"
|
||||
"da27316e5920409a5a889acba49539d1d92c0b784b181da114f3bb45edbc7bba7cddfa"
|
||||
"6e599500e92f8c0dd11ecebebb80fec73273d5c620bf30b30c0be1a90f1b86ea913497"
|
||||
"39d961b589ce1b1b83d31e135e489b752a32431ad1bd6e8b6986dbd0c98073872b5349"
|
||||
"11fc8ebfa528c62f6969b6d4b5079a640b02fa5989cccac708d4130e4686020f8b50f9"
|
||||
"ea38f82424293555f82fc920ad33f41398b532fe01e28b50f76d35349835328714969b"
|
||||
"ab67f68eb3cc30aac5d271fff3e1b1c9621ab6050ab00208011210084d60bc65937db6"
|
||||
"ac7f992b41ecf5f218a2d38a8c05228e023082010a0282010100991b357bb714decac1"
|
||||
"e70eaa36d1d0834df24a3d10369f90a22734a3ad4aebccfc2432bdd6dcd1ffd75699ba"
|
||||
"5608c4457972d27c47abcff8c88cd9900938260b8c85795327b2aef3a1db27e8b96203"
|
||||
"9284d602c6a74c6a143a67be64a16a1c8f44fafadac242ceb6d8ade9c4d4542ebd3ee9"
|
||||
"d2a0a71eb7a4ccf916e02f26793b0c13a4921c3eed49c5c96cd455598ede040ce472b0"
|
||||
"15a9af3cda82c49792aa7f6bbfbf4667293b44ec7429c39a038911ce1fe462c35e95c2"
|
||||
"64d363343c3adb944fa2aabdba0fb61c402797585f3dfb796f6ce1dcf3b79c9887be98"
|
||||
"1470ecbcb048e59e564fc3ad2c4b860f70aa468fb66c4a2847eec755ade89bd6225740"
|
||||
"c9a502030100012899203001128003212de141c13057c1987218dd7fbc2dc9f84c82f9"
|
||||
"1f5b163d0370c7069387c70c90c3060f0504573c6e0bd3acb984fc3ab7b221a77d3733"
|
||||
"324d670a9a5eea64691d5666a9b67dd367803cd5753bd75ea7239bec0c008297695771"
|
||||
"ce203c60898d4f264ad55d3d01c96f66d6fb6c53d1928a60ad040d7d48e9c83d6849c2"
|
||||
"48e45c0f95bbb8cd0b1feee4458c5c60ab0d52e1fb0f8ee98766af9cf93307578657e8"
|
||||
"00f1a4ed3f6a00e8951b2158f45cfcc2f7e5e5cc3d7f04ea2be34aa8dd49ebd78c618c"
|
||||
"1404e308257e502aac8df00d52a8985301bfe5e6e784d77b0bc52c935a8b183fb5afed"
|
||||
"25a5855a77fcf2715c907611624a58b037d819857bab926bee4d560277089efb070fb3"
|
||||
"f5385d1dde1e486d8f32d253de8692e3098e35b3192647e79544cf0fb28b362133e942"
|
||||
"97781cf3f68960531667ee74e7026bd72137eb1ddd057834cf1dabe8d7069f88acb4b7"
|
||||
"a402470f2801264bb49c3bfee24fc640a46374d6c10bc7d2b960792d11da5086ab8ccf"
|
||||
"f46180c243c395d22f1a9e4f6b021a130a0c636f6d70616e795f6e616d651203777777"
|
||||
"1a110a0a6d6f64656c5f6e616d6512037777771a200a0c70726f647563745f6e616d65"
|
||||
"12105769646576696e6543617354657374731a260a116172636869746563747572655f"
|
||||
"6e616d6512116172636869746563747572655f6e616d651a1a0a0b6465766963655f6e"
|
||||
"616d65120b6465766963655f6e616d653202280e12200a1e0a1c1a0d7769646576696e"
|
||||
"655f746573742209436173547346616b655802180120e4edd4e105301538d3a2fbfe02"
|
||||
"1a80020570d7809a297c640bc56234cfea3687e747dcbf8e6cc326de6a1102fecc43ec"
|
||||
"674c02e5c8d31109a1ac7f2cb52f44a6b2b410a6d2632bb841ead6437be510efa7c8a5"
|
||||
"02de1e734e057b9ac65eec6361afaf3b71f074ff37428580067d856d4bfbecef170d11"
|
||||
"d5cb631bcf31193a66156b06a16119d0d19381cd57cacb0aeb6b6e5b3e427c8117be13"
|
||||
"7b662332a1a80f48e599675325b5b8afd4010f7850ba332fa78eaf0ddeef7086890cce"
|
||||
"194631e3d205cb459a7e1ff11b54791ef394b74fb8a729d0104b00e17b9e05c5d42fac"
|
||||
"923f98d43aedc70ab0733039eb22f35c6961e4587085a14c4a9ace1db00508843e79ee"
|
||||
"ba68321b559fbdfdf04c88813cdd";
|
||||
|
||||
const char kWidevineTestProvider[] = "widevine_test";
|
||||
|
||||
static const char hex_value[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0,
|
||||
0, // '0'..'9'
|
||||
0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 'A'..'F'
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13,
|
||||
14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 'a'..'f'
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
void a2b_hex(const char* a, char* b, int num) {
|
||||
for (int i = 0; i < num; i++) {
|
||||
b[i] = (hex_value[a[i * 2] & 0xFF] << 4) + (hex_value[a[i * 2 + 1] & 0xFF]);
|
||||
}
|
||||
}
|
||||
|
||||
std::string a2b_hex(const std::string& a) {
|
||||
int len = a.size();
|
||||
char* b = new char[len];
|
||||
a2b_hex(a.data(), b, len);
|
||||
// Binary length is half ascii length plus one byte if ascii length is odd.
|
||||
std::string s(b, len / 2 + ((len % 2) ? 1 : 0));
|
||||
delete[](b);
|
||||
return s;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
std::map<std::string, std::string> config_values;
|
||||
config_values["drm_certficate_type"] = "test";
|
||||
config_values["provider"] = kWidevineTestProvider;
|
||||
widevine_server::wv_pl_sdk::WvPLCASProxyEnvironment environment(
|
||||
config_values);
|
||||
std::cout << "Hello world!" << std::endl;
|
||||
WvPLStatus status = environment.Initialize();
|
||||
if (!status.ok()) {
|
||||
std::cerr << "Environment failed to initialize. Exiting." << std::endl;
|
||||
exit(status.error_code());
|
||||
}
|
||||
std::cout << "Environment created and initialized" << std::endl;
|
||||
|
||||
WvPLCASProxySession* wvpl_cas_proxy_session = nullptr;
|
||||
status = environment.CreateSession(a2b_hex(kValidRequestFromCdm),
|
||||
&wvpl_cas_proxy_session);
|
||||
if (!status.ok()) {
|
||||
std::cerr << "Session creation failed. Exiting. Error code = "
|
||||
<< std::to_string(status.error_code()) << std::endl;
|
||||
exit(status.error_code());
|
||||
}
|
||||
std::cout << "Session created." << std::endl;
|
||||
|
||||
std::string json_signed_cas_drm_request;
|
||||
status = wvpl_cas_proxy_session->GenerateLicenseRequestAsJSON(
|
||||
&json_signed_cas_drm_request);
|
||||
if (!status.ok()) {
|
||||
std::cerr << "Failed to generate license request. Exiting. Error code = "
|
||||
<< std::to_string(status.error_code()) << std::endl;
|
||||
exit(status.error_code());
|
||||
}
|
||||
std::cout
|
||||
<< "Request to POST over HTTP(s) to "
|
||||
"https://license.uat.widevine.com/cas/getlicense/widevine_test = "
|
||||
<< json_signed_cas_drm_request << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace wv_pl_sdk {
|
||||
|
||||
constexpr uint32_t kMajorVersion = 1;
|
||||
constexpr uint32_t kMinorVersion = 1;
|
||||
constexpr uint32_t kRelease = 2;
|
||||
constexpr uint32_t kRelease = 3;
|
||||
|
||||
/**
|
||||
* Models a session for Widevine CAS Proxy functionality for
|
||||
|
||||
Reference in New Issue
Block a user