Merge changes I58806276,Ic112b459 into vic-widevine-dev
* changes: Clang format long line Update test data for entitled license test
This commit is contained in:
@@ -680,7 +680,7 @@ void InitializationData::DumpToLogs() const {
|
||||
if (!is_supported()) {
|
||||
LOGD("InitData: Not supported");
|
||||
}
|
||||
if (!IsEmpty()) {
|
||||
if (IsEmpty()) {
|
||||
LOGD("InitData: Empty");
|
||||
}
|
||||
std::string type_info = type();
|
||||
@@ -736,6 +736,9 @@ void InitializationData::DumpToLogs() const {
|
||||
LOGD("InitData: entitlement_key_id %d: %s -> %s", i,
|
||||
wvutil::b2a_hex(key.entitlement_key_id()).c_str(),
|
||||
wvutil::b2a_hex(key.key_id()).c_str());
|
||||
LOGD("InitData: entitled_key %d: %s", i,
|
||||
wvutil::b2a_hex(key.key()).c_str());
|
||||
LOGD("InitData: iv %d: %s", i, wvutil::b2a_hex(key.iv()).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -189,6 +189,16 @@ enum OptionalBool {
|
||||
bool UnwrapOptionalBool(OptionalBool value, bool default_value) {
|
||||
return (value == kBoolUnset) ? default_value : (value == kBoolTrue);
|
||||
}
|
||||
|
||||
// Increment counter for AES-CTR. The CENC spec specifies we increment only
|
||||
// the low 64 bits of the IV counter, and leave the high 64 bits alone. This
|
||||
// is different from the BoringSSL implementation, so we implement the CTR loop
|
||||
// ourselves.
|
||||
void ctr128_inc64(int64_t increaseBy, std::vector<uint8_t>& iv) {
|
||||
uint64_t* counterBuffer = reinterpret_cast<uint64_t*>(&(iv[8]));
|
||||
(*counterBuffer) =
|
||||
wvutil::htonll64(wvutil::ntohll64(*counterBuffer) + increaseBy);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
// Static WvCdmTestBase variables.
|
||||
@@ -208,6 +218,26 @@ void WvCdmTestBase::StripeBuffer(std::vector<uint8_t>* buffer, size_t size,
|
||||
}
|
||||
}
|
||||
|
||||
// Encrypt a block of data using CTR mode.
|
||||
std::vector<uint8_t> WvCdmTestBase::Aes128CtrEncrypt(
|
||||
const std::vector<uint8_t>& key, const std::vector<uint8_t>& starting_iv,
|
||||
const std::vector<uint8_t>& in_buffer) {
|
||||
AES_KEY aes_key;
|
||||
AES_set_encrypt_key(key.data(), AES_BLOCK_SIZE * 8, &aes_key);
|
||||
std::vector<uint8_t> out_buffer(in_buffer.size());
|
||||
std::vector<uint8_t> iv = starting_iv;
|
||||
size_t l = 0; // byte index into encrypted subsample.
|
||||
while (l < in_buffer.size()) {
|
||||
uint8_t aes_output[AES_BLOCK_SIZE];
|
||||
AES_encrypt(iv.data(), aes_output, &aes_key);
|
||||
for (size_t n = 0; n < AES_BLOCK_SIZE && l < in_buffer.size(); n++, l++) {
|
||||
out_buffer[l] = aes_output[n] ^ in_buffer[l];
|
||||
}
|
||||
ctr128_inc64(1, iv);
|
||||
}
|
||||
return out_buffer;
|
||||
}
|
||||
|
||||
std::string WvCdmTestBase::Aes128CbcEncrypt(std::vector<uint8_t> key,
|
||||
const std::vector<uint8_t>& clear,
|
||||
std::vector<uint8_t> iv) {
|
||||
|
||||
@@ -76,6 +76,10 @@ class WvCdmTestBase : public ::testing::Test {
|
||||
const std::vector<uint8_t>& clear,
|
||||
std::vector<uint8_t> iv);
|
||||
// Helper method for doing cryptography.
|
||||
static std::vector<uint8_t> Aes128CtrEncrypt(
|
||||
const std::vector<uint8_t>& key, const std::vector<uint8_t>& starting_iv,
|
||||
const std::vector<uint8_t>& in_buffer);
|
||||
// Helper method for doing cryptography.
|
||||
static std::string SignHMAC(const std::string& message,
|
||||
const std::vector<uint8_t>& key);
|
||||
|
||||
|
||||
@@ -1510,7 +1510,8 @@ static WvStatus getDeviceSignedCsrPayload(
|
||||
} else {
|
||||
return toNdkScopedAStatus(Status::BAD_VALUE);
|
||||
}
|
||||
} else if (name == "certificateSigningRequestChallenge" && isCsrAccessAllowed()) {
|
||||
} else if (name == "certificateSigningRequestChallenge" &&
|
||||
isCsrAccessAllowed()) {
|
||||
mCertificateSigningRequestChallenge =
|
||||
std::string(_value.begin(), _value.end());
|
||||
} else if (name == "deviceInfo" && isCsrAccessAllowed()) {
|
||||
|
||||
Reference in New Issue
Block a user