Strip padding from entitlement keys.
Merge from Widevine repo of http://go/wvgerrit/47540 Bug: 77364593 Test: tested as part of http://go/ag/4674759 Change-Id: If1063d410153eb49584c94156e2d98af9e08c060
This commit is contained in:
@@ -80,9 +80,17 @@ static std::vector<CryptoKey> ExtractEntitlementKeys(const License& license) {
|
|||||||
// Extract sub session key(s)
|
// Extract sub session key(s)
|
||||||
for (int i = 0; i < license.key_size(); ++i) {
|
for (int i = 0; i < license.key_size(); ++i) {
|
||||||
CryptoKey key;
|
CryptoKey key;
|
||||||
|
size_t length = 0;
|
||||||
switch (license.key(i).type()) {
|
switch (license.key(i).type()) {
|
||||||
case License_KeyContainer::ENTITLEMENT: {
|
case License_KeyContainer::ENTITLEMENT: {
|
||||||
key.set_key_data(license.key(i).key());
|
// Strip off PKCS#5 padding - since we know the key is 32 or 48 bytes,
|
||||||
|
// the padding will always be 16 bytes.
|
||||||
|
if (license.key(i).key().size() > 32) {
|
||||||
|
length = license.key(i).key().size() - 16;
|
||||||
|
} else {
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
key.set_key_data(license.key(i).key().substr(0, length));
|
||||||
key.set_key_data_iv(license.key(i).iv());
|
key.set_key_data_iv(license.key(i).iv());
|
||||||
key.set_key_id(license.key(i).id());
|
key.set_key_id(license.key(i).id());
|
||||||
key.set_track_label(license.key(i).track_label());
|
key.set_track_label(license.key(i).track_label());
|
||||||
|
|||||||
Reference in New Issue
Block a user