Modify protos to support HLS
[ Merge of http://go/wvgerrit/16769 ] Protos have been updated to match the google3 copy. This introduces protection scheme to support HLS and MetricData to assist in reporting. Changes have been made to set or consume data from appropriate fields. b/27146600 Change-Id: Ic928a406efb8fbb959b95a77dda6848e839b1948
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "license.h"
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <vector>
|
||||
|
||||
#include "clock.h"
|
||||
@@ -60,6 +61,10 @@ const unsigned char kServiceCertificateCAPublicKey[] = {
|
||||
0x78, 0xb4, 0x64, 0x82, 0x50, 0xd2, 0x33, 0x5f, 0x91, 0x02, 0x03, 0x01,
|
||||
0x00, 0x01};
|
||||
}
|
||||
const uint32_t kFourCcCbc1 = 0x63626331;
|
||||
const uint32_t kFourCcCbcs = 0x63626373;
|
||||
const uint32_t kFourCcCenc = 0x63656e63;
|
||||
const uint32_t kFourCcCens = 0x63656e73;
|
||||
|
||||
namespace wvcdm {
|
||||
|
||||
@@ -91,7 +96,7 @@ static std::vector<CryptoKey> ExtractContentKeys(const License& license) {
|
||||
size_t length;
|
||||
switch (license.key(i).type()) {
|
||||
case License_KeyContainer::CONTENT:
|
||||
case License_KeyContainer::OPERATOR_SESSION:
|
||||
case License_KeyContainer::OPERATOR_SESSION: {
|
||||
key.set_key_id(license.key(i).id());
|
||||
// Strip off PKCS#5 padding - since we know the key is 16 or 32 bytes,
|
||||
// the padding will always be 16 bytes.
|
||||
@@ -106,11 +111,17 @@ static std::vector<CryptoKey> ExtractContentKeys(const License& license) {
|
||||
key.set_key_control(license.key(i).key_control().key_control_block());
|
||||
key.set_key_control_iv(license.key(i).key_control().iv());
|
||||
}
|
||||
// TODO(rfrias): Set cipher mode when the license protocol provides
|
||||
// it (b/26190665). Set to default for now.
|
||||
key.set_cipher_mode(kCipherModeCtr);
|
||||
uint32_t four_cc = kFourCcCenc;
|
||||
if (license.has_protection_scheme()) {
|
||||
four_cc = ntohl(license.protection_scheme());
|
||||
}
|
||||
if (four_cc == kFourCcCbc1 || four_cc == kFourCcCbcs)
|
||||
key.set_cipher_mode(kCipherModeCbc);
|
||||
else
|
||||
key.set_cipher_mode(kCipherModeCtr);
|
||||
key_array.push_back(key);
|
||||
break;
|
||||
}
|
||||
case License_KeyContainer::KEY_CONTROL:
|
||||
if (license.key(i).has_key_control()) {
|
||||
key.set_key_control(license.key(i).key_control().key_control_block());
|
||||
|
||||
Reference in New Issue
Block a user