Report provider client token
[ Merge of http://go/wvgerrit/71103 ] A content provider may specify a provider client token in a license. This is a client token generated by a provider. If present in a license, they will now be included in a license renewal request. Bug: 34386290 Test: WV unit/integration tests Change-Id: I3db303ea4d8b4ff4495393be4015b49e13db2ffc
This commit is contained in:
@@ -3981,6 +3981,115 @@ TEST_F(WvCdmRequestLicenseTest, UsageRemoveSecureStopTest) {
|
||||
EXPECT_TRUE(secure_stop_ids.empty());
|
||||
}
|
||||
|
||||
// TODO(rfrias): Enable when b/123370099 has been addressed
|
||||
TEST_F(WvCdmRequestLicenseTest, DISABLED_VerifyProviderClientToken) {
|
||||
Unprovision();
|
||||
Provision(kLevelDefault);
|
||||
|
||||
// The default offline asset "offline_clip2" does not include a
|
||||
// provider session token but "offline_clip5" does, so replace the last
|
||||
// char in init data with '5'
|
||||
std::string key_id;
|
||||
std::string client_auth;
|
||||
GetOfflineConfiguration(&key_id, &client_auth);
|
||||
key_id[key_id.size()-1] = '5';
|
||||
|
||||
// Acquire license
|
||||
decryptor_.OpenSession(config_.key_system(), NULL, kDefaultCdmIdentifier,
|
||||
NULL, &session_id_);
|
||||
GenerateKeyRequest(key_id, kLicenseTypeOffline);
|
||||
EXPECT_TRUE(!key_msg_.empty());
|
||||
std::string key_msg = key_msg_;
|
||||
std::string key_response;
|
||||
VerifyKeyRequestResponse(config_.license_server(), client_auth, false,
|
||||
&key_response);
|
||||
|
||||
CdmKeySetId key_set_id = key_set_id_;
|
||||
EXPECT_TRUE(!key_set_id_.empty());
|
||||
EXPECT_TRUE(!key_response.empty());
|
||||
|
||||
// Validate signed license request
|
||||
SignedMessage signed_message;
|
||||
EXPECT_TRUE(signed_message.ParseFromString(key_msg));
|
||||
EXPECT_EQ(SignedMessage::LICENSE_REQUEST, signed_message.type());
|
||||
EXPECT_TRUE(signed_message.has_signature());
|
||||
EXPECT_TRUE(!signed_message.msg().empty());
|
||||
|
||||
// Verify license request
|
||||
video_widevine::LicenseRequest license_request;
|
||||
EXPECT_TRUE(license_request.ParseFromString(signed_message.msg()));
|
||||
|
||||
// Verify that the provider client token is absent in the license request
|
||||
EXPECT_FALSE(license_request.client_id().has_provider_client_token());
|
||||
EXPECT_TRUE(license_request.client_id().provider_client_token().empty());
|
||||
|
||||
// Validate signed license response
|
||||
EXPECT_TRUE(signed_message.ParseFromString(key_response));
|
||||
EXPECT_EQ(SignedMessage::LICENSE, signed_message.type());
|
||||
EXPECT_TRUE(signed_message.has_signature());
|
||||
EXPECT_TRUE(!signed_message.msg().empty());
|
||||
|
||||
// Verify license
|
||||
video_widevine::License license;
|
||||
EXPECT_TRUE(license.ParseFromString(signed_message.msg()));
|
||||
|
||||
// Verify that the provider client token is present in the license
|
||||
EXPECT_TRUE(license.has_provider_client_token());
|
||||
EXPECT_TRUE(!license.provider_client_token().empty());
|
||||
|
||||
decryptor_.CloseSession(session_id_);
|
||||
session_id_.clear();
|
||||
|
||||
// Restore offline license and renew it
|
||||
decryptor_.OpenSession(config_.key_system(), NULL, kDefaultCdmIdentifier,
|
||||
NULL, &session_id_);
|
||||
EXPECT_EQ(wvcdm::KEY_ADDED, decryptor_.RestoreKey(session_id_, key_set_id));
|
||||
|
||||
std::string license_server;
|
||||
GenerateRenewalRequest(kLicenseTypeOffline, &license_server);
|
||||
EXPECT_TRUE(!key_msg_.empty());
|
||||
key_msg = key_msg_;
|
||||
EXPECT_FALSE(license_server.empty());
|
||||
VerifyKeyRequestResponse(license_server, client_auth);
|
||||
|
||||
// Validate signed license renewal request
|
||||
EXPECT_TRUE(signed_message.ParseFromString(key_msg));
|
||||
EXPECT_EQ(SignedMessage::LICENSE_REQUEST, signed_message.type());
|
||||
EXPECT_TRUE(signed_message.has_signature());
|
||||
EXPECT_TRUE(!signed_message.msg().empty());
|
||||
|
||||
// Verify license renewal request
|
||||
EXPECT_TRUE(license_request.ParseFromString(signed_message.msg()));
|
||||
|
||||
// Verify provider client token is present in the license renewal request
|
||||
EXPECT_TRUE(license_request.client_id().has_provider_client_token());
|
||||
EXPECT_TRUE(!license_request.client_id().provider_client_token().empty());
|
||||
|
||||
decryptor_.CloseSession(session_id_);
|
||||
session_id_.clear();
|
||||
|
||||
// Restore and release offline license
|
||||
key_set_id_.clear();
|
||||
GenerateKeyRelease(key_set_id);
|
||||
key_set_id_ = key_set_id;
|
||||
EXPECT_TRUE(!key_msg_.empty());
|
||||
key_msg = key_msg_;
|
||||
VerifyKeyRequestResponse(config_.license_server(), client_auth);
|
||||
|
||||
// Validate signed license release request
|
||||
EXPECT_TRUE(signed_message.ParseFromString(key_msg));
|
||||
EXPECT_EQ(SignedMessage::LICENSE_REQUEST, signed_message.type());
|
||||
EXPECT_TRUE(signed_message.has_signature());
|
||||
EXPECT_TRUE(!signed_message.msg().empty());
|
||||
|
||||
// Verify license release request
|
||||
EXPECT_TRUE(license_request.ParseFromString(signed_message.msg()));
|
||||
|
||||
// Verify provider client token is present in the license release request
|
||||
EXPECT_TRUE(license_request.client_id().has_provider_client_token());
|
||||
EXPECT_TRUE(!license_request.client_id().provider_client_token().empty());
|
||||
}
|
||||
|
||||
TEST_F(WvCdmRequestLicenseTest, QueryUnmodifiedSessionStatus) {
|
||||
// Test that the global value is returned when no properties are modifying it.
|
||||
std::string security_level;
|
||||
|
||||
Reference in New Issue
Block a user