Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be926583 authored by Robert Shih's avatar Robert Shih
Browse files

Update clearkey plugin to drm HAL v1.3

This CL implements IDrmFactory::getSupportedCryptoSchemes

Bug: 139134043
Test: MediaDrmGenericOpsTest
Change-Id: I4ed420e2f9285398548a3b87e9125be2671c613b
parent ca933096
Loading
Loading
Loading
Loading
+21 −13
Original line number Diff line number Diff line
@@ -20,20 +20,28 @@

namespace clearkeydrm {

bool isClearKeyUUID(const uint8_t uuid[16]) {
    static const uint8_t kCommonPsshBoxUUID[16] = {
namespace {

const std::array<uint8_t, 16> kCommonPsshBoxUUID{
    0x10,0x77,0xEF,0xEC,0xC0,0xB2,0x4D,0x02,
    0xAC,0xE3,0x3C,0x1E,0x52,0xE2,0xFB,0x4B
};

// To be used in mpd to specify drm scheme for players
    static const uint8_t kClearKeyUUID[16] = {
const std::array<uint8_t, 16> kClearKeyUUID{
    0xE2,0x71,0x9D,0x58,0xA9,0x85,0xB3,0xC9,
    0x78,0x1A,0xB0,0x30,0xAF,0x78,0xD3,0x0E
};

    return !memcmp(uuid, kCommonPsshBoxUUID, sizeof(kCommonPsshBoxUUID)) ||
           !memcmp(uuid, kClearKeyUUID, sizeof(kClearKeyUUID));
}

bool isClearKeyUUID(const uint8_t uuid[16]) {
    return !memcmp(uuid, kCommonPsshBoxUUID.data(), kCommonPsshBoxUUID.size()) ||
           !memcmp(uuid, kClearKeyUUID.data(), kClearKeyUUID.size());
}

std::vector<std::array<uint8_t, 16>> getSupportedCryptoSchemes() {
    return {kCommonPsshBoxUUID, kClearKeyUUID};
}

} // namespace clearkeydrm
+5 −1
Original line number Diff line number Diff line
@@ -17,12 +17,16 @@
#ifndef CLEARKEY_UUID_H_
#define CLEARKEY_UUID_H_

#include <stdint.h>
#include <array>
#include <cstdint>
#include <vector>

namespace clearkeydrm {

bool isClearKeyUUID(const uint8_t uuid[16]);

std::vector<std::array<uint8_t, 16>> getSupportedCryptoSchemes();

} // namespace clearkeydrm

#endif // CLEARKEY_UUID_H_
+3 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ cc_defaults {
        "android.hardware.drm@1.0",
        "android.hardware.drm@1.1",
        "android.hardware.drm@1.2",
        "android.hardware.drm@1.3",
        "libbase",
        "libbinder",
        "libcrypto",
@@ -82,6 +83,7 @@ cc_binary {
    defaults: ["clearkey_service_defaults"],
    srcs: ["service.cpp"],
    init_rc: ["android.hardware.drm@1.2-service.clearkey.rc"],
    vintf_fragments: ["manifest_android.hardware.drm@1.3-service.clearkey.xml"],
}
cc_binary {
    name: "android.hardware.drm@1.2-service-lazy.clearkey",
@@ -89,4 +91,5 @@ cc_binary {
    defaults: ["clearkey_service_defaults"],
    srcs: ["serviceLazy.cpp"],
    init_rc: ["android.hardware.drm@1.2-service-lazy.clearkey.rc"],
    vintf_fragments: ["manifest_android.hardware.drm@1.3-service.clearkey.xml"],
}
+2 −2
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
namespace android {
namespace hardware {
namespace drm {
namespace V1_2 {
namespace V1_3 {
namespace clearkey {

extern "C" {
@@ -38,7 +38,7 @@ ICryptoFactory* createCryptoFactory() {
} // extern "C"

}  // namespace clearkey
}  // namespace V1_2
}  // namespace V1_3
}  // namespace drm
}  // namespace hardware
}  // namespace android
+5 −2
Original line number Diff line number Diff line
@@ -27,9 +27,12 @@
namespace android {
namespace hardware {
namespace drm {
namespace V1_2 {
namespace V1_3 {
namespace clearkey {

using ::android::hardware::drm::V1_0::Status;
using ::android::hardware::drm::V1_2::clearkey::CryptoPlugin;

Return<bool> CryptoFactory::isCryptoSchemeSupported(
    const hidl_array<uint8_t, 16> &uuid)
{
@@ -60,7 +63,7 @@ Return<void> CryptoFactory::createPlugin(
}

} // namespace clearkey
} // namespace V1_2
} // namespace V1_3
} // namespace drm
} // namespace hardware
} // namespace android
Loading